' BASIC PROGRAMMING INSTRUCTOR: MR. JONES
' CIS 111 SEC 002 DUE DATE:07-13-98
'
' HSU, YEE SSN: ???-??-????
' LAB ASSIGNMENT - 4, 6.14
'---------------------------------------------------------------------------
CLS
GOSUB InitializeVariables
GOSUB PrintHeadings
GOSUB ProcessDetail
GOSUB Printtotals
END
'************************ Initialize Variables **************************
InitializeVariables:
H1$ = " CITY COLLEGE OF SAN FRANCISCO PAGE NO. ### "
H2$ = "\ \ GOOD HEALTH GYM "
C1$ = "MEMBER NAME GENDER AGE WEIGHT PHONE NO. "
C2$ = "=========== ====== === ====== ========= "
D1$ = "\ \ \ \ ## ### \ \ "
T1$ = " FEMALE MEMBERS UNDER 25 ### "
T2$ = " FEMALE MEMBERS 25 AND OVER ### "
T3$ = " MALE MEMBERS UNDER 25 ### "
T4$ = " MALE MEMBERS 25 AND OVER ### "
T5$ = " TOTAL FEMALE MEMBERS ### "
T6$ = " TOTAL MALE MEMBERS ### "
T7$ = " TOTAL MEMBERS OF \ \ GYM #### "
T8$ = " TOTAL MEMBERS #### "
LET AGE.TOT = 0
LET GENDER.TOT = 0
LET GYM.TOT = 0
LET RRT.TOT = 0
LET PAGE.NO = 0
LET LINE.COUNT = 0
LET MAX.LINES = 45
GOSUB ReadData
RETURN
'*********************** print Headings *********************************
PrintHeadings:
LET PAGE.NO = PAGE.NO + 1
LPRINT CHR$(12);
LPRINT USING H1$; PAGE.NO
IF GYM$ <> "EOF" THEN
LPRINT USING H2$; GYM$
LPRINT
LPRINT C1$
LPRINT C2$
LPRINT
LET LINE.COUNT = 0
END IF
RETURN
'************************ Process Detail ********************************
ProcessDetail:
DO UNTIL GYM$ = "EOF"
LET GYM.SAVE$ = GYM$
LET AGE.SAVE$ = AGE.GROUP$
LET GENDER.SAVE$ = GENDER$
GOSUB MemberTotal
GOSUB PrintDetail
GOSUB ReadData
IF GYM.SAVE$ <> GYM$ THEN
GOSUB GYMBRK
ELSE
IF GENDER.SAVE$ <> GENDER$ THEN
GOSUB GENDERBRK
ELSE
IF AGE.SAVE$ <> AGE.GROUP$ THEN
GOSUB AGEBRK
END IF
END IF
END IF
LOOP
RETURN
'************************ Read Data *************************************
ReadData:
READ GYM$, Member$, GENDER$, AGE, WEIGHT, PHONE$
DATA "ERSATZ", "MEI YEE CHEUNG", "F", 19, 123, "123-4287"
DATA "ERSATZ", "JENNY SCOTT", "F", 21, 105, "467-8221"
DATA "ERSATZ", "ROSE JONES", "F", 23, 110, "867-4289"
DATA "ERSATZ", "MOLLY MIST", "F", 18, 125, "966-4037"
DATA "ERSATZ", "HOLLY HOWE", "F", 24, 130, "862-3090"
DATA "ERSATZ", "LYNN LONG", "F", 25, 121, "334-0712"
DATA "ERSATZ", "KIM SMITH", "F", 30, 150, "332-0021"
DATA "ERSATZ", "DEBBIE DOE", "F", 50, 143, "167-0072"
DATA "ERSATZ", "JOHN JONES", "M", 19, 175, "963-0421"
DATA "ERSATZ", "SCOTT MILLER", "M", 21, 200, "331-0021"
DATA "ERSATZ", "STEVEN BROWN", "M", 23, 150, "966-0404"
DATA "ERSATZ", "LARRY SHOW", "M", 43, 189, "967-0000"
DATA "ERSATZ", "JAMES RANDAL", "M", 67, 178, "339-0421"
DATA "LICIT", "VIRA OSMOND", "F", 21, 110, "334-0202"
DATA "LICIT", "SANDRA LONG", "F", 24, 130, "334-0212"
DATA "LICIT", "GAYNEL SILLO", "F", 19, 110, "332-0264"
DATA "LICIT", "JOELLE DERLAP", "F", 27, 100, "960-0215"
DATA "LICIT", "JEANNIE JONES", "F", 30, 137, "960-1245"
DATA "LICIT", "MIKE MOORE", "M", 23, 170, "962-0405"
DATA "LICIT", "JERRY SANDOVAL", "M", 24, 189, "339-0211"
DATA "LICIT", "TOM TONE", "M", 37, 175, "421-1234"
DATA "LICIT", "TIM SHORT", "M", 40, 183, "330-1001"
DATA "FETID", "CATHY NELSON", "F", 21, 105, "331-0219"
DATA "FETID", "SONIA SONG", "F", 19, 142, "967-0121"
DATA "FETID", "JACKIE SMITH", "F", 24, 189, "337-7123"
DATA "FETID", "TRICIA SCUDDER", "F", 18, 120, "960-1234"
DATA "FETID", "NORA NOMES", "F", 23, 163, "301-1243"
DATA "FETID", "RANDY RICH", "M", 24, 152, "961-1111"
DATA "FETID", "TONY HERNANDEZ", "M", 21, 110, "333-4444"
DATA "FETID", "TOMMY FOSS", "M", 18, 125, "900-0000"
DATA "FETID", "DOUG DONLEY", "M", 85, 129, "312-3456"
DATA "EOF", "NULL", "NULL", 0, 0, "NULL"
IF AGE < 25 THEN
LET AGE.GROUP$ = "UNDER"
ELSE
LET AGE.GROUP$ = "OVER"
END IF
RETURN
'*********************** Calculate SubTotal *****************************
MemberTotal:
LET AGE.TOT = AGE.TOT + 1
RETURN
'********************* print Detail *************************************
PrintDetail:
LPRINT USING D1$; Member$; GENDER$; AGE; WEIGHT; PHONE$
LET LINE.COUNT = LINE.COUNT + 1
IF LINE.COUNT >= MAX.LINES THEN
GOSUB PrintHeadings
END IF
RETURN
GYMBRK:
GOSUB GENDERBRK
LPRINT USING T7$; GYM.SAVE$; GYM.TOT
LET RPT.TOT = RPT.TOT + GYM.TOT
LET GYM.TOT = 0
LET GYM.SAVE$ = GYM$
GOSUB PrintHeadings
RETURN
GENDERBRK:
GOSUB AGEBRK
IF GENDER.SAVE$ = "F" THEN
LPRINT USING T5$; GENDER.TOT
ELSE
LPRINT USING T6$; GENDER.TOT
END IF
LET GYM.TOT = GYM.TOT + GENDER.TOT
LET GENDER.TOT = 0
LET GENDER.SAVE$ = GENDER$
LPRINT
RETURN
AGEBRK:
LPRINT
IF AGE.SAVE$ = "UNDER" THEN
IF GENDER.SAVE$ = "F" THEN
LPRINT USING T1$; AGE.TOT
ELSE
LPRINT USING T3$; AGE.TOT
END IF
ELSE
IF GENDER.SAVE$ = "F" THEN
LPRINT USING T2$; AGE.TOT
ELSE
LPRINT USING T4$; AGE.TOT
END IF
END IF
LPRINT
LET LINE.COUNT = LINE.COUNT + 2
LET GENDER.TOT = GENDER.TOT + AGE.TOT
LET AGE.TOT = 0
LET AGE.SAVE$ = AGE.GROUP$
RETURN
'********************* print Totals *************************************
Printtotals:
LPRINT " GOOD HEALTH GYM MEMBER TOTAL "
LPRINT
LPRINT USING T8$; RPT.TOT
RETURN
'********************* End of Program ***********************************