      INTEGER RD(884)
      INTEGER I,L,FLAG,N,POS
      INTEGER * 4 IMAX,IVAL
      REAL * 8 RMAX,RVAL
      INTEGER ROW(500),RPN(200),CBUF(500)
      INTEGER BUF(102)
      INTEGER GETARG,LOADRD,GETROW,ISATTY,EVAL,PARSE,FINDF0
      INTEGER COMPA0
      INTEGER ARG(128),SUMMA0(128),SMAX(102),SVAL(102)
      INTEGER AAAAA0(20)
      INTEGER AAAAB0(20)
      INTEGER AAAAC0(20)
      INTEGER AAAAD0(39)
      DATA AAAAA0/170,236,160,239,246,229,242,160,170,233,160,246,225,23
     *6,245,229,243,170,238,0/
      DATA AAAAB0/170,228,160,239,246,229,242,160,170,233,160,246,225,23
     *6,245,229,243,170,238,0/
      DATA AAAAC0/170,243,160,239,246,229,242,160,170,233,160,246,225,23
     *6,245,229,243,170,238,0/
      DATA AAAAD0/206,239,160,242,239,247,243,160,243,225,244,233,243,23
     *0,249,160,243,229,236,229,227,244,233,239,238,160,229,248,240,242,
     *229,243,243,233,239,238,170,238,0/
      IF((LOADRD(RD,-10).EQ.-2))GOTO 10000
        CALL ERROR('Cannot load input relation.')
10000 IF((GETARG(3,ARG,128).EQ.-1))GOTO 10001
        CALL ERROR('Usage: rdmax [<selection expr>] <attr>.')
10001 IF((GETARG(2,SUMMA0,128).EQ.-1))GOTO 10002
        FLAG=0
        I=GETARG(1,ARG,128)
        GOTO 10003
10002   IF((GETARG(1,SUMMA0,128).EQ.-1))GOTO 10004
          FLAG=1
          GOTO 10005
10004     CALL ERROR('Usage: rdmax [<selection expr>] <attr>.')
10005 CONTINUE
10003 POS=FINDF0(RD,SUMMA0)
      IF((POS.NE.0))GOTO 10006
        CALL ERROR('Domain not found.')
10006 IF((FLAG.NE.0))GOTO 10007
        IF((PARSE(RD,0,ARG,RPN,CBUF).EQ.-2))GOTO 10008
          CALL SWT
10008 CONTINUE
10007 N=0
10009 IF((GETROW(RD,-10,ROW).EQ.-1))GOTO 10010
        IF((FLAG.NE.0))GOTO 10011
          IF((EVAL(RD,ROW,RPN,CBUF).NE.1))GOTO 10012
            GOTO 10013
10014         CALL GETDA0(RD,POS,ROW,IVAL)
              IF((N.EQ.0))GOTO 10016
              IF((IVAL.LT.IMAX))GOTO 10016
              GOTO 10015
10016           IMAX=IVAL
10015       GOTO 10017
10018         CALL GETDA0(RD,POS,ROW,RVAL)
              IF((N.EQ.0))GOTO 10020
              IF((RVAL.LT.RMAX))GOTO 10020
              GOTO 10019
10020           RMAX=RVAL
10019       GOTO 10017
10021         CALL GETDA0(RD,POS,ROW,SVAL)
              IF((N.EQ.0))GOTO 10023
              IF((COMPA0(3,SVAL,SMAX).EQ.1))GOTO 10023
              GOTO 10022
10023           CALL CTOC(SVAL,SMAX,102)
10022       GOTO 10017
10013       IF((RD(POS).EQ.1))GOTO 10014
            IF((RD(POS).EQ.2))GOTO 10018
            IF((RD(POS).EQ.3))GOTO 10021
10017       N=N+1
10012     GOTO 10024
10011     GOTO 10025
10026       CALL GETDA0(RD,POS,ROW,IVAL)
            IF((N.EQ.0))GOTO 10028
            IF((IVAL.GT.IMAX))GOTO 10028
            GOTO 10027
10028         IMAX=IVAL
10027     GOTO 10029
10030       CALL GETDA0(RD,POS,ROW,RVAL)
            IF((N.EQ.0))GOTO 10032
            IF((RVAL.GT.RMAX))GOTO 10032
            GOTO 10031
10032         RMAX=RVAL
10031     GOTO 10029
10033       CALL GETDA0(RD,POS,ROW,SVAL)
            IF((N.EQ.0))GOTO 10035
            IF((COMPA0(3,SVAL,SMAX).EQ.3))GOTO 10035
            GOTO 10034
10035         CALL CTOC(SVAL,SMAX,102)
10034     GOTO 10029
10025     IF((RD(POS).EQ.1))GOTO 10026
          IF((RD(POS).EQ.2))GOTO 10030
          IF((RD(POS).EQ.3))GOTO 10033
10029     N=N+1
10024 GOTO 10009
10010 IF((N.LE.0))GOTO 10036
        GOTO 10037
10038     CALL PRINT(-11,AAAAA0,IMAX,N)
        GOTO 10039
10040     CALL PRINT(-11,AAAAB0,RMAX,N)
        GOTO 10039
10041     CALL PRINT(-11,AAAAC0,SMAX,N)
        GOTO 10039
10037   IF((RD(POS).EQ.1))GOTO 10038
        IF((RD(POS).EQ.2))GOTO 10040
        IF((RD(POS).EQ.3))GOTO 10041
10039   GOTO 10042
10036   CALL PRINT(-11,AAAAD0)
10042 CALL SWT
      END
      INTEGER FUNCTION PARSE(RD,POS2,ARG,RPN,CBUF)
      INTEGER RD(884)
      INTEGER POS2
      INTEGER ARG(1)
      INTEGER RPN(200),CBUF(500)
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER AAAAE0(19)
      DATA AAAAE0/201,238,246,225,236,233,228,160,229,248,240,242,229,24
     *3,243,233,239,238,0/
      CALL MKLB$F($1,ERRLA0)
      CALL MOVE$(RD,RDAAA0,RD(1))
      POS2A0=POS2
      CALL CTOC(ARG,ARGAA0,128)
      APAAA0=1
      RPNLE0=1
      CBUFL0=1
      CALL GETSYM
      CALL EXPR
      IF((ARGAA0(APAAA0).EQ.0))GOTO 10043
        CALL PSYNER(AAAAE0,1)
