COBOL - Verbi di base
COBOL - Verbi di base
I verbi COBOL sono utilizzati nella divisione procedure per l'elaborazione dei dati. Un'istruzione inizia sempre con un verbo COBOL. Esistono diversi verbi COBOL con diversi tipi di azioni.
Verbi di input / output
I verbi di input / output vengono utilizzati per ottenere dati dall'utente e visualizzare l'output dei programmi COBOL. I seguenti due verbi vengono utilizzati per questo processo:
Accetta verbo
Il verbo Accetta viene utilizzato per ottenere dati come data, ora e giorno dal sistema operativo o direttamente dall'utente. Se un programma accetta dati dall'utente, deve essere passato tramite JCL. Durante il recupero dei dati dal sistema operativo, l'opzione FROM è inclusa come mostrato nell'esempio seguente:
ACCEPT WS-STUDENT-NAME.
ACCEPT WS-DATE FROM SYSTEM-DATE.
Display Verb
Il verbo di visualizzazione viene utilizzato per visualizzare l'output di un programma 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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
//INPUT DD DSN=PROGRAM.DIRECTORY,DISP=SHR
//SYSIN DD *
TutorialsPoint
/*
Quando compili ed esegui il programma sopra, produce il seguente risultato:
Name : TutorialsPoint
Date : 200623
Inizializza verbo
Il verbo Initialize viene utilizzato per inizializzare un elemento di gruppo o un elemento elementare. I nomi dei dati con la clausola RENAME non possono essere inizializzati. I dati numerici vengono sostituiti da ZEROES. I dati alfanumerici o alfabetici sono sostituiti da SPAZI. Se includiamo il termine REPLACING, gli elementi di dati possono essere inizializzati al valore di sostituzione fornito come mostrato nell'esempio seguente:
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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
My name is :
My ID is : 12345
Address : 000 000000
House Number : 000
Country :
Pincode : 000000
Move Verb
Il verbo Move viene utilizzato per copiare i dati dai dati di origine ai dati di destinazione. Può essere utilizzato su elementi di dati sia elementari che di gruppo. Per gli elementi di dati di gruppo, viene utilizzato MOVE CORRESPONDING / CORR. Nell'opzione try it, MOVE CORR non funziona; ma su un server mainframe, funzionerà.
Per spostare i dati da una stringa, MOVE (x: l) viene utilizzato dove x è la posizione iniziale el è la lunghezza. I dati verranno troncati se la clausola PIC dell'elemento di dati di destinazione è inferiore alla clausola PIC dell'elemento di dati di origine. Se la clausola PIC dell'elemento di dati di destinazione è maggiore della clausola PIC dell'elemento di dati di origine, nei byte aggiuntivi verranno aggiunti ZEROS o SPACES. Il seguente esempio lo rende chiaro.
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 per eseguire il programma COBOL di cui sopra.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
WS-NUM1 : 123456789
WS-NUM2 : 123456789
WS-NUM3 : 56789
WS-NUM4 : 345678
WS-ADDRESS : 123INDIA112233
WS-ADDRESS1 : 123INDIA112233
Mosse legali
La tabella seguente fornisce informazioni sulle mosse legali:
Alfabetico | Alfanumerico | Numerico | |
---|---|---|---|
Alfabetico | Possibile | Possibile | Non possibile |
Alfanumerico | Possibile | Possibile | Possibile |
Numerico | Non possibile | Possibile | Possibile |
Aggiungi verbo
Aggiungi verbo viene utilizzato per aggiungere due o più numeri e memorizzare il risultato nell'operando di destinazione.
Sintassi
Di seguito è riportata la sintassi per aggiungere due o più numeri:
ADD A B TO C D
ADD A B C TO D GIVING E
ADD CORR WS-GROUP1 TO WS-GROUP2
Nella sintassi-1, A, B, C vengono aggiunti e il risultato viene memorizzato in C (C = A + B + C). A, B, D vengono aggiunti e il risultato viene memorizzato in D (D = A + B + D).
Nella sintassi-2, A, B, C, D vengono aggiunti e il risultato viene memorizzato in E (E = A + B + C + D).
Nella sintassi-3, gli elementi del sottogruppo all'interno di WS-GROUP1 e WS-GROUP2 vengono aggiunti e il risultato viene memorizzato in 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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
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
Sottrai verbo
Il verbo Sottrai viene utilizzato per le operazioni di sottrazione.
Sintassi
Di seguito è riportata la sintassi per le operazioni di sottrazione:
SUBTRACT A B FROM C D
SUBTRACT A B C FROM D GIVING E
SUBTRACT CORR WS-GROUP1 TO WS-GROUP2
Nella sintassi-1, A e B vengono aggiunti e sottratti da C. Il risultato viene memorizzato in C (C = C- (A + B)). A e B vengono aggiunti e sottratti da D. Il risultato viene memorizzato in D (D = D- (A + B)).
Nella sintassi-2, A, B, C vengono aggiunti e sottratti da D. Il risultato viene memorizzato in E (E = D- (A + B + C))
Nella sintassi-3, gli elementi del sottogruppo all'interno di WS-GROUP1 e WS-GROUP2 vengono sottratti e il risultato viene memorizzato in 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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
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
Moltiplica il verbo
Il verbo Moltiplica viene utilizzato per le operazioni di moltiplicazione.
Sintassi
Di seguito è riportata la sintassi per moltiplicare due o più numeri:
MULTIPLY A BY B C
MULTIPLY A BY B GIVING E
Nella sintassi-1, A e B sono moltiplicati e il risultato viene memorizzato in B (B = A * B). A e C sono multiplate e il risultato viene memorizzato in C (C = A * C).
Nella sintassi-2, A e B sono moltiplicati e il risultato viene memorizzato in 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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
WS-NUM1 : 000000010
WS-NUM2 : 000000100
WS-NUM3 : 000000100
WS-NUMA : 000000010
WS-NUMB : 000000010
WS-NUMC : 000000100
Divide Verb
Il verbo Divide viene utilizzato per le operazioni di divisione.
Sintassi
Di seguito è riportata la sintassi per le operazioni di divisione:
DIVIDE A INTO B
DIVIDE A BY B GIVING C REMAINDER R
Nella sintassi-1, B è diviso per A e il risultato viene memorizzato in B (B = B / A).
Nella sintassi-2, A è diviso per B e il risultato è memorizzato in C (C = A / B) e il resto è memorizzato in 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 per eseguire il programma COBOL di cui sopra -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
WS-NUM1 : 000000005
WS-NUM2 : 000000050
WS-NUMA : 000000100
WS-NUMB : 000000015
WS-NUMC : 000000006
WS-REM : 000000010
Dichiarazione di calcolo
L'istruzione Compute viene utilizzata per scrivere espressioni aritmetiche in COBOL. Questo è un sostituto per Aggiungi, Sottrai, Moltiplica e Dividi.
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 per eseguire il programma COBOL di cui sopra.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Quando compili ed esegui il programma sopra, produce il seguente risultato:
WS-NUM1 : 000000010
WS-NUM2 : 000000010
WS-NUM3 : 000000010
WS-NUMA : 000000050
WS-NUMB : 000000010
WS-NUMC : 000000105