SUBROUTINE SRCH (BLK) C C ROBERT WATSON C CISCO, INC. C (918)665-2110 C 4135 S. 100TH E. AVE. C TULSA OK 74145 C C THIS PROGRAM HAS BEEN DONATED TO THE PUBLIC DOMAIN C AND IS NOT TO BE COPYRIGHTED. C INTEGER*4 PC, IBEG, IEND INTEGER*2 BLK(256), PCDUM(2), LOPC, 1 HIPC BYTE Z, LOC(6), RD, 1 ANS, FND, BDUM(2), 2 F, RAD(3) EQUIVALENCE (PC,PCDUM(1)), (PCDUM(1),LOPC), 1 (PCDUM(2),HIPC), (IDUM,BDUM(1)) Z = .TRUE. RD = .FALSE. FND = .FALSE. 100 WRITE (5,210) 210 FORMAT (/,' ENTER WORD(S) TO BE FOUND AS ASCII, OCTAL WORD,', 1 ' OR RAD50',/,' (A, O, OR R)? ',$) READ (5,215,END=900) F 215 FORMAT (A1) IF (F.NE.'A' .AND. F.NE.'O' .AND. F.NE.'R') GO TO 100 IF (F .NE. 'A') GO TO 250 220 WRITE (5,230) 230 FORMAT (/,' ENTER TWO ASCII CHARACTERS: ',$) READ (5,240,END=900) BDUM 240 FORMAT (2A1) IWD1 = IDUM GO TO 320 250 IF (F .EQ. 'R') GO TO 290 260 WRITE (5,270) 270 FORMAT (/,' ENTER ONE TO SIX OCTAL DIGITS: ',$) READ (5,280,ERR=260,END=900) IWD1 280 FORMAT (O6) GO TO 320 290 WRITE (5,300) 300 FORMAT (/,' ENTER THREE RAD50 CHARACTERS: ',$) READ (5,310,END=900) RAD 310 FORMAT (3A1) N = IRAD50 (3, RAD, IWD1) IF (N .NE. 3) GO TO 290 320 WRITE (5,330) 330 FORMAT (/,' DO YOU WANT TO SEARCH FOR TWO WORDS (Y OR N)? ',$) READ (5,215,END=900) ANS IF (ANS .NE. 'Y') GO TO 400 340 WRITE (5,350) 350 FORMAT (/,' ENTER CONTENTS OF FOLLOWING WORD IN SAME', 1 ' FORMAT: ',$) IF (F .NE. 'A') GO TO 360 READ (5,240,END=900) BDUM IWD2 = IDUM GO TO 400 360 IF (F .EQ. 'R') GO TO 370 READ (5,280,ERR=340,END=900) IWD2 GO TO 400 370 READ (5,310,END=900) RAD N = IRAD50 (3, RAD, IWD2) IF (N .NE. 3) GO TO 340 400 WRITE (5,500) 500 FORMAT (/,' ENTER OCTAL TERMINATING ADDRESS : ',$) READ (5,280,ERR=400,END=900) IEND WRITE (5,510) 510 FORMAT (' ') IBEG = 0 CALL INIT (BLK, ISUB, IBEG, IREC, PC) PC = IBEG 600 IF (BLK(ISUB) .NE. IWD1) GO TO 800 IF (ANS .EQ. 'Y') GO TO 605 CALL OCTL (LOPC, LOC, Z) WRITE (5,700) LOC FND = .TRUE. GO TO 800 605 ISUB = ISUB + 1 IF (ISUB .LE. 256) GO TO 610 IREC = IREC + 1 CALL FILL (BLK, IREC, ISUB, PC) RD = .TRUE. 610 IF (BLK(ISUB) .NE. IWD2) GO TO 710 CALL OCTL (LOPC, LOC, Z) WRITE (5,700) LOC 700 FORMAT (' FOUND AT LOCATION ',6A1) FND = .TRUE. 710 IF (RD) GO TO 720 ISUB = ISUB - 1 GO TO 800 720 IREC = IREC - 1 CALL FILL (BLK, IREC, ISUB, PC) ISUB = 256 RD = .FALSE. 800 PC = PC + 2 IF (PC .GT. IEND) GO TO 850 ISUB = ISUB + 1 IF (ISUB .LE. 256) GO TO 600 IREC = IREC + 1 CALL FILL (BLK, IREC, ISUB, PC) GO TO 600 850 IF (.NOT. FND) WRITE (5,860) 860 FORMAT (' NOT FOUND') RETURN 900 STOP END