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:10JUN74
52  REM:SUBPROGRAM #3 OF ENRA (Q1=1) AND EOBR (Q1=2)
150  DIM A$[60],D$[12],C[19]
160  FILES *
162  GOSUB 8800
163  IF Q1=2 THEN 1000
165  GOTO 210
200  Q[8]=Q[16]
210  PRINT 
212  PRINT "* WANT TO TAKE A PURPOSIVE SUBSAMPLE OF THESE";Q[8];"ROWS ? ";
214  ENTER 30,Q8,D$
216  PRINT 
218  IF Q8>0 THEN 250
220  PRINT "NEED HELP ";
222  INPUT D$
224  IF D$[1,1]="N" THEN 210
230  PRINT "YOU MAY SELECT THOSE ROWS IN'";C$;"' IN WHICH A DESIGNATED"
232  PRINT "VARIABLE HAS VALUES WITHIN A DESIGNATED RANGE."
234  GOTO 210
250  IF D$[1,1]="N" THEN 600
252  IF D$[1,1]="Y" THEN 300
254  IF D$[1,1]="?" THEN 220
256  PRINT "INVALID RESPONSE. ANSWER 'Y', 'N', OR '?'."
258  GOTO 210
300  PRINT 
302  IF Q9<3 THEN 310
304  PRINT "# OF SELECTION COL. ";
306  GOTO 320
310  PRINT "# OF '";C$"' COL. TO BE USED FOR PURPOSIVE SELECTION ";
320  INPUT V
322  IF V=0 THEN 210
324  IF V=INT(V) AND V >= 1 AND V <= N1 THEN 331
326  PRINT K1;"COLUMNS IN '";C$;"'."
328  PRINT "TRY AGAIN!"'7
330  GOTO 310
331  PRINT 
332  IF Q9<3 THEN 340
334  PRINT "L,U = ";
336  GOTO 360
340  PRINT LIN(1);"GIVE LOWEST, THEN HIGHEST, VALUE, SEPARATED BY COMMAS,"
350  PRINT "ACCEPTABLE IN SUBSAMPLE FOR COL. CHOSEN IN OPTION ABOVE."
360  INPUT L,U
400  PRINT 
402  PRINT "SELECTING...";
410  N0=0
420  FOR I=1 TO Q[8]
425  R=R1+M*(X[I,1]-1)
430  READ #1,R
450  FOR J=1 TO V
460  READ #1;B
470  NEXT J
480  IF B<L OR B>U THEN 510
490  N0=N0+1
500  X[N0,1]=X[I,1]
510  NEXT I
520  Q[16]=N0
525  PRINT 
530  IF N0>0 THEN 900
540  PRINT "NO ROWS IN RANGE OF VALUES GIVEN. TRY AGAIN!"'7
550  GOTO 340
600  PRINT 
610  PRINT "WANT TO TAKE A RANDOM SAMPLE OF THE";Q[8];"ROWS ";
620  INPUT D$
630  IF D$[1,1]="N" THEN 940
640  PRINT LIN(1);"WHAT SIZE RANDOM SAMPLE ";
650  INPUT Q[16]
660  IF Q[16]<Q[8] THEN 692
680  PRINT "MUST GIVE NUMBER LESS THAN";Q[8]
685  PRINT "TRY AGAIN!"'7
690  GOTO 640
692  IF Q[16] <= C2 THEN 720
700  PRINT "MUST GIVE NUMBER LESS THAN";C2+1
710  GOTO 685
720  Q[7]=730
725  GOTO 9910
730  GOSUB 8800
900  PRINT "SUBSAMPLE HAS";Q[16];"ROWS."
910  IF Q[16] <= N9 THEN 930
920  PRINT LIN(1);"IDA DIM. ARE "N9" X "K9-1
930  GOTO 200
940  C=N9 MIN C2
942  IF Q[8] <= C THEN 1000
944  PRINT "FINAL SUBSAMPLE CANNOT BE MORE THAN";C2;"ROWS WITH THIS OPTION."
950  PRINT LIN(1);"IDA DIM. ARE "N9" X "K9-1". WANT TO PROCEED ";
960  INPUT D$
962  IF D$[1,1]#"N" THEN 1000
970  GOTO 210
1000  IF P[61]=0 THEN 1030
1005  PRINT LIN(1);"WANT TO PRUNE OUT MISSING VALUES ";
1010  INPUT D$
1015  IF D$[1,1]="N" THEN 1030
1020  P=1
1025  GOTO 1040
1030  P=0
1040  MAT C=ZER[K]
1045  PRINT "ENTERING...";
1046  REM:V2 IS LARGEST VAR.# IN SELECTED LIST
1047  MAT U=ZER[V2,1]
1050  IF Q1#2 THEN 1064
1051  REM: IF OBS.#'S IN COL.K9+1 OF X MAT
1052  N0=0
1054  FOR I=1 TO Q[8]
1055  N0=N0+1
1056  R=R1+M*(X[I,K9+1]-1)
1057  X[N0,K9+1]=X[I,K9+1]
1058  GOSUB 1095
1060  NEXT I
1062  GOTO 2000
1063  REM:IF OBS. #'S IN COL.1 OF 2 COL. X MAT
1064  FOR I=1 TO Q[8]
1066  M[I,1]=X[I,1]
1068  NEXT I
1070  MAT X=ZER[N9+3,P[63]+K9+2]
1072  N0=0
1074  FOR I=1 TO Q[8]
1075  N0=N0+1
1076  R=R1+M*(M[I,1]-1)
1077  X[N0,K9+1]=M[I,1]
1078  GOSUB 1095
1080  NEXT I
1082  GOTO 2000
1093  REM****
1094  REM: READING SELECTED VAR. VALUS OF SELECTED OBS.(S) INTO MAT X
1095  READ #1,R
1104  MAT  READ #1;U
1140  FOR J=1 TO K
1150  Z=P[J]
1152  IF P#1 THEN 1160
1154  IF U[Z,1]=P[62] THEN 1186
1160  X[N0,J]=U[Z,1]
1170  GOSUB 8500
1180  NEXT J
1182  X[N0,K9+2]=1
1184  GOTO 1190
1186  N0=N0-1
1190  RETURN 
1192  REM ****
2000  N=N0
2005  PRINT 
2010  PRINT 
2015  PRINT "SUBSAMPLE NOW HAS";K;"COL(S). OF";N;"ROWS FROM '";C$;"' DATA MATRIX"
2020  X=Z=0
2025  FOR J=1 TO K
2030  IF C[J]#0 THEN 2060
2035  PRINT 
2040  PRINT "BUT '";C$;"' COL.#";P[J];"IS A CONSTANT FOR THIS SUBSAMPLE"
2045  PRINT "AND WILL NOT BE ENTERED IN THE IDA DATA MATRIX."
2050  X=X+1
2055  GOTO 2130
2060  Z=Z+1
2070  P[Z]=P[J]
2075  IF Z=J THEN 2130
2080  Z1=J
2085  GOSUB 3400
2090  Z1=Z
2095  GOSUB 3500
2100  FOR I=1 TO N
2105  X[I,Z]=X[I,J]
2110  X[I,J]=0
2115  NEXT I
2130  NEXT J
2140  K3=K-X
2150  IF X=0 THEN 2175
2152  FOR J=K3+1 TO K
2154  D$="      "
2156  Z1=J
2158  GOSUB 3500
2160  NEXT J
2175  K=K3
2180  IF K=K9-1 THEN 3100
2185  PRINT 
2190  FOR I=1 TO N
2200  X[I,K+1]=X[I,K9+1]
2212  NEXT I
2214  FOR I=1 TO N9+3
2216  X[I,K9+1]=0
2217  NEXT I
2218  PRINT "OBS. #'S SAVED IN COL.#";K+1
2250  Z1=K+1
2255  P[Z1]=0
2260  D$="OBS#'S"
2270  GOSUB 3500
2280  K=K+1
2290  PRINT 
3100  MAT M=ZER[19,19]
3110  MAT U=ZER[19,19]
3120  PRINT "DATA NOW IN"
3125  PRINT N;"ROWS OF FOLLOWING";K;"COLUMNS OF THE IDA DATA MATRIX:"
3127  GOSUB 7900
3128  PRINT 
3130  GOTO 9912
3399  REM****
3400  IF Z1>10 THEN 3430
3410  D$=M$[6*Z1-5,6*Z1]
3420  GOTO 3450
3430  Z1=Z1-10
3440  D$=N$[6*Z1-5,6*Z1]
3450  RETURN 
3499  REM:****
3500  IF Z1>10 THEN 3530
3510  M$[6*Z1-5,6*Z1]=D$
3520  GOTO 3550
3530  Z1=Z1-10
3540  N$[6*Z1-5,6*Z1]=D$
3550  RETURN 
7899  REM****
7900  I3=1
7910  I4=K
7911  PRINT 
7912  PRINT "  IDA";TAB(16);"'";C$;"'"
7913  PRINT "COLUMN  NAME   COLUMN (VAR.)"
7915  FOR I=I3 TO I4
7920  Z=P[I]
7930  PRINT  USING "#,3X2D";I
7935  Z1=I
7940  GOSUB 3400
8260  PRINT  USING "#,2X6A";D$
8261  IF Z=0 THEN 8265
8262  PRINT  USING "3X3D";Z
8264  NEXT I
8265  RETURN 
8499  REM****
8500  IF C[J]=1 THEN 8530
8510  IF ABS(X[N0,J]-X[1,J])<.001 THEN 8530
8520  C[J]=1
8530  RETURN 
8532  REM****
8799  REM****
8800  ASSIGN C$,1,Q8
8875  IF  END #1 THEN 9994
8880  RETURN 
9910  CHAIN "$IDA08C"
9912  Q[8]=Q[6]=8
9913  CHAIN "$IDA912"
9994  PRINT "CHECK YOUR FILE CONTENTS."
9996  PRINT "'";E$;"' ABORTED."
9998  CHAIN "$IDA",150
9999  END 
