CEE3DLY—Suspend processing of the active enclave in seconds
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.
- 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 are possible:
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