43 lines
1.6 KiB
Plaintext
43 lines
1.6 KiB
Plaintext
|
*******************************************************************************
|
||
|
*
|
||
|
* New System Admin - This routine will search for a particular value in
|
||
|
* a dynamic array, and return the location at which it was found.
|
||
|
*
|
||
|
* Module %M% Version %I% Date %H%
|
||
|
*
|
||
|
* (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved
|
||
|
* This is unpublished proprietary source code of Ardent Software Inc.
|
||
|
* The copyright notice above does not evidence any actual or intended
|
||
|
* publication of such source code.
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* Maintenence log - insert most recent change descriptions at top
|
||
|
*
|
||
|
* Date.... GTAR# WHO Description.........................................
|
||
|
* 10/13/98 23801 RGA Change copyright info.
|
||
|
* 11/05/90 7393 DPB Routine first created and admin'd.
|
||
|
*******************************************************************************
|
||
|
|
||
|
subroutine loc.by.fld (dyn.array, siz, start.field, val, expr, ret.field)
|
||
|
* Searches through dynamic array dyn.array, of size siz, starting
|
||
|
* at field start.field,
|
||
|
* and returns the ret.field which is the field whose value val
|
||
|
* is equal to expr.
|
||
|
* Starts search at field specified
|
||
|
* Returns 0 if not found.
|
||
|
* This is like an execution of select, find me the field whose third value
|
||
|
* is this expression.
|
||
|
* Weakness - doesn't handle subvalues.
|
||
|
start.from = if start.field <= 1 then 1 else start.field
|
||
|
ret.field = 0
|
||
|
* print @(0,22):@(-3):@SYS.BELL:"LOC.BY.FLD called."
|
||
|
for i = start.field to siz
|
||
|
while ret.field = 0 ; * For efficiency - return first hit
|
||
|
if dyn.array<i,val> = expr
|
||
|
then
|
||
|
ret.field = i
|
||
|
end
|
||
|
next i
|
||
|
return
|