10043 CALL PUSH(0)
      CALL MOVE$(RPNAA0,RPN,RPNLE0)
      CALL MOVE$(CBUFA0,CBUF,CBUFL0)
      PARSE=-2
      RETURN
1     PARSE=-3
      RETURN
      END
      SUBROUTINE EXPR
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      CALL TERM
10044 IF((SYMTY0.NE.252))GOTO 10045
        CALL GETSYM
        CALL TERM
        CALL PUSH(252)
      GOTO 10044
10045 RETURN
      END
      SUBROUTINE TERM
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      CALL FACTOR
10046 IF((SYMTY0.NE.166))GOTO 10047
        CALL GETSYM
        CALL FACTOR
        CALL PUSH(166)
      GOTO 10046
10047 RETURN
      END
      SUBROUTINE FACTOR
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      IF((SYMTY0.NE.254))GOTO 10048
        CALL GETSYM
        CALL FACTOR
        CALL PUSH(254)
        GOTO 10049
10048   CALL PRIMA0
10049 RETURN
      END
      SUBROUTINE PRIMA0
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER FT1,FT2,P1,P2,OP,TYPE1,TYPE2
      INTEGER GETQU0,CONVE0
      INTEGER S1(102),S2(102)
      INTEGER AAAAF0(23)
      INTEGER AAAAG0(28)
      INTEGER AAAAH0
      INTEGER AAAAI0
      INTEGER AAAAJ0
      INTEGER AAAAK0(33)
      INTEGER AAAAL0
      INTEGER AAAAM0(33)
      INTEGER AAAAN0(40)
      DATA AAAAF0/245,238,226,225,236,225,238,227,229,228,160,240,225,24
     *2,229,238,244,232,229,243,229,243,0/
      DATA AAAAG0/237,233,243,243,233,238,231,160,242,229,236,225,244,23
     *3,239,238,225,236,160,239,240,229,242,225,244,239,242,0/
      DATA AAAAK0/195,239,237,240,225,242,233,238,231,160,244,247,239,16
     *0,236,233,244,229,242,225,236,243,160,233,243,160,226,239,231,245,
     *243,161,0/
      DATA AAAAM0/195,239,237,240,225,242,233,238,231,160,244,247,239,16
     *0,236,233,244,229,242,225,236,243,160,233,243,160,226,239,231,245,
     *243,161,0/
      DATA AAAAN0/244,249,240,229,243,160,244,239,160,226,229,160,227,23
     *9,237,240,225,242,229,228,160,225,242,229,160,238,239,244,160,227,
     *239,237,240,225,244,233,226,236,229,0/
      IF((SYMTY0.NE.168))GOTO 10050
        CALL GETSYM
        CALL EXPR
        IF((SYMTY0.EQ.169))GOTO 10051
          CALL PSYNER(AAAAF0,1)
10051   CALL GETSYM
        GOTO 10052
10050   CALL FIELD(FT1,S1)
        IF((SYMTY0.EQ.188))GOTO 10053
        IF((SYMTY0.EQ.190))GOTO 10053
        IF((SYMTY0.EQ.220))GOTO 10053
        IF((SYMTY0.EQ.175))GOTO 10053
        IF((SYMTY0.EQ.222))GOTO 10053
        IF((SYMTY0.EQ.189))GOTO 10053
          CALL PSYNER(AAAAG0,1)
10053   OP=SYMTY0
        CALL GETSYM
        CALL FIELD(FT2,S2)
        TYPE1=3
        TYPE2=3
        AAAAH0=FT1
        GOTO 10054
10055     P1=GETQU0(S1)
          TYPE1=RDAAA0(P1)
          AAAAI0=FT2
          GOTO 10056
10057       P2=GETQU0(S2)
            TYPE2=RDAAA0(P2)
          GOTO 10058
10059       P2=CONVE0(S2,TYPE1)
            TYPE2=TYPE1
          GOTO 10058
10060       TYPE2=3
            P2=CONVE0(S2,3)
          GOTO 10058
10056     IF(AAAAI0.EQ.162)GOTO 10060
          IF(AAAAI0.EQ.176)GOTO 10059
          IF(AAAAI0.EQ.193)GOTO 10057
10058   GOTO 10061
10062     AAAAJ0=FT2
          GOTO 10063
10064       P2=GETQU0(S2)
            TYPE2=RDAAA0(P2)
            TYPE1=RDAAA0(P2)
            P1=CONVE0(S1,TYPE1)
          GOTO 10065
10066       CALL PSYNER(AAAAK0,1)
          GOTO 10065
10063     IF(AAAAJ0.EQ.162)GOTO 10066
          IF(AAAAJ0.EQ.176)GOTO 10066
          IF(AAAAJ0.EQ.193)GOTO 10064
10065   GOTO 10061
10067     TYPE1=3
          P1=CONVE0(S1,3)
          AAAAL0=FT2
          GOTO 10068
10069       P2=GETQU0(S2)
            TYPE2=RDAAA0(P2)
          GOTO 10070
10071       CALL PSYNER(AAAAM0,1)
          GOTO 10070
10068     IF(AAAAL0.EQ.162)GOTO 10071
          IF(AAAAL0.EQ.176)GOTO 10071
          IF(AAAAL0.EQ.193)GOTO 10069
10070   GOTO 10061
10054   IF(AAAAH0.EQ.162)GOTO 10067
        IF(AAAAH0.EQ.176)GOTO 10062
        IF(AAAAH0.EQ.193)GOTO 10055
10061   IF((TYPE1.EQ.TYPE2))GOTO 10072
          CALL PSYNER(AAAAN0,1)
10072   CALL PUSH(OP)
        CALL PUSH(FT1)
        CALL PUSH(P1)
        CALL PUSH(FT2)
        CALL PUSH(P2)
10052 RETURN
      END
      SUBROUTINE FIELD(FT,S)
      INTEGER FT
      INTEGER S(102)
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER AAAAO0(32)
      DATA AAAAO0/229,248,240,229,227,244,229,228,160,228,239,237,225,23
     *3,238,160,238,225,237,229,160,239,242,160,236,233,244,229,242,225,
     *236,0/
      IF((SYMTY0.EQ.193))GOTO 10073
      IF((SYMTY0.EQ.176))GOTO 10073
      IF((SYMTY0.EQ.162))GOTO 10073
        CALL PSYNER(AAAAO0,1)
10073 FT=SYMTY0
      CALL CTOC(SYMTE0,S,102)
      CALL GETSYM
      RETURN
      END
      INTEGER FUNCTION GETQU0(NAME)
      INTEGER NAME(1)
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER I
      INTEGER FINDQ0
      INTEGER AAAAP0(32)
      DATA AAAAP0/186,160,228,239,237,225,233,238,160,238,239,244,160,23
     *0,239,245,238,228,160,239,242,160,225,237,226,233,231,245,239,245,
     *243,0/
      I=FINDQ0(RDAAA0,NAME,POS2A0)
      IF((I.NE.0))GOTO 10074
        CALL PRINT(-15,'*s.',NAME)
        CALL PSYNER(AAAAP0,0)
10074 GETQU0=I
      RETURN
      END
      INTEGER FUNCTION FINDQ0(RD,NAME,POS2)
      INTEGER RD(884)
      INTEGER NAME(1)
      INTEGER POS2
      INTEGER P,I
      INTEGER EQUAL
      INTEGER RNAME(17)
      INTEGER AAAAQ0(3)
      INTEGER AAAAR0(3)
      DATA AAAAQ0/174,177,0/
      DATA AAAAR0/174,178,0/
      I=1
      GOTO 10077
10075 I=I+(1)
10077 IF((NAME(I).EQ.0))GOTO 10076
      IF((NAME(I).EQ.174))GOTO 10076
      IF((I.GE.17))GOTO 10076
        RNAME(I)=NAME(I)
      GOTO 10075
10076 RNAME(I)=0
      P=0
      IF((NAME(I).EQ.0))GOTO 10079
      IF((POS2.EQ.0))GOTO 10079
      GOTO 10078
10079   I=3+1
        GOTO 10082
10080   I=I+22
10082   IF((I.GT.RD(2)))GOTO 10081
          IF((EQUAL(RNAME,RD(I+5)).NE.1))GOTO 10083
            IF((P.NE.0))GOTO 10084
              P=I
              GOTO 10085
10084         P=0
              GOTO 10081
10085     CONTINUE
10083   GOTO 10080
10081   GOTO 10086
10078   IF((EQUAL(NAME(I),AAAAQ0).NE.1))GOTO 10087
          I=3+1
          GOTO 10090
10088     I=I+22
10090     IF((I.EQ.POS2))GOTO 10089
            IF((EQUAL(RNAME,RD(I+5)).NE.1))GOTO 10091
              P=I
              GOTO 10089
10091     GOTO 10088
10089     GOTO 10092
10087     IF((EQUAL(NAME(I),AAAAR0).NE.1))GOTO 10093
            I=POS2
            GOTO 10096
10094       I=I+22
10096       IF((I.GT.RD(2)))GOTO 10095
              IF((EQUAL(RNAME,RD(I+5)).NE.1))GOTO 10097
                P=I
                GOTO 10095
10097       GOTO 10094
10095     CONTINUE
10093   CONTINUE
10092 CONTINUE
10086 FINDQ0=P
      RETURN
      END
      INTEGER FUNCTION CONVE0(S,TYPE)
      INTEGER S(1)
      INTEGER TYPE,P
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER I,P
      INTEGER LENGTH
      INTEGER * 4 L
      INTEGER * 4 GCTOL
      REAL * 8 D
      REAL * 8 CTOD
      INTEGER AAAAS0
      INTEGER AAAAT0(18)
      INTEGER AAAAU0(3)
      INTEGER AAAAV0(25)
      INTEGER AAAAW0(18)
      INTEGER AAAAX0(3)
      INTEGER AAAAY0(22)
      INTEGER AAAAZ0(18)
      DATA AAAAT0/212,239,239,160,237,225,238,249,160,236,233,244,229,24
     *2,225,236,243,0/
      DATA AAAAU0/170,243,0/
      DATA AAAAV0/201,238,246,225,236,233,228,160,233,238,244,229,231,22
     *9,242,160,227,239,238,243,244,225,238,244,0/
      DATA AAAAW0/212,239,239,160,237,225,238,249,160,236,233,244,229,24
     *2,225,236,243,0/
      DATA AAAAX0/170,243,0/
      DATA AAAAY0/201,238,246,225,236,233,228,160,242,229,225,236,160,22
     *7,239,238,243,244,225,238,244,0/
      DATA AAAAZ0/212,239,239,160,237,225,238,249,160,236,233,244,229,24
     *2,225,236,243,0/
      P=CBUFL0
      AAAAS0=TYPE
      GOTO 10098
10099   CBUFL0=CBUFL0+(2)
        IF((CBUFL0.LE.500))GOTO 10100
          CALL PSYNER(AAAAT0,1)
10100   I=1
        L=GCTOL(S,I,10)
        IF((S(I).EQ.0))GOTO 10101
          CALL PRINT(-15,AAAAU0,S)
          CALL PSYNER(AAAAV0,0)
10101   CALL MOVE$(L,CBUFA0(P),2)
      GOTO 10102
10103   CBUFL0=CBUFL0+(4)
        IF((CBUFL0.LE.500))GOTO 10104
          CALL PSYNER(AAAAW0,1)
10104   I=1
        D=CTOD(S,I)
        IF((S(I).EQ.0))GOTO 10105
          CALL PRINT(-15,AAAAX0,S)
          CALL PSYNER(AAAAY0,0)
10105   CALL MOVE$(D,CBUFA0(P),4)
      GOTO 10102
10106   I=LENGTH(S)+1
        CBUFL0=CBUFL0+(I)
        IF((CBUFL0.LE.500))GOTO 10107
          CALL PSYNER(AAAAZ0,1)
10107   CALL MOVE$(S,CBUFA0(P),I)
      GOTO 10102
10098 GOTO(10099,10103,10106),AAAAS0
10102 CONVE0=P
      RETURN
      END
      SUBROUTINE GETSYM
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER L
      INTEGER QUOTE
      INTEGER AAABA0
      INTEGER AAABB0(14)
      INTEGER AAABC0
      INTEGER AAABD0
      INTEGER AAABE0
      INTEGER AAABF0
      INTEGER AAABG0
      INTEGER AAABH0
      INTEGER AAABI0
      INTEGER AAABJ0(18)
      DATA AAABB0/205,233,243,243,233,238,231,160,241,245,239,244,229,0/
      DATA AAABJ0/201,236,236,229,231,225,236,160,227,232,225,242,225,22
     *7,244,229,242,0/
10108 IF((ARGAA0(APAAA0).NE.160))GOTO 10109
        APAAA0=APAAA0+(1)
      GOTO 10108
10109 L=1
      AAABA0=ARGAA0(APAAA0)
      GOTO 10110
10111   SYMTE0(L)=ARGAA0(APAAA0)
        APAAA0=APAAA0+(1)
        L=L+(1)
        GOTO 10114
10112   APAAA0=APAAA0+(1)
        L=L+(1)
10114   IF((193.GT.ARGAA0(APAAA0)))GOTO 10116
        IF((ARGAA0(APAAA0).GT.218))GOTO 10116
        GOTO 10115
10116   IF((225.GT.ARGAA0(APAAA0)))GOTO 10117
        IF((ARGAA0(APAAA0).GT.250))GOTO 10117
        GOTO 10115
10117   IF((176.GT.ARGAA0(APAAA0)))GOTO 10118
        IF((ARGAA0(APAAA0).GT.185))GOTO 10118
        GOTO 10115
10118   IF((ARGAA0(APAAA0).EQ.223))GOTO 10115
        IF((ARGAA0(APAAA0).EQ.174))GOTO 10115
        GOTO 10113
10115     SYMTE0(L)=ARGAA0(APAAA0)
        GOTO 10112
10113   SYMTY0=193
      GOTO 10119
10120   SYMTE0(L)=ARGAA0(APAAA0)
        APAAA0=APAAA0+(1)
        L=L+(1)
        GOTO 10123
10121   APAAA0=APAAA0+(1)
        L=L+(1)
10123   IF((176.GT.ARGAA0(APAAA0)))GOTO 10125
        IF((ARGAA0(APAAA0).GT.185))GOTO 10125
        GOTO 10124
10125   IF((ARGAA0(APAAA0).EQ.174))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.171))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.173))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.229))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.197))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.242))GOTO 10124
        IF((ARGAA0(APAAA0).EQ.210))GOTO 10124
        GOTO 10122
10124     SYMTE0(L)=ARGAA0(APAAA0)
        GOTO 10121
10122   SYMTY0=176
      GOTO 10119
10126   QUOTE=ARGAA0(APAAA0)
        APAAA0=APAAA0+(1)
        L=1
        GOTO 10129
10127   APAAA0=APAAA0+(1)
        L=L+(1)
10129   IF((ARGAA0(APAAA0).EQ.0))GOTO 10128
        IF((ARGAA0(APAAA0).EQ.QUOTE))GOTO 10128
          SYMTE0(L)=ARGAA0(APAAA0)
        GOTO 10127
10128   SYMTE0(L)=0
        IF((ARGAA0(APAAA0).NE.0))GOTO 10130
          CALL PSYNER(AAABB0,1)
          GOTO 10131
10130     APAAA0=APAAA0+(1)
10131   SYMTY0=162
      GOTO 10119
10132   SYMTY0=ARGAA0(APAAA0)
        SYMTE0(1)=ARGAA0(APAAA0)
        APAAA0=APAAA0+(1)
        L=L+(1)
      GOTO 10119
10133   SYMTE0(1)=188
        APAAA0=APAAA0+(1)
        L=L+(1)
        AAABC0=ARGAA0(APAAA0)
        GOTO 10134
10135     SYMTY0=222
        GOTO 10136
10137     SYMTY0=175
        GOTO 10136
10136     SYMTE0(2)=ARGAA0(APAAA0)
          APAAA0=APAAA0+(1)
          L=L+(1)
        GOTO 10138
10134   AAABD0=AAABC0-188
        GOTO(10137,10135),AAABD0
          SYMTY0=188
10138 GOTO 10119
10139   SYMTE0(1)=190
        APAAA0=APAAA0+(1)
        L=L+(1)
        AAABE0=ARGAA0(APAAA0)
        GOTO 10140
10141     SYMTY0=222
        GOTO 10142
10143     SYMTY0=220
        GOTO 10142
10142     SYMTE0(2)=ARGAA0(APAAA0)
          APAAA0=APAAA0+(1)
          L=L+(1)
        GOTO 10144
10140   AAABF0=AAABE0-187
        GOTO(10141,10143),AAABF0
          SYMTY0=190
10144 GOTO 10119
10145   SYMTE0(1)=189
        APAAA0=APAAA0+(1)
        L=L+(1)
        AAABG0=ARGAA0(APAAA0)
        GOTO 10146
10147     SYMTY0=189
        GOTO 10148
10149     SYMTY0=220
        GOTO 10148
10150     SYMTY0=175
        GOTO 10148
10148     SYMTE0(2)=ARGAA0(APAAA0)
          APAAA0=APAAA0+(1)
          L=L+(1)
        GOTO 10151
10146   AAABH0=AAABG0-187
        GOTO(10150,10147,10149),AAABH0
          SYMTY0=189
10151 GOTO 10119
10152   SYMTE0(1)=254
        APAAA0=APAAA0+(1)
        L=L+(1)
        IF((ARGAA0(APAAA0).NE.189))GOTO 10153
          SYMTY0=222
          SYMTE0(2)=189
          APAAA0=APAAA0+(1)
          L=L+(1)
          GOTO 10154
10153     SYMTY0=254
10154 GOTO 10119
10155   SYMTY0=0
      GOTO 10119
10110 IF(AAABA0.EQ.0)GOTO 10155
      AAABI0=AAABA0-161
      GOTO(10126,10156,10156,10156,10132,10126,10132,10132,10156,10120,1
     *0156,10120,10132,10156,10120,10120,10120,10120,10120,10120,10120,1
     *0120,10120,10120,10156,10156,10133,10145,10139,10156,10156,10111,1
     *0111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,1
     *0111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,1
     *0111,10111,10111,10156,10156,10156,10156,10156,10156,10111,10111,1
     *0111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,1
     *0111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,1
     *0111,10111,10156,10132,10156,10152),AAABI0
10156   CALL PSYNER(AAABJ0,1)
10119 SYMTE0(L)=0
      RETURN
      END
      SUBROUTINE PUSH(W)
      INTEGER W
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER AAABK0(37)
      DATA AAABK0/211,229,236,229,227,244,233,239,238,160,229,248,240,24
     *2,229,243,243,233,239,238,160,244,239,239,160,227,239,237,240,236,
     *233,227,225,244,229,228,0/
      IF((RPNLE0.LT.200))GOTO 10157
        CALL PSYNER(AAABK0,1)
        GOTO 10158
10157   RPNAA0(RPNLE0)=W
        RPNLE0=RPNLE0+(1)
10158 RETURN
      END
      SUBROUTINE PSYNER(M,C)
      INTEGER M(1)
      INTEGER C
      INTEGER RDAAA0(884)
      INTEGER ARGAA0(128)
      INTEGER APAAA0,POS2A0
      INTEGER RPNAA0(200),RPNLE0
      INTEGER SYMTY0,SYMTE0(128)
      INTEGER CBUFA0(500),CBUFL0
      REAL * 8 ERRLA0
      COMMON /RSLCOM/RDAAA0,ARGAA0,APAAA0,RPNAA0,RPNLE0,SYMTY0,SYMTE0,CB
     *UFA0,CBUFL0,ERRLA0,POS2A0
      INTEGER AAABL0(15)
      INTEGER AAABM0(5)
      DATA AAABL0/170,243,186,160,170,243,170,238,170,163,248,222,170,23
     *8,0/
      DATA AAABM0/170,243,170,238,0/
      IF((C.NE.1))GOTO 10159
        CALL PRINT(-15,AAABL0,ARGAA0,M,APAAA0-2)
        GOTO 10160
10159   CALL PRINT(-15,AAABM0,M)
10160 CALL PL1$NL(ERRLA0)
      END
      INTEGER FUNCTION EVAL(RD,ROW,RPN,CBUF)
      INTEGER RD(884)
      INTEGER ROW(1),RPN(1),CBUF(500)
      INTEGER SP,RP,I1,I2,R
      INTEGER BUF1(102),BUF2(102),STACK(200)
      INTEGER EVALR0
      INTEGER P1,P2
      INTEGER AAABN0
      INTEGER AAABO0
      INTEGER AAABP0(30)
      DATA AAABP0/233,238,160,229,246,225,236,186,160,243,244,225,227,23
     *5,160,237,229,243,243,229,228,160,245,240,160,170,233,170,238,0/
      SP=0
      RP=1
      GOTO 10163
10161 RP=RP+(1)
10163 IF((RPN(RP).EQ.0))GOTO 10162
        AAABN0=RPN(RP)
        GOTO 10164
10165     IF((STACK(SP).NE.1))GOTO 10166
          IF((STACK(SP-1).NE.1))GOTO 10166
            STACK(SP-1)=1
            GOTO 10167
10166       STACK(SP-1)=0
10167     SP=SP-(1)
        GOTO 10168
10169     IF((STACK(SP).EQ.1))GOTO 10171
          IF((STACK(SP-1).EQ.1))GOTO 10171
          GOTO 10170
10171       STACK(SP-1)=1
            GOTO 10172
10170       STACK(SP-1)=0
10172     SP=SP-(1)
        GOTO 10168
10173     IF((STACK(SP).NE.1))GOTO 10174
            STACK(SP)=0
            GOTO 10175
10174       STACK(SP)=1
10175   GOTO 10168
10164   IF(AAABN0.EQ.166)GOTO 10165
        AAABO0=AAABN0-251
        GOTO(10169,10176,10173),AAABO0
10176     I1=RPN(RP+1)
          P1=RPN(RP+2)
          I2=RPN(RP+3)
          P2=RPN(RP+4)
          IF((I1.NE.193))GOTO 10177
          IF((I2.NE.193))GOTO 10177
            CALL GETDA0(RD,P1,ROW,BUF1)
            CALL GETDA0(RD,P2,ROW,BUF2)
            R=EVALR0(RPN(RP),RD(P1),BUF1,BUF2)
            GOTO 10178
10177       IF((I1.NE.193))GOTO 10179
              CALL GETDA0(RD,P1,ROW,BUF1)
              R=EVALR0(RPN(RP),RD(P1),BUF1,CBUF(P2))
              GOTO 10180
10179         IF((I2.NE.193))GOTO 10181
                CALL GETDA0(RD,P2,ROW,BUF2)
                R=EVALR0(RPN(RP),RD(P2),CBUF(P1),BUF2)
                GOTO 10182
10181           R=EVALR0(RPN(RP),0,CBUF(P1),CBUF(P2))
10182       CONTINUE
10180     CONTINUE
10178     SP=SP+(1)
          STACK(SP)=R
          RP=RP+(4)
10168 GOTO 10161
10162 IF((SP.EQ.1))GOTO 10183
        CALL PRINT(-15,AAABP0,SP)
