C C X R F P R T C C PRINT CROSS REFERENCE TABLE C C THIS ROUTINE IS CALLED AT THE END OF PASS 2 OF THE ASSEMBLY C TO PRINT THE CONTENTS OF THE CROSS REFERENCE TABLE. THE CALLING C SEQUENCE IS: C C CALL XRFPRT C C THERE ARE NO ARGUMENTS. THE CROSS REFERENCE TABLE IS PRINTED C BETWEEN THE ERROR TABLE AND THE USER SYMBOL TABLE. THE SUBTITLE IS C SET TO "USER SYMBOL CROSS REFERENCE TABLE". C SUBROUTINE XRFPRT INCLUDE 'IODEVS.CMN' INCLUDE 'LSTHDG.CMN' INCLUDE 'USRSYM.CMN' INTEGER SYMSBT(60),HPRGSZ(2),OUT,BLANKS,PAGE INTEGER*4 HVALUE,IREF(1000),FWDPNT C DATA SYMSBT/'U', 'S', 'E', 'R', ' ', 'S', 'Y', 'M', 'B', $ 'O', 'L', ' ', 'C', 'R', 'O', 'S', 'S', ' ', $ 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'E', $ ' ', 'T', 'A', 'B', 'L', 'E', 27*' '/ DATA BLANKS / ' ' /,OUT /5/ C IF (LSTUNT.LE.0) RETURN !NO LISTING REQUIRED? IF (XRFUNT.LE.0) RETURN !NO CROSS REFERENCE REQUESTED? IF (SYMNUM.EQ.0) RETURN !NO USER SYMBOLS? DO 5 I=1,60 SUBTTL(I) = SYMSBT(I) !SUBTITLE OF 5 CONTINUE !"USER SYMBOL CROSS REFERENCE TABLE" CALL HEADNG !PAGE AND OUTPUT HEADING C C WRITE OUT A HEADER C WRITE (LSTUNT,6) 6 FORMAT (5X,'SYMBOL',5X,'VALUE',20X,'REFERENCES',/) LINENO = 1 DO 30 I=1,SYMNUM J = 1 READ (XRFUNT'I) IREF(J),FWDPNT IF (FWDPNT.EQ.0) GO TO 15 DO 10 J=2,1000 READ (XRFUNT'FWDPNT) IREF(J),FWDPNT IF (FWDPNT.EQ.0) GO TO 15 10 CONTINUE 15 CALL BINHEX(SYMVAL(I),HVALUE,4) NLINES = (J-1)/20 M = MIN(20,J) WRITE (LSTUNT,16) (SYMTAB(K,I),K=1,6),HVALUE,(IREF(L),L=1,M) 16 FORMAT (2X,6A2,3X,A4,3X,'#',20I5:) LINENO = LINENO+1 IF (LINENO.LE.58) GO TO 20 IF (I.EQ.SYMNUM.AND.NLINES.EQ.0) GO TO 30 LINENO = 1 CALL HEADNG WRITE (LSTUNT,6) 20 IF (NLINES.EQ.0) GO TO 30 DO 25 M=1,NLINES N1 = M*20+1 N2 = MIN((M+1)*20,J) WRITE (LSTUNT,21) (IREF(L),L=N1,N2) 21 FORMAT (25X,20I5:) LINENO = LINENO+1 IF (LINENO.LE.58) GO TO 25 IF (I.EQ.SYMNUM.AND.M.EQ.NLINES) GO TO 25 LINENO = 1 CALL HEADNG WRITE (LSTUNT,6) 25 CONTINUE 30 CONTINUE RETURN END