      INTEGER IFD,TFD1,TFD2
      INTEGER OPEN,MKTEMP
      INTEGER STATE(4)
      INTEGER GFNARG,GKLARG
      INTEGER NAME(180)
      INTEGER A$BUF(200)
      COMMON /OPTCOM/A$BUF
      INTEGER SYMTE0(200),SYMNA0(200)
      INTEGER SYMLE0,SYMBO0
      INTEGER IDTAB0
      COMMON /LEXCOM/SYMTE0,SYMLE0,SYMBO0,IDTAB0,SYMNA0
      INTEGER INBUF0(505)
      INTEGER IBPAA0,LINEN0(5),LEVEL0
      INTEGER INFIL0(5)
      COMMON /INCOM/INBUF0,IBPAA0,LINEN0,INFIL0,LEVEL0
      INTEGER OUTBU0(102)
      INTEGER OUTPA0,OUTLI0,OUTWI0
      COMMON /OBUFC0/OUTBU0,OUTPA0,OUTLI0,OUTWI0
      INTEGER MEMAA0(30000)
      COMMON /DS$MEM/MEMAA0
      INTEGER PARSCL
      INTEGER AAAAA0(6)
      INTEGER AAAAB0
      INTEGER AAAAC0
      DATA AAAAA0/226,233,236,240,245,0/
      IF((PARSCL(AAAAA0,A$BUF).NE.-3))GOTO 10000
        CALL ERROR('Usage: xref {-{b | i | l | p | u}} {<file>}.')
10000 CALL INITC0
      TFD1=MKTEMP(3)
      TFD2=MKTEMP(3)
      IF((TFD1.EQ.-3))GOTO 10002
      IF((TFD2.EQ.-3))GOTO 10002
      GOTO 10001
10002   CALL ERROR('can''t create temporary files.')
10001 STATE(1)=1
10003   AAAAB0=GFNARG(NAME,STATE)
        GOTO 10004
10005     GOTO 10006
10007     IFD=OPEN(NAME,1)
          IF((IFD.NE.-3))GOTO 10008
            CALL PRINT(-15,'*s: can''t open*n.',NAME)
            GOTO 10009
10008       CALL BUILD0(IFD,TFD1)
            CALL CLOSE(IFD)
            IF((A$BUF(240-225+1).EQ.0))GOTO 10010
              CALL PUTCH(140,-11)
10010     CONTINUE
10009   GOTO 10011
10012     CALL PRINT(-15,'*s: can''t open*n.',NAME)
        GOTO 10011
10004   AAAAC0=AAAAB0+4
        GOTO(10012,10007,10005),AAAAC0
10011 CONTINUE
      GOTO 10003