10183 EVAL=STACK(1)
      RETURN
      END
      INTEGER FUNCTION EVALR0(OP,TYPE,BUF1,BUF2)
      INTEGER OP,TYPE,BUF1(1),BUF2(1)
      INTEGER R
      INTEGER COMPA0
      INTEGER AAABQ0
      INTEGER AAABR0
      INTEGER AAABS0(30)
      DATA AAABS0/233,238,160,229,246,225,236,223,242,229,236,186,160,22
     *6,239,231,245,243,160,229,238,244,242,249,160,170,233,170,238,0/
      AAABQ0=OP
      GOTO 10184
10185   IF((COMPA0(TYPE,BUF1,BUF2).NE.1))GOTO 10186
          R=1
          GOTO 10187
10186     R=0
10187 GOTO 10188
10189   IF((COMPA0(TYPE,BUF1,BUF2).NE.2))GOTO 10190
          R=1
          GOTO 10191
10190     R=0
10191 GOTO 10188
10192   IF((COMPA0(TYPE,BUF1,BUF2).NE.3))GOTO 10193
          R=1
          GOTO 10194
10193     R=0
10194 GOTO 10188
10195   IF((COMPA0(TYPE,BUF1,BUF2).EQ.3))GOTO 10196
          R=1
          GOTO 10197
10196     R=0
10197 GOTO 10188
10198   IF((COMPA0(TYPE,BUF1,BUF2).EQ.2))GOTO 10199
          R=1
          GOTO 10200
10199     R=0
10200 GOTO 10188
10201   IF((COMPA0(TYPE,BUF1,BUF2).EQ.1))GOTO 10202
          R=1
          GOTO 10203
10202     R=0
10203 GOTO 10188
10184 IF(AAABQ0.EQ.175)GOTO 10195
      AAABR0=AAABQ0-187
      GOTO(10185,10189,10192),AAABR0
      AAABR0=AAABQ0-219
      GOTO(10201,10204,10198),AAABR0
