INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 CALL INITI0 IF((OPTIO0.NE.4))GOTO 10000 CALL SIMPL0 GOTO 10001 10000 IF((OPTIO0.NE.5))GOTO 10002 CALL BINAR0 GOTO 10003 10002 CALL LOAD CALL PAIR CALL GROW CALL LABEL CALL REPORT 10003 CONTINUE 10001 CALL SWT END INTEGER FUNCTION ENTER(LINE) INTEGER LINE(1) INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER H INTEGER HASH INTEGER I,P INTEGER * 4 MARKF INTEGER TEXT(102) INTEGER EQUAL H=HASH(LINE) P=BUCKE0(H) 10004 IF((P.EQ.0))GOTO 10005 I=SYMST0(P+1) CALL SEEKF(TEXTL0(I),TEXTF0,0) CALL GETLIN(TEXT,TEXTF0) IF((EQUAL(LINE,TEXT).NE.1))GOTO 10006 ENTER=I RETURN 10006 P=SYMST0(P) GOTO 10004 10005 IF((NEXTI0.LT.6000))GOTO 10007 CALL ERROR('too many unique lines; symbol table overflow.') 10007 I=NEXTI0 NEXTI0=NEXTI0+(1) H=HASH(LINE) SYMST0(NEXTS0)=BUCKE0(H) SYMST0(NEXTS0+1)=I BUCKE0(H)=NEXTS0 NEXTS0=NEXTS0+(2) CALL WIND(TEXTF0) TEXTL0(I)=MARKF(TEXTF0) CALL PUTLIN(LINE,TEXTF0) ENTER=I RETURN END SUBROUTINE GENLI0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER OI,NI INTEGER JUNK INTEGER GETLIN INTEGER LINE(102) INTEGER AAAAA0 INTEGER AAAAC0 INTEGER AAAAE0 INTEGER AAAAF0(12) INTEGER AAAAB0 INTEGER AAAAG0(13) INTEGER AAAAH0(10) INTEGER AAAAD0 INTEGER AAAAI0(13) INTEGER AAAAJ0(10) DATA AAAAF0/160,160,160,170,180,233,160,170,180,233,252,0/ DATA AAAAG0/170,227,228,160,170,180,233,160,170,180,248,252,0/ DATA AAAAH0/170,227,228,160,170,180,233,239,252,0/ DATA AAAAI0/170,227,233,160,170,180,248,160,170,180,233,252,0/ DATA AAAAJ0/170,227,233,160,170,180,233,238,252,0/ OI=2 NI=2 10011 GOTO 10012 10013 AAAAA0=1 GOTO 10008 10014 GOTO 10015 10016 AAAAD0=160 AAAAE0=1 GOTO 10010 10017 GOTO 10015 10018 AAAAB0=160 AAAAC0=1 GOTO 10009 10019 GOTO 10015 10020 AAAAB0=227 AAAAC0=2 GOTO 10009 10021 AAAAD0=227 AAAAE0=2 GOTO 10010 10022 GOTO 10015 10023 GOTO 10024 10012 IF((OLDCO0(OI).NE.0))GOTO 10025 IF((NEWCO0(NI).NE.0))GOTO 10025 GOTO 10013 10025 IF((OLDCO0(OI).EQ.1))GOTO 10026 IF((NEWCO0(NI).NE.1))GOTO 10026 GOTO 10016 10026 IF((OLDCO0(OI).NE.1))GOTO 10027 IF((NEWCO0(NI).EQ.1))GOTO 10027 GOTO 10018 10027 IF((OLDCO0(OI).NE.1))GOTO 10028 IF((NEWCO0(NI).NE.1))GOTO 10028 GOTO 10020 10028 IF((OLDCO0(OI).NE.2))GOTO 10029 IF((NEWCO0(NI).NE.2))GOTO 10029 GOTO 10023 10029 CONTINUE 10015 CONTINUE GOTO 10011 10024 RETURN 10008 IF((VERBO0.NE.1))GOTO 10030 CALL PUTCH(138,-11) 10030 GOTO 10033 10031 OI=OI+(1) NI=NI+(1) 10033 IF((OLDCO0(OI).NE.0))GOTO 10032 IF((NEWCO0(NI).NE.0))GOTO 10032 JUNK=GETLIN(LINE,OLDCP0) IF((VERBO0.NE.1))GOTO 10034 CALL PRINT(-11,AAAAF0,OI-1,NI-1) CALL PUTLIN(LINE,-11) 10034 JUNK=GETLIN(LINE,NEWCP0) GOTO 10031 10032 GOTO 10035 10009 CALL PUTCH(138,-11) GOTO 10038 10036 OI=OI+(1) 10038 IF((OLDCO0(OI).NE.1))GOTO 10037 JUNK=GETLIN(LINE,OLDCP0) IF((VERBO0.NE.1))GOTO 10039 CALL PRINT(-11,AAAAG0,AAAAB0,OI-1) GOTO 10040 10039 CALL PRINT(-11,AAAAH0,AAAAB0,OI-1) 10040 CALL PUTLIN(LINE,-11) GOTO 10036 10037 GOTO 10041 10010 CALL PUTCH(138,-11) GOTO 10044 10042 NI=NI+(1) 10044 IF((NEWCO0(NI).NE.1))GOTO 10043 JUNK=GETLIN(LINE,NEWCP0) IF((VERBO0.NE.1))GOTO 10045 CALL PRINT(-11,AAAAI0,AAAAD0,NI-1) GOTO 10046 10045 CALL PRINT(-11,AAAAJ0,AAAAD0,NI-1) 10046 CALL PUTLIN(LINE,-11) GOTO 10042 10043 GOTO 10047 10041 GOTO(10019,10021),AAAAC0 GOTO 10041 10047 GOTO(10017,10022),AAAAE0 GOTO 10047 10035 GOTO 10014 END SUBROUTINE GENRE0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER OI,NI INTEGER JUNK INTEGER GETLIN INTEGER LINE(102) INTEGER AAAAK0 INTEGER AAAAL0 INTEGER AAAAM0(11) INTEGER AAAAN0(9) INTEGER AAAAO0(12) INTEGER AAAAP0(9) INTEGER AAAAQ0(11) INTEGER AAAAR0(9) DATA AAAAM0/219,227,227,221,237,227,160,252,170,238,0/ DATA AAAAN0/219,227,227,221,237,227,170,238,0/ DATA AAAAO0/219,227,227,221,237,227,160,170,170,170,238,0/ DATA AAAAP0/219,227,227,221,237,227,170,238,0/ DATA AAAAQ0/219,227,227,221,237,227,160,252,170,238,0/ DATA AAAAR0/219,227,227,221,237,227,170,238,0/ OI=2 NI=2 10050 GOTO 10051 10052 OI=OI+(1) NI=NI+(1) JUNK=GETLIN(LINE,NEWCP0) CALL PUTLIN(LINE,-11) GOTO 10053 10054 CALL PRINT(-11,AAAAM0) AAAAL0=1 GOTO 10049 10055 CALL PRINT(-11,AAAAN0) GOTO 10053 10056 CALL PRINT(-11,AAAAO0) CALL PRINT(-11,AAAAP0) AAAAK0=1 GOTO 10048 10057 GOTO 10053 10058 AAAAK0=2 GOTO 10048 10059 CALL PRINT(-11,AAAAQ0) AAAAL0=2 GOTO 10049 10060 CALL PRINT(-11,AAAAR0) GOTO 10053 10061 GOTO 10062 10051 IF((OLDCO0(OI).NE.0))GOTO 10063 IF((NEWCO0(NI).NE.0))GOTO 10063 GOTO 10052 10063 IF((OLDCO0(OI).EQ.1))GOTO 10064 IF((NEWCO0(NI).NE.1))GOTO 10064 GOTO 10054 10064 IF((OLDCO0(OI).NE.1))GOTO 10065 IF((NEWCO0(NI).EQ.1))GOTO 10065 GOTO 10056 10065 IF((OLDCO0(OI).NE.1))GOTO 10066 IF((NEWCO0(NI).NE.1))GOTO 10066 GOTO 10058 10066 IF((OLDCO0(OI).NE.2))GOTO 10067 IF((NEWCO0(NI).NE.2))GOTO 10067 GOTO 10061 10067 CONTINUE 10053 CONTINUE GOTO 10050 10062 RETURN 10048 GOTO 10070 10068 OI=OI+(1) 10070 IF((OLDCO0(OI).NE.1))GOTO 10069 GOTO 10068 10069 GOTO 10071 10049 GOTO 10074 10072 NI=NI+(1) 10074 IF((NEWCO0(NI).NE.1))GOTO 10073 JUNK=GETLIN(LINE,NEWCP0) CALL PUTLIN(LINE,-11) GOTO 10072 10073 GOTO 10075 10071 GOTO(10057,10059),AAAAK0 GOTO 10071 10075 GOTO(10055,10060),AAAAL0 GOTO 10075 END SUBROUTINE GENSC0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER OI,NI,OFFSET,LENGTH INTEGER JUNK INTEGER GETLIN INTEGER LINE(102) INTEGER AAAAS0 INTEGER AAAAT0 INTEGER AAAAU0(6) INTEGER AAAAV0(4) INTEGER AAAAW0(9) INTEGER AAAAX0(9) INTEGER AAAAY0(4) INTEGER AAAAZ0(4) DATA AAAAU0/170,233,225,170,238,0/ DATA AAAAV0/174,170,238,0/ DATA AAAAW0/170,233,172,170,233,228,170,238,0/ DATA AAAAX0/170,233,172,170,233,227,170,238,0/ DATA AAAAY0/174,170,238,0/ DATA AAAAZ0/247,170,238,0/ OI=2 NI=2 OFFSET=0 10078 GOTO 10079 10080 OI=OI+(1) NI=NI+(1) JUNK=GETLIN(LINE,NEWCP0) GOTO 10081 10082 CALL PRINT(-11,AAAAU0,OI-2+OFFSET) AAAAT0=1 GOTO 10077 10083 CALL PRINT(-11,AAAAV0) OFFSET=OFFSET+(LENGTH) GOTO 10081 10084 AAAAS0=1 GOTO 10076 10085 CALL PRINT(-11,AAAAW0,OI-1-LENGTH+OFFSET,OI-2+OFFSET) OFFSET=OFFSET-(LENGTH) GOTO 10081 10086 AAAAS0=2 GOTO 10076 10087 CALL PRINT(-11,AAAAX0,OI-1-LENGTH+OFFSET,OI-2+OFFSET) OFFSET=OFFSET-(LENGTH) AAAAT0=2 GOTO 10077 10088 CALL PRINT(-11,AAAAY0) OFFSET=OFFSET+(LENGTH) GOTO 10081 10089 GOTO 10090 10079 IF((OLDCO0(OI).NE.0))GOTO 10091 IF((NEWCO0(NI).NE.0))GOTO 10091 GOTO 10080 10091 IF((OLDCO0(OI).EQ.1))GOTO 10092 IF((NEWCO0(NI).NE.1))GOTO 10092 GOTO 10082 10092 IF((OLDCO0(OI).NE.1))GOTO 10093 IF((NEWCO0(NI).EQ.1))GOTO 10093 GOTO 10084 10093 IF((OLDCO0(OI).NE.1))GOTO 10094 IF((NEWCO0(NI).NE.1))GOTO 10094 GOTO 10086 10094 IF((OLDCO0(OI).NE.2))GOTO 10095 IF((NEWCO0(NI).NE.2))GOTO 10095 GOTO 10089 10095 CONTINUE 10081 CONTINUE GOTO 10078 10090 CALL PRINT(-11,AAAAZ0) RETURN 10076 LENGTH=0 GOTO 10098 10096 OI=OI+(1) 10098 IF((OLDCO0(OI).NE.1))GOTO 10097 LENGTH=LENGTH+(1) GOTO 10096 10097 GOTO 10099 10077 LENGTH=0 GOTO 10102 10100 NI=NI+(1) 10102 IF((NEWCO0(NI).NE.1))GOTO 10101 LENGTH=LENGTH+(1) JUNK=GETLIN(LINE,NEWCP0) CALL PUTLIN(LINE,-11) GOTO 10100 10101 GOTO 10103 10099 GOTO(10085,10087),AAAAS0 GOTO 10099 10103 GOTO(10083,10088),AAAAT0 GOTO 10103 END SUBROUTINE GROW INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER I,NX I=1 GOTO 10106 10104 I=I+(1) 10106 IF((I.GE.NEWSI0))GOTO 10105 NX=NEWXR0(I) IF((NX.LE.0))GOTO 10107 IF((NEWXR0(I+1).GE.0))GOTO 10108 IF((NEWXR0(I+1).NE.OLDXR0(NX+1)))GOTO 10108 OLDXR0(NX+1)=I+1 NEWXR0(I+1)=NX+1 10108 CONTINUE 10107 GOTO 10104 10105 I=NEWSI0 GOTO 10111 10109 I=I-(1) 10111 IF((I.LE.1))GOTO 10110 NX=NEWXR0(I) IF((NX.LE.0))GOTO 10112 IF((NEWXR0(I-1).GE.0))GOTO 10113 IF((NEWXR0(I-1).NE.OLDXR0(NX-1)))GOTO 10113 OLDXR0(NX-1)=I-1 NEWXR0(I-1)=NX-1 10113 CONTINUE 10112 GOTO 10109 10110 RETURN END INTEGER FUNCTION HASH(LINE) INTEGER LINE(1) INTEGER I HASH=0 I=1 GOTO 10116 10114 I=I+(1) 10116 IF((LINE(I).EQ.0))GOTO 10115 HASH=HASH+(LINE(I)) GOTO 10114 10115 HASH=MOD(IABS(HASH),6073)+1 RETURN END SUBROUTINE INITI0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER MKTEMP,OPEN INTEGER ARGNO,I INTEGER GETARG INTEGER ARG(180) INTEGER AAABA0 INTEGER AAABB0 OPTIO0=1 VERBO0=0 ARGNO=1 IF((GETARG(1,ARG,180).EQ.-1))GOTO 10117 IF((ARG(1).NE.173))GOTO 10117 CALL MAPSTR(ARG,1) I=2 GOTO 10120 10118 I=I+(1) 10120 IF((ARG(I).EQ.0))GOTO 10119 AAABA0=ARG(I) GOTO 10121 10122 OPTIO0=5 GOTO 10123 10124 OPTIO0=4 GOTO 10123 10125 OPTIO0=1 GOTO 10123 10126 OPTIO0=2 GOTO 10123 10127 OPTIO0=3 GOTO 10123 10128 VERBO0=1 GOTO 10123 10121 AAABB0=AAABA0-225 GOTO(10122,10124,10125,10129,10129,10129,10129,10129,10129,101 *29,10129,10129,10129,10129,10129,10129,10126,10127,10129,10129,101 *28),AAABB0 10129 CALL USAGE 10123 GOTO 10118 10119 ARGNO=2 10117 IF((GETARG(ARGNO,ARG,180).NE.-1))GOTO 10130 OLDFI0=-10 NEWFI0=-12 GOTO 10131 10130 OLDFI0=OPEN(ARG,1) IF((OLDFI0.NE.-3))GOTO 10132 CALL CANT(ARG) 10132 ARGNO=ARGNO+(1) IF((GETARG(ARGNO,ARG,180).NE.-1))GOTO 10133 NEWFI0=-10 GOTO 10134 10133 NEWFI0=OPEN(ARG,1) IF((NEWFI0.NE.-3))GOTO 10135 CALL CANT(ARG) 10135 ARGNO=ARGNO+(1) 10134 CONTINUE 10131 IF((GETARG(ARGNO,ARG,180).EQ.-1))GOTO 10136 CALL USAGE 10136 NEXTI0=1 NEXTS0=1 TEXTF0=MKTEMP(3) IF((TEXTF0.NE.-3))GOTO 10137 CALL ERROR('can''t open temporary file.') 10137 OLDCP0=MKTEMP(3) IF((OLDCP0.NE.-3))GOTO 10138 CALL ERROR('can''t open temporary file.') 10138 NEWCP0=MKTEMP(3) IF((NEWCP0.NE.-3))GOTO 10139 CALL ERROR('can''t open temporary file.') 10139 RETURN END SUBROUTINE LABEL INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER OI,NI,OX,NX INTEGER AAABC0(41) INTEGER AAABD0(24) DATA AAABC0/207,236,228,223,248,242,229,230,160,168,170,233,169,16 *0,189,160,170,233,172,160,206,229,247,223,248,242,229,230,160,168, *170,233,169,160,189,160,170,233,170,238,0/ DATA AAABD0/233,238,160,236,225,226,229,236,186,160,160,227,225,23 *8,167,244,160,232,225,240,240,229,238,0/ OI=2 NI=2 10140 OX=OLDXR0(OI) NX=NEWXR0(NI) GOTO 10141 10142 GOTO 10143 10144 OLDCO0(OI)=1 OI=OI+(1) GOTO 10145 10146 NEWCO0(NI)=1 NI=NI+(1) GOTO 10145 10147 OLDCO0(OI)=0 OI=OI+(1) NEWCO0(NI)=0 NI=NI+(1) GOTO 10145 10148 NEWCO0(NI)=1 NI=NI+(1) OLDCO0(NX)=1 OLDCO0(OI)=1 OI=OI+(1) NEWCO0(OX)=1 GOTO 10145 10141 IF((OI.LT.OLDSI0))GOTO 10149 IF((NI.LT.NEWSI0))GOTO 10149 GOTO 10142 10149 IF((OI.GE.OLDSI0))GOTO 10150 IF((OX.GE.0))GOTO 10150 GOTO 10144 10150 IF((NI.GE.NEWSI0))GOTO 10151 IF((NX.GE.0))GOTO 10151 GOTO 10146 10151 IF((OX.NE.NI))GOTO 10152 IF((NX.NE.OI))GOTO 10152 GOTO 10147 10152 IF((OI.GT.OLDSI0))GOTO 10153 IF((NI.GT.NEWSI0))GOTO 10153 GOTO 10148 10153 CONTINUE CALL PRINT(-15,AAABC0,OI,OX,NI,NX) CALL ERROR(AAABD0) 10145 CONTINUE GOTO 10140 10143 OLDCO0(1)=2 OLDCO0(OLDSI0)=2 NEWCO0(1)=2 NEWCO0(NEWSI0)=2 RETURN END SUBROUTINE LOAD INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER LNO,I INTEGER ENTER INTEGER H INTEGER LINE(102) INTEGER GETLIN DO 10154 H=1,6073 BUCKE0(H)=0 10154 CONTINUE 10155 DO 10156 LNO=1,6000 OLDCO0(LNO)=0 NEWCO0(LNO)=0 10156 CONTINUE 10157 LNO=2 GOTO 10160 10158 LNO=LNO+(1) 10160 IF((GETLIN(LINE,OLDFI0).EQ.-1))GOTO 10159 IF((LNO.LE.6000))GOTO 10161 CALL ERROR('old file too large to handle.') 10161 CALL PUTLIN(LINE,OLDCP0) I=ENTER(LINE) OLDCO0(I)=OLDCO0(I)+(1) OLDLN0(I)=LNO OLDXR0(LNO)=-I GOTO 10158 10159 OLDSI0=LNO LNO=2 GOTO 10164 10162 LNO=LNO+(1) 10164 IF((GETLIN(LINE,NEWFI0).EQ.-1))GOTO 10163 IF((LNO.LE.6000))GOTO 10165 CALL ERROR('new file too large to handle.') 10165 CALL PUTLIN(LINE,NEWCP0) I=ENTER(LINE) NEWCO0(I)=NEWCO0(I)+(1) NEWXR0(LNO)=-I GOTO 10162 10163 NEWSI0=LNO RETURN END SUBROUTINE PAIR INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER I,J I=2 GOTO 10168 10166 I=I+(1) 10168 IF((I.GE.NEWSI0))GOTO 10167 J=-NEWXR0(I) IF((OLDCO0(J).NE.1))GOTO 10169 IF((NEWCO0(J).NE.1))GOTO 10169 NEWXR0(I)=OLDLN0(J) OLDXR0(OLDLN0(J))=I 10169 GOTO 10166 10167 NEWXR0(1)=1 OLDXR0(1)=1 NEWXR0(NEWSI0)=OLDSI0 OLDXR0(OLDSI0)=NEWSI0 RETURN END SUBROUTINE REPORT INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER AAABE0 CALL REWIND(OLDCP0) CALL REWIND(NEWCP0) AAABE0=OPTIO0 GOTO 10170 10171 CALL GENLI0 GOTO 10172 10173 CALL GENRE0 GOTO 10172 10174 CALL GENSC0 GOTO 10172 10170 GOTO(10171,10173,10174),AAABE0 CALL ERROR('in report: can''t happen.') 10172 RETURN END SUBROUTINE SIMPL0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER LINE1(102),LINE2(102) INTEGER LINENO,M1,M2 INTEGER EQUAL,GETLIN INTEGER AAABF0(16) INTEGER AAABG0(12) INTEGER AAABH0(12) INTEGER AAABI0(18) INTEGER AAABJ0(18) DATA AAABF0/170,181,233,170,238,170,184,248,170,243,170,184,248,17 *0,243,0/ DATA AAABG0/228,233,230,230,229,242,229,238,244,170,238,0/ DATA AAABH0/228,233,230,230,229,242,229,238,244,170,238,0/ DATA AAABI0/229,239,230,160,239,238,160,239,236,228,160,230,233,23 *6,229,170,238,0/ DATA AAABJ0/229,239,230,160,239,238,160,238,229,247,160,230,233,23 *6,229,170,238,0/ LINENO=0 10175 M1=GETLIN(LINE1,OLDFI0) M2=GETLIN(LINE2,NEWFI0) IF((M1.EQ.-1))GOTO 10177 IF((M2.EQ.-1))GOTO 10177 GOTO 10176 10177 GOTO 10178 10176 LINENO=LINENO+(1) IF((EQUAL(LINE1,LINE2).NE.0))GOTO 10179 IF((VERBO0.NE.1))GOTO 10180 CALL PRINT(-11,AAABF0,LINENO,LINE1,LINE2) GOTO 10181 10180 CALL PRINT(-11,AAABG0) RETURN 10181 CONTINUE 10179 CONTINUE GOTO 10175 10178 IF((M1.NE.M2))GOTO 10182 RETURN 10182 IF((VERBO0.NE.0))GOTO 10183 CALL PRINT(-11,AAABH0) GOTO 10184 10183 IF((M1.NE.-1))GOTO 10185 CALL PRINT(-11,AAABI0) GOTO 10186 10185 IF((M2.NE.-1))GOTO 10187 CALL PRINT(-11,AAABJ0) 10187 CONTINUE 10186 CONTINUE 10184 RETURN END SUBROUTINE BINAR0 INTEGER OLDCO0(6000),NEWCO0(6000),OLDXR0(6000),NEWXR0(6000),OLDLN0 *(6000),BUCKE0(6073),SYMST0(12000) INTEGER * 4 TEXTL0(6000) COMMON /C1/OLDCO0 COMMON /C2/NEWCO0 COMMON /C3/OLDXR0 COMMON /C4/NEWXR0 COMMON /C5/OLDLN0 COMMON /C6/BUCKE0 COMMON /C7/SYMST0 COMMON /C8/TEXTL0 INTEGER NEXTS0,NEXTI0,NEWSI0,OLDSI0 INTEGER OLDFI0,NEWFI0,TEXTF0,OLDCP0,NEWCP0 INTEGER OPTIO0,VERBO0 COMMON /DIFFC0/NEXTS0,NEXTI0,OLDFI0,NEWFI0,TEXTF0,NEWSI0,OLDSI0,OL *DCP0,NEWCP0,OPTIO0,VERBO0 INTEGER M1,M2,I,LEN,BUF1(1024),BUF2(1024) INTEGER READF INTEGER * 4 BLOCK INTEGER AAABK0(26) INTEGER AAABL0(12) INTEGER AAABM0(12) INTEGER AAABN0(26) INTEGER AAABO0(18) INTEGER AAABP0(18) DATA AAABK0/170,177,176,236,186,160,170,182,172,173,184,172,176,23 *3,160,170,182,172,173,184,172,176,233,170,238,0/ DATA AAABL0/228,233,230,230,229,242,229,238,244,170,238,0/ DATA AAABM0/228,233,230,230,229,242,229,238,244,170,238,0/ DATA AAABN0/170,177,176,236,186,160,170,182,172,173,184,172,176,23 *3,160,170,182,172,173,184,172,176,233,170,238,0/ DATA AAABO0/229,239,230,160,239,238,160,239,236,228,160,230,233,23 *6,229,170,238,0/ DATA AAABP0/229,239,230,160,239,238,160,238,229,247,160,230,233,23 *6,229,170,238,0/ BLOCK=-1 10188 M1=READF(BUF1,1024,OLDFI0) M2=READF(BUF2,1024,NEWFI0) IF((M1.NE.M2))GOTO 10190 IF((M1.EQ.-1))GOTO 10190 GOTO 10189 10190 GOTO 10191 10189 DO 10192 I=1,M1 IF((BUF1(I).EQ.BUF2(I)))GOTO 10194 IF((VERBO0.NE.1))GOTO 10195 CALL PRINT(-11,AAABK0,BLOCK+I,BUF1(I),BUF2(I)) GOTO 10196 10195 CALL PRINT(-11,AAABL0) RETURN 10196 CONTINUE 10194 CONTINUE 10192 CONTINUE 10193 BLOCK=BLOCK+(M1) GOTO 10188 10191 IF((M1.NE.M2))GOTO 10197 RETURN 10197 IF((VERBO0.NE.0))GOTO 10198 CALL PRINT(-11,AAABM0) RETURN 10198 IF((M1.EQ.-1))GOTO 10199 IF((M2.EQ.-1))GOTO 10199 IF((M1.GE.M2))GOTO 10200 LEN=M1 M1=-1 GOTO 10201 10200 LEN=M2 M2=-1 10201 DO 10202 I=1,LEN IF((BUF1(I).EQ.BUF2(I)))GOTO 10204 CALL PRINT(-11,AAABN0,BLOCK+I,BUF1(I),BUF2(I)) 10204 CONTINUE 10202 CONTINUE 10203 CONTINUE 10199 IF((M1.NE.-1))GOTO 10205 CALL PRINT(-11,AAABO0) GOTO 10206 10205 IF((M2.NE.-1))GOTO 10207 CALL PRINT(-11,AAABP0) 10207 CONTINUE 10206 RETURN END SUBROUTINE USAGE CALL ERROR('Usage: diff [-{b|c|d|r|s|v}] [old_file [new_file]].') END C ---- Long Name Map ---- C Textloc textl0 C Symstore symst0 C Newsize newsi0 C Newcopy newcp0 C simplecompare simpl0 C Oldlno oldln0 C Oldfile oldfi0 C Nextinx nexti0 C Textfile textf0 C Oldcount oldco0 C collectdeletions collf0 C Newfile newfi0 C genscript gensc0 C collectinsertions collg0 C genrevision genre0 C Nextsym nexts0 C Option optio0 C Newcount newco0 C Oldxref oldxr0 C Verbose verbo0 C initialize initi0 C diffcom diffc0 C collectunchanged colle0 C genlisting genli0 C Oldsize oldsi0 C Oldcopy oldcp0 C Newxref newxr0 C Bucket bucke0 C binarycompare binar0