SUBROUTINE MAIN INTEGER I INTEGER GETARG, ENTER, GETLIN, LENGTH INTEGER FD INTEGER OPEN LOGICAL*1 BUF(402) INTEGER LSTPTR INTEGER PTR INTEGER MEM(3300) LOGICAL*1 CMEM(6600) LOGICAL*1 USESTR(37) LOGICAL*1 ST001Z(19) LOGICAL*1 ST002Z(11) LOGICAL*1 ST003Z(50) COMMON / CLOOK / LSTPTR, PTR(25) COMMON /CDSMEM/ MEM EQUIVALENCE (CMEM(1),MEM(1)) DATA USESTR(1)/117/,USESTR(2)/115/,USESTR(3)/97/,USESTR(4)/103/,US *ESTR(5)/101/,USESTR(6)/58/,USESTR(7)/32/,USESTR(8)/32/,USESTR(9)/9 *7/,USESTR(10)/112/,USESTR(11)/114/,USESTR(12)/111/,USESTR(13)/112/ *,USESTR(14)/111/,USESTR(15)/115/,USESTR(16)/32/,USESTR(17)/112/,US *ESTR(18)/97/,USESTR(19)/116/,USESTR(20)/116/,USESTR(21)/101/,USEST *R(22)/114/,USESTR(23)/110/,USESTR(24)/32/,USESTR(25)/91/,USESTR(26 *)/112/,USESTR(27)/97/,USESTR(28)/116/,USESTR(29)/116/,USESTR(30)/1 *01/,USESTR(31)/114/,USESTR(32)/110/,USESTR(33)/93/,USESTR(34)/46/, *USESTR(35)/46/,USESTR(36)/46/,USESTR(37)/0/ DATA ST001Z(1)/69/,ST001Z(2)/114/,ST001Z(3)/114/,ST001Z(4)/111/,ST *001Z(5)/114/,ST001Z(6)/32/,ST001Z(7)/105/,ST001Z(8)/110/,ST001Z(9) */32/,ST001Z(10)/112/,ST001Z(11)/97/,ST001Z(12)/116/,ST001Z(13)/116 */,ST001Z(14)/101/,ST001Z(15)/114/,ST001Z(16)/110/,ST001Z(17)/58/,S *T001Z(18)/32/,ST001Z(19)/0/ DATA ST002Z(1)/126/,ST002Z(2)/109/,ST002Z(3)/97/,ST002Z(4)/110/,ST *002Z(5)/47/,ST002Z(6)/109/,ST002Z(7)/112/,ST002Z(8)/97/,ST002Z(9)/ *116/,ST002Z(10)/104/,ST002Z(11)/0/ DATA ST003Z(1)/69/,ST003Z(2)/114/,ST003Z(3)/114/,ST003Z(4)/111/,ST *003Z(5)/114/,ST003Z(6)/32/,ST003Z(7)/105/,ST003Z(8)/110/,ST003Z(9) */32/,ST003Z(10)/108/,ST003Z(11)/111/,ST003Z(12)/99/,ST003Z(13)/97/ *,ST003Z(14)/116/,ST003Z(15)/105/,ST003Z(16)/110/,ST003Z(17)/103/,S *T003Z(18)/32/,ST003Z(19)/115/,ST003Z(20)/101/,ST003Z(21)/97/,ST003 *Z(22)/114/,ST003Z(23)/99/,ST003Z(24)/104/,ST003Z(25)/32/,ST003Z(26 *)/112/,ST003Z(27)/97/,ST003Z(28)/116/,ST003Z(29)/104/,ST003Z(30)/3 *2/,ST003Z(31)/111/,ST003Z(32)/102/,ST003Z(33)/32/,ST003Z(34)/109/, *ST003Z(35)/97/,ST003Z(36)/110/,ST003Z(37)/117/,ST003Z(38)/97/,ST00 *3Z(39)/108/,ST003Z(40)/32/,ST003Z(41)/115/,ST003Z(42)/101/,ST003Z( *43)/99/,ST003Z(44)/116/,ST003Z(45)/105/,ST003Z(46)/111/,ST003Z(47) */110/,ST003Z(48)/115/,ST003Z(49)/33/,ST003Z(50)/0/ CALL QUERY(USESTR) LSTPTR = 0 I = 1 23000 IF (.NOT.(GETARG(I, BUF, 402) .NE. -1))GOTO 23002 IF (.NOT.(ENTER(BUF) .NE. 0))GOTO 23003 CALL PUTLIN(ST001Z, 3) CALL ERROR(BUF) 23003 CONTINUE 23001 I = I + 1 GOTO 23000 23002 CONTINUE IF (.NOT.(I .EQ. 1))GOTO 23005 CALL ERROR(USESTR) 23005 CONTINUE FD = OPEN(ST002Z, 1) IF (.NOT.(FD .EQ. -3))GOTO 23007 CALL ERROR(ST003Z) 23007 CONTINUE 23009 IF (.NOT.(GETLIN(BUF, FD) .NE. -1))GOTO 23010 I = LENGTH(BUF) BUF(I) = 0 CALL DOLOOK(BUF) GOTO 23009 23010 CONTINUE CALL CLOSE(FD) RETURN END SUBROUTINE DOLOOK(SUFFIX) LOGICAL*1 SUFFIX(100) LOGICAL*1 INDFIL(36), SECFIL(36), BUF(402), TMP(402), NAME(36) INTEGER JUNK, I, FSIZE(2), SIZE(2), LNDMRK(132) INTEGER GETPAT, GETLIN, GETWRD, AGETHD, AGTLIN, MATCH, XMATCH INTEGER IFD, SFD INTEGER OPEN INTEGER*4 LPTR LOGICAL*1 INDSTR(7) LOGICAL*1 SECSTR(7) LOGICAL*1 ST004Z(39) LOGICAL*1 ST005Z(41) LOGICAL*1 ST006Z(6) LOGICAL*1 ST007Z(23) DATA INDSTR(1)/126/,INDSTR(2)/109/,INDSTR(3)/97/,INDSTR(4)/110/,IN *DSTR(5)/47/,INDSTR(6)/105/,INDSTR(7)/0/ DATA SECSTR(1)/126/,SECSTR(2)/109/,SECSTR(3)/97/,SECSTR(4)/110/,SE *CSTR(5)/47/,SECSTR(6)/115/,SECSTR(7)/0/ DATA ST004Z(1)/69/,ST004Z(2)/114/,ST004Z(3)/114/,ST004Z(4)/111/,ST *004Z(5)/114/,ST004Z(6)/32/,ST004Z(7)/111/,ST004Z(8)/112/,ST004Z(9) */101/,ST004Z(10)/110/,ST004Z(11)/105/,ST004Z(12)/110/,ST004Z(13)/1 *03/,ST004Z(14)/32/,ST004Z(15)/105/,ST004Z(16)/110/,ST004Z(17)/100/ *,ST004Z(18)/101/,ST004Z(19)/120/,ST004Z(20)/32/,ST004Z(21)/102/,ST *004Z(22)/105/,ST004Z(23)/108/,ST004Z(24)/101/,ST004Z(25)/32/,ST004 *Z(26)/102/,ST004Z(27)/111/,ST004Z(28)/114/,ST004Z(29)/32/,ST004Z(3 *0)/115/,ST004Z(31)/101/,ST004Z(32)/99/,ST004Z(33)/116/,ST004Z(34)/ *105/,ST004Z(35)/111/,ST004Z(36)/110/,ST004Z(37)/58/,ST004Z(38)/32/ *,ST004Z(39)/0/ DATA ST005Z(1)/69/,ST005Z(2)/114/,ST005Z(3)/114/,ST005Z(4)/111/,ST *005Z(5)/114/,ST005Z(6)/32/,ST005Z(7)/111/,ST005Z(8)/112/,ST005Z(9) */101/,ST005Z(10)/110/,ST005Z(11)/105/,ST005Z(12)/110/,ST005Z(13)/1 *03/,ST005Z(14)/32/,ST005Z(15)/115/,ST005Z(16)/101/,ST005Z(17)/99/, *ST005Z(18)/116/,ST005Z(19)/105/,ST005Z(20)/111/,ST005Z(21)/110/,ST *005Z(22)/32/,ST005Z(23)/102/,ST005Z(24)/105/,ST005Z(25)/108/,ST005 *Z(26)/101/,ST005Z(27)/32/,ST005Z(28)/102/,ST005Z(29)/111/,ST005Z(3 *0)/114/,ST005Z(31)/32/,ST005Z(32)/115/,ST005Z(33)/101/,ST005Z(34)/ *99/,ST005Z(35)/116/,ST005Z(36)/105/,ST005Z(37)/111/,ST005Z(38)/110 */,ST005Z(39)/58/,ST005Z(40)/32/,ST005Z(41)/0/ DATA ST006Z(1)/78/,ST006Z(2)/65/,ST006Z(3)/77/,ST006Z(4)/69/,ST006 *Z(5)/36/,ST006Z(6)/0/ DATA ST007Z(1)/66/,ST007Z(2)/97/,ST007Z(3)/100/,ST007Z(4)/32/,ST00 *7Z(5)/102/,ST007Z(6)/111/,ST007Z(7)/114/,ST007Z(8)/109/,ST007Z(9)/ *97/,ST007Z(10)/116/,ST007Z(11)/32/,ST007Z(12)/102/,ST007Z(13)/111/ *,ST007Z(14)/114/,ST007Z(15)/32/,ST007Z(16)/101/,ST007Z(17)/110/,ST *007Z(18)/116/,ST007Z(19)/114/,ST007Z(20)/121/,ST007Z(21)/58/,ST007 *Z(22)/32/,ST007Z(23)/0/ CALL CONCAT(INDSTR, SUFFIX, INDFIL) IFD = OPEN(INDFIL, 1) IF (.NOT.(IFD .EQ. -3))GOTO 23011 CALL PUTLIN(ST004Z, 3) CALL REMARK(SUFFIX) RETURN 23011 CONTINUE CALL CONCAT(SECSTR, SUFFIX, SECFIL) SFD = OPEN(SECFIL, 1) IF (.NOT.(SFD .EQ. -3))GOTO 23013 CALL CLOSE(IFD) CALL PUTLIN(ST005Z, 3) CALL REMARK(SUFFIX) RETURN 23013 CONTINUE JUNK = GETPAT(ST006Z, LNDMRK) 23015 IF (.NOT.(GETLIN(BUF, IFD) .NE. -1))GOTO 23016 I = 1 JUNK = GETWRD(BUF, I, NAME) CALL CTOPTR(BUF, I, LPTR) CALL SEEK(LPTR, SFD) FSIZE(1) = 32767 FSIZE(2) = 0 IF (.NOT.(AGETHD(SFD, BUF, SIZE, FSIZE) .NE. 0))GOTO 23017 CALL CLOSE(SFD) CALL CLOSE(IFD) CALL PUTLIN(ST007Z, 3) CALL REMARK(NAME) RETURN 23017 CONTINUE 23019 IF (.NOT.(AGTLIN(BUF, SFD, SIZE) .NE. -1))GOTO 23020 IF (.NOT.(MATCH(BUF, LNDMRK) .EQ. 1))GOTO 23021 JUNK = GETLIN(BUF, SFD) CALL STRCPY(BUF, TMP) CALL FOLD(TMP) IF (.NOT.(XMATCH(TMP) .EQ. 1))GOTO 23023 CALL DSPLAY(BUF, SUFFIX) 23023 CONTINUE GOTO 23020 23021 CONTINUE GOTO 23019 23020 CONTINUE GOTO 23015 23016 CONTINUE CALL CLOSE(IFD) CALL CLOSE(SFD) RETURN END SUBROUTINE DSPLAY(BUF, SUFFIX) LOGICAL*1 BUF(100), SUFFIX(100) INTEGER I I = 1 CALL SKIPBL(BUF, I) 23025 IF (.NOT.(BUF(I) .NE. 32))GOTO 23026 CALL PUTCH(BUF(I), 2) I = I + 1 GOTO 23025 23026 CONTINUE CALL PUTCH(40, 2) CALL PUTLIN(SUFFIX, 2) CALL PUTCH(41, 2) CALL PUTLNL(BUF(I), 2) RETURN END INTEGER FUNCTION ENTER(STR) LOGICAL*1 STR(100) INTEGER PAT(132) INTEGER SIZE, I INTEGER MAKPAT, PATSIZ INTEGER NODE INTEGER DSGET INTEGER LSTPTR INTEGER PTR INTEGER MEM(3300) LOGICAL*1 CMEM(6600) LOGICAL*1 ST008Z(40) LOGICAL*1 ST009Z(40) COMMON / CLOOK / LSTPTR, PTR(25) COMMON /CDSMEM/ MEM EQUIVALENCE (CMEM(1),MEM(1)) DATA ST008Z(1)/84/,ST008Z(2)/111/,ST008Z(3)/111/,ST008Z(4)/32/,ST0 *08Z(5)/109/,ST008Z(6)/97/,ST008Z(7)/110/,ST008Z(8)/121/,ST008Z(9)/ *32/,ST008Z(10)/112/,ST008Z(11)/97/,ST008Z(12)/116/,ST008Z(13)/116/ *,ST008Z(14)/101/,ST008Z(15)/114/,ST008Z(16)/110/,ST008Z(17)/115/,S *T008Z(18)/32/,ST008Z(19)/102/,ST008Z(20)/111/,ST008Z(21)/114/,ST00 *8Z(22)/32/,ST008Z(23)/105/,ST008Z(24)/110/,ST008Z(25)/116/,ST008Z( *26)/101/,ST008Z(27)/114/,ST008Z(28)/110/,ST008Z(29)/97/,ST008Z(30) */108/,ST008Z(31)/32/,ST008Z(32)/115/,ST008Z(33)/116/,ST008Z(34)/11 *1/,ST008Z(35)/114/,ST008Z(36)/97/,ST008Z(37)/103/,ST008Z(38)/101/, *ST008Z(39)/33/,ST008Z(40)/0/ DATA ST009Z(1)/84/,ST009Z(2)/111/,ST009Z(3)/111/,ST009Z(4)/32/,ST0 *09Z(5)/109/,ST009Z(6)/97/,ST009Z(7)/110/,ST009Z(8)/121/,ST009Z(9)/ *32/,ST009Z(10)/112/,ST009Z(11)/97/,ST009Z(12)/116/,ST009Z(13)/116/ *,ST009Z(14)/101/,ST009Z(15)/114/,ST009Z(16)/110/,ST009Z(17)/115/,S *T009Z(18)/32/,ST009Z(19)/102/,ST009Z(20)/111/,ST009Z(21)/114/,ST00 *9Z(22)/32/,ST009Z(23)/105/,ST009Z(24)/110/,ST009Z(25)/116/,ST009Z( *26)/101/,ST009Z(27)/114/,ST009Z(28)/110/,ST009Z(29)/97/,ST009Z(30) */108/,ST009Z(31)/32/,ST009Z(32)/115/,ST009Z(33)/116/,ST009Z(34)/11 *1/,ST009Z(35)/114/,ST009Z(36)/97/,ST009Z(37)/103/,ST009Z(38)/101/, *ST009Z(39)/33/,ST009Z(40)/0/ IF (.NOT.(LSTPTR .EQ. 0))GOTO 23027 CALL DSINIT(3300) 23027 CONTINUE IF (.NOT.(LSTPTR .GE. 25))GOTO 23029 CALL REMARK(ST008Z) ENTER=(-3) RETURN 23029 CONTINUE CALL FOLD(STR) IF (.NOT.(MAKPAT(STR, 1, 0, PAT) .EQ. -3))GOTO 23031 ENTER=(-3) RETURN 23031 CONTINUE LSTPTR = LSTPTR + 1 SIZE = 1 23033 IF (.NOT.(PAT(SIZE) .NE. 0))GOTO 23035 23034 SIZE = SIZE + PATSIZ(PAT, SIZE) GOTO 23033 23035 CONTINUE NODE = DSGET(SIZE) IF (.NOT.(NODE .EQ. 0))GOTO 23036 CALL REMARK(ST009Z) ENTER=(-3) RETURN 23036 CONTINUE PTR(LSTPTR) = NODE I = 1 23038 IF (.NOT.(I .LT. SIZE))GOTO 23040 MEM(NODE) = PAT(I) 23039 I = I + 1 NODE = NODE + 1 GOTO 23038 23040 CONTINUE MEM(NODE) = 0 ENTER=(0) RETURN END INTEGER FUNCTION XMATCH(BUF) LOGICAL*1 BUF(100) INTEGER I, J, K, SIZE, L, PAT(132) INTEGER PATSIZ, MATCH INTEGER LSTPTR INTEGER PTR INTEGER MEM(3300) LOGICAL*1 CMEM(6600) COMMON / CLOOK / LSTPTR, PTR(25) COMMON /CDSMEM/ MEM EQUIVALENCE (CMEM(1),MEM(1)) I = 1 23041 IF (.NOT.(I .LE. LSTPTR))GOTO 23043 J = PTR(I) K = 1 23044 IF (.NOT.(MEM(J) .NE. 0))GOTO 23046 SIZE = PATSIZ(MEM, J) L = 0 23047 IF (.NOT.(L .LT. SIZE))GOTO 23049 PAT(K+L) = MEM(J+L) 23048 L = L + 1 GOTO 23047 23049 CONTINUE 23045 J = J + SIZE K = K + SIZE GOTO 23044 23046 CONTINUE PAT(K) = 0 IF (.NOT.(MATCH(BUF, PAT) .EQ. 1))GOTO 23050 XMATCH=(1) RETURN 23050 CONTINUE 23042 I = I + 1 GOTO 23041 23043 CONTINUE XMATCH=(0) RETURN END