30 AF=0:PRINT:PRINT TAB(22);"1.) For a population survey":PRINT
35 PRINT TAB(22);"2.) For a paired case-control study":PRINT
40 PRINT TAB(22);"3.) For an unpaired case-control study":PRINT:PRINT
45 LOCATE 12,28:PRINT "Enter choice:":AR=12:AC=42:GOSUB 4800:ASUB=VAL(IP$):IF ABS(ASUB-2)>1 THEN BEEP:GOTO 45
50 D1="the true population rate ":D2="and your sample rate ":D3=" How certain must you be ":D4="POPULATION"
55 CLS:ON ASUB GOTO 65,110,115
60 PRINT "Enter your best estimate of the ";D4;" RATE of the study characteristic:":PRINT TAB(27);"(err towards 50%)";TAB(54);"Percent = ";:AR=CSRLIN:AC=65:GOSUB 4800:P=VAL(IP$):RETURN
65 PRINT TAB(24);"SAMPLE SIZE FOR ";D4;" SURVEY":PRINT TAB(24);STRING$(33,205):PRINT
70 LOCATE 4,5:PRINT "How LARGE is the population from which you want to select your sample?":PRINT TAB(26);"(you may approximate)":AR=5:AC=63:GOSUB 4800:PS=VAL(IP$):LOCATE 7,1:GOSUB 60
75 LOCATE 10,7:PRINT "What is the MAXIMUM difference between ";D1:PRINT TAB(7);D2;"that you can tolerate?";TAB(54);"Percent =":AR=11:GOSUB 4800:XD=VAL(IP$)
80 LOCATE 13,1:PRINT D3;"that the difference between ";D1:PRINT TAB(25);D2;"is <";XD;"% ?"
120 LOCATE 6,10:PRINT "Do you expect the TEST GROUP rate to be HIGHER or LOWER":PRINT TAB(20);:INPUT "than the control group rate? (H or L) ",A$
125 IF A$<>"h" AND A$<>"H" AND A$<>"l" AND A$<>"L" THEN BEEP:GOTO 120
130 LOCATE 9,4:PRINT "What is the SMALLEST DIFFERENCE between the test group and controls":PRINT TAB(12);"that you want to be able to detect?";TAB(54);"Percent =":AR=10:AC=65:GOSUB 4800:XD=VAL(IP$)
135 IF A$="h" OR A$="H" THEN PT=P+XD ELSE PT=P-XD
140 LOCATE 12,1:PRINT D3;"that you detect a difference as small as";XD;"% ?":PRINT TAB(30);"(if it exists) ?":PRINT TAB(17);
150 IF C=1 THEN XZB=0.525 ELSE IF C=2 THEN XZB=0.842 ELSE IF C=3 THEN XZB=1.282 ELSE IF C=4 THEN XZB=1.645 ELSE IF C=5 THEN XZB=2.327 ELSE BEEP:GOTO 140
155 LOCATE 16,3:PRINT D3;"that any difference between your samples":PRINT TAB(14);
160 PRINT "that you may detect is not simply due to chance?":PRINT TAB(20);
195 GOSUB 220:COLOR CLR2,CLR1:DQ="The number of ":LOCATE 22,1:PRINT TAB(19);:IF AF=0 AND CC=1 THEN PRINT DQ;"PAIRS required is: ";INT(SN+0.5);:GOTO 205
200 PRINT DQ;"CASES required is: ";INT(SN+0.5);TAB(80):PRINT TAB(18);DQ;"CONTROLS required is: ";INT(SN+0.5)*CC;
205 PRINT TAB(80):COLOR CLR1,CLR2:LOCATE 25,17
210 INPUT;"Do you want to calculate another SAMPLE SIZE? ",A$:IF A$="y" OR A$="Y" THEN 20
215 GOTO 3000
220 PLAY "MS O3 L64 G O2 GE L9 E":RETURN
3000 CLS:LOCATE 7,1:PRINT "SELECT an EPISTAT program number below:":PRINT
3005 RESTORE 3035:ON ERROR GOTO 5000
3010 FOR Z=1 TO 10:LOCATE Z+10,10:READ D:PRINT Z;D:NEXT
3015 FOR Z=11 TO 20:LOCATE Z,30:READ D:PRINT Z;D:NEXT
3020 FOR Z=21 TO 25:LOCATE Z-10,50:READ D:PRINT Z;D:NEXT
3025 LOCATE 25,16:PRINT "Enter choice (Press RETURN to exit):";:AR=25:AC=54:GOSUB 4800:AD=VAL(IP$)
3030 IF AD>0 AND AD<26 THEN RESTORE 3030:FOR Z=1 TO AD:READ D:NEXT:RUN D
3035 DATA "EPISTAT","DATA-ONE","ANOVA","BAYES","BINOMIAL","CHISQR","CORRELAT","FILETRAN","FISHERS","FORTRANS","HISTOGRM","LNREGRES","MHCHISQR","MHCHIMLT"
3040 DATA "MCNEMAR","NORMAL","POISSON","RANDOMIZ","RANKTEST","RATEADJ","SAMPLSIZ","SCATRGRM","SELECT","T-TEST","XTAB"
3045 LOCATE 23,1:SYSTEM
4000 PRINT TAB(10);:INPUT "Enter the name of the DATAFILE you wish to analyze: ",FILE$
4020 ON ERROR GOTO 5020:OPEN FILE$ FOR INPUT AS #1:INPUT #1,A,C
4040 FOR T=1 TO A:INPUT #1,T(T):NEXT
4050 FOR T=1 TO A:FOR Z=1 TO C:INPUT #1,D(T,Z):NEXT:NEXT
4060 FOR T=1 TO A:FOR Z=1 TO T(T):INPUT #1,CS(T,Z):NEXT:NEXT
4070 FOR T=1 TO A:INPUT #1,N$(T),X(T),X2(T),MD(T),SD(T):NEXT:CLOSE #1:RETURN
4100 LOCATE AR,53:PRINT TAB(63):LOCATE AR,15:INPUT "Enter the name of your new DATAFILE: ",FILE$
4110 ON ERROR GOTO 5040:OPEN FILE$ FOR OUTPUT AS #1
4120 WRITE #1,A,C:FOR T=1 TO A:WRITE #1,T(T):NEXT
4130 FOR T=1 TO A:FOR Z=1 TO C:WRITE #1,D(T,Z):NEXT:NEXT
4140 FOR T=1 TO A:FOR Z=1 TO T(T):WRITE #1,CS(T,Z):NEXT:NEXT
4150 FOR T=1 TO A:WRITE #1,N$(T),X(T),X2(T),MD(T),SD(T):NEXT:CLOSE #1:RETURN
4200 GOSUB 4800:NS=VAL(IP$):IF NS>0 AND NS<=A THEN PRINT " `";N$(NS);"'":RETURN ELSE BEEP:LOCATE 25,22:PRINT FILE$;" has only";A;"samples.";:GOTO 4200
4810 IF I$>CHR$(31) AND CL<8 THEN CL=CL+1:MID$(IT$,CL,1)=I$:PRINT I$;:GOTO 4805
4815 IF I$=CHR$(13) THEN IP$=MID$(IT$,1,CL):RETURN
4820 IF I$=CHR$(8) THEN IF CL>0 THEN CL=CL-1:PRINT CHR$(29);" ";CHR$(29);:GOTO 4805
4825 BEEP:GOTO 4805
5000 BEEP:IF ERR<>53 AND ERR<>71 THEN 5010 ELSE LOCATE 2,10:PRINT "Please place EPISTAT in drive A: (or other default).":PRINT TAB(25);"Press any key to continue:"
5005 A$=INKEY$:IF A$="" THEN 5005 ELSE RESUME
5010 ON ERROR GOTO 0:SYSTEM
5020 BEEP:PRINT:DR$="":IF ERR=71 THEN 5035 ELSE IF ERR<>52 AND ERR<>53 THEN 5010 ELSE PRINT TAB(13); "I cannot find a file by that name on ";
5025 IF MID$(FILE$,2,1)=":" THEN DR$=LEFT$(FILE$,2) ELSE PRINT "default ";
5035 PRINT TAB(16);"That disk is not ready. Check drive and try again.";:RESUME 4000
5040 BEEP:LOCATE 25,10:IF ERR=61 OR ERR=67 THEN PRINT TAB(17);"That disk is full. Change disks and try again.";:RESUME 4100
5045 IF ERR=64 OR ERR=52 THEN PRINT TAB(16);"That is not a valid FILE NAME. Please change name.";:RESUME 4100
5050 IF ERR=70 THEN PRINT "That disk is write-protected. Put your data on a different disk.";:RESUME 4100
5055 IF ERR=71 THEN PRINT TAB(16);"That disk is not ready. Check drive and try again.";:RESUME 4100 ELSE 5010
5070 BEEP:AR=CSRLIN:IF ERR<>27 AND ERR<>25 THEN 5010 ELSE LOCATE 24,15:PRINT "The printer is not ready. Check before proceeding.";:LOCATE 25,25:PRINT "Press any key to continue:";
5075 A$=INKEY$:IF A$="" THEN 5075 ELSE FOR ZZ=24 TO 25:LOCATE ZZ,10:PRINT TAB(80):NEXT:LOCATE AR,1:RESUME