10  COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78]
30  COM M$[60],N$[72]
40  COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1
45  COM I3,I4,U9,X$[20]
50  REM:13MAY74
52  REM:Q1=1 FOR>NAME;=2 FOR>SCAT;=3 FOR>NORM;=4 FOR>PLTS;=5 FOR>HIST
54  REM:Q1=6 FOR>FREQ;=7 FOR>AUTO;=8 FOR>SERC;=9 FOR>RUNS
56  REM:Q1=11 FOR>MSOR;=15 FOR>CTAB;=16 FOR>MTAB
100  DIM A$[2],B$[12],C$[12],D$[30],E$[20],V$[4]
101  IF Q1<15 THEN 110
102  IF Q9>2 THEN 110
103  PRINT "WANT EXPLANATION ";
104  INPUT B$
105  IF B$[1,1]="N" THEN 110
106  GOTO 9991
110  Q[8]=Q[9]=0
120  IF Q[1]=0 THEN 9990
130  GOTO Q1 OF 5000,150,166,200,200,200,200,200,200,9998
140  GOTO (Q1-10) OF 141,9998,9998,9998,152,157
141  V$="MSOR"
142  IF Q4=1 THEN 200
143  PRINT V$" CANNOT BE EXECUTED AFTER 'DIFF' OR 'LAGG'."
144  GOTO 9998
150  V$="SCAT"
151  GOTO 153
152  V$="CTAB"
153  Q[9]=1
154  Z1=2
155  IF K >= 2 THEN 210
156  GOTO 160
157  V$="MTAB"
158  Z1=3
159  IF K >= 3 THEN 190
160  PRINT V$" NOT POSSIBLE WITH FEWER THAN"Z1"COL(S). OF DATA."
161  GOTO 9998
165  REM
166  IF N <= 375 THEN 200
168  REM: # OBS.?
170  I1=Q4
172  I2=N
174  GOSUB 6600
176  N1=N0
178  IF N1 <= 375 THEN 200
180  PRINT '10"CAN'T EXECUTE 'NORM' WITH MORE THAN 375 OBSERVATIONS."
182  GOTO 9998
190  PRINT "CHOICE OF 'DEPENDENT VARIABLE' : "
191  GOTO 200
192  Q[13]=Q[8]
193  Q[8]=0
194  Q[9]=1
195  PRINT "CHOICE OF VERTICAL AND HORIZONTAL VARS., RESPECTIVELY:"
196  GOTO 210
200  E$="* VARIABLE : "
202  D$=": "
206  GOTO 300
210  D$="ON THE VERTICAL AXIS : "
212  E$="* VERT. VAR. : "
300  GOTO Q9 OF 305,305,370
305  PRINT "* GIVE NAME OR COLUMN NUMBER FOR THE VARIABLE ";
310  IF Q1>10 THEN 320
315  GOTO Q1-1 OF 325,325,325,325,340,330,330,330,50
320  GOTO Q1-10 OF 350,50,50,50,360,340
325  PRINT "TO BE PLOTTED ";
330  PRINT D$;
335  GOTO 375
340  PRINT "TO BE TABULATED : ";
345  GOTO 375
350  PRINT "TO BE SORTED : ";
355  GOTO 375
360  PRINT "TO BE TABULATED "D$;
365  GOTO 375
370  PRINT E$;
375  ENTER 30,Q8,C$
380  PRINT 
385  IF Q8>0 THEN 415
390  PRINT "NEED HELP ";
395  INPUT B$
400  IF B$[1,1]="N" THEN 370
405  GOSUB 4000
410  GOTO 370
415  IF C$[1,4]="HELP" THEN 390
420  IF C$[1,1]="?" THEN 390
425  GOSUB 4500
430  IF Q[9]=0 THEN 470
435  IF Q[8]#0 THEN 460
440  Q[8]=Z9
445  D$="ON THE HORIZONTAL AXIS : "
450  E$="* HORIZ. VAR. : "
455  GOTO 300
460  Q[9]=Z9
465  GOTO 475
470  Q[8]=Z9
475  IF Q[8]>(K9-1) OR Q[9]>(K9-1) THEN 485
480  GOTO 515
485  IF Q[4]=0 THEN 515
490  Q[5]=0
495  Q[6]=39
500  Q[7]=515
505  PRINT 
510  GOTO 9938
515  IF Q1#16 THEN 519
516  IF Q[9]=0 THEN 192
519  PRINT 
520  GOTO Q1-1 OF 600,1000,9904,9905,9906,9932,9932,9932,50
525  GOTO Q1-10 OF 9911,50,50,50,9915,9916
530  GOTO 9998
599  REM
600  REM:>SCAT
602  I1=Q4
604  I2=N
606  GOSUB 6600
608  Q[11]=N0
610  REM:Q(11) IS TOTAL # OF ACTIVE ROWS
612  GOTO Q9 OF 614,614,616
614  PRINT "USE ALL ACTIVE ROWS FOR SCATTER PLOT ? ";
615  GOTO 618
616  PRINT "*  ALL ROWS ? ";
618  ENTER 10,Q8,C$
620  PRINT 
622  IF Q8>0 THEN 626
623  PRINT "PLEASE ANSWER YES OR NO."
624  GOTO 614
626  IF C$[1,1]="?" THEN 623
628  IF C$[1,1]#"N" THEN 770
640  PRINT "FIRST ROW, LAST ROW ";
650  INPUT I3,I4
652  IF I3 >= Q4 THEN 660
654  PRINT  USING 656;Q4-1
656  IMAGE "ROWS 1 TO ",3D," UNDEFINED."
657  PRINT "TRY AGAIN!"
658  GOTO 640
660  IF I3 <= I4 THEN 670
662  PRINT "FIRST ROW CANNOT BE LARGER THAN LAST ROW."
664  GOTO 657
670  IF I4 <= N THEN 700
672  PRINT "NO DATA IN ROWS BEYOND"N
674  GOTO 657
700  I8=0
702  FOR I=I3 TO I4
704  IF X[I,K9+2]=0 THEN 710
706  I8=I
708  GOTO 716
710  NEXT I
712  PRINT I3"TO"I4"BLOCK HAS NO ACTIVE ROWS."
714  GOTO 9998
716  I1=I3
718  I2=I4
720  GOSUB 6600
722  Q[12]=N0
724  REM:Q(12) IS # OF ACTIVE ROWS I3 TO I4
726  Q[13]=Q[14]=0
728  I6=X[I8,Q[8]]
730  I7=X[I8,Q[9]]
732  FOR I=I8+1 TO I4
734  IF X[I,K9+2]=0 THEN 740
736  Q[13]=Q[13]+X[I,Q[8]]-I6
738  Q[14]=Q[14]+X[I,Q[9]]-I7
740  NEXT I
742  Q[13]=I6+Q[13]/N0
744  Q[14]=I7+Q[14]/N0
746  IF N0>1 THEN 752
748  Q[15]=Q[16]=0
750  GOTO 774
752  I6=I7=0
754  FOR I=I3 TO I4
756  IF X[I,K9+2]=0 THEN 762
758  I6=I6+(X[I,Q[8]]-Q[13])^2
760  I7=I7+(X[I,Q[9]]-Q[14])^2
762  NEXT I
764  Q[15]=SQR(I6/(N0-1))
766  Q[16]=SQR(I7/(N0-1))
768  GOTO 774
770  I3=Q4
772  I4=N
774  PRINT LIN(1)
776  IF Q3#1 THEN 796
778  Z1=Q[8]
780  GOSUB 3900
782  D$[1,24]="OF '      ' VS. '      '"
784  D$[5,10]=C$
786  Z1=Q[9]
788  GOSUB 3900
790  D$[18,23]=C$
792  D$=D$[1,24]
794  GOTO 798
796  D$=" "
798  IF I3=Q4 AND I4=N THEN 804
800  Z=Q[12]
802  GOTO 806
804  Z=Q[11]
806  PRINT "SCATTER PLOT OF"Z"STANDARDIZED VALUES "D$
808  GOTO 9902
998  REM
999  REM:>NORM
1000  Z1=Q[8]
1010  GOSUB 3000
1020  Q[9]=S
1030  IF Q3#1 THEN 1090
1040  GOSUB 3900
1050  D$[1,11]="OF '      '"
1060  D$[5,10]=C$
1070  D$=D$[1,11]
1080  GOTO 1100
1090  D$=" "
1100  PRINT "NORMAL CUMULATIVE PROBABILITY PLOT "D$
1110  GOTO 9903
1120  REM
2000  REM
3000  FOR I=Q4 TO N
3002  IF X[I,K9+2]=0 THEN 3010
3004  S=X[I,Z1]
3006  L=X[I,Z1]
3008  GOTO 3012
3010  NEXT I
3012  FOR J=I+1 TO N
3014  IF X[J,K9+2]=0 THEN 3026
3016  IF S <= X[J,Z1] THEN 3022
3018  S=X[J,Z1]
3020  GOTO 3026
3022  IF L >= X[J,Z1] THEN 3026
3024  L=X[J,Z1]
3026  NEXT J
3028  S=(L-S)/(X[N9+2,Z1])
3030  REM:S=STUDENTIZED RANGE
3032  RETURN 
3100  REM
3900  IF Z1<11 THEN 3940
3910  Z1=Z1-10
3920  C$=N$[6*Z1-5,6*Z1]
3930  GOTO 3950
3940  C$=M$[6*Z1-5,6*Z1]
3950  RETURN 
4000  PRINT LIN(1);"DATA MATRIX HAS VARIABLE(S) IN FIRST "K" COLUMN(S)"
4005  IF Q3=1 THEN 4100
4006  PRINT "NO NAMES GIVEN FOR VARIABLES, BUT"
4010  PRINT '10'13"FOR YOUR REFERENCE :"
4040  PRINT '10"COLUMN  1ST OBSERVATION"
4050  FOR J=1 TO K
4060  PRINT  USING "2X,DD,6X,D.5DE";J,X[Q4,J]
4070  NEXT J
4080  GOTO 4185
4100  PRINT "THEY ARE :"
4110  PRINT LIN(1);"COLUMN   NAME"
4120  FOR J=1 TO K
4130  IF J>10 THEN 4170
4140  PRINT  USING 4150;J,M$[6*J-5,6*J]
4150  IMAGE 2X,DD,4X,6A
4160  GOTO 4180
4170  PRINT  USING 4150;J,N$[6*(J-10)-5,6*(J-10)]
4180  NEXT J
4185  PRINT 
4186  IF Q[2]=0 THEN 4190
4187  PRINT "'FITTED' VALUES IN COL."K9
4188  PRINT "'RESIDUAL' VALUES IN COL."K9+1
4189  PRINT 
4190  RETURN 
4500  IF Q3#1 THEN 4540
4505  FOR I=1 TO 10 MIN K
4510  IF M$[6*I-5,6*I]=C$[1,6] THEN 4730
4515  NEXT I
4520  IF K<11 THEN 4540
4525  FOR I=1 TO K-10
4530  IF N$[6*I-5,6*I]=C$[1,6] THEN 4750
4535  NEXT I
4540  IF C$[1,6]#"FITTED" THEN 4555
4545  Z9=K9
4550  GOTO 4672
4555  IF C$[1,6]#"RESIDU" THEN 4570
4560  Z9=K9+1
4565  GOTO 4672
4570  RESTORE 
4600  FOR I=1 TO K9+1
4610  READ A$
4620  IF A$=C$ THEN 4650
4630  NEXT I
4640  GOTO 4710
4650  IF I<K+1 THEN 4730
4660  IF I<K9 THEN 4700
4670  Z9=I
4672  IF Q[2]=1 THEN 4760
4674  PRINT '10"NO FITTED OR RESIDUAL VALUES AVAILABLE ";
4676  IF K9<3 THEN 4679
4678  PRINT "UNTIL REGRESSION EXECUTED."
4679  PRINT 
4680  GOTO 9998
4700  PRINT "NO DATA IN COL."I
4702  GOSUB 4000
4704  GOTO 9998
4710  Z9=0
4715  PRINT C$" IS NOT A VALID NAME OR NUMBER"
4720  GOTO 405
4730  Z9=I
4740  GOTO 4760
4750  Z9=10+I
4760  RETURN 
5000  REM:>NAME
5040  GOSUB 4000
5050  GOTO 9998
6600  N0=0
6610  FOR I=I1 TO I2
6620  N0=N0+X[I,K9+2]
6640  NEXT I
6650  RETURN 
9000  DATA "1","2","3","4","5","6","7","8","9","10","11","12"
9010  DATA "13","14","15","16","17","18","19","20","21"
9902  CHAIN "$IDA02"
9903  CHAIN "$IDA03"
9904  CHAIN "$IDA04"
9905  CHAIN "$IDA05"
9906  CHAIN "$IDA06"
9911  CHAIN "$IDA11"
9915  CHAIN "$IDA15"
9916  CHAIN "$IDA16"
9932  CHAIN "$IDA32"
9938  CHAIN "$IDA38"
9990  CHAIN "$IDA",9990
9991  CHAIN "$IDAE15"
9998  CHAIN "$IDA",150
9999  END 
