INTEGER RD(884) INTEGER I,L,FLAG,N,POS INTEGER * 4 IMIN,IVAL REAL * 8 RMIN,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),SMIN(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: rdmin [] .') 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: rdmin [] .') 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.IMIN))GOTO 10016 GOTO 10015 10016 IMIN=IVAL 10015 GOTO 10017 10018 CALL GETDA0(RD,POS,ROW,RVAL) IF((N.EQ.0))GOTO 10020 IF((RVAL.LT.RMIN))GOTO 10020 GOTO 10019 10020 RMIN=RVAL 10019 GOTO 10017 10021 CALL GETDA0(RD,POS,ROW,SVAL) IF((N.EQ.0))GOTO 10023 IF((COMPA0(3,SVAL,SMIN).EQ.1))GOTO 10023 GOTO 10022 10023 CALL CTOC(SVAL,SMIN,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.LT.IMIN))GOTO 10028 GOTO 10027 10028 IMIN=IVAL 10027 GOTO 10029 10030 CALL GETDA0(RD,POS,ROW,RVAL) IF((N.EQ.0))GOTO 10032 IF((RVAL.LT.RMIN))GOTO 10032 GOTO 10031 10032 RMIN=RVAL 10031 GOTO 10029 10033 CALL GETDA0(RD,POS,ROW,SVAL) IF((N.EQ.0))GOTO 10035 IF((COMPA0(3,SVAL,SMIN).EQ.1))GOTO 10035 GOTO 10034 10035 CALL CTOC(SVAL,SMIN,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,IMIN,N) GOTO 10039 10040 CALL PRINT(-11,AAAAB0,RMIN,N) GOTO 10039 10041 CALL PRINT(-11,AAAAC0,SMIN,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