C CDE -- BUILDS FORTRAN SYMBOLIC CODE TABLE FILE(.CDE FILE) C C INPUTS: FILE ARRAY 30 BYTES .LST FILE C PADD $CODE1 PSECT ADDRESS C TITLE MODULE WE ARE SEARCHING C C OUTPUTS: CODEFG CODE FOUND FLAG C CODREC RECORD NO. OF THIS MODULE C IN .CDE FILE C .CDE FILE C C SUBROUTINE CDE(FILE,PADD,TITLE,SEGNM,CODEFG,CODREC) BYTE REC(80),FILE(30) INTEGER TITLE(3),SEGNM(3),PADD,ALINE(2),CODEFG INTEGER*4 IREC7,IREC8,CODREC COMMON /COUNTS/IREC7,IREC8 C C PROCESS .CDE FILE C IFIRST=.TRUE. ISTE=LSTRNG(TITLE,1,6,' ',1,1) ISTE=ISTE-1 IF(ISTE.LE.0)ISTE=6 TYPE 11,TITLE 11 FORMAT(' PROCESSING MODULE NAME: ',3A2) OPEN(UNIT=3,NAME=FILE,TYPE='OLD',READONLY,ACCESS='SEQUENTIAL') 10 READ(3,15,END=16,ERR=68)NCH,REC 15 FORMAT(Q,80A) IF(LSTRNG(REC,1,10,'0001',1,4).LE.0)GOTO10 IF(KOMSTR(TITLE,1,4,'.MAIN.',1,6).EQ.0)GOTO20 IF(LSTRNG(REC,1,50,'PROGRAM',1,7).LE.0.AND. + LSTRNG(REC,1,50,'FUNCTION',1,8).LE.0.AND. + LSTRNG(REC,1,50,'SUBROUTINE',1,10).LE.0)GOTO10 IF(LSTRNG(REC,1,80,TITLE,1,ISTE).GT.0)GOTO20 GOTO10 16 TYPE 17,TITLE,FILE 17 FORMAT(' * PROGRAM ERROR- MODULE ',3A2,' EXPECTED IN FILE', + 30A,'IS NOT FOUND *') GOTO85 C C SAVE FORTRAN CODE FOR THIS TITLE IN TEMP FILE C 20 OPEN(UNIT=4,NAME='CDE.TMP',TYPE='NEW',ACCESS='SEQUENTIAL') 25 DO 22 I=1,4 IF(REC(I).LT."60.OR.REC(I).GT."71)GOTO27 22 CONTINUE WRITE(4,26)REC 26 FORMAT(80A) 27 IF(LSTRNG(REC,1,10,'000000',1,6).GT.0)GOTO30 READ(3,15)NCH,REC GOTO25 30 CLOSE(UNIT=4) C C PROCESS LI:3 PART OF GIVEN LISTING FOR GIVEN MODULE NAME(TITLE). C CODEFG=.FALSE. OPEN(UNIT=4,NAME='CDE.TMP',TYPE='OLD',ACCESS='SEQUENTIAL') IF(LSTRNG(REC,1,80,'$CODE1',1,6).GT.0)GOTO50 40 READ(3,15,END=66)NCH,REC IF(LSTRNG(REC,1,80,'$CODE1',1,6).LE.0)GOTO40 50 READ(3,15,END=66)NCH,REC IF(LSTRNG(REC,1,10,'.END',1,4).GT.0)GOTO75 ISPOT=LSTRNG(REC,1,15,';',1,1) IF(ISPOT.LE.0)GOTO50 CODEFG=.TRUE. DECODE(4,55,REC(ISPOT+2)),ILINE1 55 FORMAT(I4) CALL STRMOV(REC(ISPOT+2),1,4,ALINE,1) 56 READ(3,15,END=66)NCH,REC IF(REC(1).LT."60.OR.REC(1).GT."71)GOTO56 DECODE(6,60,REC(1)),IADD 60 FORMAT(O6) IADD=IADD+PADD 65 READ(4,15,END=66)NCH,REC IF(KOMSTR(REC(1),1,6,ALINE,1,4).LE.0)GOTO65 WRITE(7'IREC7)SEGNM,TITLE,ILINE1,IADD,REC,II1 IF(IFIRST.EQ..TRUE.)GOTO74 GOTO50 74 IFIRST=.FALSE. CODREC=IREC7-1 GOTO50 75 CLOSE(UNIT=4,DISPOSE='DELETE') GOTO80 68 TYPE 67,FILE GOTO85 66 TYPE 67,FILE 67 FORMAT(' FILE ERROR -',30A,' WHILE PROCESSING .CDE FILE') CLOSE(UNIT=4,DISPOSE='DELETE') GOTO85 80 CALL VRS(TITLE,SEGNM) 85 CLOSE(UNIT=3) RETURN END