Глаголы COBOL используются в разделе процедур для обработки данных. Оператор всегда начинается с глагола COBOL. Есть несколько глаголов COBOL с различными типами действий.
Глаголы ввода / вывода
Глаголы ввода / вывода используются для получения данных от пользователя и отображения результатов программ COBOL. Следующие два глагола используются для этого процесса —
Принять глагол
Глагол Accept используется для получения данных, таких как дата, время и день, из операционной системы или непосредственно от пользователя. Если программа принимает данные от пользователя, то она должна быть передана через JCL. При получении данных из операционной системы, опция FROM включена, как показано в следующем примере —
ACCEPT WS-STUDENT-NAME. ACCEPT WS-DATE FROM SYSTEM-DATE.
Показать глагол
Глагол отображения используется для отображения результатов программы COBOL.
DISPLAY WS-STUDENT-NAME. DISPLAY "System date is : " WS-DATE.
Программа COBOL
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO //INPUT DD DSN=PROGRAM.DIRECTORY,DISP=SHR //SYSIN DD * TutorialsPoint /*
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
Name : TutorialsPoint Date : 2014-08-30
Инициализировать глагол
Глагол Initialize используется для инициализации группового элемента или элементарного элемента. Имена данных с предложением RENAME не могут быть инициализированы. Числовые элементы данных заменяются нулями. Буквенно-цифровые или буквенные элементы данных заменяются пробелами. Если мы включим термин ЗАМЕНА, то элементы данных могут быть инициализированы с указанным значением замены, как показано в следующем примере:
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
My name is : My ID is : 12345 Address : 000 000000 House Number : 000 Country : Pincode : 000000
Переместить глагол
Глагол перемещения используется для копирования данных из исходных данных в данные назначения. Может использоваться как для элементарных, так и для групповых данных. Для групповых элементов данных используется MOVE CORRESPONDING / CORR. В этом варианте MOVE CORR не работает; но на мэйнфреймовом сервере это будет работать.
Для перемещения данных из строки используется MOVE (x: l), где x — начальная позиция, а l — длина. Данные будут усечены, если предложение PIC элемента данных назначения меньше, чем предложение PIC элемента данных источника. Если предложение PIC элемента данных назначения больше, чем предложение PIC элемента данных источника, то в дополнительные байты будут добавлены ZEROS или SPACES. Следующий пример проясняет это.
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 для выполнения вышеуказанной программы на языке COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
WS-NUM1 : 123456789 WS-NUM2 : 123456789 WS-NUM3 : 56789 WS-NUM4 : 345678 WS-ADDRESS : 123INDIA112233 WS-ADDRESS1 : 123INDIA112233
Легальные ходы
Следующая таблица дает информацию о законных шагах —
буквенный | алфавитно-цифровой | числовой | |
---|---|---|---|
буквенный | Возможный | Возможный | Невозможно |
алфавитно-цифровой | Возможный | Возможный | Возможный |
числовой | Невозможно | Возможный | Возможный |
Добавить глагол
Глагол «Добавить» используется для добавления двух или более чисел и сохранения результата в операнде-адресате.
Синтаксис
Ниже приведен синтаксис для добавления двух или более чисел —
ADD A B TO C D ADD A B C TO D GIVING E ADD CORR WS-GROUP1 TO WS-GROUP2
В синтаксисе-1 добавляются A, B, C и результат сохраняется в C (C = A + B + C). A, B, D добавляются и результат сохраняется в D (D = A + B + D).
В синтаксисе-2 добавляются A, B, C, D и результат сохраняется в E (E = A + B + C + D).
В синтаксисе 3 добавляются элементы подгруппы в WS-GROUP1 и WS-GROUP2, и результат сохраняется в WS-GROUP2.
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
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
Вычесть глагол
Глагол вычитания используется для операций вычитания.
Синтаксис
Ниже приведен синтаксис для операций вычитания —
SUBTRACT A B FROM C D SUBTRACT A B C FROM D GIVING E SUBTRACT CORR WS-GROUP1 TO WS-GROUP2
В синтаксисе-1 A и B добавляются и вычитаются из C. Результат сохраняется в C (C = C- (A + B)). A и B складываются и вычитаются из D. Результат сохраняется в D (D = D- (A + B)).
В синтаксисе-2 A, B, C добавляются и вычитаются из D. Результат сохраняется в E (E = D- (A + B + C))
В синтаксисе-3 элементы подгрупп в WS-GROUP1 и WS-GROUP2 вычитаются, а результат сохраняется в WS-GROUP2.
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
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
Умножить Глагол
Глагол умножения используется для операций умножения.
Синтаксис
Ниже приведен синтаксис для умножения двух или более чисел —
MULTIPLY A BY B C MULTIPLY A BY B GIVING E
В синтаксисе-1 A и B умножаются, и результат сохраняется в B (B = A * B). A и C умножаются, и результат сохраняется в C (C = A * C).
В синтаксисе-2, A и B умножаются, и результат сохраняется в E (E = A * B).
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
WS-NUM1 : 000000010 WS-NUM2 : 000000100 WS-NUM3 : 000000100 WS-NUMA : 000000010 WS-NUMB : 000000010 WS-NUMC : 000000100
Разделить глагол
Глагол деления используется для операций деления.
Синтаксис
Ниже приведен синтаксис для операций деления —
DIVIDE A INTO B DIVIDE A BY B GIVING C REMAINDER R
В синтаксисе-1 B делится на A, а результат сохраняется в B (B = B / A).
В синтаксисе-2 A делится на B, а результат сохраняется в C (C = A / B), а остаток сохраняется в R.
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
WS-NUM1 : 000000005 WS-NUM2 : 000000050 WS-NUMA : 000000100 WS-NUMB : 000000015 WS-NUMC : 000000006 WS-REM : 000000010
Вычислить заявление
Вычислительный оператор используется для написания арифметических выражений в языке COBOL. Это замена для сложения, вычитания, умножения и деления.
пример
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 для выполнения вышеуказанной программы на языке COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —