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
60  REM:Q1=1 FOR >PRTF;=2 FOR>PRTR;=3 FOR>PRTO;=4 FOR>PRTS;=5 FOR>PRTV
62  REM:Q1=6 FOR>FPRF;=7 FOR>FPRR;=8 FOR>FPRO;=9 FOR>FPRS;=10 FOR>FPRV
150  DIM A[22],F$[60],D$[6],G$[1],T$[12]
151  T$="TRY AGAIN!"'7
152  Q[6]=25
155  IF Q9>1 THEN 168
160  PRINT "WANT EXPLANATION ";
162  INPUT F$
164  IF F$[1,1]="N" THEN 168
166  GOTO 9925
168  IF Q1=4 OR Q1=9 THEN 3400
170  IF Q[1]=0 THEN 9990
200  GOTO Q1 OF 1000,1000,9927,9998,9927,1000,1000,9927,9998,9927
1000  IF Q[2]#0 THEN 1030
1010  PRINT "NO RESIDUALS OR FITTEDS YET."
1015  PRINT "EXECUTE REGRESSION FIRST."
1020  GOTO 9996
1030  IF Q[4]=0 THEN 9927
1040  Q[7]=9927
1050  GOTO 9938
3000  IF Q1 <= 5 THEN 3150
3005  PRINT 
3010  GOTO Q9 OF 3020,3060,3080
3020  PRINT "* GIVE FORMAT FOR PRINTING AN OBSERVATION (ROW) : ";
3025  GOTO 3090
3030  PRINT 
3032  PRINT "IF YOU WANT:"
3033  PRINT "0 DECIMALS GIVE #,13D "'10'13"1 DECIMAL  GIVE #,11D.D"
3034  PRINT "2 DECIMALS GIVE #,10D.2D "'10'13"3 DECIMALS GIVE #,9D.3D"
3036  PRINT "4 DECIMALS GIVE #,8D.4D "'10'13"5 DECIMALS GIVE #,7D.5D"
3037  PRINT "OR IN EXPONENTIAL FORM,"'10"SOMETHING LIKE"'10"#,XSD.5DE"
3038  PRINT 
3040  PRINT "FORMAT MUST BE PRECEDED BY   #,"
3050  PRINT 
3060  PRINT "* FORMAT = ";
3070  GOTO 3090
3080  PRINT "* FMT = ";
3090  ENTER 60,Q8,F$
3091  PRINT 
3092  IF Q8>0 THEN 3096
3094  GOTO 3030
3096  IF F$[1,1]="?" THEN 3030
3098  IF F$[1,4]="HELP" THEN 3030
3100  IF F$[1,2]#"#," THEN 3040
3110  PRINT 
3150  RETURN 
3400  IF P[63]=0 THEN 3450
3410  PRINT "WANT TO PRINT SUBMATRIX OF DATA MATRIX ";
3412  INPUT F$
3414  IF F$[1,1]#"N" THEN 3450
3420  PRINT "                        OF SCRATCH PAD ";
3422  INPUT F$
3424  IF F$[1,1]="N" THEN 9996
3430  G$="S"
3432  Z4=P[63]
3440  GOTO 3500
3450  IF Q[1]=0 THEN 9990
3460  G$="D"
3470  Z4=K9+2
3500  PRINT 
3502  GOTO Q9 OF 3504,3510,3510
3504  PRINT "TO PRINT SUBMATRIX BETWEEN ROWS I1 AND I2 INCLUSIVE,"
3506  PRINT "GIVE 2 ROW NUMBERS, SEPARATED BY A COMMAS, FOR I1 AND I2, OR"
3510  PRINT "FIRST ROW, LAST ROW = ";
3512  INPUT I1,I2
3514  IF I1 <= I2 THEN 3522
3516  PRINT '10"FIRST ROW CAN'T BE LARGER THAN LAST"
3518  PRINT T$
3520  GOTO 3510
3522  IF I1 >= 1 AND I1 <= (N9+3) AND I2 >= 1 AND I2 <= (N9+3) THEN 3538
3524  GOSUB 4300
3536  GOTO 3504
3538  IF G$="S" THEN 3558
3542  IF I2<Q4 THEN 3524
3544  IF I1>Q4-.1 THEN 3550
3546  PRINT "FIRST"Q4-1"ROWS UNDEFINED"
3547  PRINT "BECAUSE OF PREVIOUS USE OF 'DIFF' OR 'LAGG'."
3548  PRINT "FIRST ROW PRINTED OUT WILL BE ROW"Q4
3550  IF I2<N+.1 THEN 3558
3552  PRINT "NO DATA IN ROWS BEYOND"N
3554  IF I2>N9 THEN 3558
3556  I2=N
3558  PRINT 
3560  GOTO Q9 OF 3562,3563,3574
3562  PRINT "*  DO VARIABLES TO BE PRINTED OCCUPY"
3563  PRINT "   CONSECUTIVE COLUMNS OF";
3564  IF G$="D" THEN 3570
3566  PRINT "SCRATCH PAD ? ";
3568  GOTO 3576
3570  PRINT "DATA MATRIX ? ";
3572  GOTO 3576
3574  PRINT "*  CONSECUTIVE COL(S) ? ";
3576  ENTER 30,Q8,F$
3578  PRINT 
3580  IF Q8>0 THEN 3594
3582  GOSUB 4300
3592  GOTO 3562
3594  IF F$[1,1]="?" THEN 3582
3596  IF F$[1,4]="HELP" THEN 3582
3598  IF F$[1,1]="N" THEN 3700
3599  REM: CONSECUTIVE COLS. PART
3600  GOTO Q9 OF 3610,3620,3620
3610  PRINT "GIVE 2 COL. NUMBERS, SEPARATED BY A COMMA, FOR:"
3620  PRINT '10"FIRST COL., LAST COL. = ";
3630  INPUT J1,J2
3632  IF J2 >= J1 THEN 3640
3634  PRINT '10"LAST COL.# CAN'T BE SMALLER THAN FIRST"
3636  PRINT T$
3638  GOTO 3620
3640  Z=Z4
3642  IF J2 >= 1 AND J2 <= Z AND J1 >= 1 AND J1 <= Z THEN 3656
3644  GOSUB 4300
3654  GOTO 3620
3656  N0=J2-J1+1
3658  MAT A=ZER[N0]
3660  IF G$="S" THEN 3666
3661  J=J1
3664  GOTO 3668
3666  J=J1+K9+2
3668  FOR I=1 TO N0
3670  A[I]=J
3672  J=J+1
3674  NEXT I
3675  IF G$="S" THEN 3770
3676  GOTO 4000
3699  REM: NONCONSECUTIVE COLS. PART
3700  PRINT "HOW MANY COLUMNS ";
3710  INPUT N0
3720  GOTO Q9 OF 3722,3722,3726
3722  PRINT "GIVE"N0"COLUMN NUMBERS, SEPARATED BY COMMAS :";
3724  GOTO 3728
3726  PRINT "COL. #'S :";
3728  MAT A=ZER[N0]
3750  MAT  INPUT A[N0]
3752  IF G$="D" THEN 4000
3754  FOR I=1 TO N0
3756  IF A[I]>.9 AND A[I]<P[63]+.1 THEN 3764
3758  GOSUB 4400
3762  GOTO 3722
3764  A[I]=A[I]+K9+2
3766  NEXT I
3770  GOSUB 3000
3780  PRINT 
3790  IF Q1>5 THEN 3810
3800  F$="#,7D.5D"
3810  I1=I1 MAX Q4
3812  Z4=INT(N0/5)
3814  IF N0=5*Z4 THEN 3820
3816  Z4=Z4+1
3820  Z2=1
3822  Z3=5
3830  GOSUB 4100
3832  FOR I=I1 TO I2
3834  IF G$="S" THEN 3882
3838  IF I<N+1 THEN 3880
3840  IF I<N9+1 THEN 3898
3842  GOTO (I-N9) OF 3844,3850,3856
3844  PRINT 
3845  PRINT "MEAN   ";
3846  GOTO 3886
3850  PRINT "S.DEV. ";
3852  GOTO 3886
3856  PRINT "#UNDEF.";
3858  GOTO 3886
3880  IF X[I,K9+2]=0 THEN 3896
3882  PRINT  USING 3884;I
3884  IMAGE #,"* ",DDD," *"
3886  FOR J=Z2 TO Z3 MIN N0
3888  PRINT  USING F$;X[I,A[J]]
3890  NEXT J
3892  PRINT 
3894  GOTO 3898
3896  PRINT "ROW"I"DELETED"
3898  NEXT I
3900  PRINT LIN(2)
3902  Z2=Z3+1
3904  Z3=5+Z3
3906  Z4=Z4-1
3908  IF Z4=0 THEN 9998
3910  GOTO 3830
4000  REM:VALID COL #'S? NEED UPDATING?
4002  C=D=0
4003  FOR I=1 TO N0
4004  IF A[I]>0 AND A[I]<K9+3 THEN 4012
4006  PRINT "ONLY COL(S). 1 TO"K9+2", INCLUSIVE, VALID."
4008  PRINT T$
4010  GOTO 3700
4012  IF A[I]>K9-1 THEN 4018
4014  IF A[I]<K+.1 THEN 4024
4016  D=1
4018  IF A[I]=K9+2 THEN 4024
4020  IF Q[2]=0 OR Q[4]=0 THEN 4024
4022  C=1
4024  NEXT I
4026  IF D=0 THEN 4030
4028  PRINT "DATA IN COL.(S) 1 TO"K"ONLY."
4030  IF C#1 THEN 3770
4032  PRINT '10"FITTED AND RESIDUAL VALUES NEED UPDATING"
4050  Q[8]=N0
4052  Q[18]=I1
4054  Q[19]=I2
4060  FOR I=1 TO N0
4062  P[I]=A[I]
4064  NEXT I
4066  Q[7]=4080
4068  GOTO 9938
4080  N0=Q[8]
4081  G$="D"
4082  FOR I=1 TO N0
4084  A[I]=P[I]
4086  NEXT I
4087  I1=Q[18]
4088  I2=Q[19]
4090  GOTO 3770
4100  PRINT "  ROW  ";
4101  IF G$="S" THEN 4170
4102  FOR J=Z2 TO Z3 MIN N0
4104  Z=A[J]
4112  IF A[J]>K AND A[J]<K9 THEN 4159
4120  IF A[J]#K9+2 THEN 4130
4122  D$="ALIVE?"
4124  GOTO 4151
4130  IF A[J]<K+1 THEN 4140
4132  IF Q[2]#0 THEN 4150
4134  GOTO 4159
4140  IF Q3#1 THEN 4159
4150  GOSUB 4200
4151  Z8=0
4152  FOR J0=1 TO 6
4153  IF D$[J0,J0]#" " THEN 4156
4154  PRINT " ";
4155  Z8=Z8+1
4156  NEXT J0
4157  PRINT "       "D$[1,6-Z8];
4158  GOTO 4162
4159  PRINT  USING 4160;A[J]
4160  IMAGE #,7X,"COL.",DD
4162  NEXT J
4164  PRINT LIN(1)
4166  RETURN 
4170  FOR J=Z2 TO Z3 MIN N0
4172  Z=A[J]
4174  GOSUB 4210
4176  PRINT  USING 4156;D$
4178  NEXT J
4180  GOTO 4164
4200  IF Z>K9-1 THEN 4250
4210  IF Z>10 THEN 4240
4220  D$=M$[6*Z-5,6*Z]
4230  GOTO 4290
4240  D$=N$[6*Z-65,6*Z-60]
4245  GOTO 4290
4250  IF Z=K9+1 THEN 4270
4260  D$="FITTED"
4265  GOTO 4290
4270  D$="RESIDU"
4290  RETURN 
4300  IF G$="S" THEN 4400
4302  PRINT "ACTIVE DATA IN ROWS"Q4"TO"N",COL.(S) 1 TO"K
4304  PRINT "BUT YOU CAN ALSO PRINT ROWS"N+1"TO"N9+3", COL.(S)"K9-1"TO"K9+2
4305  IF Q[2]=0 THEN 4310
4306  PRINT "'FITTED' VALUES IN COL."K9
4307  PRINT "'RESIDUAL' VALUES IN COL."K9+1
4310  PRINT "MEANS OF COL(S). IN ROW"N9+1
4320  PRINT "STD.DEV(S). OF COL(S). IN ROW"N9+2
4325  GOTO 4440
4340  RETURN 
4400  PRINT "SCRATCH PAD HAS:"
4430  PRINT "ROWS 1 TO"N9+3", COL.(S) 1 TO"P[63]
4440  PRINT T$
4450  RETURN 
9925  CHAIN "$IDAE25"
9927  CHAIN "$IDA25A"
9938  Q[5]=0
9940  CHAIN "$IDA38"
9990  CHAIN "$IDA",9990
9996  PRINT "COMMAND NOT EXECUTED."
9998  CHAIN "$IDA",150
9999  END 
