You are on page 1of 3

TABLA: UNA TABLA ES UN CONJUNTO DE ELEMENTOS CON UN MISMO TIPO Y LONG.

QUE SE DENOMINAN CON EL MISMO NOMBRE Y SE DIFERENCIAN POR UN SUBNDICE. ej.: tabla de dias de la semana. ------------------------------------------------------------------|lunes |martes |miercoles|jueves |viernes |sbado |domingo | -------------------------------------------------------------------

TIPOS DE TABLAS: 1- LONG FIJA 2- LONG VARIABLE AMBAS PUEDEN SER: 1- NO INDEXADAS: 1-1 NO SE INDICA QUE ES -INDEXED- y el nombre del SUBINDICE1-2 EL SUBINDICE SE DEBE DEFINIR EN WORKING, 1-3 LAS TABLAS NO INDEXADAS NO PERMITEN LA SENTENCIA SEARCH (SENTENCIA SEARCH SIRVE PARA AUTOMATIZAR LA BUSQUEDA Y PUEDE OPTIMIZAR DICHA BUSQUEDA). EJEMPLO: CREAR UNA TABLA NO INDEXADA DE LONG. FIJA Y BUSCA DE FORMA SECUENCIAL. 01 IND PIC 9 VALUE 1. 01 SEMANA. 05 W-DIA OCCURS 7 TIMES PIC X(10). 2- INDEXADAS: 2-1 SE INDICA QUE ES -INDEXED- y el nombre del INDICE2-2 EL INDICE NO SE DEBE DEFINIR EN WORKING, 2-3 LAS TABLAS INDEXADAS PERMITEN LA SENTENCIA SEARCH QUE AUTOMATIZA LA BUSQUEDA Y PUEDE OPTIMIZAR DICHA BUSQUEDA. 2-4 NO SE PUEDE USAR MOVE, ADD, SUBSTRAT, SINO QUE SE USAR -SET-. EJEMPLOS: 1- PARA INICIALIZAR: SET NDX TO 1 2- para incrementar: 3- para decrementar: 01 SEMANA. 05 W-DIA SET NDX UP BY 1 SET NDX DOWN BY 1

OCCURS 7 TIMES PIC X(10)

INDEXED BY NDX.

01 W-TABLA-SEMANA-ORDENADA. 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 05 FILLER PIC X(10) VALUE 01 W-SEMORD REDEFINES W-TABLA-SEMANA-ORDENADA. 05 W-DIA OCCURS 7 TIMES

"DOMINGO "LUNES "MARTES "MIERCOLES "JUEVES "VIERNES "SABADO

". ". ". ". ". ". ".

ASCENDING KEY IS W-DIA-ORD INDEXED BY INDEX-B. 10 W-DIA-ORD PIC X(10). *--------------------------- FIN TABLA ORDENADA ----

DOS TIPOS DE BUSQUEDAS CON SEARCH: 1- SECUENCIAL 2- BINARIA O DICOTMICA: optimiza la bsqueda (muy til para tablas grandes). 1- Es obligatorio que venga -ordenada- (por la variable definida en la tabla ASCENDENTE O DESCENDENT). 2- Con este mtodo se comienza a buscar en el elemento central, Si el dato que buscamos est ah, se termina la bsqueda. Si no es el buscado se comprueba que el dato que buscamos es mayor o menor que el dato en el que estamos: si es menor tomaremos el elemento medio entre el primero y el que acabamos de mirar, y si es mayor tomaremos el elemento medio entre el que acabomos de mirar y el mximo. 1 =========> Ejemplo de SEARCH (secuencial) WORKING-STORAGE SECTION. 01 WHOLE-TABLE. 05 TABLE-ELMT OCCURS nnn TIMES INDEXED BY NDX. 10 KEYFIELD ... 10 REST-OF-STUFF ... PROCEDURE DIVISION. ... SET NDX TO 1 SEARCH TABLE-ELMT VARYING NDX WHEN KEYFIELD(NDX) = SEARCH-ARG SET FOUND TO TRUE WHEN KEYFIELD(NDX) = HIGH-VALUES SET NOT-FOUND TO TRUE END-SEARCH IF FOUND ... END-IF IF NOT-FOUND DISPLAY SEARCH-ARG " NO ESTA EN LA TABLA." END-IF

2 =========> Ejemplo de bsqueda binaria: con SEARCH ALL (TABLA VARIABLE) DATA DIVISION. ... 01 WHOLE-TABLE. 03 TABLE-ELMT OCCURS 1 TO 250 TIMES DEPENDING ON PARM2 ASCENDING KEY IS KEYFIELD INDEXED BY NDX.

05 KEYFIELD PIC X(n). 05 ... ... PROCEDURE DIVISION. MOVE ... TO PARM2 SEARCH ALL TABLE-ELMT AT END SET NOT_FOUND TO TRUE WHEN KEYFIELD(NDX) = SEARCH-ARG SET FOUND TO TRUE END-SEARCH IF FOUND ... END-IF

REALIZAR EJERCICIO PBXXC310: CREA UNA TABLA INDEXADA DE numero de elementos fijos Y BUSCA DE FORMA SECUENCIAL CON SENTENCIA SEARCH, UTILIZANDO EL SET.

CREAR EL PGM PBXXC310 (COPIA DEL PBXXC309): EL PGM VA A HACER LO MISMO PERO EN VEZ DE CON TABLA NO INDEXADA, SERA CON TABLA INDEXADA Y LA BUSQUEDA SER CON LA SENTENCIA SEARCH (NO BINARIA).

You might also like