C*****THE PURPOSE OF IFIND2 IS TO FIND RECORDS BY THEIR ID. IT ASSUMES C*****A RANDOM SEARCH I.E. THE ID@S THAT YOU ARE SEARCHING FOR ARE C*****NOT NECESSARILY IN SEQUENCIAL ORDER. IT ALSO ASSUMES THAT THE C*****ID@S IN THE FILE ARE IN ASCENDING ORDER. **ID** IS THE TRIAL ID. C*****IF **IHOW** IS EQUAL TO -1, THEN THE ROUTINE SEARCHES UNTIL C*****IT FINDS THE FIRST ID LESS THAN **ID**. IF **IHOW** IS EQUAL TO C*****ZERO, THEN THE ROUTINE SEARCHES UNTILL IT FINDS THE ID EQUAL TO C***** **ID**. IF **IHOW** IS EQUAL TO +1 THEN THE ROUTINE SEARCHES C*****UNTILL IT FINDS THE FIRST ID GREATER THAN **ID**. IF THE RECORD C*****IS FOUND, THEN THE FUNCTION RETURNS WITH THE VALUE 1, AND LSR IS C*****SET EQUAL TO THE ADDRESS OF THE FOUND RECORD. IF THE RECORD IS C*****NOT FOUND THEN LSR REMAINS THE SAME AND THE FUNCTION RETURNS C*****WITH THE VALUE ZERO. FUNCTION IFIND2 (ID,IHOW) DIMENSION IPAR(10), IB(10) COMMON IPAR C*****SAVES ORIGINAL LSR ISLSR=IPAR(6) C***** TESTS TO SEE IF SEARCHED RECORD IS IN THE LIMITS OF THE FILE C*****ALSO TESTS TO SEE IF THE RECORD IS THE FIRST OR LAST IN THE FILE IPAR(6)=IPAR(3)-IPAR(5) CALL DIO (IPAR(6),1,IB,1) IF (IB(1)-ID) 300,305,11 300 IF (IHOW) 30,3,3 305 IF (IHOW) 62,30,3 11 IPAR(6)=IPAR(2) CALL DIO (IPAR(6),1,IB,1) IF (ID-IB(1)) 310,320,12 310 IF (IHOW) 3,3,30 320 IF (IHOW) 3,30,63 C*****END OF TEST C*****IGRTR IS THE UPPER LIMIT. ISMLR IS THE LOWER LIMIT 12 IGRTR=IPAR(3) ISMLR=IPAR(2) C*****COMPUTE NUMBER OF RECORDS BETWEEN LIMITS NR=(IGRTR-ISMLR)/IPAR(5) IF (NR)3,3,2 C*****RETURNS WITH ZERO IF RECORD NOT FOUND 3 IFIND2=0 IPAR(6)=ISLSR RETURN 2 IPAR(6)=((NR/2)*IPAR(5))+ISMLR CALL DIO (IPAR(6),1,IB,1) IF (IHOW)100,200,100 C*****SEARCH WITH IHOW = 0 200 IF (ID-IB(1)) 20,30,40 C*****RETURNS WITH ONE IF RECORD FOUND 30 IFIND2=1 35 RETURN 20 IGRTR=IPAR(6) 5 NR=(IGRTR-ISMLR)/IPAR(5) IF(NR-1)3,3,2 40 ISMLR=IPAR(6) GO TO 5 C*****SEARCHES WITH IHOW = +1 OR -1 100 IF(ID-IB(1)) 50,60,70 60 IF (IHOW) 62,63,63 62 IPAR(6)=IPAR(6)-IPAR(5) GO TO 30 63 IPAR(6)=IPAR(6)+IPAR(5) GO TO 30 50 IGRTR=IPAR(6) 6 NR=(IGRTR-ISMLR)/IPAR(5) IF (NR-1) 7,7,2 C*****RECORD FOUND. EITHER EQUAL TO IGRTR OR ISMLR DEPENDING ON IHOW 7 IF(IHOW) 8,8,9 8 IPAR(6)=ISMLR GO TO 30 9 IPAR(6)= IGRTR GO TO 30 70 ISMLR=IPAR(6) GO TO 6 END