INTEGER A$BUF(200) INTEGER HFD INTEGER OPEN INTEGER READB0,MATCH,MAKPAT,PARSDT INTEGER * 4 FROMD0 LOGICAL PRECE0 INTEGER BUF(102),BYLINE(102),MODLI0(102),TBYLI0(102),TMODL0(102),M *ODULE(256),AUTHOR(256) INTEGER HISTO0(19) INTEGER AAAAA0 INTEGER AAAAB0,AAAAC0,AAAAD0,AAAAE0 INTEGER AAAAF0(59) INTEGER PARSCL INTEGER AAAAG0(22) DATA HISTO0/189,228,239,227,189,175,232,233,243,244,175,232,233,24 *3,244,239,242,249,0/ DATA AAAAF0/213,243,225,231,229,186,160,240,232,233,243,244,160,25 *1,173,226,160,188,225,245,244,232,239,242,190,160,252,160,173,230, *160,188,228,225,244,229,190,160,252,160,173,243,160,188,243,245,22 *6,234,229,227,244,190,160,252,160,173,241,253,0/ DATA AAAAG0/226,188,242,243,190,230,188,242,243,190,243,188,242,24 *3,190,233,188,242,243,190,241,0/ AAAAA0=1 GOTO 10000 10001 IF((A$BUF(233-225+1).EQ.0))GOTO 10002 HFD=OPEN(A$BUF(A$BUF(233-225+27)),1) GOTO 10003 10002 HFD=OPEN(HISTO0,1) 10003 IF((HFD.NE.-3))GOTO 10004 CALL ERROR('history file not available.') 10004 CALL READB0(BUF,HFD) 10005 IF((BUF(1).EQ.-1))GOTO 10006 IF((BUF(1).NE.161))GOTO 10008 IF((READB0(BYLINE,HFD).EQ.-1))GOTO 10008 IF((BYLINE(1).NE.170))GOTO 10008 IF((READB0(MODLI0,HFD).EQ.-1))GOTO 10008 IF((MODLI0(1).NE.164))GOTO 10008 GOTO 10007 10008 CALL CLOSE(HFD) CALL ERROR('history file contains apocryphal information.') 10007 IF((A$BUF(226-225+1).EQ.0))GOTO 10009 CALL SCOPY(BYLINE,2,TBYLI0,1) CALL MAPSTR(TBYLI0,1) 10009 IF((A$BUF(243-225+1).EQ.0))GOTO 10010 CALL SCOPY(MODLI0,2,TMODL0,1) CALL MAPSTR(TMODL0,1) 10010 IF((A$BUF(243-225+1).EQ.0))GOTO 10013 IF((MATCH(TMODL0,MODULE).NE.0))GOTO 10013 GOTO 10012 10013 IF((A$BUF(230-225+1).EQ.0))GOTO 10014 IF((.NOT.PRECE0(BUF,FROMD0)))GOTO 10014 GOTO 10012 10014 IF((A$BUF(226-225+1).EQ.0))GOTO 10015 IF((MATCH(TBYLI0,AUTHOR).NE.0))GOTO 10015 GOTO 10012 10015 GOTO 10011 10012 CALL SKIPE0(BUF,HFD) GOTO 10016 10011 IF((A$BUF(241-225+1).EQ.0))GOTO 10017 CALL PRINT(-11,'*n*sBy: *sRe: *s.',BUF(2),BYLINE(2),MODLI0(2 *)) CALL SKIPE0(BUF,HFD) GOTO 10018 10017 CALL PRINT(-11,'*2n*s*nBy: *sRe: *s*n.',BUF(2),BYLINE(2),MOD *LI0(2)) CALL READB0(BUF,HFD) 10019 IF((BUF(1).NE.163))GOTO 10020 CALL PRINT(-11,' *s.',BUF(2)) CALL READB0(BUF,HFD) GOTO 10019 10020 CONTINUE 10018 CONTINUE 10016 GOTO 10005 10006 CALL CLOSE(HFD) GOTO 10021 10000 IF((PARSCL(AAAAG0,A$BUF).NE.-3))GOTO 10022 CALL ERROR(AAAAF0) 10022 IF((A$BUF(226-225+1).EQ.0))GOTO 10023 IF((MAKPAT(A$BUF(A$BUF(226-225+27)),1,0,AUTHOR).NE.-3))GOTO 1002 *4 CALL PUTLIN(A$BUF(A$BUF(226-225+27)),-15) CALL ERROR(': bad author pattern.') 10024 CONTINUE 10023 IF((A$BUF(230-225+1).EQ.0))GOTO 10025 AAAAB0=1 IF((PARSDT(A$BUF(A$BUF(230-225+27)),AAAAB0,AAAAD0,AAAAC0,AAAAE0) *.NE.-3))GOTO 10026 CALL PUTLIN(A$BUF(A$BUF(230-225+27)),-15) CALL ERROR(': bad date.') 10026 FROMD0=INTL(AAAAE0)*10000+INTL(AAAAD0)*100+INTL(AAAAC0) 10025 IF((A$BUF(243-225+1).EQ.0))GOTO 10027 IF((MAKPAT(A$BUF(A$BUF(243-225+27)),1,0,MODULE).NE.-3))GOTO 1002 *8 CALL PUTLIN(A$BUF(A$BUF(243-225+27)),-15) CALL ERROR(': bad subject pattern.') 10028 CONTINUE 10027 GOTO 10029 10021 CALL SWT 10029 GOTO 10001 END INTEGER FUNCTION READB0(BUF,FD) INTEGER BUF(1) INTEGER FD INTEGER GETLIN READB0=GETLIN(BUF,FD) IF((READB0.NE.-1))GOTO 10030 BUF(1)=-1 10030 RETURN END SUBROUTINE SKIPE0(BUF,FD) INTEGER BUF(1) INTEGER FD INTEGER READB0 10031 CALL READB0(BUF,FD) IF((BUF(1).EQ.163))GOTO 10031 RETURN END LOGICAL FUNCTION PRECE0(DATEL0,FROM) INTEGER DATEL0(1) INTEGER * 4 FROM INTEGER I,YEAR,MONTH,DAY INTEGER INDEX I=INDEX(DATEL0,160)+1 CALL PARSDT(DATEL0,I,MONTH,DAY,YEAR) PRECE0=INTL(YEAR)*10000+INTL(MONTH)*100+INTL(DAY).LT.FROM RETURN END C ---- Long Name Map ---- C skipentry skipe0 C modline modli0 C dateline datel0 C precedes prece0 C tbyline tbyli0 C fromdate fromd0 C historyfile histo0 C readbuf readb0 C tmodline tmodl0