z/OS Language Environment Programming Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


CEE3INF—Query enclave information

z/OS Language Environment Programming Reference
SA38-0683-00

CEE3INF queries and returns to the calling routine the information about the system/subsystem, the environment information, the member languages, and the version of Language Environment associated with this enclave.
Read syntax diagramSkip visual syntax diagram
Syntax

>>-CEE3INF------------------------------------------------------>

>--(--sys/subsys--,--env-info--,--member-id--,--gpid--,--fc--)-><

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
Currently executing on z/VSE®
30
Currently 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. For more information, see z/OS XL C/C++ Programming Guide.
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 currently 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 can result from this service:

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.
  • 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 may not be set.

Examples

  1. 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");
    }
  2. 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.
  3. 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);

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014