cobol
RING uttalande
Sök…
Anmärkningar
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