1 ' STUDENT'S t TESTS --- TTEST.BAS --- by Dr Russell Langley
2 GOTO 400
4 '<UNK! {000A}>--- Press Enter ---
5 IF PR THEN RETURN ELSE PRINT TAB(40);:PRINT "Press <Enter> to continue.";:IN$=INKEY$:WHILE INKEY$<>CHR$(13):WEND:LOCATE,40:PRINT SPACE$(26):RETURN
6 PRINT TAB(14);:PRINT "Press <Enter> to continue, or `/' to end viewing.";:IN$=INKEY$:WHILE IN$<>CHR$(13) AND IN$<>"/":IN$=INKEY$:WEND:LOCATE,14:PRINT SPACE$(50):IF IN$="/" THEN I=N:RETURN ELSE RETURN
7 '<UNK! {000A}>*** Redirect to Block ***
8 QD=1:GOTO 622
9 ON QB GOTO 405,177,519,8,721:STOP '=start,printout,1-Sample,Inde,Matched.<UNK! {000A}><UNK! {000A}>--- Another go? ---
10 CLOSE:IF HD$="" THEN LPRINT STRING$(79,61)STRING$(4,10)
11 GOTO 400
19 '<UNK! {000A}>--- Yes/No? ---
20 PRINT:PRINT"Do you want to "+DO$;
21 INPUT" (Y/N)";Z$:IF Z$="" THEN Z$="N":RETURN ELSE Z$=CHR$(ASC(Z$) AND 95):IF Z$="Y" OR Z$="N" THEN RETURN ELSE PRINT"WHAT? ";:GOTO 21
29 '<UNK! {000A}>--- Errors & End ---
30 IF ERR THEN BEEP ELSE RUN"MENU"
31 IF ERR=70 THEN INPUT"Can't write to that disk. Remove its Write-Protect tab, then press <Enter>.";Z$:RESUME
32 IF ERR=71 THEN INPUT"That drive is empty or its gate is open. Fix, then press <Enter>.";Z$:RESUME
33 IF ERR=210 THEN RESUME 9 'from #86
39 ON ERROR GOTO 0:END'<UNK! {000A}><UNK! {000A}>*** Messages ***
40 BEEP:PRINT "---> Sorry, that entry is illegal.":RETURN
45 BEEP:PRINT"Error. Each sample must have at least 3 measurements!":PRINT:RETURN
46 ZZ$=STRING$(37-LEN(Z$)\2,177):LOCATE 1,1:PRINT ZZ$" ";:COLOR 15,0:PRINT Z$;:COLOR 7,0:PRINT" "ZZ$:RETURN 'Display brightened Z$ at top of screen
47 PRINT #2,"Confidence limits not computed (since all requested t-values weren't entered).":RETURN
49 '<UNK! {000A}>--- Vetted Decoding of FF X(I,J) from X$ ---<UNK! {000A}> Needs I, M, Q(0) from #96 or #256, & UT>0 if UT matrix.
50 K=1:L=M
51 KX=0:FOR J=K TO L:Y$=SPACE$(10):KY=0
52 KX=KX+1:IF KX>LEN(X$) THEN IF J=L THEN 54 ELSE 57
53 Z$=MID$(X$,KX,1):IF INSTR("-.0123456789",Z$) THEN KY=KY+1:MID$(Y$,KY,1)=Z$:GOTO 52 ELSE IF Z$<>" " THEN 58 ELSE IF KY=0 THEN 52
54 IF Q(0) THEN Q(J)=VAL(Y$) ELSE X(I,J)=VAL(Y$)
55 NEXT J:IF KX>=LEN(X$) THEN 60
56 PLAY"L8O3CO2C":PRINT"Only the first"L"values have been read in that line. Re-do it";:GOSUB 21:IF Z$="Y" THEN 59 ELSE 60
57 PLAY"L32O4CEG>C":PRINT"Not enough values in the line above. Please re-do whole line.":GOTO 59
58 PLAY"L16O3CEL4>B":PRINT"That line contains a `non-numeric' entry. Please re-do whole line."
59 PRINT"Row"STR$(I);:INPUT X$:IF RIGHT$(X$,1)<>"/" THEN 51 ELSE X$=LEFT$(X$,LEN(X$)-1):N=I+(X$=""):IF X$>"" THEN 51
60 RETURN
69 '<UNK! {000A}>--- K/b Input of all X(I,J) in FF ---<UNK! {000A}> Needs first I, M, Q>0 (sample #), KN(Q), & if UT matrix UT>0. Returns N.
70 PRINT"Enter data from keyboard, ";:IF M=1 THEN PRINT "pressing <Enter> after each number.":GOTO 72
71 PRINT"in Free Format, pressing <Enter> at end of each row.":IF UT THEN 73
72 PRINT"Null entry duplicates previous row. Signal `end-of-data' by entering a `/'"
73 PRINT"Row"STR$(I-KN(Q-1));:INPUT X$:IF X$=""THEN IF I>1 THEN FOR J=1 TO M:X(I,J)=X(I-1,J):NEXT J:I=I+1:LOCATE CSRLIN-1,POS(0)+9:PRINT"Ditto":GOTO 73
74 IF RIGHT$(X$,1)="/" THEN X$=LEFT$(X$,LEN(X$)-1):N=I+(X$=""):IF X$="" THEN 76
75 GOSUB 50:IF N=0 THEN IF I<MXR THEN I=I+1:GOTO 73 ELSE N=MXR
76 RETURN
79 '<UNK! {000A}>--- Disk Input of X(I,J), N, M, etc ---<UNK! {000A}> Needs MNR, MNC, & NEEDVARS. Also ZZ$="UTOK" if UT is acceptable.
80 QD=1:IO$="I":GOSUB 110:CLS:PRINT "Loading data from disk.":INPUT #1,FL$,VR$
81 IF LEFT$(VR$,4)<>"(RL," THEN BEEP:PRINT "Unreadable file --- not made by our Data Filer/Editor program.":GOTO 86
83 IF UT>0 AND ZZ$<>"UTOK" THEN PRINT "This file is an upper triangular matrix, which this program can't use!":GOTO 86
84 PRINT"File has"N"rows of data. ";:IF N<MNR THEN PRINT "--- Not enough!":GOTO 86 ELSE IF N>MXR THEN PRINT"--- Too many!":GOTO 86
85 PRINT:PRINT"File has"M"column variables. ";:IF M<MNC THEN PRINT "--- Not enough!" ELSE IF M>MXC THEN PRINT"Too many!" ELSE 88
86 CLOSE:BEEP:GOSUB 5:ERROR 210
87 ' Select variables
88 PRINT:IF VN$="N" THEN PRINT "The"M"variables are not named.":GOTO 90
89 PRINT "Variables in file are:":FOR J=1 TO M:INPUT #1,VN$(J):PRINT J;VN$(J),:NEXT J:PRINT
90 IF M=MNC OR UT>0 THEN 100 ELSE PRINT
91 IF NEEDVARS=0 THEN PRINT"How many filed column variables are to be IGNORED (0-"MID$(STR$(M-MNC),2)")";:INPUT ND:IF ND<0 OR ND>M-MNC THEN 91 ELSE IF ND=0 THEN 100
92 IF NEEDVARS=1 THEN PRINT"This test analyses only 1 column variable at a time.":ND=M-1
93 IF NEEDVARS=2 THEN PRINT"This test analyses only 2 column variables.":ND=M-2
94 IF ND=1 THEN PRINT "Number of the variable to be IGNORED (1-"MID$(STR$(M),2)")";:INPUT X$:Q(1)=VAL(X$):IF Q(1)<1 OR Q(1)>M THEN GOSUB 40:GOTO 94 ELSE 97
95 PRINT MID$(STR$(ND),2)" numbers of variables to be IGNORED (in ascending order & Free Format):":INPUT X$:IF VAL(X$)<1 THEN GOSUB 40:GOTO 95
96 Q(0)=1:MM=M:M=ND:GOSUB 50:Q(0)=0:M=MM
97 KK=1:L=1:FOR J=1 TO M:IF J=Q(KK) THEN KK=KK+1 ELSE VN$(L)=VN$(J):L=L+1
98 NEXT J
99 ' Now read numerical data from disk
100 PRINT:COLOR 23,0:PRINT"Loading numbers";:COLOR 7,0:FOR I=1 TO N:KK=1:LL=1:L=M
101 FOR J=1 TO L:INPUT #1,Z
102 IF J=Q(KK) THEN KK=KK+1 ELSE X(I,LL)=Z:LL=LL+1
103 NEXT J:NEXT I:CLOSE:LOCATE,1:PRINT SPACE$(15):M=M-ND:RETURN
109 '<UNK! {000A}>--- Get Filespec ---
110 IF IO$="O" AND FL$>"" THEN PRINT "Will you file this data under the name "FL$;:GOSUB 21:IF Z$="Y" THEN 115
111 LINE INPUT "Filename (I will add .DAT extension)? ";FL$:IF FL$="" THEN 111 ELSE IF MID$(FL$,2,1)=":" THEN DR$=LEFT$(FL$,1):FL$=MID$(FL$,3)
112 ER=0:FOR I=1 TO LEN(FL$):Z$=MID$(FL$,I,1):IF INSTR(" .,/\|?*:;[]+="+CHR$(34),Z$) THEN ER=1
113 NEXT I
114 IF ER=0 AND FL$>"" AND LEN(FL$)<9 THEN FL$=FL$+".DAT" ELSE BEEP:PRINT "Invalid filename. Will you try again";:GOSUB 21:IF Z$="Y" THEN 111 ELSE 2
115 INPUT "Which drive (A,B,C,D)";DR$:IF DR$="" THEN 115
116 DR$=CHR$(ASC(DR$) AND 95):IF INSTR("ABCD",DR$)=0 THEN 115
117 INPUT "Which directory (e.g. WORK, MYDATA, or Null Entry if root) ";DR2$:IF DR2$="" THEN DR$=DR$+":" ELSE DR$=DR$+":\"+DR2$+"\"
129 '<UNK! {000A}>*** Open File, IO$= "I" ***
130 IF IO$="O" THEN STOP
131 '
132 '
133 '
134 ON ERROR GOTO 136:OPEN DR$+FL$ FOR INPUT AS #1 'for input
177 CLS:PRINT"Printing .....":LOCATE 4,1:CLOSE:OPEN "LPT1:" FOR OUTPUT AS #2
178 IF HD$>"" THEN PRINT #2,STRING$(79,61):PRINT #2,DAT$;TAB(42-LEN(HD$)\2);HD$;TAB(73)VER$:PRINT #2,STRING$(79,61):HD$=""
179 PRINT #2,CHR$(10)"Problem: "ID$;CHR$(10)
180 RETURN
189 '<UNK! {000A}>*** Print Data ***<UNK! {000A}> Needs X( , ) & NEEDVARS=1 or 2: if=1, then NS,N( ),KN( ,1) else J,K,VN$( ).
190 DO$="print all the data used":GOSUB 20:IF Z$="N" THEN 193
191 PRINT #2,STRING$(2,10)"DATA USED: ":IF OP=1 THEN 194 ELSE IF NEEDVARS=1 THEN FOR J=1 TO NS:PRINT #2,"Sample "CHR$(J+64)":":FOR I=1 TO N(J):PRINT #2,X(I+KN(J-1),1);:NEXT I:PRINT #2,:NEXT J:GOTO 193
192 IF NEEDVARS=2 THEN GOSUB 210:PRINT #2,VN$(1)", & "VN$(2):FOR I=1 TO N:PRINT #2,X(I,1);X(I,2):NEXT I
193 PR=0:PRINT #2,:CLOSE:RETURN
194 FOR I=1 TO N:PRINT #2,X(I,1);:NEXT I:PRINT #2,:GOTO 193
199 '<UNK! {000A}>--- Show a Row of Data ---
200 PRINT"Row"STR$(I)": ";:FOR J=1 TO M:PRINT X(I,J);:NEXT J:PRINT:RETURN
209 '<UNK! {000A}>--- Varnames ---
210 IF VN$="Y" THEN RETURN ELSE FOR J=1 TO M:IF J<10 THEN VN$(J)="Var #"+STR$(J) ELSE VN$(J)="Var #"+MID$(STR$(J),2)
211 NEXT J:RETURN
229 '<UNK! {000A}>--- Stats of X(I,J), I=II to NN (for Sample Q if NS>1) ---
230 S1=0:S2=0:S3=0:S4=0:SM=X(II,J):GR=SM:FOR I=II TO NN:X=X(I,J)-X(II,J):S1=S1+X:S2=S2+X*X:S3=S3+X*X*X:S4=S4+X*X*X*X:IF X(I,J)<SM THEN SM=X(I,J) ELSE IF X(I,J)>GR THEN GR=X(I,J)
253 INPUT"Which transform (+/- 1 to 9, or 10)";T%:IF T%=10 THEN 273 ELSE IF ABS(T%)<1 OR ABS(T%)>9 THEN PRINT"WHAT? ";:GOTO 253
254 IF M=1 THEN NT=1:Q(1)=1:GOTO 257 ELSE PRINT"How many variables are to have this transform (max"STR$(M)")";:INPUT NT:IF NT<1 OR NT>M THEN 254 ELSE IF NT=M THEN FOR J=1 TO M:Q(J)=J:NEXT J:GOTO 257
255 IF NT=1 THEN INPUT"Which variable # ";X$:Q(1)=VAL(X$):IF Q(1)<1 OR Q(1)>M THEN PRINT"Silly":GOTO 255 ELSE 257
256 PRINT"Which"NT"variables (#'s in Free Format)";:INPUT X$:I=1:MM=M:M=NT:Q(0)=1:GOSUB 50:Q(0)=0:M=MM:FOR J=1 TO NT:IF Q(J)>0 AND Q(J)<=M THEN NEXT J ELSE PRINT"Value"J"is out-of-bounds. Try again.":GOTO 256
402 DIM I,J,K,L,M,N,Q,Z,X$,Y$,Z$,VN$(MXC),Q(MXC),N(2),KN(2),DF(3),AV(3),SD(3),VA(3),SE(3),S1(3),S2(3),SM(3),GR(3),TG1(3),TG2(3),SKEW(3),ZSKEW(3),CURT(3),ZCURT(3),T5(3),T1(3),CL95(4),CL99(4),ED$(1),E$(3)
403 P5=0.5:S$=SPACE$(6)
404 ED$(0)="C#=Change, D#=Delete, X=Extra data, Null=Proceed":ED$(1)="C#=Change, Null=Proceed":FT$="What is the 2-tail P=#% value of Student's t for df=###":F$="#####.###":EDTR$="edit or transform that data & re-run this test"
405 QB=1:CLOSE:CLS:Z$="M E N U F O R S T U D E N T' S t T E S T S":GOSUB 46
406 LOCATE 3,8:PRINT"Press the NUMBER of your choice, and then press <ENTER> to run it.":PRINT STRING$(80,196)
407 LOCATE 6,1,0:K=20:PRINT"<UNK! {000A}>"TAB(K)"1 t Test on 1 Sample.<UNK! {000A}><UNK! {000A}>"TAB(K)"2 t Test on 2 Independent Samples.<UNK! {000A}><UNK! {000A}>"TAB(K)"3 t Test on 2 Matched Samples.<UNK! {000A}><UNK! {000A}>"TAB(K)"4 Return to Main Menu."
408 PRINT:LOCATE ,18,1:INPUT"===> Option (1-4) ";OP:ON OP GOTO 500,600,700,30:PRINT"No, please enter 1, 2, 3 or 4":GOTO 408
499 '<UNK! {000A}>------ <<< 1-Sample t Test >>>
500 QB=3:HD$=" S T U D E N T' S 1 - S A M P L E t T E S T ":VER$="(RL,2)"
501 NEEDVARS=1:DIM X(MXR,1):NS=1
502 F1$="= ########.##":F6$="= ###.##":F7$="=####.##":F8$="= ########":FC$="##% Confidence Limits for Population Mean =####,###.### ! ####,###.###"
514 DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 518
515 '<UNK! {000A}>--- Disk Entry ---
516 QD=1:MNR=3:MNC=1:GOSUB 80:Q=1:GOTO 519
517 '<UNK! {000A}>--- K/b Entry ---
518 I=1:M=1:Q=1:GOSUB 70
519 CLOSE:PRINT:PRINT"Data read was:"
520 L=1:FOR I=1 TO N:PRINT TAB(L)"#"MID$(STR$(I),2)"="X(I,1);:L=L+16:IF L>65 THEN L=1:PRINT
521 IF I MOD 100=0 THEN GOSUB 6
522 NEXT I:PRINT
523 '<UNK! {000A}>--- Edit ---
524 PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 536 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
525 IF LZ$="C" THEN 527 ELSE IF QD THEN 526 ELSE IF LZ$="D" THEN 530 ELSE IF LZ$="X" THEN 532
526 BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid datum number.":GOTO 524 ELSE PRINT"WHAT?":GOTO 524
527 IF I<1 OR I>N THEN 526
528 PRINT"Old value ="X(I,1)" New value";:INPUT X$:IF X$="" THEN PRINT"Unchanged":GOTO 524 ELSE FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That has a `non-numeric' entry. Re-do.":GOTO 528
529 NEXT L:X(I,1)=VAL(X$):GOTO 519
530 IF I<1 OR I>N THEN 526 ELSE IF N<4 THEN GOSUB 45:GOTO 524 ELSE GOSUB 43:FOR L=I TO N:X(L,1)=X(L+1,1):NEXT L:N=N-1:T5=0
531 LOCATE ,1:PRINT"Ok, value #"I"deleted.":GOSUB 5:GOTO 519
532 IF N=MXR THEN PRINT"Total N is already maximum,"N;:GOTO 524
533 PRINT"You can append up to"MXR-N"extra measurements, 1 per line, with `/' end-signal:"
534 I=N+1:N=0:GOSUB 73:T5=0:GOTO 519
535 '<UNK! {000A}>--- Trans, t Values, & Calc ---
536 DO$="transform this data":GOSUB 20:IF Z$="Y" THEN GOSUB 250:GOTO 519
537 PRINT:INPUT "What population mean value do you want to test";PM:PRINT:IF T5=0 THEN DF=N-1:P=5:GOSUB 360:T5=TT:IF T5 THEN P=1:GOSUB 360:T1=TT
538 GOSUB 43:II=1:NN=N:J=1:GOSUB 230:T=(AV-PM)/SE:IF T5 THEN CL95(1)=AV-T5*SE:CL95(2)=AV+T5*SE:CL99(1)=AV-T1*SE:CL99(2)=AV+T1*SE
615 DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 621
616 '<UNK! {000A}>--- Disk Entry ---
617 QD=1:MNR=6:MNC=1:GOSUB 80
618 FOR Q=1 TO NS:PRINT"How many measurements belong to Sample "CHR$(Q+64);:INPUT N(Q):IF N(Q)<3 OR N(Q)>N-KN(Q-1)THEN GOSUB 40:GOTO 618
619 KN(Q)=KN(Q-1)+N(Q):NEXT Q:IF N=KN(Q-1) THEN 622 ELSE BEEP:PRINT"Hey, those sample sizes don't add up to"N:GOTO 618
620 '<UNK! {000A}>--- K/b Entry ---
621 PRINT"Ok, press <Enter> after each measurement. Null entry duplicates previous value.Signal `end-of-each-sample' by entering a `/'."
622 CLOSE:Q=1:M=1
623 IF QD THEN 626
624 PRINT:PRINT"Sample "CHR$(Q+64)" ---"
625 I=N+1:N=0:GOSUB 73:N(Q)=N-KN(Q-1):IF N(Q)>2 THEN KN(Q)=N ELSE GOSUB 45:N=KN(Q-1):GOTO 625
626 PRINT:PRINT"Sample "CHR$(Q+64)" --- Data read was:"
627 L=1:FOR I=KN(Q-1)+1 TO KN(Q):PRINT TAB(L)"#"MID$(STR$(I-KN(Q-1)),2)"="X(I,1);:L=L+16:IF L>65 THEN L=1:PRINT
628 IF I MOD 100=0 THEN GOSUB 6
629 NEXT I:PRINT
630 '<UNK! {000A}>--- Edit ---
631 PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 642 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
632 IF LZ$="C" THEN 634 ELSE IF QD THEN 633 ELSE IF LZ$="D" THEN 637 ELSE IF LZ$="X" THEN 639
633 BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid datum number.":GOTO 631 ELSE PRINT"WHAT?":GOTO 631
634 IF I<1 OR I>N(Q) THEN 633 ELSE I=I+KN(Q-1)
635 PRINT"Old value ="X(I,1)" New value";:INPUT X$:IF X$="" THEN 631 ELSE FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That contains a `non-numeric' entry. Please re-do.":GOTO 635
636 NEXT L:X(I,1)=VAL(X$):GOTO 626
637 IF I<1 OR I>N(Q) THEN 633 ELSE IF KN(Q)-KN(Q-1)<4 THEN GOSUB 45:GOTO 631 ELSE GOSUB 43:FOR L=I+KN(Q-1) TO N:X(L,1)=X(L+1,1):NEXT L:N(Q)=N(Q)-1:KN(Q)=KN(Q)-1:N=N-1
638 LOCATE ,1:PRINT"Ok, value #"I"deleted.":T5(1)=0:GOSUB 5:GOTO 626
639 IF N=MXR THEN PRINT"Total N is already maximum,"N;:GOTO 631
640 PRINT"You can append up to"MXR-N"extra measurements, 1 per line, with `/' end-signal:"
678 PRINT #2,".... This test can be judged by Cochran's t' values,";
679 IF T5(1)>0 AND T5(2)>0 THEN PRINT #2," namely:" ELSE PRINT #2,:PRINT #2,".... but you didn't enter the Student's t values needed for their calculation.":GOTO 684
716 DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 720
717 '<UNK! {000A}>--- Disk Entry ---
718 QD=1:MNR=3:MNC=2:GOSUB 80:GOSUB 5:GOTO 721
719 '<UNK! {000A}>--- K/b Entry
720 PRINT"Ok, enter 3-400 paired values, 1 pair per line in Free Format, from keyboard.":I=1:M=2:Q=1:GOSUB 72:IF N<3 THEN PRINT "Not enough rows to analyse. Will you add others";:GOSUB 21:IF Z$="N" THEN 2 ELSE 733
721 CLOSE:CLS:PRINT"Data read was:":FOR I=1 TO N:PRINT"Row #"MID$(STR$(I),2)": ";:FOR J=1 TO M:PRINT X(I,J);:NEXT J:PRINT:IF I MOD 20=0 THEN GOSUB 6
722 NEXT I
723 '<UNK! {000A}>--- Edit ---
724 PRINT:PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 735 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
725 IF LZ$="C" THEN 727 ELSE IF QD THEN 726 ELSE IF LZ$="D" THEN 731 ELSE IF LZ$="X" THEN 732
726 BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid row number.":GOTO 724 ELSE PRINT"WHAT?":GOTO 724
727 IF I<1 OR I>N THEN 726 ELSE GOSUB 200
728 PRINT"Change which variable # (1 or 2)";:INPUT Z$:IF Z$="" THEN 724 ELSE J=VAL(Z$):IF J<1 OR J>M THEN BEEP:GOTO 728
729 PRINT"Old value ="X(I,J)" New value";:INPUT X$:FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That contains a `non-numeric' entry. Please re-do.":GOTO 729
730 NEXT L:X(I,J)=VAL(X$):PRINT"New ";:GOSUB 200:GOSUB 5:GOTO 721
731 IF I<1 OR I>N OR N<4 THEN GOSUB 40:GOTO 724 ELSE N=N-1:FOR K=I TO N:FOR L=1 TO M:X(K,L)=X(K+1,L):NEXT L:NEXT K:PRINT"Ok, Row"I"Deleted.":GOSUB 5:GOTO 721
732 IF N=MXR THEN PRINT"No, you have maximum rows already.":GOTO 724
733 PRINT"Ok, you can add up to"MXR-N"extra rows in Free Format.":I=N+1:N=0:Q=1:GOSUB 72:GOTO 721
734 '<UNK! {000A}>--- Trans, t Values & Calc ---
735 DO$="transform this data":GOSUB 20:IF Z$="Y" THEN GOSUB 250:GOTO 721
736 PRINT:IF T5=0 THEN DF=N-1:P=5:GOSUB 360:T5=TT:IF T5 THEN P=1:GOSUB 360:T1=TT
737 CLS:GOSUB 43
738 FOR I=1 TO N:X(I,0)=X(I,1)-X(I,2):X(I,3)=X(I,1)+X(I,2):NEXT I
739 II=1:NN=N:FOR J=0 TO 3:Q=J:GOSUB 230:NEXT J
740 SP=0:FOR I=1 TO N:SP=SP+X(I,0)*X(I,3):NEXT I:SP=SP-AV(0)*AV(3)*N:R=SP/SQR(SS(0)*SS(3))
741 DF=N-1:SED=SQR(SS(0)/N/DF):T=AV(0)/SED
742 IF T5 THEN CL95(1)=AV(0)-T5*SED:CL95(2)=AV(0)+T5*SED:IF T1 THEN CL99(1)=AV(0)-T1*SED:CL99(2)=AV(0)+T1*SED