Buscar todo en COBOL

La búsqueda es una de las operaciones más importantes a la hora de realizar operaciones sobre cualquier estructura de datos. Podemos realizar la operación de búsqueda de dos maneras:

  1. Búsqueda lineal: en esto, simplemente iteramos a través de la estructura de datos (array) y buscamos el elemento dado en la array.
  2. Búsqueda binaria: en la búsqueda binaria, primero encontramos el elemento central de la array,
    • Si el elemento de búsqueda es igual al elemento del medio, la operación de búsqueda termina aquí.
    • Si el elemento de búsqueda es mayor que el elemento del medio, la estructura de datos se divide en dos partes y buscamos el elemento en la segunda mitad y nuevamente verificamos la relación relacional entre el elemento de búsqueda y el elemento del medio del subconjunto.
    • Si el elemento de búsqueda es menor que el elemento del medio, entonces la array se divide en dos partes y buscamos el elemento en la primera mitad y nuevamente verificamos la relación relacional entre el elemento de búsqueda y el elemento del medio de la sub-array.
    • No importa qué mitad seleccione para buscar el elemento, solo el elemento medio de ambas mitades se compara con el elemento de búsqueda y nuevamente verifica la relación relacional y divide la subarray en dos mitades en consecuencia. Este proceso continúa ya sea hasta que se encuentre el elemento de búsqueda o hasta que finalice la array.

En COBOL, para realizar estas operaciones de búsqueda, tenemos dos verbos, es decir, el verbo de búsqueda para la búsqueda lineal y el verbo de búsqueda en todos los verbos para la búsqueda binaria. En este artículo aprenderemos sobre el Verbo Buscar Todo.

Search-All Verb realiza una operación rápida y es más eficiente en comparación con Search Verb. En este caso, no hay necesidad de usar el verbo SET antes del verbo SEARCH ALL porque el verbo Search-All lo hace automáticamente. Hay algunas reglas que deben tenerse en cuenta antes de utilizar el verbo Buscar todo:

  1. La array debe estar ordenada, es decir, debe organizarse en orden ascendente o descendente.
  2. Este verbo solo se puede usar con la array unidimensional.
  3. No es necesario asignar el valor inicial a la clave antes de realizar la operación.
  4. Sólo comprueba la condición de igualdad.
  5. Si el elemento no se encuentra en la array, se ejecuta la declaración imperativa y, si no hay ninguna declaración imperativa, el control se pasa a la siguiente declaración.

Sintaxis:

SEARCH ALL table name [ AT END imperative statement ]
WHEN condition-1  { imperative statement/NEXT SENTENCE } [END SEARCH].

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
      WORKING-STORAGE SECTION.
      77 SEARCHRNO PIC 99.
      77 N PIC 99.
      01 ARRAY.
         02 ARR OCCURS 10 TIMES ASCENDING KEY IS RNO INDEXED BY I.
               03 RNO PIC 99.
PROCEDURE DIVISION.
        
         // AFTER ENTERING THE ELEMENTS IN ARRAY 
           // WE SEARCH THE ROLL NUMBER ENTERED 
           // BY USER IN VARIABLE SEARCHRNO.     
        SEARCH ALL ARR AT END DISPLAY "NOT FOUND"
        WHEN RNO(I) = SEARCHRNO DISPLAY "FOUND".
STOP RUN.

Producción:

  • Para buscar el número de rollo en la array que está realmente disponible en la array.

  • Para buscar el número de rollo en la array que no está disponible en la array.

Publicación traducida automáticamente

Artículo escrito por deepika92 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *