      INTEGER LIN(256),PAT(256),SUB(256)
      INTEGER I
      INTEGER ARGLIN,GETARG,GETLIN,GETPAT,GETSUB
      INTEGER AAAAA0
      INTEGER AAAAB0(43)
      INTEGER AAAAC0(23)
      INTEGER AAAAD0(28)
      INTEGER AAAAJ0(256)
      INTEGER AAAAE0,AAAAF0,AAAAG0,AAAAH0,AAAAI0,AAAAK0(10),AAAAL0(10)
      INTEGER AMATCH,ADDSET
      DATA AAAAB0/213,243,225,231,229,186,160,227,232,225,238,231,229,16
     *0,188,230,242,239,237,190,160,219,160,188,244,239,190,160,251,160,
     *188,243,244,242,233,238,231,190,160,253,160,221,0/
      DATA AAAAC0/233,236,236,229,231,225,236,160,240,225,244,244,229,24
     *2,238,160,243,244,242,233,238,231,0/
      DATA AAAAD0/233,236,236,229,231,225,236,160,243,245,226,243,244,23
     *3,244,245,244,233,239,238,160,243,244,242,233,238,231,0/
      IF((GETARG(1,LIN,256).NE.-1))GOTO 10001
        CALL ERROR(AAAAB0)
10001 IF((GETPAT(LIN,PAT).NE.-3))GOTO 10002
        CALL ERROR(AAAAC0)
10002 IF((GETARG(2,LIN,256).NE.-1))GOTO 10003
        LIN(1)=0
10003 IF((GETSUB(LIN,SUB).NE.-3))GOTO 10004
        CALL ERROR(AAAAD0)
10004 CALL DELARG(1)
      CALL DELARG(1)
      I=1
      GOTO 10007
10005 I=I+(1)
10007 IF((ARGLIN(I,LIN,256).EQ.-1))GOTO 10006
        AAAAA0=1
        GOTO 10000
10008 GOTO 10005
10006 IF((I.NE.1))GOTO 10009
10010   IF((GETLIN(LIN,-10,256).EQ.-1))GOTO 10011
          AAAAA0=2
          GOTO 10000
10012   GOTO 10010
10011 CONTINUE
10009 CALL SWT
10000 AAAAG0=1
      AAAAH0=0
      AAAAE0=1
      GOTO 10015
10013 CONTINUE
10015 IF((LIN(AAAAE0).EQ.0))GOTO 10014
        AAAAI0=AMATCH(LIN,AAAAE0,PAT,AAAAK0(2),AAAAL0(2))
        IF((AAAAI0.LE.0))GOTO 10016
        IF((AAAAH0.EQ.AAAAI0))GOTO 10016
          AAAAK0(1)=AAAAE0
          AAAAL0(1)=AAAAI0
          CALL CATSUB(LIN,AAAAK0,AAAAL0,SUB,AAAAJ0,AAAAG0,256)
          AAAAH0=AAAAI0
10016   IF((AAAAI0.EQ.0))GOTO 10018
        IF((AAAAI0.EQ.AAAAE0))GOTO 10018
        GOTO 10017
10018     AAAAF0=ADDSET(LIN(AAAAE0),AAAAJ0,AAAAG0,256)
          AAAAE0=AAAAE0+(1)
          GOTO 10019
10017     AAAAE0=AAAAI0
10019 GOTO 10013
10014 IF((ADDSET(0,AAAAJ0,AAAAG0,256).NE.0))GOTO 10020
        AAAAG0=256
        AAAAF0=ADDSET(0,AAAAJ0,AAAAG0,256)
        CALL REMARK('line truncated:.')
        CALL PUTLIN(AAAAJ0,-15)
        CALL PUTCH(138,-15)
10020 CALL PUTLIN(AAAAJ0,-11)
      GOTO 10021
10021 GOTO(10008,10012),AAAAA0
      GOTO 10021
      END
      INTEGER FUNCTION GETPAT(ARG,PAT)
      INTEGER ARG(128),PAT(256)
      INTEGER MAKPAT
      GETPAT=MAKPAT(ARG,1,0,PAT)
      RETURN
      END
      INTEGER FUNCTION GETSUB(ARG,SUB)
      INTEGER ARG(128),SUB(256)
      INTEGER MAKSUB
      GETSUB=MAKSUB(ARG,1,0,SUB)
      RETURN
      END
      INTEGER FUNCTION ARGLIN(ARG,LINE,SIZE)
      INTEGER ARG,SIZE
      INTEGER LINE(SIZE)
      INTEGER I
      INTEGER GETARG
      I=GETARG(ARG,LINE,SIZE-1)
      IF((I.NE.-1))GOTO 10022
        ARGLIN=I
        RETURN
10022 LINE(I+1)=138
      LINE(I+2)=0
      ARGLIN=I+1
      RETURN
      END
C ---- Long Name Map ----
C changestring                   chang0