SUBROUTINE MAIN COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT CALL FBARGS CALL DOBK (1) IF(.NOT.(COUNT .EQ. 1))GOTO 23000 CALL PUTDEC(MCOUNT, 1) CALL PUTC(10) 23000 CONTINUE RETURN END SUBROUTINE BMATCH (LINE) LOGICAL*1 LINE(100) INTEGER MATCH COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT I=1 23002 IF(.NOT.(I.LE.ELEVEL))GOTO 23004 IF(.NOT.(MATCH(LINE, PAT(1,I)) .EQ. 1))GOTO 23005 LOCATD(I) = 1 23005 CONTINUE 23003 I=I+1 GOTO 23002 23004 CONTINUE RETURN END SUBROUTINE CHECKL (LINE) LOGICAL*1 LINE(100) INTEGER MATCH COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT ATBEG = MATCH(LINE, SEPS(1,1)) IF(.NOT.(NBRSEP .EQ. 1))GOTO 23007 ATEND = ATBEG GOTO 23008 23007 CONTINUE ATEND = MATCH(LINE, SEPS(1,2)) 23008 CONTINUE RETURN END SUBROUTINE DOBEG (LINE) LOGICAL*1 LINE(100) INTEGER STACKL COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT CALL INITBK LCOUNT = 0 IF(.NOT.(NBRSEP .GT. 1 .OR. SEPLOC .EQ. 1))GOTO 23009 CALL BMATCH(LINE) IF(.NOT.(STACKL(LINE) .EQ. -3))GOTO 23011 CALL ERROR (21HBlock buffer overflow) 23011 CONTINUE 23009 CONTINUE SKPING = 0 PRTING = 0 RETURN END SUBROUTINE DOBK (FD) INTEGER GETLIN INTEGER FD, PRT, FIRST LOGICAL*1 LINE(400) COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT COMMON /FBBUF/ FBBUF(5000), ENDSTK, FNAME(40), FB LOGICAL*1 FBBUF INTEGER ENDSTK LOGICAL*1 FNAME INTEGER FB CALL INITBK FIRST = 1 23013 IF(.NOT.(GETLIN(LINE, FD) .NE. -1))GOTO 23014 CALL CHECKL (LINE) IF(.NOT.(FIRST .EQ. 1 .AND. ATEND .EQ. 1 .AND. NBRSEP .EQ. 1))GOTO * 23015 SEPLOC = 1 23015 CONTINUE FIRST = 0 IF(.NOT.(ATEND .EQ. 1))GOTO 23017 CALL DOEND(LINE) 23017 CONTINUE IF(.NOT.(ATBEG .EQ. 1))GOTO 23019 CALL DOBEG(LINE) GOTO 23013 23019 CONTINUE IF(.NOT.(SKPING .EQ. 1))GOTO 23021 GOTO 23013 23021 CONTINUE CALL DOLIN (LINE) 23022 CONTINUE GOTO 23013 23014 CONTINUE IF(.NOT.(SKPING .EQ. 0))GOTO 23023 CALL DOEND(LINE) 23023 CONTINUE IF(.NOT.(FB .NE. -3))GOTO 23025 CALL CLOSE(FB) CALL REMOVE(FNAME) FB = -3 23025 CONTINUE RETURN END SUBROUTINE DOEND (LINE) LOGICAL*1 LINE(100) INTEGER STACKL INTEGER PRT COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT IF(.NOT.(PRTING .EQ. 1))GOTO 23027 IF(.NOT.( (NBRSEP .GT. 1 .OR. SEPLOC .EQ. 0) .AND. COUNT .EQ. 0))G *OTO 23029 CALL OUTLIN(LINE) 23029 CONTINUE IF(.NOT.(BKLTH .NE. 30000))GOTO 23031 LCOUNT=LCOUNT+1 23033 IF(.NOT.(LCOUNT.LE.BKLTH))GOTO 23035 CALL PUTCH(10, 2) 23034 LCOUNT=LCOUNT+1 GOTO 23033 23035 CONTINUE 23031 CONTINUE GOTO 23028 23027 CONTINUE IF(.NOT.(SKPING .EQ. 0))GOTO 23036 IF(.NOT.(NBRSEP .GT. 1 .OR. SEPLOC .EQ. 0))GOTO 23038 CALL BMATCH (LINE) IF(.NOT.(STACKL(LINE) .EQ.-3))GOTO 23040 CALL ERROR (21HBlock buffer overflow) 23040 CONTINUE 23038 CONTINUE CALL TALLY (PRT) IF(.NOT.(PRT .EQ. 1))GOTO 23042 CALL PRINTB IF(.NOT.(BKLTH .NE. 30000))GOTO 23044 LCOUNT=LCOUNT+1 23046 IF(.NOT.(LCOUNT.LE.BKLTH))GOTO 23048 CALL PUTCH(10,2) 23047 LCOUNT=LCOUNT+1 GOTO 23046 23048 CONTINUE 23044 CONTINUE 23042 CONTINUE 23036 CONTINUE 23028 CONTINUE SKPING = 1 PRTING = 0 RETURN END SUBROUTINE DOLIN (LINE) LOGICAL*1 LINE(100) INTEGER PRT INTEGER STACKL COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT IF(.NOT.(SKPING .EQ. 1))GOTO 23049 RETURN 23049 CONTINUE IF(.NOT.(PRTING .EQ. 1))GOTO 23051 IF(.NOT.(COUNT .EQ. 0))GOTO 23053 CALL OUTLIN(LINE) 23053 CONTINUE GOTO 23052 23051 CONTINUE CALL BMATCH (LINE) IF(.NOT.(STACKL(LINE) .EQ. -3))GOTO 23055 CALL ERROR (21HBlock buffer overflow) 23055 CONTINUE CALL TALLY(PRT) IF(.NOT.(PRT .EQ. 1 .AND. EXCEPT .EQ. 0))GOTO 23057 CALL PRINTB PRTING = 1 GOTO 23058 23057 CONTINUE IF(.NOT.(PRT .EQ. 0 .AND. EXCEPT .EQ. 1))GOTO 23059 SKPING = 1 23059 CONTINUE 23058 CONTINUE 23052 CONTINUE RETURN END SUBROUTINE FBARGS LOGICAL*1 ARG(400), DSEP(5) INTEGER GETARG, ITOC, GETPAT, STATUS, INDEX, CTOI INTEGER I, J COMMON /FBBUF/ FBBUF(5000), ENDSTK, FNAME(40), FB LOGICAL*1 FBBUF INTEGER ENDSTK LOGICAL*1 FNAME INTEGER FB COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT LOGICAL*1 ILPAT(18) LOGICAL*1 MAXEXP(30) DATA ILPAT(1)/105/,ILPAT(2)/108/,ILPAT(3)/108/,ILPAT(4)/101/,ILPAT *(5)/103/,ILPAT(6)/97/,ILPAT(7)/108/,ILPAT(8)/32/,ILPAT(9)/112/,ILP *AT(10)/97/,ILPAT(11)/116/,ILPAT(12)/116/,ILPAT(13)/101/,ILPAT(14)/ *114/,ILPAT(15)/110/,ILPAT(16)/58/,ILPAT(17)/32/,ILPAT(18)/0/ DATA MAXEXP(1)/109/,MAXEXP(2)/97/,MAXEXP(3)/120/,MAXEXP(4)/32/,MAX *EXP(5)/110/,MAXEXP(6)/98/,MAXEXP(7)/114/,MAXEXP(8)/32/,MAXEXP(9)/1 *01/,MAXEXP(10)/120/,MAXEXP(11)/112/,MAXEXP(12)/114/,MAXEXP(13)/101 */,MAXEXP(14)/115/,MAXEXP(15)/115/,MAXEXP(16)/105/,MAXEXP(17)/111/, *MAXEXP(18)/110/,MAXEXP(19)/115/,MAXEXP(20)/32/,MAXEXP(21)/97/,MAXE *XP(22)/108/,MAXEXP(23)/108/,MAXEXP(24)/111/,MAXEXP(25)/119/,MAXEXP *(26)/101/,MAXEXP(27)/100/,MAXEXP(28)/58/,MAXEXP(29)/32/,MAXEXP(30) */0/ DATA EXCEPT/0/ DATA ANDPAT/0/ DATA COUNT /0/ DATA MCOUNT /0/ DATA ELEVEL/0/ DATA SKPING /0/ DATA NBRSEP /0/ DATA SEPLOC /0/ DATA ENDSTK /0/ DATA FB /-3/ DATA BKLTH /30000/ DATA LCOUNT /0/ DATA DSEP(1), DSEP(2), DSEP(3), DSEP(4), DSEP(5) /37, 32, 42, 36, *0/ I=1 23061 IF(.NOT.(GETARG(I, ARG, 128) .NE. -1))GOTO 23063 IF(.NOT.(ARG(1) .EQ. 63 .AND. ARG(2) .EQ. 0))GOTO 23064 CALL FBERR GOTO 23065 23064 CONTINUE IF(.NOT.(ARG(1) .EQ. 45 .AND. (ARG(2) .EQ. 115 .OR. ARG(2) .EQ. 83 *)))GOTO 23066 NBRSEP = NBRSEP + 1 IF(.NOT.(NBRSEP .GT. 2))GOTO 23068 CALL ERROR (40Honly start and ending separators allowed) 23068 CONTINUE IF(.NOT.(GETPAT(ARG(3), SEPS(1, NBRSEP)) .EQ. -3))GOTO 23070 CALL PUTLIN(ILPAT, 3) CALL ERROR (ARG(3)) 23070 CONTINUE GOTO 23067 23066 CONTINUE IF(.NOT.(ARG(1) .EQ. 45))GOTO 23072 CALL FOLD(ARG) IF(.NOT.(INDEX(ARG, 97) .GT. 0))GOTO 23074 ANDPAT = 1 23074 CONTINUE IF(.NOT.(INDEX(ARG, 99) .GT. 0))GOTO 23076 COUNT = 1 23076 CONTINUE IF(.NOT.(INDEX(ARG, 120) .GT. 0))GOTO 23078 EXCEPT = 1 23078 CONTINUE J = INDEX(ARG, 108) IF(.NOT.(J .GT. 0))GOTO 23080 J = J + 1 BKLTH = CTOI(ARG, J) IF(.NOT.(BKLTH .LE. 0))GOTO 23082 CALL FBERR 23082 CONTINUE 23080 CONTINUE GOTO 23073 23072 CONTINUE IF(.NOT.(ELEVEL .LT. 10))GOTO 23084 ELEVEL = ELEVEL + 1 IF(.NOT.(GETPAT(ARG(1), PAT(1,ELEVEL)) .EQ. -3))GOTO 23086 CALL PUTLIN(ILPAT, 3) CALL ERROR (ARG) 23086 CONTINUE GOTO 23085 23084 CONTINUE CALL PUTLIN(MAXEXP, 3) STATUS = ITOC(10, ARG, 128) CALL ERROR(ARG) 23085 CONTINUE 23073 CONTINUE 23067 CONTINUE 23065 CONTINUE 23062 I=I+1 GOTO 23061 23063 CONTINUE IF(.NOT.(ELEVEL .EQ. 0))GOTO 23088 CALL FBERR 23088 CONTINUE IF(.NOT.(NBRSEP .EQ. 0))GOTO 23090 IF(.NOT.(GETPAT(DSEP, SEPS(1,1)) .EQ. -3))GOTO 23092 CALL ERROR (25Hillegal default separator) 23092 CONTINUE NBRSEP = 1 23090 CONTINUE IF(.NOT.(NBRSEP .GT. 1))GOTO 23094 SKPING = 1 23094 CONTINUE RETURN END SUBROUTINE FBERR CALL ERROR (53Husage: fb [-axc] [-ln] [-spat] [-spat] pat [pat .. *.]) RETURN END SUBROUTINE INITBK COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT COMMON /FBBUF/ FBBUF(5000), ENDSTK, FNAME(40), FB LOGICAL*1 FBBUF INTEGER ENDSTK LOGICAL*1 FNAME INTEGER FB I=1 23096 IF(.NOT.(I.LE.ELEVEL))GOTO 23098 LOCATD(I) = 0 23097 I=I+1 GOTO 23096 23098 CONTINUE ENDSTK = 0 IF(.NOT.(FB .NE. -3))GOTO 23099 CALL CLOSE(FB) CALL REMOVE(FNAME) FB = -3 23099 CONTINUE RETURN END SUBROUTINE OUTLIN(LINE) LOGICAL*1 LINE(100) COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT LCOUNT = LCOUNT + 1 IF(.NOT.(LCOUNT .LE. BKLTH))GOTO 23101 CALL PUTLIN(LINE, 2) 23101 CONTINUE RETURN END SUBROUTINE PRINTB INTEGER I LOGICAL*1 C LOGICAL*1 GETCH INTEGER OPEN COMMON /FBBUF/ FBBUF(5000), ENDSTK, FNAME(40), FB LOGICAL*1 FBBUF INTEGER ENDSTK LOGICAL*1 FNAME INTEGER FB COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT IF(.NOT.(ENDSTK .EQ. 0 .AND. FB .EQ. -3))GOTO 23103 RETURN 23103 CONTINUE IF(.NOT.(COUNT .EQ. 1))GOTO 23105 MCOUNT = MCOUNT + 1 RETURN 23105 CONTINUE IF(.NOT.(FB .NE. -3))GOTO 23107 CALL CLOSE(FB) FB = OPEN(FNAME, 1) IF(.NOT.(FB .EQ. -3))GOTO 23109 CALL ERROR (31Hproblems reopening scratch file) 23109 CONTINUE 23111 IF(.NOT.(GETCH(C, FB) .NE. -1))GOTO 23112 CALL PUTCH(C, 2) GOTO 23111 23112 CONTINUE CALL CLOSE(FB) CALL REMOVE (FNAME) FB = -3 23107 CONTINUE I=1 23113 IF(.NOT.(I.LE.ENDSTK))GOTO 23115 CALL PUTCH(FBBUF(I), 2) 23114 I=I+1 GOTO 23113 23115 CONTINUE RETURN END INTEGER FUNCTION STACKL (LINE) LOGICAL*1 LINE(400) INTEGER LENGTH, CREATE INTEGER LEN COMMON /FBBUF/ FBBUF(5000), ENDSTK, FNAME(40), FB LOGICAL*1 FBBUF INTEGER ENDSTK LOGICAL*1 FNAME INTEGER FB COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT LOGICAL*1 FBTEMP(4) DATA FBTEMP(1)/102/,FBTEMP(2)/98/,FBTEMP(3)/116/,FBTEMP(4)/0/ STACKL = 0 IF(.NOT.(COUNT .EQ. 1))GOTO 23116 RETURN 23116 CONTINUE LCOUNT = LCOUNT + 1 IF(.NOT.(LCOUNT .GT. BKLTH))GOTO 23118 RETURN 23118 CONTINUE LEN = LENGTH(LINE) IF(.NOT.( (LEN+ENDSTK+1) .GT. 5000))GOTO 23120 IF(.NOT.(FB .EQ. -3))GOTO 23122 CALL SCRATF(FBTEMP, FNAME) FB = CREATE(FNAME, 2) IF(.NOT.(FB .EQ. -3))GOTO 23124 CALL REMARK (29Hproblems opening scratch file) CALL CANT (FNAME) 23124 CONTINUE 23122 CONTINUE I=1 23126 IF(.NOT.(I.LE.ENDSTK))GOTO 23128 CALL PUTCH(FBBUF(I), FB) 23127 I=I+1 GOTO 23126 23128 CONTINUE CALL PUTLIN(LINE, FB) ENDSTK = 0 RETURN 23120 CONTINUE CALL SCOPY(LINE, 1, FBBUF, ENDSTK+1) ENDSTK = ENDSTK + LEN RETURN END SUBROUTINE TALLY (PRT) INTEGER PRT COMMON /FBCOM/ ANDPAT, COUNT, EXCEPT, ELEVEL, PAT(128, 10), ATEND, * ATBEG, SEPS(128,2), NBRSEP, SKPING, PRTING, LOCATD(128), MCOUNT, *SEPLOC, BKLTH, LCOUNT INTEGER ANDPAT INTEGER COUNT INTEGER EXCEPT INTEGER ELEVEL LOGICAL*1 PAT INTEGER ATEND INTEGER ATBEG LOGICAL*1 SEPS INTEGER NBRSEP INTEGER SEPLOC INTEGER MCOUNT INTEGER SKPING LOGICAL*1 LOCATD INTEGER BKLTH INTEGER LCOUNT PRT = ANDPAT I=1 23129 IF(.NOT.(I.LE.ELEVEL))GOTO 23131 IF(.NOT.(ANDPAT .EQ. 0 .AND. LOCATD(I) .EQ. 1))GOTO 23132 PRT = 1 GOTO 23131 23132 CONTINUE IF(.NOT.(ANDPAT .EQ. 1 .AND. LOCATD(I) .EQ. 0))GOTO 23134 PRT = 0 GOTO 23131 23134 CONTINUE 23133 CONTINUE 23130 I=I+1 GOTO 23129 23131 CONTINUE IF(.NOT.(EXCEPT .EQ. 1))GOTO 23136 IF(.NOT.(PRT .EQ. 0))GOTO 23138 PRT = 1 GOTO 23139 23138 CONTINUE PRT = 0 23139 CONTINUE 23136 CONTINUE RETURN END