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 .