|
CEEDLYM
provides a service for Language Environment-conforming
applications that suspends the processing of the active enclave for
a specified number of milliseconds. The maximum is 1 hour.
Syntax
>>-CEEDLYM--(--input_milliseconds--,--fc--)--------------------><
- input_milliseconds
- A full-word binary value in the range of 0 to 3,600,000 that specifies
the total number of milliseconds 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. |
CEE3QR |
1 |
CEE3931W |
CEEDLYM was invoked in a CICS® environment. |
CEE3QS |
1 |
CEE3932W |
The system service system_service failed
with return code return_code and reason
code reason_code. |
Usage notes - CICS consideration—CEEDLYM
is not available under CICS.
- z/OS UNIX consideration—CEEDLYM
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 millisecond might occur in some circumstances.
- In a multi-threaded application, only the calling thread is suspended.
Examples - Following is an example of CEEDLYM called by C/C++.
/*Module/File Name: EDCDLYM */
/*********************************************************************/
/* */
/* THIS EXAMPLE CALLS CEEDLYM TO SUSPEND PROCESSING OF THE ACTIVE */
/* ENCLAVE FOR SPECIFIED NUMBER OF MILLISECONDS. */
/* */
/*********************************************************************/
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <leawi.h>
#include <ceeedcct.h>
int main(void)
{
_INT4 millisecs, lil_date;
_FLOAT8 local_date;
_CHAR17 gregorian_date;
_FEEDBACK fc1, fc2;
/* Get current date and time */
CEELOCT(&lil_date,&local_date,gregorian_date,&fc1);
if ( _FBCHECK ( fc1 , CEE000 ) != 0 ) {
printf("CEELOCT failed with message number %d\n",
fc1.tok_msgno);
exit(2999);
}
printf("CEEDLYM Start time : %.17s\n", gregorian_date);
millisecs = 5000;
CEEDLYM(&millisecs,&fc2);
if ( _FBCHECK ( fc2 , CEE000 ) != 0 ) {
printf("CEEDLYM failed with message number %d\n",fc2.tok_msgno);
exit(999);
}
CEELOCT(&lil_date,&local_date,gregorian_date,&fc1);
if ( _FBCHECK ( fc1 , CEE000 ) != 0 ) {
printf("CEELOCT failed with message number %d\n",
fc1.tok_msgno);
exit(2999);
}
printf("CEEDLYM Finish time : %.17s\n",gregorian_date);
}
- Following is an example of CEEDLYM called by COBOL.
CBL LIB,QUOTE
*************************************************
*MODULE/FILE NAME: IGZTDLYM
*****************************************************************
** **
** FUNCTION: CEEDLYM - SUSPEND ENCLAVE EXECUTION IN MILLISECS **
** **
** THIS EXAMPLE CALLS CEEDLYM TO SUSPEND PROCESSING OF THE **
** ACTIVE ENCLAVE FOR SPECIFIED NUMBER OF MILLISECONDS. **
** **
*****************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBLDLYM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LILIAN PIC S9(9) BINARY.
01 SECONDS COMP-2.
01 GREGORN PIC X(17).
01 MILLISECS PIC S9(9) BINARY.
01 FC1.
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.
01 FC2.
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-CBLDLYM.
DISPLAY "CEEDLYM - BEGINS"
CALL "CEELOCT" USING LILIAN, SECONDS, GREGORN, FC1.
IF CEE000 OF FC1 THEN
DISPLAY "START DATE & TIME: " GREGORN
ELSE
DISPLAY "CEELOCT FAILED WITH MSG "
MSG-NO OF FC1
STOP RUN
END-IF.
MOVE 5000 TO MILLISECS.
CALL "CEEDLYM" USING MILLISECS, FC2.
IF NOT CEE000 OF FC2 THEN
DISPLAY "CEEDLYM FAILED WITH MSG "
MSG-NO OF FC2
STOP RUN
END-IF.
DISPLAY "CEEDLYM - COMPLETED"
CALL "CEELOCT" USING LILIAN, SECONDS,
GREGORN, FC1.
IF CEE000 OF FC1 THEN
DISPLAY "FINISH DATE & TIME: " GREGORN
ELSE
DISPLAY "CEELOCT FAILED WITH MSG "
MSG-NO OF FC1
STOP RUN
END-IF.
GOBACK.
- Following is an example of CEEDLYM called by PL/I.
*PROCESS MACRO; 00001000
/*MODULE/FILE NAME: IBMDLYM */ 00014000
/*******************************************************************/ 00015000
/** **/ 00016000
/** FUNCTION: CEEDLYM - SUSPENDS ENCLAVE EXECUTION IN MILLISECS **/ 00017000
/** **/ 00018000
/** THIS EXAMPLE CALLS CEEDLYM TO SUSPEND PROCESSING OF THE **/ 00019000
/** ACTIVE ENCLAVE FOR SPECIFIED NUMBER OF MILLISECS. **/ 00020000
/** **/ 00021000
/*******************************************************************/ 00022000
PLIDLYM: PROCEDURE OPTIONS (MAIN) REORDER; 00023000
00024000
%INCLUDE CEEIBMAW; 00025000
%INCLUDE CEEIBMCT; 00026000
00027000
DECLARE MILLISECS 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 CEEDLYM */ 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 ( 'CEEDLYM START DATE AND TIME: ' || GREGORN ); 00055000
END; 00056000
ELSE DO; 00057000
PUT ( 'CEELOCT FAILED WITH MSG ' || FC1.MSGNO ); 00058000
STOP; 00059000
END; 00060000
00061000
MILLISECS = 6000; 00062000
CALL CEEDLYM(MILLISECS, 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 ( 'CEEDLYM 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 ( 'CEEDLYM IS SUCCESSFUL!' ); 00073000
END; 00074000
ELSE DO; 00075000
PUT SKIP LIST ( 'CEEDLYM FAILED WITH MSG ' || FC2.MSGNO ); 00076000
STOP; 00077000
END; 00078000
00079000
END PLIDLYM; 00080000
|