Поиск…
замечания
Вызов CALL
COBOL может использовать статическую связь для следующего оператора. GnuCOBOL использует динамическую привязку по умолчанию для всех внешних символов, известных во время компиляции, даже если символ является буквальным:
CALL "subprogram" USING a b c *> run a (possibly static linked) sub program
*> passing three fields
CALL some-prog USING a b c *> some-prog is a PIC X item and can be changed
*> at run-time to do a dynamic lookup
Этот оператор заставляет время редактирования ссылки на компиляцию. (Нестандартное расширение синтаксиса) :
CALL STATIC "subprogram" USING a b c
Поля в COBOL могут передаваться по BY REFERENCE
(по умолчанию, до переопределения - переопределения являются sticky
в порядке слева направо), BY CONTENT
(копия передается по ссылке) или в некоторых случаях непосредственно BY VALUE
:
CALL "calculation" USING BY REFERENCE a BY VALUE b BY CONTENT c RETURNING d
ON EXCEPTION DISPLAY 'No linkage to "calculation"' UPON SYSERR
END-CALL
COBOL предназначен для языка BY REFERENCE
, поэтому использование функции BY VALUE
может представлять проблемы. Например, литеральные численные значения не имеют явного типа, а спецификация COBOL не имеет правил продвижения по явному типу. Поэтому разработчикам приходится беспокоиться о настройке кадра вызова с помощью BY VALUE
литералов.
Подробнее см. Http://open-cobol.sourceforge.net/faq/index.html#call .
ВРЕМЯ СПАТЬ
CALL также способ расширить функциональность COBOL, а также обеспечить повторное использование кода. Он также может предоставить доступ к функциональности «системы».
Этот пример иллюстрирует способы обеспечения функциональности «спящего режима» для COBOL IBM Mainframe. Имейте в виду, что требование сделать это редко в той степени, что обычно, когда кто-то думает, что им нужно «поспать» по какой-то причине, это неправильно.
ILBOWAT0 - это старая эпоха исполнения, основанная на COBOL, на мэйнфреймах. BXP1SLP и BXP4SLP - это подпрограммы Unix System Services (USS), которые могут использоваться на любом языке. Фактически это Unix-запросы «сна».
Текущая среда IBM Mainframe Runtime (языковая среда (LE)) обеспечивает межязычную связь, а услуги CEE3DLY LE показаны в другом примере, используя службу задержки потоков z / OS Language Environment .
ILBOWAT0 существует очень долго (возможно, более 40 лет), и вы все равно можете столкнуться с этим. Его использование должно быть заменено CEE3DLY или BXP1SLP, в зависимости от того, что больше подходит для конкретного требования.
Иногда вам нужно вызвать спать в программе или заставить Job спать некоторое время (после этапа FTP или NDM), которые обычно запускаются как отдельные задания, и вам нужно будет спать / петля, ища результирующие наборы данных.
Вот небольшая небольшая программа COBOL для выполнения указанной задачи, вызывая программы сна COBOL, доступные в OS / VS и, возможно, в других устаревших и текущих операционных средах мэйнфрейма.
IDENTIFICATION DIVISION.
PROGRAM-ID. SLEEPYTM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WAIT-PARM.
05 WAIT-TIME PIC S9(8) COMP VALUE 90.
05 WAIT-RESPONSE PIC S9(8) COMP VALUE 0.
05 WAIT-PROGRAM-24BIT PIC X(8) VALUE 'ILBOWAT0'.
05 WAIT-PROGRAM-31BIT PIC X(8) VALUE 'BPX1SLP '.
05 WAIT-PROGRAM-64BIT PIC X(8) VALUE 'BPX4SLP '.
PROCEDURE DIVISION.
GENESIS.
DISPLAY 'START CALLING WAIT PROGRAM'
CALL WAIT-PROGRAM-24BIT USING WAIT-TIME WAIT-RESPONSE
DISPLAY 'END CALLING WAIT PROGRAM'
GOBACK
PERIOD .
микрофокусный путь
Для Microfocus он использует API «SleepEx». В качестве примера;
environment division.
special-names.
call-convention 74 is winAPI.
:
:
01 wSleep-time pic 9(8) comp-5.
01 wSleep-ok pic 9(8) comp-5.
:
:
move 10000 to wSleep-time *>10seconds
call winAPI "SleepEx" using by value wSleep-time
by value 0 size 4
returning wSleep-ok
end-call.
Использование службы задержки времени среды z / OS
Вы можете вызвать услугу CEE3DLY в режиме 24-31 или 64 бит, чтобы отложить задачу до ближайшей секунды. Это CICS сохраняет и будет только задерживать поток.
Пример:
IDENTIFICATION DIVISION.
PROGRAM-ID. SLEEPYTM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WAIT-PARM.
05 WAIT-SECS PIC S9(8) COMP VALUE 90.
05 WAIT-FC PIC X(12).
PROCEDURE DIVISION.
CALL CEE3DLY USING WAIT-SECS WAIT-FC
GOBACK.
Вы можете увидеть более подробно здесь:
IBM Language Environment Callable Services - Сон