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 Not under consideration
Workspace IBM i
Created by Guest
Created on Feb 10, 2022

Deliver a Generate List of Menu Options API

Standard (legacy?) IBM i menu object create a *MSGF that contains the Menu options as a MSGID entry. These menu options can be retrieved using the QMHRTVM easily.
However our UIM-based IBM menus have no such equivalent and therefore present a problem in that we can't do an accurate WHERE USED process for programs called from Menus. This request is to provide an API that can extract a list of Menu options the the program or command string behind those options; specifically for UIM based menus.


Use Case:

Using QMHRTVM and our RTVMNUOPT SQL Table Function we can easily extract the menu options any and all Menus that are not UIM-based.
However this technique does not permit use to do the same for UIM-based menus. Therefore we can only scan legacy/non-UIM menus for program cross references and other option information leaving UIM-based menus out.


Idea priority Low
  • Guest
    Reply
    |
    Feb 14, 2024

    If it would be a lot of work, then provide an API that can return a pointer to either the *UIM or *DSPF menu object's associated space, and I'll spend a day and write it myself. I wrote a decompiler for the *CMD object to materialize its source code, and also wrote the first RTVCLSRC command (both over 35 years ago) so I think I can handle the rather basic *MENU space structure. In fact this should be a new RFE, Provide an API to retieve a pointer to the associated space for user-created objects such as Menus, Binding Directories, etc so we can read that information as necessary.

  • Guest
    Reply
    |
    Jun 4, 2022
    It would be a lot of work to produce/retrieve this information for a MENU object, along with the low number of votes, IBM does not intend to provide a solution to this request at this time, so it is being closed.
  • Guest
    Reply
    |
    Mar 14, 2022

    I'm a little confused as to the "information provided" status of this RFE?
    I provided an overly detailed example of an imaginary API named QmmRMO (Retrieve Menu Options) that does not currently exist.
    Can we update the status please? Thanks.

  • Guest
    Reply
    |
    Mar 10, 2022

    Retrieve Menu Options (QmmRMO) API

    The Retrieve Menu Options (QmmRMO) API lists menu options for non-*PGM menus. The resulting list is returned to a User Space.

    Required Parameter Group:
    1. Qualified User space name INPUT CHAR(20)
    2. API Format Name INPUT CHAR(8)
    3. Qualified Message File Name INPUT CHAR(20)
    4. Error Code I/O CHAR(*)

    Qualified User Space - CHAR(20)
    The name of the user space that is to receive the created list.

    Format Name - CHAR(8)
    The format of the information returned.
    • MNUL0100 - Option information

    Qualified Menu Name - CHAR(20)
    The menu whose options are to be placed in the list.

    Error Code - CHAR(*)
    The structure in which the return error information.

    Format of the Generated List
    The field list consists of:
    • The user area
    • The generic header
    • The input parameter section
    • The custom header section
    • The MNUL0100 list

    The custom Header Section for this API is:

    typedef _Packed qus__lmnu_Header
    {
    char Menu_Name[10];
    char Menu_Library[10];
    char Menu_Type[10]; // *DSPF *UIM *PGM
    char Message_File[10];
    char Message_File_Library[10];
    char Display_File[10];
    char Display_File_Library[10];
    char Program_Name[10];
    char Program_Library[10];
    char Cmdline_Length[10]; // *LONG, *SHORT. *NONE
    char FKey_Display[1]; // 1=*YES, 0=*NO
    char CURLIB[10]; // name, *NOCHG, *MNULIB, *CRTDFT
    char PRDLIB[10]; // name, *NOCHG, *NONE
    char Text_Description[50];
    } qus__lmnu_Header_t;


    MNUL0100 List Data Section
    The following information is returned in the list data section of MMUL0100 format. This entry is repeated for each Menu Option on the list.
    [NOTE: I've used C language notation here instead of IBM Docs style]
    typedef _Packed qus_MNUL0100
    {
    char Menu_Option[10]; // I'm unsure of maxLen for Options
    char Menu_Option_Message_ID[7]; // MSGID if *DSPF type menu
    char Menu_Cmd[255]; // Command behind menu option
    } qus_MNUL0100_t;

  • Guest
    Reply
    |
    Mar 10, 2022

    The SQL Tools RTVMNUOPT Table function only produces results for non-UIM, non-PGM based menus.
    The request is for UIM based menus to have an interface (API) that returns the options being evoked for those menus.
    Clearly when I select an option on a UIM based menu, it know the option it is going to perform. Thus the OPTION->Program behind the OPTION is available somewhere. I am asking that an API be created that returns a list of those options to the caller.
    It would be nice if a menu option API for *MSGF and *UIM-based menus were available so we can use it to get either type. I'm sure *PGM menus are out of the picture since user-supplied programs process those requests, hence there is no capability to extract the options for that type of menu.

    We use the RTVMNUOPT Link: http://www.sqliquery.com/SQLTools/UDTFParmDoc.html?UDTF=ST_RTVMNUO

    Today since we have to know that *MSGF menus are *MSGF objects we know we can use the retrieve message API to get to those options. So we do that and wrap it up in the SQL Table function. However it is limited to just *MSGF menus. We would also like to incorporate *UIM menus.
    That way we can allow our customers/users to build a more robust where used that includes *UIM menus along with the *MSGF menus and Job Scheduler entries that we already provide.
    Thank you.

  • Guest
    Reply
    |
    Feb 16, 2022

    Due to processing by IBM, this request was reassigned to have the following updated attributes:
    Brand - Servers and Systems Software
    Product family - Power Systems
    Product - IBM i
    Component - Languages - CL (Control Language)
    Operating system - IBM i
    Source - None

    For recording keeping, the previous attributes were:
    Brand - Servers and Systems Software
    Product family - Power Systems
    Product - IBM i
    Component - Core OS
    Operating system - IBM i
    Source - None

  • Guest
    Reply
    |
    Feb 15, 2022

    Does the resolve work on QSECURITY(40) systems? I find that to not work very often. I recently tried it on a Binding Directory in an attempt to build an SQL Table function that extracts binding directory entries but it failed for the purpose mentioned. I ended up usng the DSPBNDDIR outfile support instead, but I felt dirty doing it that way.

  • Guest
    Reply
    |
    Feb 14, 2022

    Great RFE.

    Until now I have mitigated the issue by resolving a space pointer to the UIM menu object and done som heavy reverse engineering. This approach is nothing I would recommend for anybody. Your RFE is a much better solution.