Searching an Array with an Index

Para averiguar qué elemento satisface una búsqueda LOOKUP, inicie la búsqueda en un elemento determinado de la matriz. Para realizar este tipo de búsqueda, realice las entradas en las especificaciones de cálculo como lo haría para una matriz sin un índice. Sin embargo, en el factor 2, especifique el nombre de la matriz que se va a buscar, seguido de un campo numérico entre paréntesis (con cero posiciones decimales) que contenga el número del elemento en el que se va a iniciar la búsqueda. Esta constante numérica o campo se denomina índice porque apunta a un determinado elemento de la matriz. El índice se actualiza con el número de elemento que ha satisfecho la búsqueda o se establece en 0 si la búsqueda ha fallado.

Puede utilizar una constante numérica como índice para probar la existencia de un elemento que satisfaga la búsqueda empezando por un elemento que no sea 1.

Todas las demás reglas que se aplican a una matriz sin un índice se aplican a una matriz con un índice.

La Figura 1 muestra una LOOKUP en una matriz con un índice.

Figura 1. Operación LOOKUP en una matriz con un índice
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
FARRFILE   IT   F   25            DISK
F*
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
DDPTNOS           S              5S 0 DIM(50) FROMFILE(ARRFILE)
DDPTDSC           S             20A   DIM(50) ALT(DPTNOS)
D*
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
C* The Z-ADD operation begins the LOOKUP at the first element in DPTNOS.
C                   Z-ADD     1             X                 3 0
C* At the end of a successful LOOKUP, when an element has been found
C* that contains an entry equal to the search argument DPTNUM,
C* indicator 20 is set on and the MOVE operation places the department
C* description, corresponding to the department number, into DPTNAM.
C     DPTNUM        LOOKUP    DPTNOS(X)                              20
C* If an element is not found that is equal to the search argument,
C* element X of DPTDSC is moved to DPTNAM.
C                   IF        NOT *IN20
C                   MOVE      DPTDSC(X)     DPTNAM           20
C                   ENDIF

Este ejemplo muestra la misma matriz de números de departamento, DPTNOS, que la Figura 1. Sin embargo, también se define una matriz alternativa de descripciones de departamento, DPTDSC. Cada elemento en DPTDSC tiene una longitud de 20 posiciones. Si no hay suficientes datos en el archivo para inicializar toda la matriz, los elementos restantes en DPTNOS se rellenan con ceros y los elementos restantes en DPTDSC se rellenan con espacios en blanco.