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:28APR74
52  REM:MODIFIED FROM A PROGRAM WRITTEN BY J.A.YOST IN AUG.1973
60  REM:>CRSP, FOR PLACING CRSP- DATA INTO IDA DATA MATRIX
62  REM:  Q(8)=1,2,OR 3 FOR LOAD FROM SCRATCH, ADD DATA OR CHECK
64  REM:  Q(9)= # OF MONTHS OF DATA IN CRSP FILES
66  REM:  Q(10) = # OF $CRSPH RECORDS
68  REM:  Q(11)= # OF FIRMS IN CRSP FILES
70  REM:  Q(12)= LAST YEAR OF CRSP DATA
72  REM:  Q(13)= 1,2,OR 3 IF $CRSPR, $CRSPS, OR $CRSPP IS USED
74  REM:  Q(14)= 1 OR 2 FOR RETURNS OR PRICES
76  REM:  Q(15) =1 IF FIRM HAS MISSING PRICES, I.E., M>0
78  REM:  P(65) = 0 IF NO CRSP DATA LOADED
80  REM:        = 1 TO Q(9) TO INDICATE THE STARTING CRSP INDEX MONTH
82  REM:            OF LOADED DATA
84  REM:  P(1)  = P(65) FOR TEMPORARY CHAINING UNTIL DATA IS LOADED
86  REM:  $IDA12A MUST BE REVISED WHEN Q(9) > 600 SINCE DIM L(600)
100  FILES *
110  DEF FNM()=-12*INT((-1)/12)
120  DEF FNY()=INT((-1)/12)+1926
150  DIM A$[40],C$[7]
160  Q[9]=564
162  Q[10]=1148
164  Q[11]=2294
165  Q[12]=FNY(Q[9])
166  Q[8]=0
200  PRINT 
210  GOTO Q9 OF 220,270,270
220  PRINT "WANT EXPLANATION ";
230  INPUT A$
240  IF A$[1,1]="N" THEN 270
260  GOTO 9914
270  GOTO Q9 OF 280,310,310
280  PRINT "*  WANT TO CHECK DATES FOR CRSP- DATA ? ";
300  GOTO 320
310  PRINT "*  CHECK ? ";
320  ENTER 30,Q8,A$
322  PRINT 
324  IF Q8>0 THEN 330
326  GOTO 220
330  IF A$[1,1]="N" THEN 500
331  IF A$[1,1]="Y" THEN 340
332  IF A$[1,1]="?" THEN 220
333  IF A$[1,4]="HELP" THEN 220
334  PRINT "INVALID RESPONSE. PLEASE RESPOND:"
335  PRINT "YES"'10"NO"'10"OR"'10"?, IF YOU WANT AN EXPLANATION"
336  GOTO 280
340  Q[8]=3
342  Q[13]=3
350  GOTO 520
499  REM:IDA12A CHAINS TO L. Q(7)=500 AFTER OPTION Q(8)=3 [CHECKING]
500  PRINT 
520  ASSIGN "$CRSPH",1,F1
530  IF F1 <= 2 THEN 570
540  PRINT "THE CRSP HEADER FILE CANNOT BE FOUND."
550  PRINT "IDA CANNOT LOAD CRSP DATA"
560  GOTO 9998
570  IF Q[8]=3 THEN 9912
575  C$="$CRSPR"
580  Q[13]=1
582  Q[14]=2
583  GOTO Q9 OF 585,585,587
585  PRINT "*  WANT TO LOAD FROM ";
586  GOTO 590
587  PRINT "*  LOAD FROM ";
590  GOSUB 7000
600  C$="$CRSPS"
602  Q[13]=2
604  Q[14]=2
606  GOSUB 7000
608  C$="$CRSPP"
610  Q[14]=1
612  Q[13]=3
614  GOSUB 7000
616  IF A$[1,1]="N" THEN 9998
700  IF Q[1]=0 THEN 900
702  PRINT '10"IDA DATA MATRIX NOW HAS:"'10" "N" ROWS"'10" "K" COLUMN(S)"
704  IF Q4=1 THEN 710
705  PRINT "BUT"'10'13"THE FIRST"Q4-1
706  PRINT "ARE UNDEFINED BECAUSE OF PREVIOUS USE OF 'DIFF' OR 'LAGG'."
710  IF P[65] <= 0 THEN 720
712  PRINT "YOU HAVE ENTERED 'CRSP' DATA"
714  PRINT  USING 4130;FNM(P[65]),FNY(P[65]),P[65]
716  E=P[65]+N-1
718  PRINT  USING 4132;FNM(E),FNY(E)
720  GOTO Q9 OF 722,722,726
722  PRINT '10"WANT TO ERASE ALL DATA AND START OVER ";
724  GOTO 728
726  PRINT '10"ERASE ";
728  INPUT A$
730  IF A$[1,1]#"N" THEN 900
732  IF P[65] <= 0 THEN 738
734  P[1]=P[65]
736  GOTO 743
738  PRINT "YOU MAY LOAD"N"MONTHS OF "C$" DATA."
740  GOSUB 930
742  P[1]=S
743  Q[8]=2
744  Q[6]=12
745  Q[7]=800
746  IF K<K9-1 THEN 802
748  PRINT "DATA MATRIX FULL"'10'13"WANT TO CONTINUE ";
750  INPUT C$
752  IF C$[1,1]="N" THEN 9998
799  REM:IDA912 CHAINS TO L.Q(7)=800 FOR OPTION Q(8)=2
800  PRINT 
802  GOTO Q9 OF 804,810,810
804  PRINT "* COLUMN NUMBER OF DATA MATRIX"
806  PRINT "TO PLACE NEW VARIABLE :";
808  GOTO 812
810  PRINT "* COL.# FOR NEW VAR. ?";
812  ENTER 60,Q8,J
814  PRINT 
816  IF Q8>0 AND J<(K+2) THEN 822
818  PRINT "NUMBER SHOULD BE"(K+1) MIN (K9-1)"OR LESS.  PLEASE RE-ENTER."
820  GOTO 810
822  IF Q[2]=0 THEN 850
830  FOR I=1 TO K8+1
832  IF J=V[I] THEN 840
834  NEXT I
836  REM:J NOT IN SAME COL. AS REGRESS. VAR.
838  GOTO 850
840  PRINT "WARNING!"'10'13"IF YOU PLACE DATA IN COL."J
842  PRINT "CURRENT REGRESSION RESULTS WILL BE WIPED OUT."
843  PRINT "WANT TO DECLARE NEW COL.# ";
844  INPUT C$
846  IF C$[1,1]#"N" THEN 810
847  PRINT "WANT TO CONTINUE ";
848  INPUT C$
849  IF C$[1,1]="N" THEN 9996
850  I4=J
852  IF J <= 0 THEN 9996
854  IF J>K9-1 THEN 818
856  GOTO 9912
900  IF P[63]=0 THEN 910
902  FOR I=1 TO N9+3
903  FOR J=1 TO K9+2
904  X[I,J]=0
905  NEXT J
906  NEXT I
907  GOTO 912
910  MAT X=ZER[N9+3,K9+2]
912  Q[20]=0
914  FOR I=1 TO 7
916  Q[I]=0
918  NEXT I
920  MAT M=ZER
924  Q3=P[65]=P[1]=0
926  N=K=0
928  GOTO 968
930  GOTO Q9 OF 932,932,936
932  PRINT "GIVE NUMBERS FOR MONTH AND YEAR, SEPARATED BY COMMAS."
934  PRINT "E.G., 12,1926 FOR DEC.1926"
936  PRINT '10"STARTING MONTH, YEAR ";
938  INPUT S1,S2
940  IF S1=INT(S1) AND S2=INT(S2) THEN 948
942  PRINT "MONTH AND YEAR MUST BE INTEGERS 1 TO 12 AND 1926 TO"Q[12]
944  PRINT "TRY AGAIN!"'7
946  GOTO 936
948  IF S1>.9 AND S1<12.1 THEN 952
950  GOTO 942
952  IF S2>1925.9 AND S2 <= Q[12] THEN 956
954  GOTO 942
956  S=(S2-1926)*12+S1
958  IF S >= Q[14] THEN 966
960  PRINT "NO RETURNS AVAILABLE UNTIL 2/1926 OR PRICES UNTIL 1/1926"
962  PRINT "GIVE NEW:"
964  GOTO 936
966  RETURN 
968  GOSUB 930
970  PRINT "  ENDING MONTH, YEAR ";
972  INPUT E1,E2
974  E=(E2-1926)*12+E1
976  IF E>Q[9] THEN 986
978  IF E>S THEN 1005
980  PRINT "GIVE AN ENDING DATE LATER THAN THE ";
982  PRINT  USING 4130;S1,S2,S
984  GOTO 988
986  PRINT "NO DATA AFTER ";
987  PRINT  USING 4135;FNM(Q[9]),FNY(Q[9])
988  PRINT "GIVE NEW:"
990  GOTO 970
1000  REM: CHECK IF ALL DATA CAN BE LOADED WITH PRESENT DIM.
1005  N=E-S+1
1010  IF N <= N9 THEN 1045
1015  PRINT '10"IDA WILL NOW TAKE ONLY "N9" OBSERVATIONS IN "K9-1" COLUMNS."
1020  PRINT "YOU HAVE ASKED FOR "N". WANT TO 'RDIM' ";
1025  INPUT A$
1030  IF A$[1,1]#"N" THEN 9998
1035  PRINT '10"CHOOSE A SHORTER SUBPERIOD."
1040  GOTO 968
1045  PRINT '10'13"YOUR SUBPERIOD HAS "N" MONTHS."
1046  I4=1
1047  P[1]=S
1100  Q[8]=1
1110  GOTO 9912
4130  IMAGE " STARTING ",2D,"/",4D," [CRSP INDEX MONTH",X3D,"]"
4132  IMAGE "   ENDING ",2D,"/",4D
4135  IMAGE 2D,"/",4D
7000  GOTO Q9 OF 7010,7010,7020
7010  PRINT TAB(21);C$" FILE INTO IDA DATA MATRIX ? ";
7012  GOTO 7050
7020  PRINT TAB(13);C$" ? ";
7050  ENTER 30,Q8,A$
7052  PRINT 
7054  IF Q8>0 THEN 7060
7056  GOSUB 8110
7057  PRINT "   WANT TO LOAD ";
7059  GOTO 7010
7060  IF A$[1,1]="N" THEN 7099
7062  IF A$[1,1]="?" THEN 7056
7064  IF A$[1,1]="Y" THEN 7070
7066  PRINT "INVALID RESPONSE. PLEASE RESPOND "'10"Y"'10"FOR YES"'10"OR"'10"N"'10"FOR NO"
7068  GOTO 7057
7070  ASSIGN C$,1,F1
7080  IF F1 <= 2 THEN 616
7090  PRINT "THE "C$" FILE CANNOT BE FOUND."'10'13"IDA CANNOT LOAD THE DATA."
7099  RETURN 
8110  PRINT 
8112  PRINT "CRSPR DATA ARE MONTHLY RETURNS WITH DIVIDENDS REINVESTED."
8114  PRINT "CRSPS DATA ARE MONTHLY RETURNS WITHOUT DIVIDEND REINVESTMENT."
8116  PRINT "CRSPP DATA ARE MONTHLY PRICES"
8118  PRINT "OF"Q[11]"COMMON STOCKS AND THE NYSE ARITHMETIC INDEX."
8120  PRINT 
8130  RETURN 
9912  CHAIN "$IDA12A"
9914  CHAIN "$IDAE12"
9996  PRINT "'CRSP' NOT EXECUTED"
9998  CHAIN "$IDA",150
9999  END 
