수색…


비고

COBOL CALL 문은 컴파일 된 라이브러리 루틴에 대한 액세스를 제공합니다.

여기에 이미지 설명을 입력하십시오.

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.

여기에서 자세한 내용을 볼 수 있습니다.

IBM 언어 환경 호출 가능 서비스 - 수면



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow