PROGRAM CDASEA C C Open a file, get values to search for, and report all occurences of C the values in the file. C C Define Variables. C C Filename Variables, Arrays. C INTEGER*2 ICNT !Character count LOGICAL*1 FILE(40) !Filename C C Value Variables, Arrays. C INTEGER*2 IVAL !Number of values INTEGER*2 IIDX !Value index INTEGER*2 VALU(20) !Value array C C Comparision Variables, Arrays. C INTEGER*4 IBLK !Block number INTEGER*4 IWRD !Block index INTEGER*4 IADR !Physical address INTEGER*2 IBUF(256) !Block buffer C C Get name of file and open for input. C 100 CONTINUE WRITE (5,1000) READ (5,1100,END=999) ICNT,FILE C C Open file, loop if there is any error. C FILE(ICNT+1) = 0 OPEN (UNIT=1 1 ,NAME=FILE 2 ,TYPE='OLD' 3 ,READONLY 4 ,ACCESS='SEQUENTIAL' 5 ,FORM='UNFORMATTED' 6 ,RECORDSIZE=128 7 ,RECORDTYPE='FIXED' 8 ,ERR=100) C C Read values (up to 20) to search for. Type ^Z when done entering list. C DO 200 IIDX = 1,20 WRITE (5,2000) IIDX READ (5,2100,END=300) VALU(IIDX) 200 CONTINUE IIDX = 21 C C Read file sequentially and check for values given. C 300 CONTINUE IVAL = IIDX-1 IBLK = 1 310 CONTINUE READ (1,END=900) IBUF DO 320 IWRD = 1,256 DO 321 IIDX = 1,IVAL IF (IBUF(IWRD).NE.VALU(IIDX)) GOTO 321 IADR = ((IBLK-1)*512)+((IWRD-1)*2) WRITE (5,3000) IADR,IBUF(IWRD) 321 CONTINUE 320 CONTINUE IBLK = IBLK+1 GOTO 310 C C Close file. C 900 CONTINUE CLOSE (UNIT=1) C C Exit program. C 999 CONTINUE STOP 'CDASEA' C C FORMAT STATEMENTS. C 1000 FORMAT ('$Filename: ') 1100 FORMAT (Q,40A1) 2000 FORMAT ('$Value ',I2,': ') 2100 FORMAT (O6) 3000 FORMAT (' ADDRESS ',O12,' HAS VALUE ',O6) END