Sök…


Anmärkningar

COBOL CALL-uttalandet ger åtkomst till sammanställda bibliotekrutiner.

ange bildbeskrivning här

RING uttalande

COBOL kan använda statisk koppling för följande uttalande. GnuCOBOL använder som standard dynamisk koppling för alla externa symboler som är kända vid sammanställningstiden, även när symbolen är en bokstavlig:

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

Detta uttalande tvingar att kompilera redigeringsupplösning för tidslänkar. (Icke standard, syntaxförlängning) :

CALL STATIC "subprogram" USING a b c

Fält i COBOL kan skickas BY REFERENCE (standard, tills det åsidosätts - åsidosättningar är sticky i en vänster till höger ordning), BY CONTENT (en kopia skickas genom referens), eller i vissa fall direkt 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 är utformat för att vara ett BY REFERENCE , så att använda BY VALUE kan presentera problem. Exempelvis har bokstavliga siffror ingen uttrycklig typ och COBOL-specifikationen har inga uttryckliga regler för marknadsföring av typ. Därför måste utvecklare oroa sig för inställningen av BY VALUE med BY VALUE av bokstäver.

Se http://open-cobol.sourceforge.net/faq/index.html#call för mer information.

SOV DAGS

CALL är också ett sätt att utöka COBOL-funktionaliteten, och även möjliggöra återanvändbarhet för kod. Det kan också ge åtkomst till "system" -funktionalitet.

Detta exempel illustrerar sätt att tillhandahålla "sömn" -funktioner till IBM Mainframe COBOL. Tänk på att kravet att göra det är sällsynt i den utsträckning att det vanligen är fel att göra när någon tror att de behöver "sova" av någon anledning.

ILBOWAT0 kommer från den gamla COBOL-specifika runtime-eran på Mainframes. BXP1SLP och BXP4SLP är Unix System Services (USS) rutiner som kan användas av alla språk. Effektivt är det Unix-sömnförfrågningar.

Den nuvarande IBM Mainframe Runtime (Language Environment (LE)) tillhandahåller kommunikation mellan språk och CEE3DLY LE-tjänsterna visas i ett annat exempel, Använda z / OS Language miljö trådfördröjningstjänst .

ILBOWAT0 har funnits mycket länge (kanske mer än 40 år), och du kanske fortfarande stöter på det. Användningen bör ersättas av CEE3DLY eller BXP1SLP, beroende på vilket som är lämpligare för det specifika kravet.

Ibland måste du få ett program att sova, eller få ett jobb att sova ett tag (efter ett FTP- eller NDM-steg), som vanligtvis körs som separata jobb, och du behöver sova / slinga för att leta efter de resulterande datasätten.

Här är ett sött litet COBOL-program för att utföra nämnda uppgift, och kallar COBOL-sömnprogrammen som finns tillgängliga i OS / VS och kanske andra arvsmiljöer och nuvarande mainframe-miljöer.

       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     .

mikrofokus sätt

För Microfocus använder det API: et "SleepEx". Som ett exempel;

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.

Använda z / OS språkmiljö trådfördröjningstjänst

Du kan ringa CEE3DLY-tjänsten i 24- 31- eller 64-bitarsläge för att fördröja en uppgift till närmaste sekund. Det är CICS spara och kommer bara att försena tråden.

Ett exempel:

    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.

Du kan se mer information här:

IBM Språkmiljö Callable Services - Sleep



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow