Las matrices de COBOL son conocidos como tablas. Un array es una estructura de datos lineal y es una recopilación de los distintos elementos de datos del mismo tipo. Los datos de una tabla se clasifican internamente.
Declaración mesa
Tabla de Datos se declara en División. se produceCláusula se utiliza para definir una tabla. Cláusula se indica la repetición de datos definición de nombre. Sólo se puede utilizar con números de nivel a partir de 02 a 49. No se produce el uso con cláusula redefine. Descripción de un y bidimensional tabla es el siguiente:
One-Dimensional Tabla
En una tabla multidimensional, se produce cláusula sólo se utiliza una vez en la declaración. WS-TABLA es el elemento de grupo que contiene tabla. WS-B nombres de los elementos de la tabla que se producen 10 veces.
Sintaxis
Siguiente es la sintaxis para definir una tabla multidimensional:
01 WS-TABLE. 05 WS-A PIC A(10) OCCURS 10 TIMES.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A PIC A(10) VALUE 'TUTORIALS' OCCURS 5 TIMES. PROCEDURE DIVISION. DISPLAY "ONE-D TABLE : "WS-TABLE. STOP RUN.
JCL para ejecutar el programa COBOL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
ONE-D TABLE : TUTORIALS TUTORIALS TUTORIALS TUTORIALS TUTORIALS
Two-Dimensional Tabla
Una tabla bidimensional se crea con los elementos de datos se longitud variable. Para referencia, vaya a través de la sintaxis y, a continuación, intentar analizar la tabla. La primera matriz(WS-A) puede ocurrir a partir de 1 a 10 veces y la matriz interna(WS-C) puede ocurrir de 1 a 5 veces. Para cada una de las entradas de WS-A, habrá 5 entradas correspondientes de WS-C.
Sintaxis
Siguiente es la sintaxis para la definición de una tabla de dos dimensiones:
01 WS-TABLE. 05 WS-A OCCURS 10 TIMES. 10 WS-B PIC A(10). 10 WS-C OCCURS 5 TIMES. 15 WS-D PIC X(6).
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A OCCURS 2 TIMES. 10 WS-B PIC A(10) VALUE ' TUTORIALS'. 10 WS-C OCCURS 2 TIMES. 15 WS-D PIC X(6) VALUE ' POINT'. PROCEDURE DIVISION. DISPLAY "TWO-D TABLE : "WS-TABLE. STOP RUN.
JCL para ejecutar el programa COBOL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
TWO-D TABLE : TUTORIALS POINT POINT TUTORIALS POINT POINT
Subscript
Tabla elementos individuales se accede mediante subíndice. Subíndice valor puede oscilar entre 1 y el número de veces que el cuadro se produce. Subíndice puede ser cualquier número positivo. No se requiere ninguna declaración de datos división. Se crea automáticamente con cláusula se produce.
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A OCCURS 3 TIMES. 10 WS-B PIC A(2). 10 WS-C OCCURS 2 TIMES. 15 WS-D PIC X(3). PROCEDURE DIVISION. MOVE '12ABCDEF34GHIJKL56MNOPQR' TO WS-TABLE. DISPLAY 'WS-TABLE : ' WS-TABLE. DISPLAY 'WS-A(1) : ' WS-A(1). DISPLAY 'WS-C(1,1) : ' WS-C(1,1). DISPLAY 'WS-C(1,2) : ' WS-C(1,2). DISPLAY 'WS-A(2) : ' WS-A(2). DISPLAY 'WS-C(2,1) : ' WS-C(2,1). DISPLAY 'WS-C(2,2) : ' WS-C(2,2). DISPLAY 'WS-A(3) : ' WS-A(3). DISPLAY 'WS-C(3,1) : ' WS-C(3,1). DISPLAY 'WS-C(3,2) : ' WS-C(3,2). STOP RUN.
JCL para ejecutar el programa COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
WS-TABLE : 12ABCDEF34GHIJKL56MNOPQR WS-A(1) : 12ABCDEF WS-C(1,1) : ABC WS-C(1,2) : DEF WS-A(2) : 34GHIJKL WS-C(2,1) : GHI WS-C(2,2) : JKL WS-A(3) : 56MNOPQR WS-C(3,1) : MNO WS-C(3,2) : PQR
Índice
Elementos de la tabla también se puede acceder mediante índice. Un índice es un desplazamiento del elemento desde el inicio de la tabla. Un índice se declara con cláusula se produce mediante INDEXADO POR cláusula. El valor del índice se puede cambiar mediante instrucción SET y REALIZAR diferentes opción.
Sintaxis
Es la siguiente sintaxis para definir Índice en una tabla:
01 WS-TABLE. 05 WS-A PIC A(10) OCCURS 10 TIMES INDEXED BY I.
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A OCCURS 3 TIMES INDEXED BY I. 10 WS-B PIC A(2). 10 WS-C OCCURS 2 TIMES INDEXED BY J. 15 WS-D PIC X(3). PROCEDURE DIVISION. MOVE '12ABCDEF34GHIJKL56MNOPQR' TO WS-TABLE. PERFORM A-PARA VARYING I FROM 1 BY 1 UNTIL I >3 STOP RUN. A-PARA. PERFORM C-PARA VARYING J FROM 1 BY 1 UNTIL J>2. C-PARA. DISPLAY WS-C(I,J).
JCL para ejecutar el programa COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
ABC DEF GHI JKL MNO PQR
Instrucción Set
Instrucción Set se usa para cambiar el valor del índice. Verbo Set se usa para inicializar, aumentar o disminuir el valor del índice. Se utiliza en las tareas de búsqueda y búsqueda para localizar todos los elementos en la tabla.
Sintaxis
Siguiente es la sintaxis para utilizar una instrucción Set:
SET I J TO positive-number SET I TO J SET I TO 5 SET I J UP BY 1 SET J DOWN BY 5
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A OCCURS 3 TIMES INDEXED BY I. 10 WS-B PIC A(2). 10 WS-C OCCURS 2 TIMES INDEXED BY J. 15 WS-D PIC X(3). PROCEDURE DIVISION. MOVE '12ABCDEF34GHIJKL56MNOPQR' TO WS-TABLE. SET I J TO 1. DISPLAY WS-C(I,J). SET I J UP BY 1. DISPLAY WS-C(I,J). STOP RUN.
JCL para ejecutar el programa COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
ABC JKL
Buscar
Búsqueda lineal es un método de búsqueda, que se utiliza para buscar elementos dentro de la tabla. Se puede realizar en clasificados, así como sin clasificar. Sólo se utiliza para las tablas de Índice frase. Se inicia con el valor inicial del índice. Si el elemento buscado no se encuentra, el índice se incrementa de forma automática en 1 y continúa hasta el final de la tabla.
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-A PIC X(1) OCCURS 18 TIMES INDEXED BY I. 01 WS-SRCH PIC A(1) VALUE 'M'. PROCEDURE DIVISION. MOVE 'ABCDEFGHIJKLMNOPQR' TO WS-TABLE. SET I TO 1. SEARCH WS-A AT END DISPLAY 'M NOT FOUND IN TABLE' WHEN WS-A(I)=WS-SRCH DISPLAY 'LETTER M FOUND IN TABLE' END-SEARCH. STOP RUN.
JCL para ejecutar el programa COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
LETTER M FOUND IN TABLE
Buscar todos
Buscar en todos es un método de búsqueda binaria, que se utiliza para buscar elementos dentro de la tabla. Tabla debe ser de forma ordenada para la búsqueda. El índice no requieren inicialización. En búsqueda binaria el cuadro está dividido en dos mitades y determina en la que la mitad de los elemento buscado está presente. Este proceso se repite hasta que el elemento se encuentra o se llega al final.
Ejemplo
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TABLE. 05 WS-RECORD OCCURS 10 TIMES ASCENDING KEY IS WS-NUM INDEXED BY I. 10 WS-NUM PIC 9(2). 10 WS-NAME PIC A(3). PROCEDURE DIVISION. MOVE '12ABC56DEF34GHI78JKL93MNO11PQR' TO WS-TABLE. SEARCH ALL WS-RECORD AT END DISPLAY 'RECORD NOT FOUND' WHEN WS-NUM(I)=93 DISPLAY 'RECORD FOUND ' DISPLAY WS-NUM(I) DISPLAY WS-NAME(I) END-SEARCH.
JCL para ejecutar el programa COBOL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
Cuando se compila y ejecuta el programa antes mencionado, se produce el resultado siguiente:
RECORD FOUND 93 MNO
No hay comentarios.:
Publicar un comentario