IBM Support

PH56800: NEW FUNCTION - Support for fetchable non-DLLs in CEL4RO31

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as new function.

Error description

  • New Function
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  z/OS Language Environment users of the      *
    *                  CEL4RO31 interface                          *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: The CEL4RO31 interface has been         *
    *                      enhanced to provide a subroutine load   *
    *                      function. In addition, the execute      *
    *                      and delete functions will handle        *
    *                      subroutines.                            *
    ****************************************************************
    See problem description.
    

Problem conclusion

Temporary fix

Comments

  • The CEL4RO31 service has been enhanced to provide a subroutine
    load function. In addition, the execute and delete functions
    will handle subroutines.
    
    The following publication must be updated.
    ================================================================
    z/OS Language Environment Vendor Interfaces (SA38-0688)
    
    In part Language Environment vendor interfaces for AMODE 31 and
    AMODE 64 interoperability
    In chapter Compiler-writer interfaces (CWIs) supported for
    AMODE 31 and AMODE 64 interoperability
    In section CEL4RO31 - Prepare and run programs in the AMODE 31
    environment
    Add this paragraph, after the first paragraph and before the
    Syntax section:
        This service can perform load, query (for DLLs only),
        execute and delete functions.  These functions can be called
        individually or in combination. This service can be used to
        run a function exported from a DLL or a fetchable
        subroutine. This service does not support running a C, PL/I
        or assembler main routine.
    In table Layout for RO31_CB: A fixed-length control block
    (1) Update field description of version field:
         A fullword integer which contains the version of RO31_INFO.
         - Version 1 provides the functions dll load, dll query,
         execute and delete.
         - Version 2 provides all the functions from version 1 plus
         subroutine load. CEL4RO31 will fail if reserved flags are
         not zero.
    (2) Update field description of flags field:
         A fullword field that contains flags to control the
         behavior of CEL4RO31:
         Byte 1
               - Bit0: dll load flag - Load DLL and return handle.
               - Bit1: dll query flag - Locate exported function in
               DLL identified by handle and return function
               descriptor.
               - Bit2: function execution flag - Invoke the program
               identified by the func_desc field.
               - Bit3: delete flag - Delete the module identified by
               the handle field.
               - Bit4: subroutine load flag - Load the subroutine
               and return the handle and the function descriptor.
               This type of load is like invoking the CEEFETCH
               assembler macro with SCOPE=ENCLAVE and SEARCH=MVS.
               - Bit5-7: reserved
         Byte 2-Byte 4
               reserved
         All reserved flags must be zero.
    (3) Change the dll_handle field name to handle. Update field
    description:
         A fullword field that contains the handle of the target
         program:
         - Output:
           * If the dll load flag is on, CEL4RO31 will load
           the target DLL and save the DLL handle in this field as
           output.
           * If the subroutine load flag is on, CEL4RO31 will load
           the target subroutine and save the handle in this field
           as output.
         - Input:
           * If the dll query flag is on, CEL4RO31 will query target
             function based on this DLL handle.
           * If the delete flag is on, CEL4RO31 will delete
             target module identified by this handle.
    (4) Update field description of func_desc field:
        A fullword field which contains the function descriptor of
        target program
        - Output:
          * If the dll query flag is on, CEL4RO31 will save the
          function descriptor of target program to this field as
          output.
          * If the subroutine load flag is on, CEL4RO31 will save
          the function descriptor of target program to this field as
          output.
        - Input:
          * If the function execution flag is on, CEL4RO31 will take
          the function descriptor of target program from this field
          as input.
    (5) Add the following return codes to the field description of
    retcode field:
        8 - dll load flag and subroutine load flag are mutually
        exclusive. No processing is performed.
        9 - dll query flag can not be set with subroutine load flag.
        No processing is performed.
        10 - reserved flag bits are not all zero. No processing is
        performed.
        11 - One or more flags are set that are not supported for
        the version specified. No processing is performed.
        12 - The version specified is not valid. No processing is
        performed.
        13 - Subroutine load failed.
        14 - Subroutine load failed. The module is not a subroutine.
        15 - Delete failed for target subroutine.
        16 - Delete failed. Handle was not recognized.
    
    In figure RO31_CB flag 1
    (1) Update the figure as below:
        '0.......'B CEL4RO31 will not load target DLL
        '1.......'B CEL4RO31 will load target DLL
        '.0......'B CEL4RO31 will not query target function
        '.1......'B CEL4RO31 will query target function
        '..0.....'B CEL4RO31 will not execute target function
        '..1.....'B CEL4RO31 will execute target function
        '...0....'B CEL4RO31 will not delete target module
        '...1....'B CEL4RO31 will delete target module
        '....0...'B CEL4RO31 will not load target subroutine
        '....1...'B CEL4RO31 will load target subroutine
        '.....000'B Reserved, must all be zero
    
    In Usage Notes:
    (1) Add the following new notes:
        - The dll load flag and subroutine load flag are mutually
        exclusive. Only one type of load can be requested.
        - The dll query flag and subroutine load flag are mutually
        exclusive. The dll query function requires a handle from a
        dll load as input.
    

APAR Information

  • APAR number

    PH56800

  • Reported component name

    LE BASE FOR Z/O

  • Reported component ID

    568819801

  • Reported release

    7D0

  • Status

    CLOSED UR1

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    YesSpecatt / New Function / Xsystem

  • Submitted date

    2023-09-07

  • Closed date

    2023-12-06

  • Last modified date

    2024-02-09

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UI94729 UI94730

Modules/Macros

  • CEELDLL  CELQRO31
    

Publications Referenced
SA380688XX    

Fix information

  • Fixed component name

    LE BASE FOR Z/O

  • Fixed component ID

    568819801

Applicable component levels

  • R7D0 PSY UI94730

       UP23/12/20 P F312  

  • R7E0 PSY UI94729

       UP23/12/20 P F312  

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU011","label":"Systems - zSystems software"},"Product":{"code":"SG19O"},"Platform":[{"code":"PF054","label":"z Systems"}],"Version":"7D0"}]

Document Information

Modified date:
11 February 2024