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],C$[7],N1,K1,M,R1,R2,V2,C2
50  REM: 4 AUG 74
52  REM:Q1=1 FOR ENRA;=2 FOR >EOBR
100  DIM A$[72],D$[72],A[19]
105  FILES *
110  Q[6]=8
115  C1=1000
120  C2=361
122  GOTO Q1 OF 123,125
123  E$="ENRA"
124  GOTO 130
125  E$="EOBR"
130  IF Q9>1 THEN 155
135  PRINT "WANT EXPLANATION ";
140  INPUT A$
145  IF A$[1,1]="N" THEN 155
150  GOTO 9947
155  N1=K1=R1=R2=M=0
160  GOTO Q1 OF 445,170
170  PRINT 
175  IF Q[1]#0 THEN 190
180  PRINT "NEED LIST OF OBS. #'S IN AN IDA DATA COL. TO EXECUTE 'EOBR'."
185  GOTO 9996
190  IF Q9<3 THEN 205
195  PRINT "* COL.# OF OBS.#'S ? ";
200  GOTO 210
205  PRINT "* # OF IDA DATA COL. CONTAINING OBS.#'S ? ";
210  ENTER 30,Q8,J
215  PRINT 
220  IF Q8>0 THEN 255
225  PRINT "NEED HELP ";
230  INPUT A$
235  IF A$[1,1]="N" THEN 205
240  PRINT "USE IDA COMMAND 'PRTS', 'PRTV', OR 'FPRV' TO PRINT OUT DATA VALUES."
245  PRINT "OR RE-EXECUTE 'ENRA' AT FIRST PROMPT LEVEL FOR EXPLANATION."
250  GOTO 9996
255  IF J=0 THEN 9996
260  IF J=INT(J) AND J >= 1 AND J <= K THEN 280
265  PRINT "DATA ONLY IN COL(S). 1 TO";K
270  PRINT "TRY AGAIN!"'7
275  GOTO 205
280  FOR I=Q4 TO N
285  I8=I
290  IF X[I,K9+2]#0 THEN 305
295  NEXT I
300  GOTO 9996
305  I3=I4=X[I8,J]
310  N0=1
315  FOR I=I8+1 TO N
320  IF X[I,K9+2]=0 THEN 370
325  IF X[I,J]=INT(X[I,J]) THEN 340
330  PRINT "COL.#";J;"HAS SOME NON-INTEGERS."
335  GOTO 270
340  N0=N0+1
345  IF X[I,J] >= I3 THEN 360
350  I3=X[I,J]
355  GOTO 370
360  IF X[I,J] <= I4 THEN 370
365  I4=X[I,J]
370  NEXT I
375  PRINT 
380  PRINT "COL. #";J;"HAS";N0;"INTEGERS IN ACTIVE ROWS."
385  PRINT "MIN # IS";I3
390  PRINT "MAX # IS";I4
395  PRINT 
396  REM:  COPY OBS #'S FROM COL.J TO COL. K9+1 OF XMAT
405  N0=0
410  FOR I=Q4 TO N
415  IF X[I,K9+2]=0 THEN 430
420  N0=N0+1
425  X[N0,K9+1]=X[I,J]
427  X[I,K9+2]=1
430  NEXT I
431  N=N0
432  REM: ZERO ALL OTHER X MAT DATA CELLS
433  GOSUB 3000
435  GOTO 535
440  REM:>ENRA
445  IF Q[1]=0 THEN 535
450  IF Q9>1 THEN 535
455  PRINT 
460  PRINT "FURTHER USE OF '"E$"' WILL ERASE"
465  PRINT "DATA NOW IN FIRST"N"ROWS,"K"COLUMNS."
470  PRINT "WANT TO CONTINUE WITH  "E$;
475  INPUT A$
480  IF A$[1,1]="N" THEN 9996
535  P[65]=Q3=0
540  MAT Q=ZER
542  Q[6]=8
545  IF Q1=1 THEN 555
550  Q[8]=N
555  PRINT 
560  IF Q9<3 THEN 575
565  PRINT "FILE NAME IS  ";
570  GOTO 580
575  PRINT "NAME OF RANDOM ACCESS DATA FILE IS ";
580  INPUT C$
585  ASSIGN C$,1,Q8
590  IF Q8 <= 2 THEN 610
595  PRINT "'";C$"' CANNOT BE FOUND."
600  PRINT "CHECK YOUR SPELLING!"
605  GOTO 575
610  PRINT 
615  IF  END #1 THEN 9000
620  READ #1,1
625  GOTO 3300
630  IF N1 <= C1 AND K1 <= C2 THEN 645
635  PRINT "CURRENTLY 'ENRA' CANNOT HANDLE DATA FILES LARGER THAN";C1;"X";C2
640  GOTO 9996
645  M=INT(.9999+K1/128)
655  REM:R1 IS 1ST RECORD OF DATA, R2 IS POSSIBLE 'NAMES:' REC.
660  R2=R1+M*N1
665  IF  END #1 THEN 755
670  READ #1,R2
675  GOTO TYP(1) OF 740,680,755
680  READ #1;A$
685  IF A$#"NAMES:" THEN 9004
690  X=INT(1.9999+K1/70)
695  R3=R2+X
700  IF  END #1 THEN 760
705  READ #1,R3;P[61],P[62]
710  IF P[61]=0 AND P[62]=0 THEN 1000
715  IF P[61]=1 THEN 1000
720  PRINT "REC. #";R3;" OF '";C$;"' SHOULD HAVE 2 NUMBERS:"
725  PRINT "M1=M2=0 IF NO MISSING VALUES IN FILE, OR"
730  PRINT "M1=1 AND M2= # REPLACING MISSING VALUES IN FILE."
735  GOTO 9004
740  READ #1;P[61],P[62]
745  R2=0
750  GOTO 710
755  R2=0
760  P[61]=P[62]=0
765  PRINT "ANY MISSING DATA IN '";C$;"' ";
770  INPUT A$
775  IF A$[1,1]="N" THEN 1000
780  P[61]=1
785  PRINT "NUMBER WHICH REPLACES MISSING VALUES IN '";C$"' = ";
790  INPUT P[62]
1000  PRINT 
1005  IF Q9=3 THEN 1050
1010  PRINT "IDA CAN CURRENTLY STORE A MAXIMUM OF"
1020  PRINT N9" OBSERVATIONS ON "K9-1" VARIABLES"
1030  PRINT "IN A 'TABLE', OR MATRIX, OF "N9" ROWS AND "K9-1" COLUMNS."'10'13
1040  GOTO 1060
1050  PRINT "CURRENT IDA DIM. ARE "N9" X "K9-1". ";
1055  GOTO 1100
1060  PRINT "WANT TO RDIM ";
1070  INPUT D$
1080  IF D$[1,1]#"N" THEN 9996
1090  PRINT 
1100  PRINT 
1110  PRINT "FILE '";C$;"' HAS ";
1120  IF Q9=3 THEN 1150
1125  PRINT "DATA MATRIX OF:"
1130  PRINT N1;"ROWS, OR OBSERVATIONS AND";K1;"COLUMNS, OR VARIABLES"
1140  GOTO 1160
1150  PRINT "A";N1;"X";K1;"DATA MATRIX"
1160  IF P[61]=0 THEN 1190
1170  PRINT "  MISSING VALUES REPLACED BY";P[62]
1180  GOTO 1200
1190  PRINT "  NO MISSING VALUES"
1200  GOSUB 8000
1210  IF D$[1,1]="N" THEN 9908
1220  GOTO 9909
2999  REM:*****
3000  FOR I=N0+1 TO N9+3
3010  X[I,K9+2]=X[I,K9+1]=0
3020  NEXT I
3030  FOR I=1 TO N9+3
3040  FOR J=1 TO K9
3050  X[I,J]=0
3060  NEXT J
3070  NEXT I
3080  RETURN 
3199  REM***
3200  PRINT 
3202  GOTO Q9 OF 3204,3204,3240
3204  PRINT "* FILE SAMPLE SIZE, (N1 = ";
3206  ENTER 30,Q8,N1
3208  PRINT 
3210  IF Q8>0 THEN 3216
3212  PRINT "N1 IS THE NUMBER OF ROWS IN '";C$;"' DATA MATRIX."
3214  GOTO 3204
3216  IF N1=INT(N1) THEN 3222
3218  PRINT "N1 MUST BE A POSITIVE INTEGER."
3220  GOTO 3204
3222  PRINT "* # OF VARIABLES, (K1 = ";
3224  ENTER 30,Q8,K1
3226  PRINT 
3228  IF Q8>0 THEN 3234
3230  PRINT "K1 IS THE NUMBER OF COLUMNS IN '";C$"' DATA MATRIX."
3232  GOTO 3222
3234  IF K1=INT(K1) THEN 3252
3236  PRINT "K1 MUST BE A POSITIVE INTEGER."
3238  GOTO 3222
3240  PRINT "N1,K1 = ";
3242  INPUT N1,K1
3244  IF N1=INT(N1) THEN 3248
3246  GOTO 3218
3248  IF K1=INT(K1) THEN 3252
3250  GOTO 3230
3252  R1=1
3254  GOTO 630
3299  REM:*****
3300  IF  END #1 THEN 3350
3310  READ #1,1;X,Y,A
3320  PRINT X;",";Y;"ARE THE FIRST TWO ELEMENTS OF '";C$;"'."
3330  PRINT "THEY DON'T LOOK LIKE VALUES OF N1 AND K1!"
3340  GOTO 3200
3350  IF X=INT(X) AND Y=INT(Y) THEN 3370
3360  GOTO 9004
3370  N1=X
3380  K1=Y
3390  R1=2
3400  GOTO 630
3500  REM:****
7999  REM****
8000  PRINT 
8002  PRINT "CHECK ";
8003  IF R2=0 THEN 8050
8005  GOTO Q9 OF 8030,8020,8010
8010  PRINT "NAMES ";
8015  GOTO 8040
8020  PRINT "'";C$;"' NAMES ";
8025  GOTO 8040
8030  PRINT "NAMES OF ANY VARIABLES IN '";C$;"' ";
8040  INPUT D$
8045  IF D$[1,1]#"N" THEN 8275
8050  PRINT TAB(7);"VALUES OF ANY VARIABLES IN '";C$;"' ";
8052  INPUT D$
8275  RETURN 
9000  PRINT "NOT ENOUGH OR NO DATA IN '";C$;"'."
9001  PRINT "USE IDA COMMAND 'FILE' OR PROGRAM $RECLIS"
9002  PRINT "TO CHECK CONTENTS OF '";C$;"'."
9003  GOTO 9996
9004  PRINT "WRONG TYPE FILE!"'7
9005  GOTO 9001
9900  PRINT LIN(1);"'ENRA' CAN ONLY BE USED TO ENTER DATA IN THE IDA"
9902  PRINT "DATA MATRIX FROM OBSERVATIONS AND VARIABLES SELECTED"
9904  PRINT "FROM A RANDOM ACCESS FILE."
9907  GOTO 9996
9908  CHAIN "$IDA08A"
9909  CHAIN "$IDA08D"
9947  CHAIN "$IDAE08"
9994  PRINT "CHECK FILE CONTENTS."
9996  PRINT "'";E$;"' ABORTED."
9998  CHAIN "$IDA",150
9999  END 