10006 CALL REWIND(TFD1)
      CALL SORT(TFD1,TFD2)
      CALL RMTEMP(TFD1)
      CALL PRINT0(TFD2,-11)
      CALL RMTEMP(TFD2)
      CALL SWT
      END
      SUBROUTINE INITC0
      INTEGER A$BUF(200)
      COMMON /OPTCOM/A$BUF
      INTEGER SYMTE0(200),SYMNA0(200)
      INTEGER SYMLE0,SYMBO0
      INTEGER IDTAB0
      COMMON /LEXCOM/SYMTE0,SYMLE0,SYMBO0,IDTAB0,SYMNA0
      INTEGER INBUF0(505)
      INTEGER IBPAA0,LINEN0(5),LEVEL0
      INTEGER INFIL0(5)
      COMMON /INCOM/INBUF0,IBPAA0,LINEN0,INFIL0,LEVEL0
      INTEGER OUTBU0(102)
      INTEGER OUTPA0,OUTLI0,OUTWI0
      COMMON /OBUFC0/OUTBU0,OUTPA0,OUTLI0,OUTWI0
      INTEGER MEMAA0(30000)
      COMMON /DS$MEM/MEMAA0
      INTEGER I
      INTEGER AAAAD0(7)
      INTEGER AAAAE0(8)
      INTEGER AAAAF0(10)
      INTEGER AAAAG0(10)
      INTEGER AAAAH0(8)
      INTEGER AAAAI0(6)
      INTEGER AAAAJ0(3)
      INTEGER AAAAK0(5)
      INTEGER AAAAL0(4)
      INTEGER AAAAM0(6)
      INTEGER AAAAN0(7)
      INTEGER AAAAO0(6)
      INTEGER AAAAP0(5)
      INTEGER AAAAQ0(3)
      INTEGER AAAAR0(7)
      INTEGER AAAAS0(6)
      INTEGER AAAAT0(5)
      INTEGER AAAAU0(5)
      INTEGER AAAAV0(5)
      INTEGER AAAAW0(5)
      INTEGER AAAAX0(4)
      INTEGER AAAAY0(8)
      INTEGER AAAAZ0(7)
      INTEGER AAABA0(9)
      INTEGER AAABB0(7)
      INTEGER AAABC0(5)
      INTEGER AAABD0(6)
      INTEGER AAABE0(9)
      INTEGER AAABF0(8)
      INTEGER AAABG0(10)
      INTEGER AAABH0(8)
      INTEGER AAABI0(9)
      INTEGER AAABJ0(10)
      INTEGER AAABK0(9)
      INTEGER AAABL0(10)
      INTEGER AAABM0(8)
      INTEGER AAABN0(12)
      INTEGER AAABO0(9)
      INTEGER AAABP0(11)
      INTEGER AAABQ0(7)
      INTEGER AAABR0(5)
      INTEGER AAABS0(6)
      INTEGER AAABT0(5)
      INTEGER AAABU0(5)
      INTEGER AAABV0(7)
      INTEGER AAABW0(10)
      INTEGER AAABX0(12)
      INTEGER AAABY0(10)
      DATA AAAAD0/243,244,242,233,238,231,0/
      DATA AAAAE0/236,233,238,235,225,231,229,0/
      DATA AAAAF0/240,242,239,227,229,228,245,242,229,0/
      DATA AAAAG0/242,229,227,245,242,243,233,246,229,0/
      DATA AAAAH0/230,239,242,247,225,242,228,0/
      DATA AAAAI0/236,239,227,225,236,0/
      DATA AAAAJ0/233,230,0/
      DATA AAAAK0/229,236,243,229,0/
      DATA AAAAL0/230,239,242,0/
      DATA AAAAM0/247,232,233,236,229,0/
      DATA AAAAN0/242,229,240,229,225,244,0/
      DATA AAAAO0/245,238,244,233,236,0/
      DATA AAAAP0/227,225,243,229,0/
      DATA AAAAQ0/228,239,0/
      DATA AAAAR0/242,229,244,245,242,238,0/
      DATA AAAAS0/226,242,229,225,235,0/
      DATA AAAAT0/238,229,248,244,0/
      DATA AAAAU0/243,244,239,240,0/
      DATA AAAAV0/231,239,244,239,0/
      DATA AAAAW0/227,225,236,236,0/
      DATA AAAAX0/229,238,228,0/
      DATA AAAAY0/233,238,227,236,245,228,229,0/
      DATA AAAAZ0/228,229,230,233,238,229,0/
      DATA AAABA0/245,238,228,229,230,233,238,229,0/
      DATA AAABB0/243,229,236,229,227,244,0/
      DATA AAABC0/247,232,229,238,0/
      DATA AAABD0/233,230,225,238,249,0/
      DATA AAABE0/227,239,238,244,233,238,245,229,0/
      DATA AAABF0/227,239,237,240,236,229,248,0/
      DATA AAABG0/240,242,229,227,233,243,233,239,238,0/
      DATA AAABH0/236,239,231,233,227,225,236,0/
      DATA AAABI0/233,237,240,236,233,227,233,244,0/
      DATA AAABJ0/240,225,242,225,237,229,244,229,242,0/
      DATA AAABK0/229,248,244,229,242,238,225,236,0/
      DATA AAABL0/228,233,237,229,238,243,233,239,238,0/
      DATA AAABM0/233,238,244,229,231,229,242,0/
      DATA AAABN0/229,241,245,233,246,225,236,229,238,227,229,0/
      DATA AAABO0/230,245,238,227,244,233,239,238,0/
      DATA AAABP0/243,245,226,242,239,245,244,233,238,229,0/
      DATA AAABQ0/227,239,237,237,239,238,0/
      DATA AAABR0/228,225,244,225,0/
      DATA AAABS0/244,242,225,227,229,0/
      DATA AAABT0/243,225,246,229,0/
      DATA AAABU0/242,229,225,236,0/
      DATA AAABV0/228,239,245,226,236,229,0/
      DATA AAABW0/226,236,239,227,235,228,225,244,225,0/
      DATA AAABX0/243,244,225,227,235,232,229,225,228,229,242,0/
      DATA AAABY0/243,232,239,242,244,227,225,236,236,0/
      IBPAA0=400
      INBUF0(IBPAA0)=0
      OUTPA0=1
      OUTLI0=1
      OUTWI0=76
      CALL DSINIT(30000)
      IDTAB0=MKTABL(1)
      CALL ENTER0(AAAAD0)
      CALL ENTER0(AAAAE0)
      CALL ENTER0(AAAAF0)
      CALL ENTER0(AAAAG0)
      CALL ENTER0(AAAAH0)
      CALL ENTER0(AAAAI0)
      CALL ENTER0(AAAAJ0)
      CALL ENTER0(AAAAK0)
      CALL ENTER0(AAAAL0)
      CALL ENTER0(AAAAM0)
      CALL ENTER0(AAAAN0)
      CALL ENTER0(AAAAO0)
      CALL ENTER0(AAAAP0)
      CALL ENTER0(AAAAQ0)
      CALL ENTER0(AAAAR0)
      CALL ENTER0(AAAAS0)
      CALL ENTER0(AAAAT0)
      CALL ENTER0(AAAAU0)
      CALL ENTER0(AAAAV0)
      CALL ENTER0(AAAAW0)
      CALL ENTER0(AAAAX0)
      CALL ENTER0(AAAAY0)
      CALL ENTER0(AAAAZ0)
      CALL ENTER0(AAABA0)
      CALL ENTER0(AAABB0)
      CALL ENTER0(AAABC0)
      CALL ENTER0(AAABD0)
      CALL ENTER0(AAABE0)
      CALL ENTER0(AAABF0)
      CALL ENTER0(AAABG0)
      CALL ENTER0(AAABH0)
      CALL ENTER0(AAABI0)
      CALL ENTER0(AAABJ0)
      CALL ENTER0(AAABK0)
      CALL ENTER0(AAABL0)
      CALL ENTER0(AAABM0)
      CALL ENTER0(AAABN0)
      CALL ENTER0(AAABO0)
      CALL ENTER0(AAABP0)
      CALL ENTER0(AAABQ0)
      CALL ENTER0(AAABR0)
      CALL ENTER0(AAABS0)
      CALL ENTER0(AAABT0)
      CALL ENTER0(AAABU0)
      CALL ENTER0(AAABV0)
      CALL ENTER0(AAABW0)
      CALL ENTER0(AAABX0)
      CALL ENTER0(AAABY0)
      RETURN
      END
      SUBROUTINE ENTER0(KW)
      INTEGER KW(1)
      INTEGER A$BUF(200)
      COMMON /OPTCOM/A$BUF
      INTEGER SYMTE0(200),SYMNA0(200)
      INTEGER SYMLE0,SYMBO0
      INTEGER IDTAB0
      COMMON /LEXCOM/SYMTE0,SYMLE0,SYMBO0,IDTAB0,SYMNA0
      INTEGER INBUF0(505)
      INTEGER IBPAA0,LINEN0(5),LEVEL0
      INTEGER INFIL0(5)
      COMMON /INCOM/INBUF0,IBPAA0,LINEN0,INFIL0,LEVEL0
      INTEGER OUTBU0(102)
      INTEGER OUTPA0,OUTLI0,OUTWI0
      COMMON /OBUFC0/OUTBU0,OUTPA0,OUTLI0,OUTWI0
      INTEGER MEMAA0(30000)
      COMMON /DS$MEM/MEMAA0
      INTEGER INFO(1)
      INFO(0)=1
      CALL ENTER(KW,INFO,IDTAB0)
      RETURN
      END
      SUBROUTINE SYNERR(MESSA0)
      INTEGER MESSA0(1)
      INTEGER A$BUF(200)
      COMMON /OPTCOM/A$BUF
      INTEGER SYMTE0(200),SYMNA0(200)
      INTEGER SYMLE0,SYMBO0
      INTEGER IDTAB0
      COMMON /LEXCOM/SYMTE0,SYMLE0,SYMBO0,IDTAB0,SYMNA0
      INTEGER INBUF0(505)
      INTEGER IBPAA0,LINEN0(5),LEVEL0
      INTEGER INFIL0(5)
      COMMON /INCOM/INBUF0,IBPAA0,LINEN0,INFIL0,LEVEL0
      INTEGER OUTBU0(102)
      INTEGER OUTPA0,OUTLI0,OUTWI0
      COMMON /OBUFC0/OUTBU0,OUTPA0,OUTLI0,OUTWI0
      INTEGER MEMAA0(30000)
      COMMON /DS$MEM/MEMAA0
      INTEGER I
      INTEGER STR(102)
      CALL PRINT(-15,'*i.',LINEN0(1))
      I=2
      GOTO 10015
10013 I=I+(1)
10015 IF((I.GT.LEVEL0))GOTO 10014
        CALL PRINT(-15,'@.*i.',LINEN0(I))
      GOTO 10013
10014 CALL PRINT(-15,': *p@.*n.',MESSA0)
      RETURN
      END
C ---- Long Name Map ----
C message                        messa0
C compare                        compa0
C initcrossref                   initc0
C putbackstr                     putbb0
C putback                        putba0
C obufcom                        obufc0
C buildcrossref                  build0
C underline                      under0
C Outbuf                         outbu0
C Symbol                         symbo0
C Inbuf                          inbuf0
C Ibp                            ibpaa0
C Symlen                         symle0
C Level                          level0
C Mem                            memaa0
C Symtext                        symte0
C dumpbuffer                     dumpb0
C enterkw                        enter0
C outputkeyword                  outpu0
C Outwidth                       outwi0
C Outp                           outpa0
C boldface                       boldf0
C Infile                         infil0
C Symname                        symna0
C skipblanksandcomments          skipb0
C printcrossref                  print0
C Idtable                        idtab0
C Outline                        outli0
C Linenumber                     linen0