10204   CALL PRINT(-15,AAABS0,OP)
10188 EVALR0=R
      RETURN
      END
      INTEGER FUNCTION LOADRD(RD,FD)
      INTEGER RD(884)
      INTEGER FD
      INTEGER ISATTY,READF
      IF((ISATTY(FD).NE.1))GOTO 10205
        CALL REMARK('Sorry, a relation can''t be read from the terminal.
     *')
        LOADRD=-3
        RETURN
10205 IF((READF(RD(1),1,FD).NE.-1))GOTO 10206
        LOADRD=-3
        RETURN
10206 IF((READF(RD(2),RD(1)-1,FD).NE.-1))GOTO 10207
        CALL REMARK('relation is corrupted!!.')
        LOADRD=-3
        RETURN
10207 LOADRD=-2
      RETURN
      END
      SUBROUTINE SAVERD(RD,FD)
      INTEGER RD(884)
      INTEGER FD
      INTEGER ISATTY
      IF((ISATTY(FD).NE.1))GOTO 10208
        CALL PRINT0(RD,FD)
        GOTO 10209
10208   CALL WRITEF(RD,RD(1),FD)
10209 RETURN
      END
      SUBROUTINE PRINT0(RD,FD)
      INTEGER RD(884)
      INTEGER FD
      INTEGER I
      INTEGER TYPE(102)
      INTEGER AAABT0(10)
      INTEGER AAABU0(33)
      INTEGER AAABV0(10)
      INTEGER AAABW0
      INTEGER AAABX0(8)
      INTEGER AAABY0(5)
      INTEGER AAABZ0(7)
      INTEGER AAACA0(24)
      INTEGER AAACB0(10)
      DATA AAABT0/170,179,185,172,172,173,248,170,238,0/
      DATA AAABU0/252,160,244,249,240,229,160,160,160,160,252,160,236,22
     *9,238,231,244,232,160,252,160,238,225,237,229,170,177,179,248,252,
     *170,238,0/
      DATA AAABV0/170,179,185,172,172,173,248,170,238,0/
      DATA AAABX0/233,238,244,229,231,229,242,0/
      DATA AAABY0/242,229,225,236,0/
      DATA AAABZ0/243,244,242,233,238,231,0/
      DATA AAACA0/252,160,170,183,243,160,252,160,170,181,233,160,160,25
     *2,160,170,177,182,243,160,252,170,238,0/
      DATA AAACB0/170,179,185,172,172,173,248,170,238,0/
      CALL PRINT(FD,AAABT0)
      CALL PRINT(FD,AAABU0)
      CALL PRINT(FD,AAABV0)
      I=3+1
      GOTO 10212
10210 I=I+22
10212 IF((I.GT.RD(2)))GOTO 10211
        AAABW0=RD(I)
        GOTO 10213
10214     CALL CTOC(AAABX0,TYPE,102)
        GOTO 10215
10216     CALL CTOC(AAABY0,TYPE,102)
        GOTO 10215
10217     CALL CTOC(AAABZ0,TYPE,102)
        GOTO 10215
10213   GOTO(10214,10216,10217),AAABW0
10215   CALL PRINT(FD,AAACA0,TYPE,RD(I+1),RD(I+5))
      GOTO 10210
10211 CALL PRINT(FD,AAACB0)
      RETURN
      END
      INTEGER FUNCTION ADDFI0(RD,TYPE,LEN,NAME)
      INTEGER RD(884)
      INTEGER TYPE,LEN
      INTEGER NAME(1)
      INTEGER I
      INTEGER AAACC0
      I=RD(2)+22
      IF((I+22-1.LE.884))GOTO 10218
        ADDFI0=0
        RETURN
10218 RD(I)=TYPE
      RD(I+4)=LENGTH(NAME)
      AAACC0=TYPE
      GOTO 10219
10220   RD(I+1)=2
        RD(I+4)=MAX0(RD(I+4),10)
      GOTO 10221
10222   RD(I+1)=4
        RD(I+4)=MAX0(RD(I+4),15)
      GOTO 10221
10223   RD(I+1)=LEN
        RD(I+4)=MAX0(RD(I+4),LEN)
      GOTO 10221
10219 GOTO(10220,10222,10223),AAACC0
        CALL ERROR('in add_field_to_rd: bogus type passed.')
10221 RD(I+2)=RD(3)+1
      RD(I+3)=RD(3)+RD(I+1)
      CALL CTOC(NAME,RD(I+5),17)
      RD(1)=RD(1)+(22)
      RD(2)=RD(2)+(22)
      RD(3)=RD(3)+(RD(I+1))
      IF((RD(3).LE.500))GOTO 10224
        ADDFI0=0
        RETURN
10224 ADDFI0=I
      RETURN
      END
      INTEGER FUNCTION FINDF0(RD,NAME)
      INTEGER RD(884)
      INTEGER NAME(1)
      INTEGER I
      INTEGER EQUAL
      I=3+1
      GOTO 10227
10225 I=I+22
10227 IF((I.GT.RD(2)))GOTO 10226
        IF((EQUAL(RD(I+5),NAME).NE.1))GOTO 10228
          FINDF0=I
          RETURN
10228 GOTO 10225
10226 FINDF0=0
      RETURN
      END
      INTEGER FUNCTION COMPA0(TYPE,BUF1,BUF2)
      INTEGER TYPE
      INTEGER BUF1(500),BUF2(500)
      INTEGER R
      INTEGER COMPB0,COMPC0,COMPD0
      INTEGER AAACD0
      INTEGER AAACE0(34)
      DATA AAACE0/233,238,160,227,239,237,240,225,242,229,223,230,233,22
     *9,236,228,186,160,226,239,231,245,243,160,244,249,240,229,160,170,
     *233,170,238,0/
      AAACD0=TYPE
      GOTO 10229
10230   R=COMPB0(BUF1,BUF2)
      GOTO 10231
10232   R=COMPC0(BUF1,BUF2)
      GOTO 10231
10233   R=COMPD0(BUF1,BUF2)
      GOTO 10231
10229 GOTO(10230,10232,10233),AAACD0
        CALL PRINT(-15,AAACE0,TYPE)
        R=2
10231 COMPA0=R
      RETURN
      END
      INTEGER FUNCTION COMPB0(I1,I2)
      INTEGER * 4 I1,I2
      IF((I1.GE.I2))GOTO 10234
        COMPB0=1
        RETURN
10234 IF((I1.LE.I2))GOTO 10235
        COMPB0=3
        RETURN
10235 COMPB0=2
      RETURN
      END
      INTEGER FUNCTION COMPC0(D1,D2)
      REAL * 8 D1,D2
      IF((D1.GE.D2))GOTO 10236
        COMPC0=1
        RETURN
10236 IF((D1.LE.D2))GOTO 10237
        COMPC0=3
        RETURN
10237 COMPC0=2
      RETURN
      END
      INTEGER FUNCTION COMPD0(S1,S2)
      INTEGER S1(1),S2(1)
      INTEGER I
      I=1
      GOTO 10240
10238 I=I+(1)
10240 IF((S1(I).NE.S2(I)))GOTO 10239
      IF((S1(I).EQ.0))GOTO 10239
      GOTO 10238
10239 IF((S1(I).NE.S2(I)))GOTO 10241
        COMPD0=2
        RETURN
10241 IF((S1(I).EQ.0))GOTO 10243
      IF((S1(I).LT.S2(I)))GOTO 10243
      GOTO 10242
10243   COMPD0=1
        RETURN
10242 COMPD0=3
      RETURN
      END
      SUBROUTINE PRINU0(RD,FD)
      INTEGER RD(884)
      INTEGER FD
      INTEGER I
      INTEGER AAACF0(2)
      INTEGER AAACG0(7)
      INTEGER AAACH0(3)
      INTEGER AAACI0(2)
      INTEGER AAACJ0(7)
      INTEGER AAACK0(3)
      INTEGER AAACL0(2)
      INTEGER AAACM0(7)
      INTEGER AAACN0(3)
      DATA AAACF0/173,0/
      DATA AAACG0/170,163,172,172,173,248,0/
      DATA AAACH0/170,238,0/
      DATA AAACI0/252,0/
      DATA AAACJ0/160,170,163,243,160,252,0/
      DATA AAACK0/170,238,0/
      DATA AAACL0/173,0/
      DATA AAACM0/170,163,172,172,173,248,0/
      DATA AAACN0/170,238,0/
      CALL PRINT(FD,AAACF0)
      I=3+1
      GOTO 10246
10244 I=I+22
10246 IF((I.GT.RD(2)))GOTO 10245
        CALL PRINT(FD,AAACG0,RD(I+4)+3)
      GOTO 10244
10245 CALL PRINT(FD,AAACH0)
      CALL PRINT(FD,AAACI0)
      I=3+1
      GOTO 10249
10247 I=I+22
10249 IF((I.GT.RD(2)))GOTO 10248
        CALL PRINT(FD,AAACJ0,RD(I+4),RD(I+5))
      GOTO 10247
10248 CALL PRINT(FD,AAACK0)
      CALL PRINT(FD,AAACL0)
      I=3+1
      GOTO 10252
10250 I=I+22
10252 IF((I.GT.RD(2)))GOTO 10251
        CALL PRINT(FD,AAACM0,RD(I+4)+3)
      GOTO 10250
10251 CALL PRINT(FD,AAACN0)
      RETURN
      END
      SUBROUTINE PRINV0(RD,FD)
      INTEGER RD(884)
      INTEGER FD
      INTEGER I
      INTEGER AAACO0(2)
      INTEGER AAACP0(7)
      INTEGER AAACQ0(3)
      DATA AAACO0/173,0/
      DATA AAACP0/170,163,172,172,173,248,0/
      DATA AAACQ0/170,238,0/
      CALL PRINT(FD,AAACO0)
      I=3+1
      GOTO 10255
10253 I=I+22
10255 IF((I.GT.RD(2)))GOTO 10254
        CALL PRINT(FD,AAACP0,RD(I+4)+3)
      GOTO 10253
10254 CALL PRINT(FD,AAACQ0)
      RETURN
      END
      SUBROUTINE PRINW0(RD,FD,BUF)
      INTEGER RD(884)
      INTEGER FD
      INTEGER BUF(500)
      INTEGER I
      INTEGER AAACR0(2)
      INTEGER AAACS0
      INTEGER AAACT0(7)
      INTEGER AAACU0(7)
      INTEGER AAACV0(9)
      INTEGER AAACW0(3)
      DATA AAACR0/252,0/
      DATA AAACT0/160,170,163,236,160,252,0/
      DATA AAACU0/160,170,163,228,160,252,0/
      DATA AAACV0/160,170,163,172,163,243,160,252,0/
      DATA AAACW0/170,238,0/
      CALL PRINT(FD,AAACR0)
      I=3+1
      GOTO 10258
10256 I=I+22
10258 IF((I.GT.RD(2)))GOTO 10257
        AAACS0=RD(I)
        GOTO 10259
10260     CALL PRINT(FD,AAACT0,RD(I+4),BUF(RD(I+2)))
        GOTO 10261
10262     CALL PRINT(FD,AAACU0,RD(I+4),BUF(RD(I+2)))
        GOTO 10261
10263     CALL PRINT(FD,AAACV0,RD(I+4),RD(I+1),BUF(RD(I+2)))
        GOTO 10261
10259   GOTO(10260,10262,10263),AAACS0
10261 GOTO 10256
10257 CALL PRINT(FD,AAACW0)
      RETURN
      END
      INTEGER FUNCTION GETROW(RD,FD,BUF)
      INTEGER RD(884)
      INTEGER FD
      INTEGER BUF(500),I
      INTEGER READF
      I=READF(BUF,RD(3),FD)
      GETROW=I
      RETURN
      END
      SUBROUTINE PUTROW(RD,FD,BUF)
      INTEGER RD(884)
      INTEGER FD
      INTEGER BUF(500)
      INTEGER ISATTY
      IF((ISATTY(FD).NE.1))GOTO 10264
        CALL PRINW0(RD,FD,BUF)
        GOTO 10265
10264   CALL WRITEF(BUF,RD(3),FD)
10265 RETURN
      END
      SUBROUTINE GETDA0(RD,I,BUF,DEST)
      INTEGER RD(884)
      INTEGER I,BUF(1),DEST(102)
      INTEGER J,K
      INTEGER AAACX0
      AAACX0=RD(I)
      GOTO 10266
10267   J=RD(I+2)
        DEST(1)=BUF(J)
        DEST(2)=BUF(J+1)
      GOTO 10268
10269   J=RD(I+2)
        DEST(1)=BUF(J)
        DEST(2)=BUF(J+1)
        DEST(3)=BUF(J+2)
        DEST(4)=BUF(J+3)
      GOTO 10268
10270   J=RD(I+3)
        K=RD(I+1)
        GOTO 10273
10271   J=J-(1)
        K=K-(1)
10273   IF((K.LE.0))GOTO 10272
        IF((BUF(J).NE.160))GOTO 10272
        GOTO 10271
10272   DEST(K+1)=0
        GOTO 10276
10274   J=J-(1)
        K=K-(1)
10276   IF((K.LE.0))GOTO 10275
          DEST(K)=BUF(J)
        GOTO 10274
10275 GOTO 10268
10266 GOTO(10267,10269,10270),AAACX0
10268 RETURN
      END
      SUBROUTINE PUTDA0(RD,I,BUF,SRC)
      INTEGER RD(884)
      INTEGER I,BUF(1),SRC(102)
      INTEGER J,K
      INTEGER AAACY0
      AAACY0=RD(I)
      GOTO 10277
10278   J=RD(I+2)
        BUF(J)=SRC(1)
        BUF(J+1)=SRC(2)
      GOTO 10279
10280   J=RD(I+2)
        BUF(J)=SRC(1)
        BUF(J+1)=SRC(2)
        BUF(J+2)=SRC(3)
        BUF(J+3)=SRC(4)
      GOTO 10279
10281   J=RD(I+2)
        K=1
        GOTO 10284
10282   J=J+(1)
        K=K+(1)
10284   IF((SRC(K).EQ.0))GOTO 10283
        IF((K.GT.RD(I+1)))GOTO 10283
          BUF(J)=SRC(K)
        GOTO 10282
10283   GOTO 10287
10285   K=K+(1)
        J=J+(1)
10287   IF((K.GT.RD(I+1)))GOTO 10286
          BUF(J)=160
        GOTO 10285
10286 GOTO 10279
10277 GOTO(10278,10280,10281),AAACY0
10279 RETURN
      END
      INTEGER FUNCTION COMPE0(RD,ROW1,ROW2)
      INTEGER RD(884)
      INTEGER ROW1(500),ROW2(500)
      INTEGER BUF1(500),BUF2(500)
      INTEGER R,I
      INTEGER COMPA0
      I=3+1
      GOTO 10290
10288 I=I+22
10290 IF((I.GT.RD(2)))GOTO 10289
        CALL GETDA0(RD,I,ROW1,BUF1)
        CALL GETDA0(RD,I,ROW2,BUF2)
        R=COMPA0(RD(I),BUF1,BUF2)
        IF((R.EQ.2))GOTO 10291
          COMPE0=R
          RETURN
10291 GOTO 10288
10289 COMPE0=2
      RETURN
      END
C ---- Long Name Map ----
C comparefield                   compa0
C Rpn                            rpnaa0
C printheader                    prinu0
C comparerow                     compe0
C Ap                             apaaa0
C Rd                             rdaaa0
C Pos2                           pos2a0
C Cbuflen                        cbufl0
C evalrel                        evalr0
C printtrailer                   prinv0
C getqualfield                   getqu0
C Rpnlen                         rpnle0
C compareinteger                 compb0
C comparestring                  compd0
C putdata                        putda0
C summand                        summa0
C findfield                      findf0
C Arg                            argaa0
C findqualfield                  findq0
C Symtype                        symty0
C Symtext                        symte0
C convert                        conve0
C printrd                        print0
C printrow                       prinw0
C primary                        prima0
C comparereal                    compc0
C getdata                        getda0
C Errlab                         errla0
C Cbuf                           cbufa0
C addfieldtord                   addfi0