|
CEE3DLY
provides a service for Language Environment-conforming
applications that suspends the processing of the active enclave for
a specified number of seconds. The maximum is 1 hour.
Syntax
>>-CEE3DLY--(--input_seconds--,--fc--)-------------------------><
- input_seconds
- A fullword binary value in the range of 0 to 3600 that specifies
the total number of seconds during which the enclave should be suspended.
- fc (output)
- A 12-byte feedback code, optional in some languages,
that indicates the result of this service. If you choose to omit this
parameter, refer to Invoking callable services for the
appropriate syntax to indicate that the feedback code was omitted.
The
following symbolic conditions can result from this service:
Code |
Severity |
Message number |
Message text |
---|
CEE3QQ |
1 |
CEE3930W |
The input value input_value in a
call to the callable service callable_service_name was
not within the valid range. |
CEE3QS |
1 |
CEE3932W |
The system service system_service failed
with return code return_code and reason
code reason_code. |
Usage notes - CICS® consideration—CEE3DLY
is available under CICS.
- z/OS UNIX consideration—CEE3DLY
is handled by the z/OS UNIX System Services when
POSIX is set to ON.
- This service is not intended for timing requests. Delays up to
the nearest second might occur in some circumstances.
- In a multi-threaded application, only the calling thread is suspended.
Examples - An example of CEE3DLY called by C/C++:
/*Module/File Name: EDC3DLY */
/*********************************************************************/
/* */
/* THIS EXAMPLE CALLS CEE3DLY TO SUSPEND PROCESSING OF THE ACTIVE */
/* ENCLAVE FOR SPECIFIED NUMBER OF SECONDS. */
/* */
/*********************************************************************/
#include <time.h>
#include <stdio.h>
#include <leawi.h>
#include <ceeedcct.h>
int main(void)
{
_INT4 seconds;
_FEEDBACK fc;
time_t ltime;
/* Get the time in seconds */
time(<ime);
printf("CEE3DLY Start time : %s", ctime(<ime));
seconds = 10;
CEE3DLY(&seconds,&fc);
if ( _FBCHECK ( fc , CEE000 ) != 0 ) {
printf("CEE3DLY failed with message number %d\n",fc.tok_msgno);
exit(999);
}
time(<ime);
printf("CEE3DLY Finish time : %s", ctime(<ime));
}
- A example of CEE3DLY called by COBOL:
CBL LIB,QUOTE
*****************************************************************
*MODULE/FILE NAME: IGZT3DLY
*****************************************************************
** **
** FUNCTION: CEE3DLY - SUSPEND ENCLAVE EXECUTION IN SECONDS **
** **
** THIS EXAMPLE CALLS CEE3DLY TO SUSPEND PROCESSING OF THE **
** ACTIVE ENCLAVE FOR SPECIFIED NUMBER OF SECONDS. **
** **
*****************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBL3DLY.
DATA DIVISION. WORKING-STORAGE SECTION.
01 DATE-TIME PIC X(21).
01 CUR-DATE-FIELDS.
03 CURRENT-DATE PIC X(8).
03 FILLER REDEFINES CURRENT-DATE.
05 CUR-MM PIC XX.
05 PIC X.
05 CUR-DD PIC XX.
05 PIC X.
05 CUR-YY PIC XX.
03 TIME-OF-DAY PIC X(8).
01 SECONDS PIC S9(9) BINARY.
01 FC.
02 CONDITION-TOKEN-VALUE.
COPY CEEIGZCT.
03 CASE-1-CONDITION-ID.
04 SEVERITY PIC S9(4) BINARY.
04 MSG-NO PIC S9(4) BINARY.
03 CASE-2-CONDITION-ID
REDEFINES CASE-1-CONDITION-ID.
04 CLASS-CODE PIC S9(4) BINARY.
04 CAUSE-CODE PIC S9(4) BINARY.
03 CASE-SEV-CTL PIC X.
03 FACILITY-ID PIC XXX.
02 I-S-INFO PIC S9(9) BINARY.
PROCEDURE DIVISION.
PARA-CBL3DLY.
MOVE FUNCTION CURRENT-DATE TO DATE-TIME.
STRING DATE-TIME (5:2) "/"
DATE-TIME (7:2) "/"
DATE-TIME (3:2)
DELIMITED BY SIZE
INTO CURRENT-DATE.
STRING DATE-TIME (9:2) ":"
DATE-TIME (11:2) ":"
DATE-TIME (13:2)
DELIMITED BY SIZE
INTO TIME-OF-DAY.
DISPLAY "CEE3DLY - BEGINS"
DISPLAY "DATE : " CURRENT-DATE
DISPLAY "TIME : " TIME-OF-DAY
MOVE 10 TO SECONDS.
CALL "CEE3DLY" USING SECONDS, FC.
IF NOT CEE000 OF FC THEN
DISPLAY "CEE3DLY FAILED WITH MSG "
MSG-NO OF FC
STOP RUN
END-IF.
MOVE FUNCTION CURRENT-DATE TO DATE-TIME.
STRING DATE-TIME (5:2) "/"
DATE-TIME (7:2) "/"
DATE-TIME (3:2)
DELIMITED BY SIZE
INTO CURRENT-DATE.
STRING DATE-TIME (9:2) ":"
DATE-TIME (11:2) ":"
DATE-TIME (13:2)
DELIMITED BY SIZE
INTO TIME-OF-DAY.
DISPLAY "CEE3DLY - COMPLETED"
DISPLAY "DATE : " CURRENT-DATE
DISPLAY "TIME : " TIME-OF-DAY
GOBACK.
- An example of CEE3DLY called by PL/I:
*PROCESS MACRO; 00001000
/***************************************************/ 00013000
/*MODULE/FILE NAME: IBM3DLY */ 00014000
/*******************************************************************/ 00015000
/** **/ 00016000
/** FUNCTION: CEE3DLY - SUSPENDS ENCLAVE EXECUTION IN SECONDS **/ 00017000
/** **/ 00018000
/** THIS EXAMPLE CALLS CEE3DLY TO SUSPEND PROCESSING OF THE **/ 00019000
/** ACTIVE ENCLAVE FOR SPECIFIED NUMBER OF SECONDS. **/ 00020000
/** **/ 00021000
/*******************************************************************/ 00022000
PLI3DLY: PROCEDURE OPTIONS (MAIN) REORDER; 00023000
00024000
%INCLUDE CEEIBMAW; 00025000
%INCLUDE CEEIBMCT; 00026000
00027000
DECLARE DLYSECS REAL FIXED BINARY(31,0); 00028000
DECLARE LILIAN REAL FIXED BINARY(31,0); 00029000
DECLARE SECONDS REAL FLOAT DECIMAL(16); 00030000
DECLARE GREGORN CHARACTER (17); 00031000
00032000
DECLARE 01 FC1, /* FEEDBACK TOKEN FOR CEELOCT */ 00033000
03 MSGSEV REAL FIXED BINARY(15,0), 00034000
03 MSGNO REAL FIXED BINARY(15,0), 00035000
03 FLAGS, 00036000
05 CASE BIT(2), 00037000
05 SEVERITY BIT(3), 00038000
05 CONTROL BIT(3), 00039000
03 FACID CHAR(3), 00040000
03 ISI REAL FIXED BINARY(31,0); 00041000
00042000
DECLARE 01 FC2, /* FEEDBACK TOKEN FOR CEE3DLY */ 00043000
03 MSGSEV REAL FIXED BINARY(15,0), 00044000
03 MSGNO REAL FIXED BINARY(15,0), 00045000
03 FLAGS, 00046000
05 CASE BIT(2), 00047000
05 SEVERITY BIT(3), 00048000
05 CONTROL BIT(3), 00049000
03 FACID CHAR(3), 00050000
03 ISI REAL FIXED BINARY(31,0); 00051000
00052000
CALL CEELOCT ( LILIAN, SECONDS, GREGORN, FC1 ); 00053000
IF FBCHECK(FC1, CEE000) THEN DO; 00054000
PUT SKIP LIST ( 'CEE3DLY START DATE AND TIME: ' || GREGORN ); 00055000
END; 00056000
ELSE DO; 00057000
PUT ( 'CEELOCT FAILED WITH MSG ' || FC1.MSGNO ); 00058000
STOP; 00059000
END; 00060000
DLYSECS = 30; 00062000
CALL CEE3DLY(DLYSECS, FC2); 00063000
IF FBCHECK(FC2, CEE000) THEN DO; 00064000
CALL CEELOCT ( LILIAN, SECONDS, GREGORN, FC1 ); 00065000
IF FBCHECK(FC1, CEE000) THEN DO; 00066000
PUT SKIP LIST ( 'CEE3DLY FINISH DATE AND TIME: ' || GREGORN ); 00067000
END; 00068000
ELSE DO; 00069000
PUT ('CEELOCT FAILED WITH MSG ' || FC1.MSGNO ); 00070000
STOP; 00071000
END; 00072000
PUT SKIP LIST ( 'CEE3DLY IS SUCCESSFUL!' ); 00073000
END; 00074000
ELSE DO; 00075000
PUT SKIP LIST ( 'CEE3DLY FAILED WITH MSG ' || FC2.MSGNO ); 00076000
STOP; 00077000
END; 00078000
00079000
END PLI3DLY; 00061000
|