COBOL - подпрограмм



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.

Advertisements