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:2APR74
52  REM:Q1=1 FOR>RDIM;=2 FOR>ZERS;=3 FOR>ZERC;=4 FOR>ZERR
100  DIM C$[12],A$[6]
120  GOTO Q1 OF 200,5000,5500,6000
200  PRINT 
201  IF Q9>1 THEN 420
202  PRINT "WANT EXPLANATION ";
204  INPUT C$
206  IF C$[1,1]="Y" THEN 220
208  GOTO Q9 OF 400,420,420
220  PRINT "IDA CURRENTLY HAS:"
230  PRINT "A DATA MATRIX WHICH CAN HOLD A MAXIMUM OF"
240  PRINT "  "N9"OBSERVATIONS ON"K9-1"VARIABLES IN"
250  PRINT "  "N9"ROWS        AND"K9-1"COLUMNS"
251  PRINT "  PLUS 3 ROWS FOR 'STATISTICS-KEEPING'"
252  IF P[63]=0 THEN 310
255  PRINT "A SCRATCH PAD WITH"
256  PRINT "  "N9+3"ROWS AND"P[63]"COLUMNS"
310  GOSUB 9000
320  GOTO Z9 OF 400,330
330  GOSUB 8900
400  PRINT "*  GIVE MAXIMUM NUMBER OF DATA ROWS WANTED:  ";
410  GOTO 430
420  PRINT "* MAX.NO. ROWS = ";
430  ENTER 30,Q8,N1
440  PRINT 
450  IF Q8>0 THEN 490
460  PRINT 
480  GOTO 220
490  IF N1>0 AND N1=INT(N1) THEN 500
492  PRINT "NUMBERS OF ROWS AND COLS. MUST BE POSITIVE INTEGERS."
494  PRINT "START OVER!"
496  GOTO 400
497  PRINT "IDA CANNOT TAKE MORE THAN 563 ROWS."
498  PRINT 
499  GOTO 330
500  IF N1>563 THEN 497
510  N9=N1
672  Z=INT(2266/(N1+3))
674  Z=Z-3
675  Z=19 MIN Z
680  K9=Z+1
685  P[63]=0
690  IF N1>374 THEN 1000
700  PRINT "WITH"N9"ROWS YOU MAY HAVE A MAXIMUM OF"Z"COLUMNS FOR DATA."
705  PRINT 
710  PRINT "*  WANT TO SET ASIDE ANY OF THE"Z"COLUMNS IN A SCRATCH PAD ? ";
720  ENTER 30,Q8,C$
730  PRINT 
740  IF Q8>0 THEN 800
750  PRINT "NEED HELP ";
760  INPUT C$
770  IF C$[1,1]="N" THEN 710
780  GOSUB 8924
790  GOTO 700
800  IF C$[1,1]="N" THEN 1000
810  IF C$[1,1]="Y" THEN 900
820  IF C$[1,1]="?" THEN 780
900  GOTO Q9 OF 910,920,920
910  PRINT "HOW MANY COLUMNS DO YOU WANT IN THE SCRATCH PAD ";
915  GOTO 930
920  PRINT "# OF SCRATCH COL(S). = ";
930  INPUT Z2
940  Z1=Z-2
950  IF Z2 <= Z1 THEN 970
952  PRINT "CAN'T HAVE MORE THAN"Z1"OF THE"Z"COLUMNS IN THE SCRATCH PAD."
954  GOTO 920
970  P[63]=Z2
980  K9=Z-P[63]+1
1000  Q3=Q4=0
1050  MAT X=ZER[N9+3,Z+3]
1060  MAT Q=ZER
1070  MAT M=ZER
1090  M$[1,30]="                              "
1100  M$[31,60]="                              "
1110  N$[1,36]="                                    "
1120  N$[37,66]="                              "
1130  IF K9>9 THEN 1170
1150  M$[(K9-1)*6+1,(K9+1)*6]="FITTEDRESIDU"
1160  GOTO 1220
1170  IF K9>10 THEN 1210
1180  M$[55,60]="FITTED"
1190  N$[1,6]="RESIDU"
1200  GOTO 1220
1210  N$[6*K9-65,6*K9-54]="FITTEDRESIDU"
1220  IF P[63]=0 THEN 1300
1230  GOSUB 1240
1232  GOTO 1300
1240  RESTORE 
1242  FOR I=1 TO P[63]
1243  IF Q1#3 THEN 1250
1245  IF I#J THEN 1290
1250  A$="SCR.00"
1260  READ C$
1262  IF LEN(C$)=2 THEN 1268
1264  A$[6,6]=C$
1266  GOTO 1270
1268  A$[5,6]=C$
1270  Z=K9+2+I
1272  IF Z>10 THEN 1278
1274  M$[(6*Z-5),6*Z]=A$
1276  GOTO 1290
1278  Z=Z-10
1280  N$[(6*Z-5),6*Z]=A$
1290  NEXT I
1291  RETURN 
1292  DATA "1","2","3","4","5","6","7","8","9","10"
1294  DATA "11","12","13","14","15","16","17"
1300  PRINT 
1305  GOTO Q9 OF 1310,1340,1340
1310  PRINT "THE DATA MATRIX NOW HAS DIMENSIONS OF:"
1315  PRINT N9"ROWS AND"K9-1"COLUMNS."
1320  IF P[63]=0 THEN 1360
1325  PRINT "THE SCRATCH PAD HAS:"
1330  PRINT N9+3"ROWS AND"P[63]"COLUMNS."
1335  GOTO 1360
1340  PRINT "DATA DIM. ARE"N9"BY"K9-1
1345  IF P[63]=0 THEN 1360
1350  PRINT "SCRATCH PAD IS"N9+3"BY"P[63]
1360  PRINT 
1365  IF N9<301 THEN 9998
1370  PRINT "YOU CANNOT EXECUTE:"
1375  PRINT "1.  'PSORT' WITH LESS THAN 4 COLUMNS OR MORE THAN 300 ROWS."
1380  IF N9<375 THEN 1405
1385  PRINT "2.  'NORM' WITH MORE THAN 375 ROWS."
1390  IF N9<451 THEN 1405
1395  PRINT "3.  REGRESSIONS OR 'SORT', 'RANK', OR 'SCAT' WITH LESS THAN"
1400  PRINT "    2 COLUMNS OR MORE THAN 450 ROWS."
1405  PRINT 
1410  GOTO 9998
4999  REM:>ZERS
5000  IF P[63]#0 THEN 5010
5002  PRINT "YOU DON'T HAVE A SCRATCH PAD TO ZERO."
5004  GOTO 9996
5010  Z=K9+2
5020  FOR I=1 TO N9+3
5030  FOR J=(Z+1) TO (Z+P[63])
5040  X[I,J]=0
5050  NEXT J
5060  NEXT I
5070  PRINT "ALL VALUES IN THE"N9+3"ROWS AND"P[63]"COL(S)."
5080  PRINT "OF YOUR SCRATCH PAD ARE NOW ZERO."
5090  PRINT 
5100  IF Q1=4 THEN 9998
5110  GOSUB 1240
5120  GOTO 9998
5499  REM:>ZERC
5500  IF P[63]#0 THEN 5510
5502  GOTO 5002
5510  PRINT 
5520  PRINT "WHICH COL. OF YOUR SCRATCH PAD DO YOU WANT TO ZERO ";
5530  INPUT J
5540  IF J=INT(J) AND J <= P[63] THEN 5550
5542  PRINT "GIVE A POSITIVE INTEGER LESS THAN"(P[63]+1)
5544  GOTO 5520
5550  IF J=0 THEN 9996
5560  IF J >= 1 THEN 5570
5562  GOTO 5542
5570  J=K9+2+J
5572  FOR I=1 TO (N9+3)
5575  X[I,J]=0
5580  NEXT I
5585  J=J-(K9+2)
5590  PRINT "ALL VALUES IN COL."J
5592  GOTO 5080
5999  REM:>ZERR
6000  IF P[63]#0 THEN 6010
6002  GOTO 5002
6010  PRINT "WHICH ROW OF YOUR SCRATCH PAD DO YOU WANT TO ZERO ";
6020  INPUT I
6030  IF I=INT(I) AND I<(N9+4) THEN 6040
6032  PRINT "GIVE A POSITIVE INTEGER LESS THAN"(N9+4)
6034  GOTO 6010
6040  IF I=0 THEN 9996
6050  IF I>0 THEN 6060
6052  GOTO 6032
6060  Z=K9+2
6070  FOR J=(Z+1) TO (Z+P[63])
6080  X[I,J]=0
6090  NEXT J
6092  PRINT "ALL VALUES IN ROW"I
6094  GOTO 5080
8092  GOTO 9998
8900  PRINT 
8901  PRINT "NORMAL MAXIMUM DIMENSIONS OF IDA DATA MATRIX ARE:"
8902  PRINT "   100 ROWS AND 19 COLUMNS,"
8904  PRINT "BUT, USING 'RDIM', YOU MAY :"
8905  PRINT "ASK FOR  AND GET"
8906  PRINT "*******  **********"
8907  PRINT "563 ROWS   1 COLUMN"
8908  PRINT "450        2"
8910  PRINT "374        3"
8912  PRINT "300        4"
8914  PRINT "280        5"
8916  PRINT "203        8"
8918  PRINT "171       10"
8920  PRINT "122       15"
8922  GOSUB 9020
8923  GOTO Z9 OF 400,8924
8924  PRINT "SOME OF YOUR COLUMNS CAN BE PUT IN A SCRATCH PAD OF"
8926  PRINT "1 OR MORE COLUMNS AND 3 + THE NUMBER OF DATA ROWS."
8928  PRINT "NO COMPUTATIONS WILL BE DONE ON THE SCRATCH PAD NUMBERS,"
8930  PRINT "BUT YOU MAY CHANGE OR MOVE THESE NUMBERS USING THE COMMANDS"
8932  PRINT "'APPS', 'MOVE', 'ZERS',  'ZERC', AND 'ZERR'."
8934  PRINT "YOU MAY ALSO SPECIFY A COLUMN IN THE SCRATCH PAD WHEN"
8936  PRINT "USING 'CATE', 'SELR', 'PRTS', OR'FPRS'."
8990  PRINT 
8994  RETURN 
9000  PRINT "*  WANT MORE DETAILS ? ";
9005  Z9=2
9010  GOTO 9040
9020  Z9=2
9025  IF P[64]=0 OR P[64]>10 THEN 9180
9030  PRINT "* MORE ?";
9040  ENTER 255,Q8,C$
9050  PRINT 
9070  IF Q8>0 THEN 9130
9080  PRINT "PLEASE RESPOND:"
9090  PRINT "NO,"'10"FOLLOWED BY A CARRIAGE RETURN,";
9100  PRINT "   IF YOU DON'T WANT ANY MORE EXPLANATION"
9110  PRINT "WITH A CARRIAGE RETURN ONLY IF YOU WANT MORE EXPLANATION."
9120  GOTO 9030
9130  IF C$="" THEN 9190
9132  IF C$[1,1]="Y" THEN 9190
9140  IF C$="N" THEN 9175
9150  IF C$[1,1]="?" THEN 9080
9160  PRINT "INVALID RESPONSE."
9170  GOTO 9080
9175  Z9=1
9180  PRINT 
9190  RETURN 
9996  PRINT "COMMAND NOT EXECUTED."
9998  CHAIN "$IDA",150
9999  END 
