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]
46  COM E$[4]
50  REM:13JUN74
52  REM:Q1=1 FOR>APPO;=2 FOR>APPS;=3 FOR>APPV;=4 FOR>APPB
100  DIM C$[7],D$[12],F$[7],A[19]
102  PRINT 
104  Q[6]=47
110  GOTO Q1 OF 112,114,116,118
112  E$="APPO"
113  GOTO 130
114  E$="APPS"
115  GOTO 130
116  E$="APPV"
117  GOTO 130
118  E$="APPB"
130  IF Q9>1 THEN 150
132  PRINT "WANT EXPLANATION ";
134  INPUT D$
136  IF D$[1,1]="N" THEN 150
138  GOTO 9947
150  FILES *
154  IF Q1#2 THEN 200
156  IF P[63]=0 THEN 200
170  PRINT "WANT TO USE 'APPS' WITH DATA SUBMATRIX ";
172  INPUT D$
174  IF D$[1,1]="N" THEN 178
176  GOTO 200
178  PRINT TAB(22);"WITH SCRATCH PAD ";
180  INPUT D$
182  IF D$[1,1]="N" THEN 9998
184  PRINT  USING 8000;P[63]
186  Z3=K9+3
187  Z2=N9+3
188  Z4=P[63]
190  GOTO 1600
200  IF Q[1]=0 THEN 9990
204  GOTO Q1 OF 1400,206,1200,5000
206  PRINT "DATA NOW IN ";
208  PRINT  USING 8002;N,N9,K,K9-1
210  Z2=N9
212  Z3=1
214  Z4=K+1
216  IF Q4=1 THEN 222
218  PRINT  USING 8004;Q4-1
220  PRINT  USING 8006
222  GOTO 1600
250  PRINT 
255  GOTO Q9 OF 300,260,280
260  PRINT "* MODE OF INPUT IS ";
270  GOTO 310
280  PRINT "* MODE = ";
290  GOTO 310
300  PRINT "* MODE OF INPUT : FROM 'FILE' OR 'TERMINAL' ?";
310  ENTER 30,Q8,D$
315  PRINT 
320  IF Q8>0 THEN 350
330  PRINT "RESPOND 'F' FOR FILE OR 'T' FOR TERMINAL : ";
340  GOTO 310
350  IF D$[1,1]="F" THEN 390
360  IF D$[1,1]="T" THEN 422
370  PRINT "RESPONSE INVALID"
380  GOTO 330
390  PRINT 
392  GOTO Q9 OF 400,395,395
395  PRINT "NAME IS ";
396  GOTO 402
400  PRINT "NAME OF INPUT FILE IS ";
402  INPUT F$
404  ASSIGN F$,1,Q8
406  IF Q8 <= 2 THEN 421
410  PRINT "CANNOT FIND '"F$"'. CHECK YOUR SPELLING!"
420  GOTO 400
421  IF  END #1 THEN 500
422  PRINT 
425  RETURN 
500  PRINT "NOT ENOUGH OR NO DATA IN '"F$"'."
510  PRINT "IT'S PROBABLY ALL MESSED UP."
520  GOTO 9998
1200  Z3=1
1204  Z4=(K+1) MIN (K9-1)
1206  IF K<K9-1 THEN 1210
1208  PRINT  USING 8008;E$
1210  PRINT "*  COLUMN NUMBER OF DATA MATRIX TO PLACE NEW VARIABLE :";
1212  ENTER 60,Q8,J
1214  PRINT 
1216  IF Q8>0 THEN 1226
1218  PRINT  USING 8010;Z4
1220  PRINT  USING 8012;Z3
1222  PRINT  USING 8014
1224  GOTO 1210
1226  IF J=0 THEN 9996
1228  IF J>.9 AND J<(Z4+.1) THEN 1232
1230  GOTO 1218
1232  IF J>K THEN 1236
1234  PRINT  USING 8008;E$
1236  PRINT  USING 8016;N
1238  GOSUB 250
1240  IF D$[1,1]="T" THEN 1252
1242  GOSUB 7000
1244  FOR I=1 TO N
1246  READ #1;X[I,J]
1248  NEXT I
1250  GOTO 1262
1252  PRINT "DATA FOR COLUMN "J
1254  FOR I=1 TO N
1256  PRINT "ROW "I"  ";
1258  INPUT X[I,J]
1260  NEXT I
1262  I3=I4=J
1264  X[N9+3,J]=0
1266  Q[8]=Q[6]
1268  GOTO 9912
1400  Z1=Q4
1404  Z2=(N+1) MIN N9
1406  IF N<N9 THEN 1410
1408  PRINT  USING 8008;E$
1410  PRINT "*  ROW NUMBER OF DATA MATRIX TO PLACE NEW OBSERVATION VECTOR :";
1412  ENTER 60,Q8,I
1414  PRINT 
1416  IF Q8>0 THEN 1426
1418  PRINT  USING 8010;Z2
1420  PRINT  USING 8012;Z1
1422  PRINT  USING 8014
1424  GOTO 1410
1426  IF I=0 THEN 9996
1428  IF I>Z1-.1 AND I<Z2+.1 THEN 1432
1430  GOTO 1418
1432  PRINT  USING 8016;K
1434  GOSUB 250
1436  IF D$[1,1]="T" THEN 1448
1438  GOSUB 7000
1440  FOR J=1 TO K
1442  READ #1;X[I,J]
1444  NEXT J
1446  GOTO 1458
1448  PRINT "DATA FOR ROW"I"  : ";
1450  MAT  INPUT A[K]
1452  FOR J=1 TO K
1454  X[I,J]=A[J]
1456  NEXT J
1458  X[I,K9+2]=1
1460  I3=I4=I
1462  Q[8]=0
1464  GOTO 9912
1600  Z1=1
1604  PRINT 
1606  IF Q9>1 THEN 1610
1608  PRINT "GIVE TWO VALUES, SEPARATED BY COMMAS, FOR:"
1610  PRINT "FIRST COL., LAST COL. OF NEW NUMBERS  : ";
1616  INPUT J1,J2
1618  IF J1=0 OR J2=0 THEN 9996
1630  IF J1 <= J2 THEN 1638
1632  PRINT  USING 8020
1634  PRINT  USING 8014
1636  GOTO 1610
1638  IF J1>.9 AND J1<Z4+.1 THEN 1648
1640  PRINT "FOR FIRST COL., ";
1642  PRINT  USING 8010;Z4
1644  PRINT  USING 8013
1646  GOTO 1634
1648  IF Z3>K9 THEN 1652
1650  Z4=K9-1
1652  IF J2>.9 AND J2<Z4+.1 THEN 1658
1654  PRINT "FOR LAST COL., ";
1656  GOTO 1642
1658  IF Z3<K9 THEN 1666
1660  J1=J1+K9+2
1662  J2=J2+K9+2
1664  GOTO 1670
1666  IF J2 <= K THEN 1670
1668  GOTO 1742
1670  PRINT 
1672  PRINT "FIRST ROW, LAST ROW OF NEW NUMBERS ";
1678  INPUT I1,I2
1680  IF I1=0 OR I2=0 THEN 9996
1686  IF I1 <= I2 THEN 1694
1688  PRINT  USING 8020
1690  PRINT  USING 8014
1692  GOTO 1670
1694  IF I1>Z1-.1 AND I2>Z1-.1 THEN 1704
1696  IF Q1=2 THEN 9996
1698  PRINT  USING 8004;Q4-1
1700  PRINT  USING 8006
1702  GOTO 9996
1704  IF Z3>K9 THEN 1728
1706  IF Q1=4 THEN 1714
1708  IF I2>Q4-2 THEN 1714
1710  PRINT "LAST ROW TOO SMALL"
1712  GOTO 1670
1714  IF I1<N+2 THEN 1720
1716  PRINT "FIRST ROW TOO LARGE"
1718  GOTO 1670
1720  IF J1=1 AND J2=K THEN 1726
1722  Z2=N
1724  GOTO 1728
1726  Z2=N9
1728  IF I2<Z2+.1 THEN 1800
1730  PRINT "FOR LAST ROW,"
1732  PRINT  USING 8010;Z2
1735  IF Z3>K9 THEN 1690
1736  IF Z2>N THEN 1690
1738  PRINT "IF FIRST AND LAST COL.(S) ARE NOT 1,"K
1740  GOTO 1690
1742  I1=1
1744  I2=N
1800  PRINT 
1801  PRINT "NEW NUMBERS WILL BE ENTERED IN:"
1802  PRINT "ROWS";I1;"TO";I2;",";
1803  IF Z3>K9 THEN 1808
1804  PRINT "DATA COL.(S)"J1"TO"J2;
1806  GOTO 1810
1808  PRINT "SCRATCH COL.(S)"J1-(K9+2)"TO"J2-(K9+2);
1810  PRINT ", BY ROWS."
1812  GOSUB 250
1814  IF D$[1,1]="T" THEN 1830
1816  GOSUB 7000
1818  FOR I=I1 TO I2
1820  FOR J=J1 TO J2
1822  READ #1;X[I,J]
1824  NEXT J
1826  NEXT I
1828  GOTO 1850
1830  PRINT "DATA FOR: "
1832  FOR I=I1 TO I2
1834  PRINT "ROW"I"  : ";
1836  MAT  INPUT A[J2-J1+1]
1838  J3=0
1840  FOR J=J1 TO J2
1842  J3=J3+1
1844  X[I,J]=A[J3]
1846  NEXT J
1848  NEXT I
1850  IF Z3>K9 THEN 1890
1852  FOR I=I1 TO I2
1854  X[I,K9+2]=1
1856  NEXT I
1858  IF Q1=2 THEN 1868
1860  I3=I1
1862  I4=I2
1864  Q[8]=0
1866  GOTO 9912
1868  Q[9]=I1
1870  Q[10]=I2
1872  Q[8]=Q[6]
1874  I3=J1
1876  I4=J2
1878  IF J1>K THEN 9912
1880  FOR J=J1 TO J2
1882  X[N9+3,J]=(I1-1) MIN (X[N9+3,J])
1884  NEXT J
1886  REM:CHAIN TO IDA912 FOR UPDATING N,K,Q4,MEANS, STD.DEV.
1888  GOTO 9912
1890  IF Q9>1 THEN 9998
1892  PRINT "'PRTS' OR 'FPRS' CAN BE USED TO PRINT OUT SCRATCH VALUES."
1894  GOTO 9998
5000  Z1=Q4
5010  Z3=J2=K
5020  J1=1
5030  GOTO 1670
7000  GOTO Q9 OF 7005,7005,7010
7005  PRINT "* WANT TO DELETE FIRST TWO ELEMENTS OF INPUT FILE"
7006  PRINT "  BEFORE DATA VALUES ARE READ ? ";
7007  GOTO 7020
7010  PRINT "* DELETE 1ST TWO VALUES ? ";
7020  ENTER 20,Q8,C$
7025  PRINT 
7030  IF Q8>0 THEN 7100
7040  PRINT "IF THE FIRST TWO ELEMENTS OF YOUR DATA FILE ARE"
7050  PRINT "VALUES FOR N AND K (SIZE OF DATA MATRIX TO FOLLOW)"
7060  PRINT "THEN YOU WILL WANT THEM DELETED HERE.  IF YOUR FILE"
7070  PRINT "CONTAINS DATA ALONE, THEN ANSWER 'NO'."
7080  GOTO 7010
7100  IF C$[1,1]="H" THEN 7040
7105  IF C$[1,1]="?" THEN 7040
7110  IF C$[1,1]="N" THEN 7160
7120  IF C$[1,1]="Y" THEN 7150
7130  PRINT "RESPONSE INVALID.  ANSWER 'YES', 'NO', OR '?'."
7140  GOTO 7010
7150  READ #1;I,I
7160  RETURN 
8000  IMAGE "SCRATCH PAD NOW HAS ",2D,"COL.(S)"
8002  IMAGE "FIRST ",3D," OF ",3D," ROWS AND FIRST ",2D," OF ",2D," COL.(S)"
8004  IMAGE #,"FIRST ",3D," ROWS UNDEFINED "
8006  IMAGE "BECAUSE OF PREVIOUS USE OF 'DIFF' OR 'LAGG'."
8008  IMAGE "USE OF ",4A," WILL ERASE PART OF CURRENT DATA.  WARNING ONLY!"
8010  IMAGE "NUMBER SHOULD BE ",3D," OR LESS"
8012  IMAGE "BUT NOT LESS THAN ",3D
8013  IMAGE "BUT NOT LESS THAN 1."
8014  IMAGE "TRY AGAIN!"
8016  IMAGE "REMINDER:  LENGTH OF INPUT VECTOR SHOULD BE ",4D
8020  IMAGE "FIRST NUMBER CANNOT BE LARGER THAN LAST."
9912  CHAIN "$IDA912"
9947  CHAIN "$IDAE47"
9990  CHAIN "$IDA",9990
9996  PRINT "'"E$"' NOT EXECUTED."
9998  CHAIN "$IDA",150
9999  END 
