CEE3INF—Query enclave information
CEE3INF queries and returns to the calling routine the information about the system or subsystem,
the environment information, the member languages, and the version of Language Environment associated with this enclave.
- sys/subsys (input/output)
- As input, sys/subsys is considered to be an address to a fullword. As output,
the fullword is a 32-bit map that represents the operating system or subsystem on which the enclave
is currently running.
- 0
- Currently executing in the CICS® environment.
- 1
- Currently executing in a CICS_PIPI environment.
- 2-3
- Reserved for other specific CICS environments.
- 4
- Currently executing in a TSO environment.
- 5
- Currently executing in a Batch environment.
- 6
- Currently executing in a z/OS® UNIX environment.
- 7-28
- Reserved for future use
- 29
- Executing on z/VSE®.
- 30
- Executing on z/OS.
- 31
- Reserved.
- env-info (input/output)
- As input, env-info is considered to be an address to a fullword. As output,
the fullword is a 32-bit map representing the environments that are active in that enclave.
- 0
- Currently executing in a PIPI environment.
- 1
- Currently executing in a PIPI-Main environment.
- 2
- Currently executing in a PIPI-Sub environment.
- 3
- Currently executing in a PIPI-Subdp environment.
- 4
- Currently executing in a PICI (Pre-init compatibility interface) environment.
- 5
- Currently executing in a nested enclave.
- 6
- LRR is active in the current enclave.
- 7
- Runtime reuse is active in the current environment.
- 8
- XPLINK(ON) is in effect in the current enclave.
- 9
- POSIX(ON) RTO in effect in the current enclave.
- 10
- At least one pthread has been created in this enclave.
- 11
- Currently executing on the IPT.
- 12
- Multithreaded fork is in effect in the current enclave.
- 13-14
- AMODE Init
- B'00'
- AMODE 24
- B'10'
- AMODE 31
- 15
- Currently executing in a PIPI-Maindp environment
- 16-31
- Reserved for future use
- member-id (input/output)
- As input, member-id is considered to be an address to a fullword. As output,
the fullword is a 32-bit map representing the member languages that are initialized in that enclave.
- 0
- Reserved
- 1
- Reserved
- 2
- Reserved
- 3
- C/C++
- 4
- Reserved
- 5
- COBOL
- 6
- Reserved
- 7
- Fortran
- 8-9
- Reserved
- 10
- PL/I
- 11
- Enterprise PL/I
- 12-14
- Reserved
- 15
- Reserved
- 16
- Reserved
- 17-23
- Reserved for future use
- 24-31
- The current version number of CEE3INF. It is set to 0.
- gpid (input/output)
- A fullword integer representing the version of Language Environment that created this thread. This fullword can be
interpreted as a four-byte hex number as follows:
|PP|VV|RR|MM|
- PP
- product number
- VV
- version
- RR
- release
- MM
- modification
- 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 CEE000 0 — The service completed successfully.
Usage notes
- z/OS UNIX considerations: CEE3INF is allowed only in the thread level.
- If you are not interested in any one of the parameters being passed, a
0
must be placed in the slot of those parameters. This indicates that no information is needed regarding that parameter. - When the PIPI or nested enclave environment bit is on, a subsystem bit cannot be set.
Examples
- An example of CEE3INF called by C/C++:
/*Module/File Name: EDC3INF */ /*********************************************************************/ /* */ /* THIS EXAMPLE CALLS CEE3INF TO GET INFORMATION OF THE CURRENT */ /* ENCLAVE, LIKE THE SYSTEM/SUBSYSTEM, THE ENVIRONMENT INFORMATION, */ /* THE MEMBER LANGUAGES USED AND THE VERSION OF LANGUAGE ENVIRONMENT.*/ /* */ /*********************************************************************/ #include <leawi.h> #include <string.h> #include <ceeedcct.h> int main(void) { _INT4 sys_subsys,env_info,member_id,gpid; _FEEDBACK fc; /* Calling CEE3INF to get the information */ CEE3INF(&sys_subsys,&env_info,&member_id,&gpid,&fc); if ( _FBCHECK(fc,CEE000) != 0 ) { printf("CEE3INF failed with message number %d\n", fc.tok_msgno); } printf("System/Subsystem in hex %08x \n",sys_subsys); printf("Enviornment info in hex %08x \n",env_info); printf("Member languages in hex %08x \n",member_id); printf("GPID information in hex %08x \n",gpid); printf("\n"); }
- An example of CEE3INF called by COBOL:
CBL LIB,QUOTE ************************************************* *Module/File Name: IGZTINF ***************************************************************** ** ** ** Function: CEE3INF - Query enclave information ** ** ** ** This example calls CEE3INF to gather data about the current ** ** enclave like the system/subsystem, environment information, ** ** member languages, and Language Environment version number. ** ** ** ***************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. CBL3INF. DATA DIVISION. WORKING-STORAGE SECTION. ********************************************************** ** Define space for a Language Environment feedback ** ** code (12 total bytes). ** ** Include a copy of CEEIGZCT to get pre-defined ** ** Language Environment condition tokens. ** ********************************************************** 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-SEV-CTL PIC X. 03 FACILITY-ID PIC XXX. 02 I-S-INFO PIC S9(9) BINARY. ********************************************************** ** Define some storage to be used by the Language ** ** Environment callable service. ** ********************************************************** 01 SYS-SUBSYS PIC S9(9) BINARY. 01 ENV-INFO PIC S9(9) BINARY. 01 MEM-ID PIC S9(9) BINARY. 01 GPID PIC S9(9) BINARY. PROCEDURE DIVISION. MAIN-PROG. * ************************************************* * ** Now call CEE3INF. It returns the results ** * ** of the query on the environment and the ** * ** feedback code. ** * ** Report error and stop if CEE3INF fails. ** * ************************************************* CALL "CEE3INF" USING SYS-SUBSYS, ENV-INFO, MEM-ID, GPID, FC. IF CEE000 OF FC THEN DISPLAY "SYS-SUBSYS: " SYS-SUBSYS DISPLAY "ENV-INFO : " ENV-INFO DISPLAY "MEM-ID : " MEM-ID DISPLAY "GPID : " GPID ELSE DISPLAY "CEE3INF FAILED WITH MSG " MSG-NO OF FC UPON CONSOLE STOP RUN END-IF. GOBACK.
- An example of CEE3INF called by PL/I:
*PROCESS MACRO; /***************************************************/ /*Module/File Name: IBM3INF */ /*******************************************************************/ /** **/ /** Function: CEE3INF - query enclave information **/ /** **/ /** This example calls CEE3INF to gather data about the current **/ /** enclave like the system/subsystem, environment information, **/ /** member languages, and Language Environment version number. **/ /** **/ /*******************************************************************/ PLI3INF: PROCEDURE OPTIONS (MAIN) REORDER; %INCLUDE CEEIBMAW; %INCLUDE CEEIBMCT; DCL SYSPRINT File Output Stream; DCL SYS_SUB REAL FIXED BINARY(31,0), ENV_INF REAL FIXED BINARY(31,0), MEM_ID REAL FIXED BINARY(31,0), GPID REAL FIXED BINARY(31,0); /********************************************************/ /* Declare a Language Environment Feedback token. */ /* 12 Total bytes of storage. */ /********************************************************/ Declare 01 LE_Feedback_Code, 03 MsgSev REAL FIXED BINARY(15,0), 03 MsgNo REAL FIXED BINARY(15,0), 03 Flags, 05 Case BIT(2), 05 Severity BIT(3), 05 Control BIT(3), 03 FacID CHAR(3), 03 ISI REAL FIXED BINARY(31,0); /********************************************************/ /* Local declares needed for Messaging Callable Services*/ /********************************************************/ Declare Msg_dest REAL FIXED BINARY(31,0); Declare Msg_String CHAR(255) VARYING; Msg_dest = 2; /********************************************************/ /* Call CEE3INF to request info about the */ /* current enclave */ /********************************************************/ CALL CEE3INF(SYS_SUB,ENV_INF,MEM_ID,GPID,LE_Feedback_Code); /********************************************************/ /* Output the result. */ /********************************************************/ Msg_String = ’System-Subsystem : ’ || BIT(SYS_SUB); Call CEEMOUT(Msg_String,Msg_Dest,LE_Feedback_Code); Msg_String = ’Environment Information: ’ || BIT(ENV_INF); Call CEEMOUT(Msg_String,Msg_Dest,LE_Feedback_Code); Msg_String = ’Member Languages : ’ || BIT(MEM_ID); Call CEEMOUT(Msg_String,Msg_Dest,LE_Feedback_Code);