C PST -- BUILDS PROGRAM SECTIONS(PSECT) TABLE FILE(.PST FILE) C FOR USE IN BUILDING OTHER TABLES. C C INPUTS: MAPFL MAP FILE SPEC C IOVLAY OVERLAY FLAG C OUTPUTS: .PST FILE C C SUBROUTINE PST(MAPFL,IOVLAY) INTEGER IOVLAY BYTE MAPFL(30),PST2(30),REC(80),SEGNM(6),MODULE(6) INTEGER PSECT(3) COMMON /PSECT/PST2 C C C PROCESS .PST FILE C C I=LSTRNG(MAPFL,1,30,'.',1,1) CALL STRMOV(MAPFL,1,I,PST2,1) CALL STRMOV('.PST',1,4,PST2,I) OPEN(UNIT=1,NAME=MAPFL,TYPE='OLD',READONLY,ACCESS='SEQUENTIAL') OPEN(UNIT=2,NAME=PST2,TYPE='NEW',ACCESS='DIRECT', + ASSOCIATEVARIABLE=IREC,RECORDSIZE=5) IREC=1 C C SEARCH FOR SEGMENT C 5 READ(1,10,END=40)NCH,REC 10 FORMAT(Q,80A) ISPOT=LSTRNG(REC,1,80,'SEGMENT:',1,8) IF(ISPOT.GT.0)GOTO20 GOTO5 20 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) 22 READ(1,10,END=40)NCH,REC IF(LSTRNG(REC,1,10,'-------',1,7).LE.0)GOTO22 C C SEARCH FOR NON-BLANK CHAR. AND LEVEL BREAK ON '$$' C 25 READ(1,10,END=40)NCH,REC IF(REC(27).LT."60.OR.REC(27).GT."71)GOTO25 IF(REC(2).EQ.'$')GOTO5 IF(REC(1).EQ."40)GOTO26 CALL STRMOV(REC,1,6,PSECT,1) GOTO25 26 DECODE(6,30,REC(27)),J 30 FORMAT(O6) CALL STRMOV(REC,48,6,MODULE,1) WRITE(2'IREC)(SEGNM(I),I=1,6),(MODULE(I),I=1,6),PSECT,J GOTO25 40 CLOSE(UNIT=1) CLOSE(UNIT=2) RETURN END