Ejemplo: búsqueda binaria
El ejemplo siguiente muestra cómo puede codificar una búsqueda binaria de una tabla.
Supongamos que define una tabla que contiene 90 elementos de 40 bytes cada uno, y tres claves. Las claves primaria y secundaria (KEY-1 y KEY-2) están en orden ascendente, pero la clave menos significativa (KEY-3) está en orden descendente:
01 TABLE-A.
05 TABLE-ENTRY OCCURS 90 TIMES
ASCENDING KEY-1, KEY-2
DESCENDING KEY-3
INDEXED BY INDX-1.
10 PART-1 PIC 99.
10 KEY-1 PIC 9(5).
10 PART-2 PIC 9(6).
10 KEY-2 PIC 9(4).
10 PART-3 PIC 9(18).
10 KEY-3 PIC 9(5).
Puede buscar en esta tabla utilizando las sentencias siguientes:
SEARCH ALL TABLE-ENTRY
AT END
PERFORM NOENTRY
WHEN KEY-1 (INDX-1) = VALUE-1 AND
KEY-2 (INDX-1) = VALUE-2 AND
KEY-3 (INDX-1) = VALUE-3
MOVE PART-1 (INDX-1) TO OUTPUT-AREA
END-SEARCH
Si se encuentra una entrada en la que cada una de las tres claves es igual al valor con el que se compara (VALUE-1, VALUE-2y VALUE-3, respectivamente), PART-1 de dicha entrada se mueve a OUTPUT-AREA. Si no se encuentra ninguna clave coincidente en las entradas de TABLE-A, se realiza la rutina NOENTRY .