SERCH - GENERALIZED BINARY FILE SRAECH SUBROUTINE

SERCH is an AlphaBASIC subroutine that handles binary ans sequential
searching of disk files.  It allows your program to access a file via
symbolic keys, without paying the overhead costs of ISAM.

The files used by the SERCH subroutine are standard random access (i.e.,
contiguous) files.  To allow the use if binary search techniques, but avoid
the need to sort the data file  each time an addition is made, SERCH supports
an overflow area.  When SERCH is called, the number of sorted records is
given.  A binary search is performed on the sorted area.  If the specified
record is not found, a sequential search of the overflaw area is performed.
Options allow control over when a binary search and/or a sequential search
is performed.

SERCH is called by the following:

    XCALL SERCH, CHANEL, REDREC, KEY, STPOS1, ENPOS1, BSEND, BSMID, SRCCTL,
                 SRCOPT, RCNOST, RCNOEN, STPOS2, ENPOS2, STPOS3, ENPOS3

Where:

    CHANEL	Channel on which file to be searched is currently open
		for ramdom processing. (File #)

    REDREC	String or unformatted variable in which found record is
		returned.

    KEY		String specifying key to be searched for.  If more than
		one key position is being used, this varaible contains
		all of the keys, concatenated together.

    STPOS1	The first character position in the file record occupied
		by key #1.

    ENPOS1	The last character position in the file record occupied
		by key #1.

    BSEND	The number of sorted records in the file.

    BSMID	The relative record number of the found record is
		returned in this variable.

    SRCCTL	Completion code returned by SERCH:
			0 = record was found.
			1 = record was not found.

    SRCOPT	Varaible specifying the type of search to be performed:
			1 = display the "PLEASE WAIT" message,
			    perform a binary search, clear the
			    message, and return.
			2 = Perform a binary search, clear line
			    12 of the screen, and return.
			3 = Display the wait message, perform a
			    binary search, and return.
			4 = Perform a binary search and return.
			5 = Perform a sequential search starting
			    with the record specified by BSMID.

    RCNOST	The first character position within the file record used
		to denote record deletion.  A record is flagged as
		deleted if the positions specified by RCNOST and RCNOEN
		contain binary zero.  This zero may be in form of a 
		binary variable containing zero, a flaoting point number
		containing zero, or a string containing a null.

    RCNOEN	The last character position within the file record used
		to denote record deletion.  See RCNOST above.

    STPOS2	The starting position of key #2 within the file record.
		If key #2 is not used, this should be zero.

    ENPOS2	The ending position of key #2 within the file record.

    STPOS3	The starting position of key #3 within the file record.
		If key #3 is not used, this should be zero.

    ENPOS3	The ending position of key #3 within the file record.

All unused records in the file (i.e., thise beyond the overflow area) must
contain right square brackets (]) in the first six characters of the record.
This is used to detect the end of the area to be searched.

The SERCH subroutine makes use of FLTCNV.PRG, which must be loaded into user
or system memory before SERCH.SBR is used (AMOSL systems ignore.)

SERCH if fully reentrant and may be loaded into system memory.