C PRG -- SUBROUTINE TO PRODUCE C THE .PRG TABLE WHICH CONTAINS THE C PRAMETERS FOR EACH SUBROUTINE IN THE C SYSTEM TO BE DEBUGGED. C C INPUTS: MAPFL MAP FILE SPEC. C IOVLAY OVERLAY FLAG. C C OUTPUTS: .PRG FILE C C SUBROUTINE PRG(MAPFL,IOVLAY) BYTE MAPFL(30),PRG2(30),REC(80),FILE(30),CDE2(30),VRS2(30) INTEGER PADD,ADD,LNGHT,SEGNM(3),TITLE(3),IOVLAY,CODEFG INTEGER*4 IREC7,IREC8,IREC,CODREC COMMON /COUNTS/IREC7,IREC8 C C C PROCESS .PRG FILE C CALL ERRSET(29,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) I=LSTRNG(MAPFL,1,30,'.',1,1) CALL STRMOV(MAPFL,1,I,PRG2,1) CALL STRMOV(MAPFL,1,I,CDE2,1) CALL STRMOV(MAPFL,1,I,VRS2,1) CALL STRMOV('.PRG',1,4,PRG2,I) CALL STRMOV('.CDE',1,4,CDE2,I) CALL STRMOV('.VRS',1,4,VRS2,I) OPEN(UNIT=1,NAME=MAPFL,TYPE='OLD',READONLY,ACCESS='SEQUENTIAL') OPEN(UNIT=2,NAME=PRG2,TYPE='NEW',ACCESS='DIRECT', + ASSOCIATEVARIABLE=IREC,RECORDSIZE=7) OPEN(UNIT=7,NAME=CDE2,TYPE='NEW',ACCESS='DIRECT', + ASSOCIATEVARIABLE=IREC7,RECORDSIZE=25) OPEN(UNIT=8,NAME=VRS2,TYPE='NEW',ACCESS='DIRECT', + ASSOCIATEVARIABLE=IREC8,RECORDSIZE=6) IREC=1 IREC7=1 IREC8=1 C C SEARCH FOR 'SEGMENT:' IN .MAP FILE C 10 READ(1,15,END=50)NCH,REC 15 FORMAT(Q,80A) ISPOT=LSTRNG(REC,1,80,'SEGMENT:',1,8) IF(ISPOT.LE.0)GOTO10 CALL STRMOV(REC,ISPOT+9,6,SEGNM,1) IF(IOVLAY.EQ..FALSE.)CALL STRMOV('NONOVL',1,6,SEGNM,1) IF(KOMSTR('LIMPIT',1,6,SEGNM,1,6).EQ.0) + CALL STRMOV('ROOT ',1,6,SEGNM,1) 25 READ(1,15)NCH,REC ISPOT=LSTRNG(REC,1,80,'$CODE1',1,6) IF(ISPOT.LE.0)GOTO25 TYPE 11,SEGNM 11 FORMAT(' ---- PROCESSING SEGMENT NAME: ',3A2) 32 READ(1,15)NCH,REC IF(REC(1).NE."14)GOTO1 READ(1,15)NCH,REC 1 IF(REC(1).NE.' ')GOTO10 CALL STRMOV(REC,48,6,TITLE,1) DECODE(6,30,REC(27)),PADD 30 FORMAT(O6) DECODE(6,30,REC(27),ERR=32),ADD DECODE(6,30,REC(34)),LNGHT ISPOT=LSTRNG(MAPFL,1,22,']',1,1) CALL STRMOV(MAPFL,1,ISPOT,FILE,1) CALL STRMOV(REC,62,NCH-62,FILE,ISPOT+1) ISPOT=LSTRNG(FILE,1,30,'.',1,1) IF(KOMSTR('.OLB',1,4,FILE,ISPOT,4).EQ.0)GOTO32 CALL STRMOV('.LST',1,4,FILE,ISPOT) DO 33 K=ISPOT+4,30 FILE(K)="0 33 CONTINUE OPEN(UNIT=3,NAME=FILE,TYPE='OLD',READONLY,ERR=42, + ACCESS='SEQUENTIAL') 35 READ(3,15,END=41)NCH,REC ISPOT=LSTRNG(REC,1,80,'.TITLE',1,6) IF(ISPOT.LE.0)GOTO35 ISPOT=LSTRNG(REC,1,80,TITLE,1,6) IF(ISPOT.LE.0)GOTO35 LST=1 GOTO45 41 TYPE 5,TITLE,FILE 5 FORMAT(' MODULE: ',3A2,' NOT FOUND IN FILE: ',30A) LST=0 GOTO45 42 TYPE 6,FILE,IERR 6 FORMAT(' ****FILE NOT FOUND: ',30A,'**** IERR=',I5) 40 LST=0 GOTO46 45 CLOSE(UNIT=3) 46 IADD=ADD+LNGHT-1 IF(LST.EQ.0)GOTO47 CALL CDE(FILE,PADD,TITLE,SEGNM,CODEFG,CODREC) WRITE(2'IREC)SEGNM,TITLE,ADD,IADD,LST,II1,CODREC IF(CODEFG.EQ..TRUE.)GOTO32 IREC=IREC-1 LST=-1 47 CODREC=0 WRITE(2'IREC)SEGNM,TITLE,ADD,IADD,LST,II1,CODREC GOTO32 50 CLOSE(UNIT=1) CLOSE(UNIT=2) CLOSE(UNIT=7) CLOSE(UNIT=8) END