cobol
Dichiarazione di CHIAMATA
Ricerca…
Osservazioni
Dichiarazione di CHIAMATA
COBOL può utilizzare il collegamento statico per la seguente dichiarazione. GnuCOBOL utilizza il collegamento dinamico per impostazione predefinita per tutti i simboli esterni noti al momento della compilazione, anche quando il simbolo è letterale:
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
Questa affermazione impone la risoluzione di modifica del collegamento al tempo di compilazione. (Estensione standard, non sintassi) :
CALL STATIC "subprogram" USING a b c
I campi in COBOL possono essere passati BY REFERENCE
(l'impostazione predefinita, fino a quando non viene sovrascritta - le sostituzioni sono sticky
in un ordine da sinistra a destra), BY CONTENT
(una copia viene passata DA RIFERIMENTO), o in alcuni casi direttamente 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 è progettato per essere un linguaggio BY REFERENCE
, pertanto l'utilizzo di BY VALUE
può presentare problemi. Ad esempio, i valori numerici letterali non hanno un tipo esplicito e la specifica COBOL non ha regole di promozione del tipo esplicito. Pertanto gli sviluppatori devono preoccuparsi della configurazione del frame di chiamata con BY VALUE
di letterali.
Vedi http://open-cobol.sourceforge.net/faq/index.html#call per maggiori dettagli.
TEMPO DI DORMIRE
CALL è anche un modo per estendere la funzionalità COBOL e anche per consentire la riusabilità del codice. Può anche dare accesso alle funzionalità di "sistema".
Questo esempio illustra come fornire funzionalità "sleep" ai COBOL IBM Mainframe. Tieni presente che l'obbligo di farlo è raro nella misura in cui, di solito, quando qualcuno pensa di aver bisogno di "dormire" per qualche motivo, è la cosa sbagliata da fare.
ILBOWAT0 proviene dalla vecchia era di runtime COBOL specifica su mainframe. BXP1SLP e BXP4SLP sono routine di Unix System Services (USS) che possono essere utilizzate da qualsiasi lingua. Effettivamente sono richieste di "sonno" Unix.
L'attuale IBM Mainframe Runtime (Language Environment (LE)) prevede la comunicazione tra le lingue ei servizi CEE3DLY LE sono mostrati in un altro esempio, utilizzando il servizio di ritardo del thread Ambiente linguaggio z / OS .
ILBOWAT0 è in circolazione da moltissimo tempo (forse più di 40 anni) e potresti ancora incontrarlo. Il suo uso dovrebbe essere sostituito da CEE3DLY o BXP1SLP, a seconda di quale sia il più appropriato per il particolare requisito.
A volte è necessario far dormire un programma o far dormire un lavoro per un po '(dopo un passaggio FTP o NDM), che di solito vengono eseguiti come processi separati e sarà necessario eseguire il sleep / loop alla ricerca dei set di dati risultanti.
Ecco un simpatico piccolo programma COBOL per svolgere tale compito, chiamando i programmi di sospensione COBOL disponibili in OS / VS e forse in altri ambienti operativi legacy e attuali del mainframe.
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 .
modo microfocus
Per Microfocus, utilizza l'API "SleepEx". Come esempio;
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.
Utilizzo del servizio di ritardo del thread Ambiente linguaggio z / OS
È possibile chiamare il servizio CEE3DLY in modalità 24- 31 o 64 bit per ritardare un'attività al secondo più vicino. È il salvataggio di CICS e ritarderà solo il thread.
Un esempio:
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.
Puoi vedere più dettagli qui:
IBM Language Environment Callable Services - Sleep