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:18 OCT 74
52  REM:  COMPUTING OR UPDATING MEAN(S) AND STD.DEV.(S)
54  REM:  Q(1)=0  COMPUTED FOR 1ST TIME FOR ENTE, ENTS, AND ENRA
56  REM:          AND SOMETIMES FOR CRSP, RAND, AND INDX
58  REM:          Q(8)=1 IF DATA ENTERED WITH 'CRSP'
60  REM:  Q(1)=1  UPDATING
62  REM:          Q(8)=2 IF COL. ADDED WITH 'CRSP'
64  REM:          Q(8)=0  I3 AND I4 REFER TO ROWS IN DATA MATRIX
66  REM:          Q(8)>0  I3 AND I4 REFER TO COL(S). IN DATA MATRIX
68  REM:  Q(6)= # OF PROGRAM CHAINING TO OR FROM IDA912
70  REM:  Q(7)= # OF LINE TO CHAIN TO IN PROGRAM ABOVE FROM IDA912
100  DIM A$[12],C$[7],D$[12]
110  PRINT 
120  IF I4=0 THEN 9998
130  Q[3]=1
140  IF Q[1]=0 THEN 302
150  IF Q[8]=0 THEN 250
153  IF Q[6]=17 THEN 284
160  IF Q[6]#47 THEN 707
170  IF Q1#2 THEN 707
180  REM:UPDATING FOR APPS
190  I1=Q[9]
192  I2=Q[10]
194  J1=I3
196  J2=I4
198  GOTO 714
250  I1=I3
252  I2=I4
254  J1=1
256  J2=K
260  IF Q[6]=47 THEN 283
261  IF Q2=19 OR Q2=62 THEN 500
262  REM:UPDATING FOR DELB,RETB,RECO,SELR
264  GOTO 284
281  REM:UPDATING FOR APPO,APPB
283  N=N MAX I2
284  PRINT "UPDATING ";
286  GOTO 346
290  REM:  COMPUTING MEAN AND STD.DEV. FOR ALL ROWS 1 TO N AND ALL COL(S).
300  REM:  1 TO K.  Q(1) STILL 0. FOR ENTE,ENTS,ENRA, AND SOMETIMES CRSP,
301  REM:  RAND, AND INDEX
302  I3=1
306  K=I4
310  FOR I=1 TO N
320  X[I,K9+2]=1
330  NEXT I
335  Q4=1
340  PRINT "DATA MATRIX HAS"N"OBSERVATIONS ON"K"VARIABLE(S)"
342  PRINT 
344  PRINT "COMPUTING ";
346  PRINT "MEAN(S) AND STD.DEV.(S)...";
348  GOSUB 6010
350  GOSUB 6600
352  FOR J=1 TO K
354  GOSUB 6020
356  GOSUB 6700
358  NEXT J
360  PRINT 
362  IF Q[1]#0 THEN 428
364  Q[1]=1
365  REM:IF >ENTE,Q2=24, CHECK FOR NAMES
366  IF Q[6]=23 OR Q[6]=8 THEN 368
367  GOTO 394
368  IF Q3=0 THEN 394
370  PRINT 
372  PRINT "NAMES READ FROM DATA FILE ARE:"
374  FOR J=1 TO K
376  IF J>10 THEN 382
378  PRINT M$[6*J-5,6*J]
380  GOTO 386
382  Z=J-10
384  PRINT N$[6*Z-5,6*Z]
386  NEXT J
388  PRINT 
390  PRINT "WANT TO SUPPLY NEW NAMES(S) ";
392  GOTO 410
394  PRINT 
395  Q3=0
396  GOTO Q9 OF 398,408,408
398  PRINT "YOU MAY GIVE EACH VARIABLE A 1 TO 6 CHARACTER NAME."
400  PRINT "YOU ARE STRONGLY URGED TO SUPPLY NAMES FOR YOUR VARIABLES."
402  PRINT "IF YOU DO, SEQUENCE PLOTS, TABLES, ETC. WILL BE LABELED."
404  PRINT "IF YOU DON'T, YOU WILL HAVE TO CALL YOUR VARIABLES BY COL.#."
406  PRINT 
408  PRINT "WANT TO SUPPLY NAME(S) ";
410  INPUT A$
412  IF A$[1,1]="N" THEN 9998
414  IF Q9>1 THEN 418
416  PRINT "PLEASE GIVE NAME OF:"
418  FOR I=1 TO K
420  GOSUB 3000
422  NEXT I
424  Q3=1
426  GOTO 9998
428  IF Q[2]=0 THEN 9998
430  Q[4]=1
432  GOTO 9998
499  REM:UPDATING FOR DELO AND RETO
500  PRINT "UPDATING MEAN(S) AND STD.DEV.(S) ...";
505  GOSUB 6600
510  I=I3
520  IF Q2=19 THEN 600
530  GOSUB 6335
540  X[I,K9+2]=1
550  GOTO 620
600  GOSUB 6235
610  X[I,K9+2]=0
620  FOR J=1 TO K
622  GOSUB 6700
624  NEXT J
626  PRINT 
630  GOTO 428
690  REM
700  REM: UPDATING WHEN COLS.I3 TO I4 APPEND OR REPLACE J1 TO J2
702  REM
707  I1=1
709  I2=N
710  J1=J2=I3=I4
714  N=N MAX I2
716  IF Q2=13 THEN 730
718  FOR J=J1 TO J2
720  IF Q[2]=0 THEN 730
722  IF J>K THEN 730
724  GOSUB 9000
726  NEXT J
730  PRINT "UPDATING MEAN, STD.DEV....";
750  K=K MAX J2
760  REM:  COMPUTE Z, THE NEW Q4, AND COMPARE TO OLD Q4
770  Z=X[N9+3,1]
780  FOR I=2 TO K
790  Z=Z MAX X[N9+3,I]
792  NEXT I
793  Z=Z+1
794  GOSUB 6010
796  GOSUB 6600
800  FOR J=J1 TO J2
802  GOSUB 6020
804  NEXT J
810  IF Q4=Z THEN 882
815  GOSUB 6600
820  IF Q4>Z THEN 860
830  REM:  DELETE 1 OR MORE ROWS IF Q4 < Z
832  FOR I=Q4 TO (Z-1)
840  GOSUB 6230
842  NEXT I
850  GOTO 882
860  REM:  RECOVER 1 OR MORE ROWS IF Q4 > Z
862  FOR I=Z TO (Q4-1)
870  GOSUB 6330
872  NEXT I
882  FOR J=1 TO K
884  GOSUB 6700
886  NEXT J
888  PRINT 
889  IF Q4=Z THEN 905
890  Q4=Z
892  PRINT "OBSERVATIONS IN FIRST"Q4-1"ROWS NOW UNDEFINED."
894  IF Q[2]=0 THEN 905
896  Q[4]=1
905  IF Q2=13 THEN 9998
910  IF Q3#1 THEN 970
920  PRINT 
930  PRINT "GIVE NAME(S) OF NEW VARIABLE(S) "
940  FOR I=J1 TO J2
950  GOSUB 3000
955  NEXT I
960  PRINT 
970  IF K<K9-1 THEN 1000
980  PRINT "WARNING!"'10'13"DATA MATRIX FULL."
990  PRINT 
1000  IF Q[6]=12 THEN 1020
1010  GOTO 9998
1020  GOTO Q9 OF 1030,1030,1050
1030  PRINT "WANT TO LOAD ANOTHER SECURITY FROM ";
1040  GOTO 1060
1050  PRINT "LOAD MORE FROM ";
1060  GOTO Q[13] OF 1110,1090,1070
1070  C$="$CRSPP"
1080  GOTO 1120
1090  C$="$CRSPS"
1100  GOTO 1120
1110  C$="$CRSPR"
1120  PRINT C$" ";
1130  INPUT A$
1140  IF A$[1,1]="N" THEN 9998
1150  Z=Q[7]
1160  GOTO 9912
2999  REM
3000  PRINT  USING 3020;I
3020  IMAGE #,"VAR.",XDD,X
3030  INPUT D$
3040  IF I>10 THEN 3070
3050  M$[6*I-5,6*I]=D$[1,6]
3060  GOTO 3100
3070  N$[6*I-65,6*I-60]=D$[1,6]
3100  RETURN 
5980  REM
5990  REM
6010  FOR I8=Q4 TO N
6012  IF X[I8,K9+2]=1 THEN 6016
6014  NEXT I8
6016  RETURN 
6019  REM:COMPUTING MEAN,STD.DEV.
6020  I5=0
6025  I6=X[I8,J]
6030  FOR I=(I8+1) TO N
6040  I5=I5+X[I,K9+2]*(X[I,J]-I6)
6060  NEXT I
6070  J5=I6+I5/N0
6080  J6=0
6090  FOR I=I8 TO N
6100  IF X[I,K9+2]=0 THEN 6120
6110  J6=J6+(X[I,J]-J5)^2
6120  NEXT I
6130  X[N9+1,J]=J5
6140  X[N9+2,J]=SQR(J6/(N0-1))
6150  RETURN 
6200  REM:  DEL.OBS.
6230  IF X[I,K9+2]=0 THEN 6270
6235  FOR J=1 TO K
6240  X[N9+1,J]=N0*X[N9+1,J]/(N0-1)-X[I,J]/(N0-1)
6245  S=(N0-1)*X[N9+2,J]^2
6250  S=S-(X[I,J]-X[N9+1,J])^2*(N0-1)/N0
6255  X[N9+2,J]=SQR(S/(N0-2))
6260  NEXT J
6265  N0=N0-1
6270  RETURN 
6299  REM
6300  REM:  ADD OBS.
6330  IF X[I,K9+2]=0 THEN 6370
6335  FOR J=1 TO K
6340  X[N9+1,J]=N0*X[N9+1,J]/(N0+1)+X[I,J]/(N0+1)
6345  S=(N0-1)*X[N9+2,J]^2
6350  S=S+(X[I,J]-X[N9+1,J])^2*(N0+1)/N0
6355  X[N9+2,J]=SQR(S/N0)
6360  NEXT J
6365  N0=N0+1
6370  RETURN 
6599  REM
6600  REM: # OBS. IN COL.
6610  N0=0
6620  FOR J0=Q4 TO N
6630  N0=N0+X[J0,K9+2]
6640  NEXT J0
6650  RETURN 
6700  IF X[N9+2,J]=0 THEN 6760
6702  IF X[N9+1,J]=0 THEN 6770
6705  C=ABS(X[N9+2,J]/X[N9+1,J])
6710  IF C>.02 THEN 6770
6715  PRINT 
6720  PRINT LIN(1);"FOR VAR."J",ABS.(STD.DEV./MEAN) IS"C
6732  PRINT "MEAN IS "X[N9+1,J]
6734  PRINT "STD.DEV. IS "X[N9+2,J]
6740  PRINT "WARNING!"'7'10'13"ROUNDING ERRORS MAY BE LARGE."
6741  IF Q[6]=45 OR Q9>1 THEN 6770
6742  PRINT "YOU MAY WISH TO RECODE THE ORIGINAL DATA BY ADDING AN"
6744  PRINT "APPROPRIATE CONSTANT (POSSIBLY NEGATIVE) TO EACH"
6746  PRINT "OBSERVATION AND THEN RE-ENTER THE DATA."
6750  GOTO 6770
6760  PRINT 
6765  PRINT "COL."J" IS A CONSTANT EQUAL TO "X[N9+1,J];
6770  RETURN 
8999  REM
9000  REM:WIPING OUT REGRESSION IF J IS IN MAT V
9010  FOR I=1 TO K8+1
9020  IF J#V[I] THEN 9100
9030  GOTO 9200
9100  NEXT I
9110  REM:J NOT IN MAT V
9120  GOTO 9300
9200  PRINT "THE FITTED AND RESIDUAL VALUES FROM THE CURRENT REGRESSION OF:"
9206  PRINT "THE DEPENDENT VARIABLE IN COL."V[K8+1]
9207  PRINT "ON THE INDEPENDENT VARIABLES IN COL(S). :"
9210  FOR I=1 TO K8
9220  PRINT V[I]",";
9230  V[I]=0
9240  IF I#10*INT(I/10) THEN 9260
9250  PRINT 
9260  NEXT I
9280  V[K8+1]=0
9282  Q[2]=Q[4]=0
9290  FOR I=1 TO N9+3
9292  X[I,K9]=X[I,K9+1]=0
9294  NEXT I
9296  PRINT "HAS BEEN ERASED BECAUSE YOU REPLACED DATA IN COL."J
9300  RETURN 
9301  REM
9912  CHAIN "$IDA12",Z
9998  CHAIN "$IDA",150
9999  END 
