From vmohan@gsb-crown.Stanford.EDU Tue Nov 12 14:04:00 1996 Received: from gsb-crown.Stanford.EDU (GSB-Crown.Stanford.EDU [36.29.0.140]) by gsb-pound.Stanford.EDU (8.7.6/8.7.1) with ESMTP id OAA13623 for ; Tue, 12 Nov 1996 14:03:59 -0800 (PST) Received: (from vmohan@localhost) by gsb-crown.Stanford.EDU (8.7.1/8.7.1) id OAA11312 for doncram; Tue, 12 Nov 1996 14:03:58 -0800 (PST) Date: Tue, 12 Nov 1996 14:03:58 -0800 (PST) From: Mohan Venkatachalam Message-Id: <199611122203.OAA11312@gsb-crown.Stanford.EDU> To: doncram@gsb-crown.Stanford.EDU Status: RO PROGRAM COMPFORT C******************************************************************* C PROGRAM AUTHOR: MOHAN VENKATACHALAM, STANFORD UNIVERSITY C ACKNOWLEDGMENTS: JIM GRIFHORST, UNIV. OF IOWA C SHELL PROGRAM TO ACCESS THE ANNUAL COMPUSTAT TERTIARY FILE. C TWO RECORDS PER FIRM. THIS EXAMPLE IS SETUP TO READ A FILE C OF 6-DIGIT CUSIPS (CUSIP FILE)AND MATCH WITH THE DATA FILE, AND OUTPUT C SELECTED DATA ITEMS. C C NOTE: USERS MUST CHANGE THE VALUE OF "NCOS" (NUMBER OF COMPANIES) C TO REFLECT THE NUMBER OF CUSIPS IN THE "CUSIP" FILE C THIS VALUE ALSO NEEDS TO BE ENTERED FOR THE DIMENSION VALUE OF C "ICNUM" VARIABLE. FOR EXAMPLE. IF THE NUMBER OF COMPARIES WAS 15 C THEN THE STATEMENT " CHARACTER*6 ICNUM(100), JCNUM, CNUM, CNUM2,BLANK2" C SHOULD BE CHANGED TO " CHARACTER*6 ICNUM(15), JCNUM, CNUM, CNUM2,BLANK2" C AND THE STATEMENT "DATA NCOS/2/" SHOULD BE CHANGED TO "DATA NCOS/15/" C C ******** MISSING DATA *********** C MISSING DATA CODES ARE AS FOLLOWS: C -0.001 DATA NOT AVAILABLE C -0.004 COMBINED FIGURE C -0.008 INSIGNIFICANT FIGURE C******************************************************************* C C------------------------------------------------------------------- C LOGICAL I/O UNIT ASSIGNMENTS: C C INPUT FILES: 1= COMPUSTAT TAPE C 14= SORTED INPUT LIST FOR MATCHING "CUSIP FILE" C C OUTPUTE FILE: 6= PRINTER C 8= OUTPUT C------------------------------------------------------------------ C *************** C ** SECTION 1 ** C *************** C----------------------------------------------------------------- C DIMENSION AND INITIALIZE VARIABLES. C----------------------------------------------------------------- REAL DATA1(175,5), DATA2(175,5), DATA3(175,5), DATA4(175,5), 1 DATA5(175,5),DATA6(175,5),DATA7(175,5),DATA8(175,5), 2 CGSINV(20), INVTA(20), IBT(20), NI(20), EFFTR(20), 3 DATA(350,20) INTEGER STK,UCOD1(5),BLANK, COUNTY,CIC,CIC2,REC,REC2 INTEGER UCOD2(5),UCOD3(5),UCOD4(5) INTEGER*2 FILE,FILE2,ZLIST,FYR1(5),FYR2(5),FYR3(5),FYR4(5), 1 YEAR1(5),YEAR2(5),YEAR3(5),YEAR4(5),DUP,STATE, 1 SOURC1(5),SOURC2(5),SOURC3(5),SOURC4(5), 1 SOURCE(20),FYR(20),YR(20),FINC INTEGER*4 IYR(100),BYR,EYR,DNUM,XREL,DNUM2 CHARACTER*2 AFTNT1(35,5),AFTNT2(35,5),AFTNT3(35,5) CHARACTER*2 AFTNT4(35,5),AFTNT5(35,5),AFTNT6(35,5) CHARACTER*2 AFTNT7(35,5),AFTNT8(35,5),FTNT1(35,5),FTNT2(35,5), 1 CSSPIN, SDBT,SDBTIM,SUBDBT CHARACTER CPSPIN,CSSPII CHARACTER*10 EIN CHARACTER*8 SMBL CHARACTER*6 ICNUM(100), JCNUM, CNUM, CNUM2,BLANK2 CHARACTER*28 INAME, CONAME,INAME2,CONAM2 CHARACTER*30 BLANK3 CHARACTER*3 SAMPLE, SMPLE(100),JSMPLE,CPAPER DATA NREC,NMATCH/0,0/ DATA NCOS/2/ C *************** C ** SECTION 2 ** C *************** C---------------------------------------------------------------------- C OPEN CALENDAR AND DATA FILES C---------------------------------------------------------------------- OPEN (UNIT = 1, . FILE = . '/afs/ir/data/gsb/compustat/annual/prim-supp-tert.annual', . STATUS = 'OLD', ACCESS = 'SEQUENTIAL', FORM ='FORMATTED') REWIND(1) OPEN (UNIT = 14,FILE = '/p2/vmohan/MYCUSIP',STATUS='UNKNOWN') OPEN (UNIT = 8, FILE = '/p2/vmohan/MYOUT.OUT',STATUS = 'UNKNOWN') C----------------------------------------------------------------- C READ THE INPUT LIST OF 6-DIGIT CUSIPS FROM A FILE. C----------------------------------------------------------------- C DO 10 I=1,NCOS READ(14,2) ICNUM(I) 2 FORMAT(A6) 10 CONTINUE C C *************** C ** SECTION 3 ** C *************** C--------------------------------------------------------------------- C READ EIGHT COMPUSTAT RECORDS FOR EACH FIRM. C--------------------------------------------------------------------- C Record 1 of Annual File 1 READ(1,20,END=900) DNUM, CNUM, CIC, REC, FILE, ZLIST, 1 CONAME, SMBL, FYR1, YEAR1, XREL, STK, DUP, 2 BLANK, UCOD1, AFTNT1, DATA1 C Record 2 of Annual File READ(1,20,END=900) DNUM, CNUM, CIC, REC, FILE, ZLIST, 1 INAME, SMBL, FYR2, YEAR2, XREL, STK, DUP, 2 BLANK, UCOD2, AFTNT2, DATA2 C Record 3 of Annual File READ(1,20,END=900) DNUM, CNUM, CIC, REC, FILE, ZLIST, 1 CONAME, SMBL, FYR3, YEAR3, XREL, STK, DUP, 2 BLANK, UCOD3, AFTNT3, DATA3 C Record 4 of Annual File READ(1,20,END=900) DNUM, CNUM, CIC, REC, FILE, ZLIST, 1 INAME, SMBL, FYR4, YEAR4, XREL, STK, DUP, 2 BLANK, UCOD4, AFTNT4, DATA4 C Record 5 of Annual File READ(1,21,END=900) DNUM2, CNUM2, CIC2, REC2, FILE2, STATE, COUNTY, 1 FINC, SOURC1, CPSPIN, CSSPIN, CSSPII, SDBT, 2 SDBTIM, SUBDBT, CPAPER, BLANK2, EIN,BLANK3, AFTNT5, DATA5 C Record 6 of Annual File READ(1,21,END=900) DNUM2, CNUM2, CIC2, REC2, FILE2, STATE, COUNTY, 1 FINC, SOURC2, CPSPIN, CSSPIN, CSSPII, SDBT, 2 SDBTIM, SUBDBT, CPAPER,BLANK2, EIN,BLANK3, AFTNT6, DATA6 C Record 7 of Annual File READ(1,21,END=900) DNUM2, CNUM2, CIC2, REC2, FILE2, STATE, COUNTY, 1 FINC, SOURC3, CPSPIN, CSSPIN, CSSPII, SDBT, 2 SDBTIM, SUBDBT, CPAPER,BLANK2, EIN,BLANK3, AFTNT7, DATA7 C Record 8 of Annual File READ(1,21,END=900) DNUM2, CNUM2, CIC2, REC2, FILE2, STATE, COUNTY, 1 FINC, SOURC4, CPSPIN, CSSPIN, CSSPII, SDBT, 2 SDBTIM, SUBDBT, CPAPER,BLANK2, EIN,BLANK3, AFTNT8, DATA8 NREC=NREC+8 20 FORMAT(I4,A6,I3,I1,2I2,A28,A8,10I2,I4,I1,I2,I6,5I1,175A2, 1 5(13F10.3,F8.3,F10.3,F8.3,5F10.3,3F8.3, 1 F10.3,F8.3,F10.6,F10.3,F8.3,3F10.3,F8.3,F10.3, 1 F8.3,2F10.3,2F8.3,6F10.3,F8.3,3F10.3,3F8.3, 1 F10.4,6F8.3,3F10.3,3F8.3,F10.3,F8.3,3F10.3, 1 F8.3,F10.3,2F8.3,F10.3,6F8.3,3F10.3,2F8.3, 1 F10.3,4F8.3,F10.3,4F8.3,4F10.3,8F8.3,2F10.3, 1 F8.3,7F10.3,F8.3,6F10.3,5F8.3,3F10.3,F8.3, 1 5F10.3,F8.3,4F10.3,2F8.3,F10.3,3F8.3,F10.3, 1 11F8.3,F10.3,6F8.3,F10.3,F8.3,F10.3,2F8.3,F10.3)) 21 FORMAT(I4,A6,I3,I1,2I2,I3,I2,5I2,A1,A2,A1,3A2,A3,A6,A10, 1 A30,175A2, 1 5(13F10.3,F8.3,F10.3,F8.3,5F10.3,3F8.3, 1 F10.3,F8.3,F10.6,F10.3,F8.3,3F10.3,F8.3,F10.3, 1 F8.3,2F10.3,2F8.3,6F10.3,F8.3,3F10.3,3F8.3, 1 F10.4,6F8.3,3F10.3,3F8.3,F10.3,F8.3,3F10.3, 1 F8.3,F10.3,2F8.3,F10.3,6F8.3,3F10.3,2F8.3, 1 F10.3,4F8.3,F10.3,4F8.3,4F10.3,8F8.3,2F10.3, 1 F8.3,7F10.3,F8.3,6F10.3,5F8.3,3F10.3,F8.3, 1 5F10.3,F8.3,4F10.3,2F8.3,F10.3,3F8.3,F10.3, 1 11F8.3,F10.3,6F8.3,F10.3,F8.3,F10.3,2F8.3,F10.3)) C--------------------------------------------------------------------- C CONVERTING 8 ARRAYS OF DATA INTO ONE FOR EASY REPRESENTATION C--------------------------------------------------------------------- DO I = 1,5 DO J = 1,175 DATA(J,I) = DATA1(J,I) DATA(J,I+5) = DATA2(J,I) DATA(J,I+10) = DATA3(J,I) DATA(J,I+15) = DATA4(J,I) DATA(J+175,I) = DATA5(J,I) DATA(J+175,I+5) = DATA6(J,I) DATA(J+175,I+10) = DATA7(J,I) DATA(J+175,I+15) = DATA8(J,I) ENDDO ENDDO DO J = 1,35 DO I = 1,5 FTNT1(J,I) = AFTNT1(J,I) FTNT1(J,I+5) = AFTNT2(J,I) FTNT1(J,I+10) = AFTNT3(J,I) FTNT1(J,I+15) = AFTNT4(J,I) FTNT2(J,I) = AFTNT5(J,I) FTNT2(J,I+5) = AFTNT6(J,I) FTNT2(J,I+10) = AFTNT7(J,I) FTNT2(J,I+15) = AFTNT8(J,I) ENDDO ENDDO DO I = 1,5 FYR(I)=FYR1(I) SOURCE(I) = SOURC1(I) YR(I)= YEAR1(I) FYR(I+5) = FYR2(I) SOURCE(I+5) = SOURC2(I) YR(I+5)=YEAR2(I) FYR(I+10) = FYR3(I) SOURCE(I+10) = SOURC3(I) YR(I+10) = YEAR3(I) FYR(I+15) = FYR4(I) SOURCE(I+15) = SOURC4(I) YR(I+15)=YEAR4(I) ENDDO C *************** C ** SECTION 4 ** C *************** C--------------------------------------------------------------------- C MATCH THE READ CUSIP DATA WITH FIRMS IN THE "CUSIP" FILE C--------------------------------------------------------------------- C 15 DO 100 L=1,NCOS IF(CNUM .EQ.ICNUM(L)) THEN GO TO 30 ELSE GO TO 100 ENDIF 30 NMATCH = NMATCH + 1 WRITE (6,31) CNUM, ICNUM(L) 31 FORMAT(' RECORD MATCHED',A,2X,A) C C *************** C ** SECTION 5 ** C *************** C-------------------------------------------------------------------- C PROCESS SELECTED FIRMS. C SPECIFY THE REQUESTED BEGINNING YEAR (BYR) AND THE ENDING C YEAR (EYR). YEAR 20 IS THE MOST CURRENT YEAR OF INFORMATION. C YEAR 1 IS THE OLDEST. C-------------------------------------------------------------------- C 40 BYR = 1 IF (BYR .LT. 1) THEN BYR = 1 ENDIF EYR = 20 IF (EYR .GT. 20) THEN EYR = 20 ENDIF C DO 80 I=BYR,EYR C C*********************************************************************** C WRITE OUT SELECTED DATA ITEMS. SEE DOCUMENTATION FOR LIST OF ITEM #. C BE SURE TO MODIFY THE FORMAT STATEMENT NO. 81 BELOW TO MATCH THE C VARIABLES REQUESTED IN THE WRITE STATEMENT. C************************************************************************ WRITE(8,81) CNUM,CONAME, FYR(I),YR(I), DATA(1,I), DATA(3,I), 1 DATA(5,I),DATA(6,I),DATA(7,I),DATA(12,I) 81 FORMAT(A6,1X,A28,1X,I2,2X,I2,2X,6(F10.3,1X)) 80 CONTINUE 100 CONTINUE C GO TO 1 C 900 WRITE(6,71) NMATCH, NREC 71 FORMAT('1','NO. OF MATCHES: ',I5,' NO. OF RECORDS READ: ',I8) STOP END