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