Skip to Main Content
IBM Power Ideas Portal


This portal is to open public enhancement requests against IBM Power Systems products, including IBM i. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Submitted
Workspace IBM i
Created by Guest
Created on Dec 18, 2024

ADD in QSYS2 TABLES a new table to know wich programms use an exported porcedure from à service program

Hi,

QSYS2 functions and tables allow you to know:
- What procedures are exported by our service programs.
- What programs use our service programs.

But it is not possible to know which programs use which exported procedure.

This is a pity because it involves developing to look in the sources of the programs that use the service programs to find out which exported procedures are used.

 

I can find the information with the next sql sentence :

    SELECT  A.PROGRAM_LIBRARY                       AS "SERVICE_PROGRAM_LIBRARY", 
            A.PROGRAM_NAME                                     AS "SERVICE_PROGRAM", 
            A.OBJECT_TYPE                                            AS "OBJECT_TYPE", 
            A.SYMBOL_NAME                                         AS "EXPORTED_PROCEDURE",
            B.PROGRAM_LIBRARY                                AS "PROGRAM_USE_EXPORTED_PROCEDURE_LIBRARY", 
            B.PROGRAM_NAME                                     AS "PROGRAM_USE_EXPORTED_PROCEDURE",
            B.OBJECT_TYPE                                            AS "PROGRAM_USE_EXPORTED_PROCEDURE_TYPE",
            TRIM(C.SOURCE_FILE_LIBRARY) CONCAT '/' CONCAT TRIM(C.SOURCE_FILE)
            CONCAT '(' CONCAT TRIM(C.SOURCE_FILE_MEMBER) CONCAT ')' AS PATH_SOURCE
    FROM        QSYS2.PROGRAM_EXPORT_IMPORT_INFO    A
    LEFT JOIN   QSYS2.BOUND_SRVPGM_INFO             B
        ON B.BOUND_SERVICE_PROGRAM = A.PROGRAM_NAME
    LEFT JOIN QSYS2.BOUND_MODULE_INFO C
        ON  C.PROGRAM_LIBRARY = B.PROGRAM_LIBRARY
        AND C.PROGRAM_NAME    = B.PROGRAM_NAME       
   WHERE A.PROGRAM_LIBRARY          = 'my_program_library'
     AND A.PROGRAM_NAME                   = 'my_service_program'
     AND B.PROGRAM_LIBRARY              = 'my_program_library'
     AND LOCATE_IN_STRING(GET_CLOB_FROM_FILE(TRIM(C.SOURCE_FILE_LIBRARY) CONCAT '/' CONCAT TRIM(C.SOURCE_FILE)
      CONCAT '(' CONCAT TRIM(C.SOURCE_FILE_MEMBER) CONCAT ')'1), A.SYMBOL_NAME) > 0;

 

(With commit control active for the GET_CLOB_FROM_FILE...)

So i know how retrieve the programs who use my exported procedure but i wanted to know if it'll be possible to have a futur QSYS2 Table with this information directely...

 

Thank you

Idea priority Low
  • Guest
    Reply
    |
    Jan 26, 2025

    That's a great idea - but as mentioned, it would be necessary to extract that information from the linkage process. As ILE "late binding" is based on service program and procedure "slot" (the ordinal number of the exported procedure - not the name) this could result in wrong information. It would be great, if the new table/view would list :

    • program
    • Service program
    • procedure "Slot"
    • originally imported procedure name
    • actual exported procedure name for that "slot"

    This would in fact help, when service program exports are changed and the service program signature is staying the same.

  • Guest
    Reply
    |
    Dec 20, 2024

    Jérôme,

    That's a great idea!


    But it would be interesting if IBM added linking information to the created program or service program:

    - the syntactic analysis of the program source code can be complex (management of /include for example)

    - the name of the procedure actually exported can be different from the name used for the call (see extproc)

    - procedure pointer (limited use but difficult to analyze)

    The analysis of the compilation spool would be more relevant, but much more complex!


    IBM could add information on the resolution of imports (procedures and variables) at the level of programs and service programs: external resolution (from a service program) or internal resolution (via a module in the object) for example


    Nathanaël