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:29MAY74
52  REM:Q1=1 FOR>CATE;=2 FOR>SELR;=3 FOR>MOVE;=4 FOR>DELV
80  DIM A$[2],B$[12],C$[12],E$[4]
100  Q[6]=17
110  IF Q9>1 THEN 136
120  PRINT "WANT EXPLANATION ";
130  INPUT B$
132  IF B$[1,1]="N" THEN 136
133  PRINT 
134  GOTO 9915
136  IF Q[1]=0 THEN 9990
152  GOTO Q1 OF 175,153,170,179
153  FOR I=1 TO N
154  IF X[I,K9+2]=0 THEN 160
156  NEXT I
157  E$="SELR"
158  REM:OK FOR SELR
159  GOTO 180
160  PRINT "'SELR' CANNOT BE EXECUTED WITH INACTIVE ROWS IN THE DATA MATRIX."
161  PRINT "USE 'RECOUP' FIRST."
162  GOTO 9996
170  E$="MOVE"
171  IF P[63]>0 THEN 180
172  PRINT "'MOVE' CANNOT BE USED UNTIL A SCRATCH PAD IS DECLARED IN 'RDIM'."
174  GOTO 9996
175  E$="CATE"
176  GOTO 180
179  E$="DELV"
180  Q6=0
194  GOTO Q1 OF 244,196,200,244
196  IF P[63]=0 THEN 244
200  PRINT 
206  PRINT "*  WANT TO ";
208  GOTO Q1 OF 9998,210,214
210  PRINT "SELECT INACTIVE ROWS USING VALUES IN ";
212  GOTO 230
214  PRINT "MOVE ";
220  GOSUB 230
222  GOTO 244
230  PRINT "DATA COL. OR SCRATCH COL. ";
232  INPUT B$
234  IF B$[1,1]="D" THEN 243
236  IF B$[1,1]="S" THEN 242
238  PRINT "INVALID RESPONSE!"'10'13"PLEASE ANSWER"'10"DATA, OR D"'10"SCRATCH, OR S."
240  GOTO 230
242  Q6=K9+2
243  RETURN 
244  PRINT 
246  PRINT "*  GIVE NUMBER ";
247  IF Q3=0 THEN 249
248  PRINT "OR NAME"
249  PRINT "FOR THE COLUMN TO BE ";
250  GOTO Q1 OF 252,256,260,264
252  PRINT "USED FOR CREATING A CATEGORICAL VARIABLE : ";
254  GOTO 270
256  PRINT "USED FOR SELECTING INACTIVE ROWS : ";
258  GOTO 270
260  PRINT "MOVED : ";
262  GOTO 270
264  PRINT "DELETED : ";
270  ENTER 30,Q8,C$
274  PRINT 
276  IF Q8>0 THEN 310
278  PRINT "NEED HELP ";
280  INPUT B$
282  IF B$[1,1]="N" THEN 244
284  GOSUB 4000
286  GOTO 244
310  IF C$[1,4]="HELP" THEN 278
312  IF C$[1,1]="?" THEN 278
314  GOTO 4500
330  I3=Z9
338  GOTO Q1 OF 400,1000,500,9917
400  IF P[63]=0 THEN 600
405  PRINT 
410  PRINT "WANT TO PUT CATEGORICAL VARIABLE IN ";
420  GOSUB 230
430  GOTO 600
500  IF Q6=0 THEN 540
510  Q6=0
520  GOTO 600
540  Q6=K9+2
600  PRINT 
610  PRINT "*  GIVE NUMBER OF ";
620  IF Q6=0 THEN 630
622  PRINT "SCRATCH COL. ";
623  Z1=P[63]
624  GOTO 650
630  PRINT "DATA COL. ";
640  Z1=K+1 MIN K9-1
650  IF Q1=3 THEN 656
652  PRINT "TO PUT CATEGORICAL VARIABLE IN : ";
654  GOTO 660
656  PRINT "TO MOVE COL. TO : ";
660  ENTER 30,Q8,I4
662  PRINT 
670  IF Q8>0 THEN 690
672  PRINT "NEED HELP ";
674  INPUT B$
676  IF B$[1,1]="N" THEN 600
678  GOSUB 4000
686  PRINT  USING 9500;Z1
688  INPUT I4
690  IF I4=0 THEN 9996
692  IF I4>.9 AND I4<Z1+.1 THEN 696
694  GOTO 686
696  IF Q6=0 THEN 700
698  I4=I4+Q6
700  GOTO 9917
999  REM:>SELR
1000  M1=M2=X[1,Z9]
1070  FOR I=2 TO N
1080  IF M1 <= X[I,Z9] THEN 1110
1090  M1=X[I,Z9]
1100  GOTO 1130
1110  IF M2 >= X[I,Z9] THEN 1130
1120  M2=X[I,Z9]
1130  NEXT I
1140  PRINT "MIN. OBS. =";M1;"MAX. OBS. =";M2
1145  PRINT 
1150  GOTO Q9 OF 1160,1170,1180
1160  PRINT "TO RETAIN ALL ROWS IN WHICH COL."Z9"VALUES ARE >=L AND <=U,"
1170  PRINT "GIVE VALUES FOR L AND U, SEPARATED BY A COMMA."
1180  PRINT "L,U = ";
1190  INPUT L,U
1200  IF L <= M1 AND U >= M2 THEN 1290
1210  REM:FLAG ROWS WHICH DO NOT HAVE L<=X<=U
1220  I3=1
1230  I4=N
1240  FOR I=1 TO N
1250  IF X[I,Z9] >= L AND X[I,Z9] <= U THEN 1270
1260  X[I,K9+2]=0
1270  NEXT I
1280  GOTO 1310
1290  PRINT "NO ROWS DELETED SINCE ALL VALUES IN COL."Z9"IN RANGE"L"TO"U
1300  GOTO 9996
1310  Q[8]=0
1320  GOTO 9912
3900  IF Z1>10 THEN 3930
3910  C$=M$[6*Z1-5,6*Z1]
3920  GOTO 3940
3930  C$=N$[6*(Z1-10)-5,6*(Z1-10)]
3940  RETURN 
3950  IF Z1>10 THEN 3980
3960  M$[6*Z1-5,6*Z1]=C$
3970  GOTO 3990
3980  N$[6*(Z1-10)-5,6*(Z1-10)]=C$
3990  RETURN 
4000  PRINT 
4001  IF Q6=K9+2 THEN 4190
4002  PRINT "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 Q1=4 THEN 4290
4190  IF P[63]=0 THEN 4290
4192  PRINT "IN YOUR SCRATCH PAD:"
4194  PRINT "COL.   NAME   VALUE IN FIRST ROW"
4196  PRINT "****  ******  ******************"
4198  Z=K9+1
4200  FOR I=1+Z TO P[63]+Z
4202  Z1=I
4204  GOSUB 3900
4210  PRINT  USING 4220;(I-Z),C$,X[1,I]
4220  IMAGE X2D,3X6A,4XD.5DE
4230  NEXT I
4290  RETURN 
4500  IF Q3#1 THEN 4540
4502  IF Q6>0 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
4550  GOTO 4679
4555  IF C$[1,6]#"RESIDU" THEN 4567
4565  GOTO 4679
4567  IF Q6=0 THEN 4599
4580  Z=K9+1
4582  FOR I=1+Z TO P[63]+Z
4584  IF I>10 THEN 4590
4586  IF M$[(I*6-5),6*I]=C$[1,6] THEN 4730
4588  GOTO 4594
4590  Z=I-10
4592  IF N$[(Z*6-5),6*Z]=C$[1,6] THEN 4730
4594  NEXT I
4599  RESTORE 
4600  IF Q6=0 THEN 4606
4602  Z=P[63]
4604  GOTO 4608
4606  Z=K
4608  FOR I=1 TO Z
4610  READ A$
4620  IF A$=C$ THEN 4650
4630  NEXT I
4634  IF Q6>0 THEN 4710
4640  FOR I=K+1 TO K9+1
4642  READ A$
4644  IF A$=C$ THEN 4660
4646  NEXT I
4648  GOTO 4710
4650  Z9=I+Q6
4654  GOTO 4760
4660  IF I<K9 THEN 4700
4670  Z9=I
4679  PRINT 
4690  PRINT "CAN'T USE FITTED OR RESIDUAL COL(S). WITH "E$
4692  IF Q[2]=0 THEN 9996
4694  PRINT "BUT YOU CAN COPY RESIDUAL OR FITTED VALUES INTO A DATA COL."
4695  PRINT "BY USING 'SAVR'."
4696  GOTO 9996
4700  PRINT "NO DATA IN COL."I
4702  GOSUB 4000
4704  GOTO 9996
4710  Z9=0
4715  PRINT C$" IS NOT A VALID NAME OR NUMBER"
4720  GOTO 284
4730  Z9=I
4740  GOTO 4760
4750  Z9=10+I
4760  GOTO 330
9500  IMAGE "GIVE INTEGER, ",2D," OR LESS, BUT NOT LESS THAN 1."
9900  DATA "1","2","3","4","5","6","7","8","9","10","11","12"
9910  DATA "13","14","15","16","17","18","19","20","21"
9912  CHAIN "$IDA912"
9915  CHAIN "$IDAE17"
9917  CHAIN "$IDA17A"
9990  CHAIN "$IDA",9990
9996  PRINT E$" NOT EXECUTED."
9998  CHAIN "$IDA",150
9999  END 
