COBOL подпрограмм - это программа, которая может быть собрана независимо друг от друга, но не может быть выполнено независимо друг от друга. Существует два типа подпрограмм: внутренние подпрограммы хотел бы выполнить заявления и внешней подпрограммы как вызов глагол.
Вызов глагол используется для передачи управления из одной программы в другую программу. Программа, которая содержит призыв глагола - вызывающей программы и программы, называемые известен как называется программы. Призывая к выполнение программы будет остановить пока не называется программа завершения исполнения. Выход из программы используется в программу для передачи управления обратно.
После называются требования программы:
Связь раздел должны быть определены в программу. Он состоит из элементов данных прошло в рамках программы. Элементы данных не должен иметь Value. PIC оговорки должны быть совместимы с переменных прошло через вызов программы.
Процедуры с использованием имеет список переменных из программы и должны быть так же, как в "глагол.
Выход из программы используется в программу для передачи управления обратно. Он должен быть последнее заявление в программу.
Параметры могут быть приняты в рамках программ двумя способами:
Если значения переменных в программу будут изменены, а затем их новые значения будут вызывающей программы. Если не задано, то переменные всегда передан ссылкой.
Ниже синтаксис вызова подпрограмм путем ссылки:
CALL sub-prog-name USING variable-1, variable-2.
Следующий пример - главный вызов программы и UTIL - это называется программа:
IDENTIFICATION DIVISION. PROGRAM-ID. UTIL. DATA DIVISION. LINKAGE SECTION. 01 LS-STUDENT-ID PIC 9(4). 01 LS-STUDENT-NAME PIC A(15). PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME. DISPLAY 'In Called Program'. MOVE 1111 TO LS-STUDENT-ID. EXIT PROGRAM.
называемой программы
IDENTIFICATION DIVISION. PROGRAM-ID. UTIL. DATA DIVISION. LINKAGE SECTION. 01 LS-STUDENT-ID PIC 9(4). 01 LS-STUDENT-NAME PIC A(15). PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME. DISPLAY 'In Called Program'. MOVE 1111 TO LS-STUDENT-ID. EXIT PROGRAM.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=MAIN
При компиляции и выполнения этой программы, она производит следующие результаты:
In Called Program Student Id : 1111 Student Name : Tim
Если значения переменных в программу будут изменены, а затем их новые значения не будет отражать в вызывающей программы.
Ниже синтаксис вызова подпрограмм контента:
CALL sub-prog-name USING BY CONTENT variable-1, BY CONTENT variable-2.
Следующий пример - главный вызов программы и UTIL - это называется программа:
IDENTIFICATION DIVISION. PROGRAM-ID. MAIN. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-STUDENT-ID PIC 9(4) VALUE 1000. 01 WS-STUDENT-NAME PIC A(15) VALUE 'Tim'. PROCEDURE DIVISION. CALL 'UTIL' USING BY CONTENT WS-STUDENT-ID, BY CONTENT WS-STUDENT-NAME. DISPLAY 'Student Id : ' WS-STUDENT-ID DISPLAY 'Student Name : ' WS-STUDENT-NAME STOP RUN.
называемой программы
IDENTIFICATION DIVISION. PROGRAM-ID. UTIL. DATA DIVISION. LINKAGE SECTION. 01 LS-STUDENT-ID PIC 9(4). 01 LS-STUDENT-NAME PIC A(15). PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME. DISPLAY 'In Called Program'. MOVE 1111 TO LS-STUDENT-ID. EXIT PROGRAM.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=MAIN
При компиляции и выполнения этой программы, она производит следующие результаты:
In Called Program Student Id : 1000 Student Name : Tim
Существует два типа вызовов:
Статический вызов происходит, когда программа составляется с NODYNAM опции компилятора. Статический называется программа загружается в систему хранения данных, см. на время компиляции.
Динамический вызов происходит в том случае, если программа скомпилирована с в следующих статьяx и NODLL опции компилятора. Динамический называется программа загружается в систему хранения данных, см. на runtime.