SUBROUTINE LIBTAB (LUN, TABTYP, MATYPE, SEARCH, ELEM, FOUND) IMPLICIT INTEGER (A-Z) DIMENSION SEARCH (2), ELEM(4) LOGICAL FOUND C DIMENSION HEADER(23), BLOCK(256) LOGICAL INIT C DATA INIT /.FALSE./ C IF (INIT) GOTO 100 READ (LUN'1) HEADER INIT = .TRUE. 100 CONTINUE IF (FOUND) GOTO 190 OFFSET = 11 IF (TABTYP .EQ. 2) OFFSET = 15 SBLK = HEADER(OFFSET) IX = HEADER(OFFSET+1)-HEADER(OFFSET+2) IF (IX .LE. 0) GOTO 210 EBLK = SBLK + (IX/64) IF (MOD(IX,64) .EQ. 0) EBLK = EBLK - 1 I = SBLK 150 READ (LUN'I) BLOCK LOOK = 1 IF (MATYPE .EQ. 2) LOOK = 3 DO 200 J=1, 64 IF (SEARCH(1) .NE. BLOCK(LOOK)) GOTO 190 IF (SEARCH(2) .NE. BLOCK(LOOK+1)) GOTO 190 GOTO 300 190 LOOK = LOOK + 4 200 CONTINUE I = I + 1 IF (I .LE. EBLK) GOTO 150 210 FOUND = .FALSE. RETURN 300 CONTINUE FOUND = .TRUE. IX = (J-1)*4 + 1 DO 310 K=1, 4 ELEM(K) = BLOCK(IX) IX = IX + 1 310 CONTINUE RETURN C C--- Entry point LIBTAI for libtab init -- resets logical variable INIT C to .FALSE. C ENTRY LIBTAI INIT = .FALSE. RETURN END