C* KPSLOC - LOCATE STRING C SUBROUTINE KPSLOC (BTEMP, IDEL1, IDEL2, 1 NSTR, ISV, IEV, LLEFT, LRIGHT, NERR) C C WHERE - C BTEMP - 80 CHARACTER BUFFER TO SEARCH C IDEL1 - FIRST DELIMITER + 1 C IDEL2 - SECOND DELIMITER - 1 C NSTR - NUMBER OF STRINGS FOUND (RETURNED) C ISV - START POSITION VECTOR (RETURNED) C IEV - END POCITION VECTOR (RETURNED) C LLEFT - LOGICAL CLEAR STRING ON LEFT (RETURNED) C LRIGHT - LOGICA CLEAR STRING ON RIGHT (RETURNED) C NERR - ERROR, 0 OK, NON-ZERO NOT OK. C IMPLICIT LOGICAL (L), BYTE (B) C DIMENSION BTEMP(80) DIMENSION ISV(5), IEV(5) C DO 50 I=1, 5 IEV(I) = 0 50 ISV(I) = 0 MAXSTR = 5 NERR = 0 C NSTR = 1 I = IDEL1 ISV(NSTR) = IDEL1 LLEFT = .FALSE. LRIGHT = .FALSE. C C TOP OF LOOP TO SEARCH FOR 'I DON'T CARES' C 100 CONTINUE IF (BTEMP(I) .NE. '.') GO TO 400 C C CHECK FOR STRING OF DOTS ...... C DO 110 J=I, IDEL2 IF (BTEMP(J) .NE. '.') GO TO 150 110 CONTINUE C C TRAILING ....... CONDITION C CONTINUE IF (J-I .LT. 3) GO TO 260 ! NOT >=3 DOTS IEV(NSTR) = I-1 LRIGHT = .TRUE. ! FLUSH ALL TO RHS IF (I .NE. IDEL1) GO TO 450 ! IS STRING ALL DOTS? LLEFT = .TRUE. NSTR = 0 GO TO 450 C C CHECK FOR LEADING ........ C 150 CONTINUE IF (J-I .LT. 3) GO TO 260 ! NOT >=3 DOTS IF (I .NE. IDEL1) GO TO 200 ! IMBEDDED DOTS LLEFT = .TRUE. GO TO 250 C C IMBEDDED DOTS STR1.......STR2 C 200 CONTINUE IEV(NSTR) = I-1 NSTR = NSTR + 1 IF (NSTR .GT. MAXSTR) GO TO 460 250 ISV(NSTR) = J 260 I = J - 1 C 400 CONTINUE I = I + 1 IF (I .LE. IDEL2) GO TO 100 IEV(NSTR) = IDEL2 C 450 CONTINUE C D TYPE 500,NSTR,IS,IE,LRIGHT,LLEFT D500 FORMAT (' ',I5,10I3,2(1X,L1)) GO TO 470 C 460 NERR = -1 470 CONTINUE RETURN END