수색…
비고
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
(복사본은 REFERENCE에 의해 전달됨) 또는 경우에 따라 직접 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 기능을 확장하고 코드 재사용을 허용하는 방법이기도합니다. 또한 "시스템"기능에 대한 액세스 권한을 부여 할 수도 있습니다.
이 예제는 IBM 메인 프레임 COBOL에 "절전"기능을 제공하는 방법을 보여줍니다. 그렇게해야한다는 요구 사항은 일반적으로 누군가가 어떤 이유로 든 "잠"필요가 있다고 생각할 때 드물다는 점을 명심하십시오. 할 일이 잘못되었습니다.
ILBOWAT0는 메인 프레임의 COBOL 관련 런타임 시절입니다. BXP1SLP 및 BXP4SLP는 모든 언어에서 사용할 수있는 Unix System Services (USS) 루틴입니다. 사실 그들은 유닉스 "sleep"요청입니다.
현재 IBM 메인 프레임 런타임 (언어 환경 (LE))은 언어 간 통신을 제공하고 CEE3DLY LE 서비스는 z / OS 언어 환경 스레드 지연 서비스 사용의 또 다른 예에 나와 있습니다 .
ILBOWAT0는 매우 오랜 기간 (아마도 40 년 이상) 주변에 있었으며, 여전히 그것을 접할 수 있습니다. 그것의 사용은 CEE3DLY 또는 BXP1SLP로 대체되어야합니다 어느 것이 든 특정 요구 사항에 더 적합합니다.
때로는 프로그램을 잠자기 상태로 만들거나 잠시 동안 (FTP 또는 NDM 단계 후에) 다른 작업으로 실행되는 작업을 잠자기 상태로 만들 필요가 있으며 결과 데이터 세트를 찾거나 잠자기 / 루프해야합니다.
여기에 OS / VS 및 다른 레거시 및 현재 메인 프레임 운영 환경에서 사용할 수있는 COBOL 절전 프로그램을 호출하여 작업을 수행하는 귀여운 COBOL 프로그램이 있습니다.
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의 경우 "SleepEx"API를 사용합니다. 예로서;
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 언어 환경 스레드 지연 서비스 사용
24/31 또는 64 비트 모드에서 CEE3DLY 서비스를 호출하여 작업을 가장 가까운 초로 지연시킬 수 있습니다. 이것은 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.
여기에서 자세한 내용을 볼 수 있습니다.