%NOLIST 1060 H=0 IF RECORD.COUNT < 1 THEN H=-1:L=1:RETURN READ #Y2,1;VAR1,VAR REMARK CHECK BEGINNING OF FILE VAR=FNEXACT(VAR1,VAR) IF K < VAR THEN H=-1:L=1:RETURN REMARK COMPARE RECORD WITH SEARCH KEY IF K = VAR THEN L=1:RETURN READ #Y2,RECORD.COUNT;VAR1,VAR REMARK REPEAT THE PROCESS FOR LAST RECORD VAR=FNEXACT(VAR1,VAR) IF K > VAR THEN H=-1:L=RECORD.COUNT+1:RETURN IF K = VAR THEN L=RECORD.COUNT:RETURN H=RECORD.COUNT L=0 1070 M=INT((L+H)/2) REMARK BINARY SEARCH ROUTINE; EXACT OR EXPECTED\ LOCATION OF THE KEY IS PASSED BACK IN L. READ #Y2,M;VAR1,VAR VAR=FNEXACT(VAR1,VAR) IF VAR=K THEN L=M:RETURN IF VAR > K THEN H=M IF VAR < K THEN L=M IF H=M+1 THEN H=-1:L=M+1:READ #Y2,L;VAR1,VAR:RETURN REMARK RETURN POINTER AND KEY OF NEXT-HIGHEST RECORD GOTO 1070 %LIST