COBOL - Verbos básicos
COBOL - Verbos básicos
Los verbos COBOL se utilizan en la división de procedimientos para el procesamiento de datos. Una declaración siempre comienza con un verbo COBOL. Hay varios verbos COBOL con diferentes tipos de acciones.
Verbos de entrada / salida
Los verbos de entrada / salida se utilizan para obtener datos del usuario y mostrar la salida de los programas COBOL. Los siguientes dos verbos se utilizan para este proceso:
Aceptar verbo
Aceptar verbo se utiliza para obtener datos como la fecha, la hora y el día del sistema operativo o directamente del usuario. Si un programa acepta datos del usuario, debe pasar a través de JCL. Al obtener datos del sistema operativo, la opción FROM se incluye como se muestra en el siguiente ejemplo:
ACCEPT WS-STUDENT-NAME.
ACCEPT WS-DATE FROM SYSTEM-DATE.
Verbo de visualización
Mostrar verbo se utiliza para mostrar la salida de un programa COBOL.
DISPLAY WS-STUDENT-NAME.
DISPLAY "System date is : " WS-DATE.
COBOL PROGRAM
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STUDENT-NAME PIC X(25).
01 WS-DATE PIC X(10).
PROCEDURE DIVISION.
ACCEPT WS-STUDENT-NAME.
ACCEPT WS-DATE FROM DATE.
DISPLAY "Name : " WS-STUDENT-NAME.
DISPLAY "Date : " WS-DATE.
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//INPUT DD DSN=PROGRAM.DIRECTORY,DISP=SHR
//SYSIN DD *
TutorialsPoint
/*
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
Name : TutorialsPoint
Date : 200623
Inicializar verbo
El verbo inicializar se utiliza para inicializar un elemento de grupo o un elemento elemental. Los nombres de datos con la cláusula RENAME no se pueden inicializar. Los elementos de datos numéricos se reemplazan por CERO. Los elementos de datos alfanuméricos o alfabéticos se reemplazan por ESPACIOS. Si incluimos el término REPLACING, entonces los elementos de datos se pueden inicializar al valor de reemplazo dado como se muestra en el siguiente ejemplo:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME PIC A(30) VALUE 'ABCDEF'.
01 WS-ID PIC 9(5).
01 WS-ADDRESS.
05 WS-HOUSE-NUMBER PIC 9(3).
05 WS-COUNTRY PIC X(15).
05 WS-PINCODE PIC 9(6) VALUE 123456.
PROCEDURE DIVISION.
A000-FIRST-PARA.
INITIALIZE WS-NAME, WS-ADDRESS.
INITIALIZE WS-ID REPLACING NUMERIC DATA BY 12345.
DISPLAY "My name is : "WS-NAME.
DISPLAY "My ID is : "WS-ID.
DISPLAY "Address : "WS-ADDRESS.
DISPLAY "House Number : "WS-HOUSE-NUMBER.
DISPLAY "Country : "WS-COUNTRY.
DISPLAY "Pincode : "WS-PINCODE.
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
My name is :
My ID is : 12345
Address : 000 000000
House Number : 000
Country :
Pincode : 000000
Mover Verbo
Mover verbo se utiliza para copiar datos de los datos de origen a los datos de destino. Se puede utilizar tanto en elementos de datos elementales como en grupos. Para elementos de datos de grupo, se utiliza MOVE CORRESPONDING / CORR. En la opción de probarlo, MOVE CORR no funciona; pero en un servidor de mainframe, funcionará.
Para mover datos de una cadena, se usa MOVE (x: l) donde x es la posición inicial y l es la longitud. Los datos se truncarán si la cláusula PIC del elemento de datos de destino es menor que la cláusula PIC del elemento de datos de origen. Si la cláusula PIC del elemento de datos de destino es mayor que la cláusula PIC del elemento de datos de origen, se agregarán ZEROS o SPACES en los bytes adicionales. El siguiente ejemplo lo aclara.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9).
01 WS-NUM2 PIC 9(9).
01 WS-NUM3 PIC 9(5).
01 WS-NUM4 PIC 9(6).
01 WS-ADDRESS.
05 WS-HOUSE-NUMBER PIC 9(3).
05 WS-COUNTRY PIC X(5).
05 WS-PINCODE PIC 9(6).
01 WS-ADDRESS1.
05 WS-HOUSE-NUMBER1 PIC 9(3).
05 WS-COUNTRY1 PIC X(5).
05 WS-PINCODE1 PIC 9(6).
PROCEDURE DIVISION.
A000-FIRST-PARA.
MOVE 123456789 TO WS-NUM1.
MOVE WS-NUM1 TO WS-NUM2 WS-NUM3.
MOVE WS-NUM1(3:6) TO WS-NUM4.
MOVE 123 TO WS-HOUSE-NUMBER.
MOVE 'INDIA' TO WS-COUNTRY.
MOVE 112233 TO WS-PINCODE.
MOVE WS-ADDRESS TO WS-ADDRESS1.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUM3 : " WS-NUM3
DISPLAY "WS-NUM4 : " WS-NUM4
DISPLAY "WS-ADDRESS : " WS-ADDRESS
DISPLAY "WS-ADDRESS1 : " WS-ADDRESS1
STOP RUN.
JCL para ejecutar el programa COBOL anterior.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 123456789
WS-NUM2 : 123456789
WS-NUM3 : 56789
WS-NUM4 : 345678
WS-ADDRESS : 123INDIA112233
WS-ADDRESS1 : 123INDIA112233
Movimientos legales
La siguiente tabla brinda información sobre los movimientos legales:
Alfabético | Alfanumérico | Numérico | |
---|---|---|---|
Alfabético | Posible | Posible | Imposible |
Alfanumérico | Posible | Posible | Posible |
Numérico | Imposible | Posible | Posible |
Agregar verbo
Agregar verbo se utiliza para sumar dos o más números y almacenar el resultado en el operando de destino.
Sintaxis
A continuación se muestra la sintaxis para sumar dos o más números:
ADD A B TO C D
ADD A B C TO D GIVING E
ADD CORR WS-GROUP1 TO WS-GROUP2
En la sintaxis-1, se agregan A, B, C y el resultado se almacena en C (C = A + B + C). Se suman A, B, D y el resultado se almacena en D (D = A + B + D).
En la sintaxis-2, se agregan A, B, C, D y el resultado se almacena en E (E = A + B + C + D).
En la sintaxis-3, se agregan elementos de subgrupo dentro de WS-GROUP1 y WS-GROUP2 y el resultado se almacena en WS-GROUP2.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9) VALUE 10 .
01 WS-NUM2 PIC 9(9) VALUE 10.
01 WS-NUM3 PIC 9(9) VALUE 10.
01 WS-NUM4 PIC 9(9) VALUE 10.
01 WS-NUMA PIC 9(9) VALUE 10.
01 WS-NUMB PIC 9(9) VALUE 10.
01 WS-NUMC PIC 9(9) VALUE 10.
01 WS-NUMD PIC 9(9) VALUE 10.
01 WS-NUME PIC 9(9) VALUE 10.
PROCEDURE DIVISION.
ADD WS-NUM1 WS-NUM2 TO WS-NUM3 WS-NUM4.
ADD WS-NUMA WS-NUMB WS-NUMC TO WS-NUMD GIVING WS-NUME.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUM3 : " WS-NUM3
DISPLAY "WS-NUM4 : " WS-NUM4
DISPLAY "WS-NUMA : " WS-NUMA
DISPLAY "WS-NUMB : " WS-NUMB
DISPLAY "WS-NUMC : " WS-NUMC
DISPLAY "WS-NUMD : " WS-NUMD
DISPLAY "WS-NUME : " WS-NUME
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 000000010
WS-NUM2 : 000000010
WS-NUM3 : 000000030
WS-NUM4 : 000000030
WS-NUMA : 000000010
WS-NUMB : 000000010
WS-NUMC : 000000010
WS-NUMD : 000000010
WS-NUME : 000000040
Restar Verbo
Restar verbo se usa para operaciones de resta.
Sintaxis
A continuación se muestra la sintaxis de las operaciones de resta:
SUBTRACT A B FROM C D
SUBTRACT A B C FROM D GIVING E
SUBTRACT CORR WS-GROUP1 TO WS-GROUP2
En la sintaxis-1, A y B se suman y se restan de C. El resultado se almacena en C (C = C- (A + B)). A y B se suman y restan de D. El resultado se almacena en D (D = D- (A + B)).
En la sintaxis-2, A, B, C se suman y se restan de D. El resultado se almacena en E (E = D- (A + B + C))
En la sintaxis-3, los elementos del subgrupo dentro de WS-GROUP1 y WS-GROUP2 se restan y el resultado se almacena en WS-GROUP2.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9) VALUE 10 .
01 WS-NUM2 PIC 9(9) VALUE 10.
01 WS-NUM3 PIC 9(9) VALUE 100.
01 WS-NUM4 PIC 9(9) VALUE 100.
01 WS-NUMA PIC 9(9) VALUE 10.
01 WS-NUMB PIC 9(9) VALUE 10.
01 WS-NUMC PIC 9(9) VALUE 10.
01 WS-NUMD PIC 9(9) VALUE 100.
01 WS-NUME PIC 9(9) VALUE 10.
PROCEDURE DIVISION.
SUBTRACT WS-NUM1 WS-NUM2 FROM WS-NUM3 WS-NUM4.
SUBTRACT WS-NUMA WS-NUMB WS-NUMC FROM WS-NUMD GIVING WS-NUME.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUM3 : " WS-NUM3
DISPLAY "WS-NUM4 : " WS-NUM4
DISPLAY "WS-NUMA : " WS-NUMA
DISPLAY "WS-NUMB : " WS-NUMB
DISPLAY "WS-NUMC : " WS-NUMC
DISPLAY "WS-NUMD : " WS-NUMD
DISPLAY "WS-NUME : " WS-NUME
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 000000010
WS-NUM2 : 000000010
WS-NUM3 : 000000080
WS-NUM4 : 000000080
WS-NUMA : 000000010
WS-NUMB : 000000010
WS-NUMC : 000000010
WS-NUMD : 000000100
WS-NUME : 000000070
Multiplicar verbo
El verbo multiplicar se usa para operaciones de multiplicación.
Sintaxis
A continuación se muestra la sintaxis para multiplicar dos o más números:
MULTIPLY A BY B C
MULTIPLY A BY B GIVING E
En la sintaxis-1, A y B se multiplican y el resultado se almacena en B (B = A * B). A y C se multiplican y el resultado se almacena en C (C = A * C).
En la sintaxis-2, A y B se multiplican y el resultado se almacena en E (E = A * B).
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9) VALUE 10 .
01 WS-NUM2 PIC 9(9) VALUE 10.
01 WS-NUM3 PIC 9(9) VALUE 10.
01 WS-NUMA PIC 9(9) VALUE 10.
01 WS-NUMB PIC 9(9) VALUE 10.
01 WS-NUMC PIC 9(9) VALUE 10.
PROCEDURE DIVISION.
MULTIPLY WS-NUM1 BY WS-NUM2 WS-NUM3.
MULTIPLY WS-NUMA BY WS-NUMB GIVING WS-NUMC.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUM3 : " WS-NUM3
DISPLAY "WS-NUMA : " WS-NUMA
DISPLAY "WS-NUMB : " WS-NUMB
DISPLAY "WS-NUMC : " WS-NUMC
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 000000010
WS-NUM2 : 000000100
WS-NUM3 : 000000100
WS-NUMA : 000000010
WS-NUMB : 000000010
WS-NUMC : 000000100
Dividir verbo
El verbo dividir se usa para operaciones de división.
Sintaxis
A continuación se muestra la sintaxis para las operaciones de división:
DIVIDE A INTO B
DIVIDE A BY B GIVING C REMAINDER R
En la sintaxis-1, B se divide por A y el resultado se almacena en B (B = B / A).
En la sintaxis-2, A se divide por B y el resultado se almacena en C (C = A / B) y el resto se almacena en R.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9) VALUE 5.
01 WS-NUM2 PIC 9(9) VALUE 250.
01 WS-NUMA PIC 9(9) VALUE 100.
01 WS-NUMB PIC 9(9) VALUE 15.
01 WS-NUMC PIC 9(9).
01 WS-REM PIC 9(9).
PROCEDURE DIVISION.
DIVIDE WS-NUM1 INTO WS-NUM2.
DIVIDE WS-NUMA BY WS-NUMB GIVING WS-NUMC REMAINDER WS-REM.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUMA : " WS-NUMA
DISPLAY "WS-NUMB : " WS-NUMB
DISPLAY "WS-NUMC : " WS-NUMC
DISPLAY "WS-REM : " WS-REM
STOP RUN.
JCL para ejecutar el programa COBOL anterior -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 000000005
WS-NUM2 : 000000050
WS-NUMA : 000000100
WS-NUMB : 000000015
WS-NUMC : 000000006
WS-REM : 000000010
Declaración de cálculo
La instrucción Compute se usa para escribir expresiones aritméticas en COBOL. Este es un reemplazo para sumar, restar, multiplicar y dividir.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(9) VALUE 10 .
01 WS-NUM2 PIC 9(9) VALUE 10.
01 WS-NUM3 PIC 9(9) VALUE 10.
01 WS-NUMA PIC 9(9) VALUE 50.
01 WS-NUMB PIC 9(9) VALUE 10.
01 WS-NUMC PIC 9(9).
PROCEDURE DIVISION.
COMPUTE WS-NUMC= (WS-NUM1 * WS-NUM2) - (WS-NUMA / WS-NUMB) + WS-NUM3.
DISPLAY "WS-NUM1 : " WS-NUM1
DISPLAY "WS-NUM2 : " WS-NUM2
DISPLAY "WS-NUM3 : " WS-NUM3
DISPLAY "WS-NUMA : " WS-NUMA
DISPLAY "WS-NUMB : " WS-NUMB
DISPLAY "WS-NUMC : " WS-NUMC
STOP RUN.
JCL para ejecutar el programa COBOL anterior.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
WS-NUM1 : 000000010
WS-NUM2 : 000000010
WS-NUM3 : 000000010
WS-NUMA : 000000050
WS-NUMB : 000000010
WS-NUMC : 000000105