C Copyright(C) 1999-2020 National Technology & Engineering Solutions C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with C NTESS, the U.S. Government retains certain rights in this software. C C See packages/seacas/LICENSE for details SUBROUTINE SRCHI(IVEC,ILBIN,IUBIN,NUM,ICOD,LOC) C THIS SUBROUTINE SEARCHES ROW ILB THOURGH ROW IUB OF A C NUMERICALLY ORDERED INTEGER COLUMN VECTOR FOR THE OCCURRENCE C THE VALUE NUM. C IF NUM IS FOUND ICOD IS SET TO UNITY AND LOC IS THE ROW NUMBER C WHERE NUM RESIDES. IF NUM IS NOT FOUND ICOD IS ZERO AND LOC IS C THE ROW NUMBER WHERE NUM WOULD RESIDE IF IT WERE IN THE NUMER- C ICALLY ORDER LIST. BOB LUST C THIS SUBROUTINE HAS BEEN CHANGED FROM BOB LUST'S VERSION C AND NOW ASSUMES THAT THERE IS NO MORE THAN ONE MATCH C IN THE ORDERED LIST 'IVEC'. BILL MILLS-CURRAN JAN. 1, 1983 C IVEC ORDERED LIST C ILBIN LOW NUMBERED ROW OF SEARCH RANGE C IUBIN HIGH NUMBERED ROW OF SEARCH RANGE C NUM VALUE TO BE LOCATED IN IVEC C ICOD RETURN CODE 0 = NO MATCH 1 = MATCH C LOC LOCATION IN IVEC FOR NUM DIMENSION IVEC(1) ILB = ILBIN IUB = IUBIN ICOD=0 IF (IUB .LT. ILB) THEN LOC = 1 RETURN END IF C CHECK TO SEE IF NUM IS AT EITHER END OF LIST IF(IVEC(ILB).GT.NUM)THEN LOC=ILB RETURN ELSE IF(IVEC(IUB).LT.NUM) THEN LOC=IUB+1 RETURN END IF C NUM IS INTERNAL TO IVEC 100 MID=(ILB+IUB)/2 IF(MID.LE.ILB)GO TO 110 NVAL=IVEC(MID) IF(NVAL.LT.NUM) THEN ILB=MID GO TO 100 ELSE IF(NVAL.GT.NUM) THEN IUB=MID GO TO 100 ELSE ICOD=1 LOC=MID RETURN END IF 110 IF(NUM.EQ.IVEC(ILB)) THEN ICOD=1 LOC=ILB RETURN ELSE IF(NUM.EQ.IVEC(IUB)) THEN ICOD=1 LOC=IUB RETURN ELSE LOC=IUB RETURN END IF END