BYTE DATA(80) DIMENSION NAME(3,500),MPAGE(500),LOC(500) DIMENSION KPAGE(6),INAME(3,6),FNAME(7) DATA MAXMAC/500/ DATA NAME/1500*' '/ WRITE(5,6000) 6000 FORMAT('$MACRO LIBRARY NAME ? ') READ(5,6100,END=9999) FNAME 6100 FORMAT(7A4) CALL ASSIGN(1,FNAME,28) CALL ASSIGN(2,'TABLE.LST',0) CALL ASSIGN(3,'MACRO.LST',0) KOUNT=0 IPAGE=1 NMAC=1 LINE=0 MPAGE(1)=1 WRITE(2,1001) IPAGE 1001 FORMAT(' ',T70,'PAGE ',I2) 1000 FORMAT('1',T70,'PAGE ',I2) 10 READ(1,2000,END=40) N,DATA 2000 FORMAT(Q,80A1) IF (DATA(1).NE."14) GO TO 15 IF (N.EQ.1) GO TO 10 DATA(1)="40 15 WRITE(2,2500) (DATA(I),I=1,N) 2500 FORMAT(1X,80A1) LINE=LINE+1 IF (LINE.LT.58) GO TO 20 WRITE(2,3000) IPAGE 3000 FORMAT(1X,T70,'PAGE ',I2) IPAGE=IPAGE+1 WRITE(2,1000) IPAGE LINE=0 C 20 IF (LSTRNG(DATA,1,20,'.ENDM',1,5).NE.0) GO TO 25 IF (LSTRNG(DATA,1,20,'.ENDR',1,5).EQ.0) GO TO 30 25 KOUNT=KOUNT-1 IF (KOUNT.NE.0) GO TO 10 NMAC=NMAC+1 IF (NMAC.GT.MAXMAC) GO TO 99 MPAGE(NMAC)=IPAGE IF (LINE.EQ.58) MPAGE(NMAC)=MPAGE(NMAC)+1 WRITE(2,4000) 4000 FORMAT(1X,8('**********')) LINE=LINE+1 GO TO 10 C 30 N=LSTRNG(DATA,1,20,'.MACRO',1,6) IF (N.EQ.0) GO TO 36 KOUNT=KOUNT+1 IF (KOUNT.NE.1) GO TO 10 N=N+7 I1=NSCAN(DATA,N,5,"20011,1,2) IF (I1.EQ.0) GO TO 35 IF (ISCAN(DATA,I1,8,"20011,1,2,I2).EQ.0) GO TO 35 CALL STRMOV(DATA,I1,I2-I1,NAME(1,NMAC),1) GO TO 10 35 CALL STRMOV('??????',1,6,NAME(1,NMAC),1) GO TO 10 36 IF (LSTRNG(DATA,1,20,'.IRP',1,4).NE.0) GO TO 37 IF (LSTRNG(DATA,1,20,'.REPT',1,5).EQ.0) GO TO 10 37 KOUNT=KOUNT+1 GO TO 10 40 NMAC=NMAC-1 WRITE(6,4500) NMAC 4500 FORMAT(1X,I5,' MACROS') WRITE(6,4600) ((NAME(I,J),I=1,3),J=1,NMAC) 4600 FORMAT(10(2X,3A2)) CALL ORDERA(NAME,NMAC,LOC,6) C N=(NMAC+5)/6 KK=NMAC-6*(N-1) II=6 DO 60 I=1,N L=6 IF (I.EQ.N) L=KK JJ=N K=0 DO 50 J=1,L K=K+1 I2=I+JJ*(K-1) KPAGE(K)=MPAGE(LOC(I2)) CALL STRMOV(NAME(1,I2),1,6,INAME(1,K),1) 50 IF (J.EQ.KK) JJ=JJ-1 IF (I.EQ.N) II=NMAC-6*(N-1) 60 WRITE(3,5000) ((INAME(J,I1),J=1,3),KPAGE(I1),I1=1,II) 5000 FORMAT(6(1X,3A2,I3,3X)) GO TO 9999 99 WRITE(5,999) MAXMAC 999 FORMAT(' NUMBER OF MACROS GT ',I4) 9999 STOP END