Skip to Main Content
IBM Z Software


This portal is to open public enhancement requests against IBM Z Software products. 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
Categories Assembler
Created by Guest
Created on Sep 28, 2017

System Variable Symbol &SYSRMODE

I need a way to determine the RMODE of a CSECT from within a MACRO, if the RMODE was set via either an RMODE statement, or a CATTR statement.

Idea priority Medium
  • Guest
    Reply
    |
    Jul 24, 2018

    This is an interesting suggestion, but unfortunately not very practical.

    HLASM system variables provide information either about the overall environment (such as job name) or about the current status during HLASM first pass processing. The RMODE of a section is neither of these; it is an attribute of a control section which may not be resolved until the end of the first pass. If an RMODE or CATTR statement is found with a matching section name, it is used to set the RMODE, but if no such statement is found by the end of the first pass, the RMODE is set to the default value, which is normally 24 but may be affected by an AMODE specification for the same section. The RMODE and AMODE values may also of course be modified at link-edit time.

    If the relevant RMODE statement occurs before the macro which needs to use it, it is possible to capture the RMODE value by using a macro near the start of the program to set up an intercept for the RMODE statement. The macro first uses the OPSYN statement to establish a synonym for the standard RMODE instruction then uses OPSYN again to route the RMODE instruction through a macro, so that it can record the RMODE value for the specified section name in a global variable but pass the operands to the standard RMODE instruction. A similar technique can be used to detect and tolerate multiple RMODE instructions for the same section provided that they are compatible.

    This request as it stands is rejected for the following reasons:

    1. RMODE or AMODE is a section attribute, not part of the current processing environment or status, so it does not belong in a system variable as in the suggested solution. If it were possible to determine the relevant value, the mechanism would probably need to be a built-in function, like SYSATTRA or SYSATTRP.

    2. The RMODE value would only be known if the RMODE (or CATTR) statement preceded the macro testing it (in the same way that SYSATTRA or SYSATTRP can only test attributes of a symbol which is already defined), and even then it could be overriden at link-edit time, so a built-in function would be of limited use.

    We have however noted that if the area of built-in functions is opened up for further development in future, a general function to retrieve section attributes (if known) could be useful.