IBM Support

PH43846: ATTRIBUTES OF LITERALS AND ASMA042W MESSAGE INSERT CORRUPTION

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • If conditional assembly code references the length attribute of
    a literal supplied in a variable, for example L'&LIT where &LIT
    contains '=A(1)', but the literal is not previously defined or
    has invalid syntax, message ASMA042W is issued with a corrupted
    insert. Also, if the literal was not previously defined it
    should have been automatically defined by the reference, and
    this also applies to other attributes of literals (apart from
    the Defined attribute).
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of HLASM for z/OS, z/VM, z/VSE and     *
    *                 Linux                                        *
    ****************************************************************
    * PROBLEM DESCRIPTION: ASMA042W insert corrupted and other     *
    *                      problems with attributes of literals    *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    1.  A reference in conditional assembly code to the length
        attribute of a previously undefined literal in a variable,
        for example in the form L'&VAR, produced message ASMA042W
        with a corrupted insert.
    
    2.  Since HLASM 1.4, all references to literals, including
        attribute references (apart from the Defined attribute) were
        intended to define the literal, so ASMA042W should not have
        been possible in this case.  However, the implementation did
        not handle conditional assembly attribute references to a
        literal in a variable, for example L'&VAR where &VAR
        contains a literal.
    
        Generating a literal when the only use is for an attribute
        reference is a waste of storage, as the literal is not used.
        It would be better to allow the literal to be defined, but
        to avoid including it in a literal pool in this case.  This
        would also avoid the risk of causing existing programs to
        fail to assemble because of addressability problems caused
        by an increased number of literals after fixing the previous
        omission.
    
    3.  A direct reference to an attribute of a literal in a
        conditional assembly statement (except for the Defined or
        Type attribute) defined the literal at the time that the
        statement was defined, even if that statement was never
        executed.
    
    4.  A reference to an attribute of a literal V-con incorrectly
        incremented the scan pointer past the delimiter at the end
        of the literal.  In open code where the literal was followed
        by two or more spaces, this would appear to work, but the
        literal name would include a trailing space, so it would not
        be commoned up with a direct reference to the same literal.
        In other contexts, this usually failed with message
        ASMA145E.
    

Problem conclusion

  • 1.  The insert for message ASMA042W is now corrected, although
        it is no longer needed in the original context.
    
    2.  Any reference to a literal other than the Defined attribute
        now defines the literal and adds it to the symbol table, but
        in the unusual case that there are no references to that
        literal other than attribute references, it is not generated
        in the next literal pool.
    
        If there are literals pending at the end of the program but
        they are all only referenced for attributes, no implicit
        literal pool is generated by the END statement.
    
        This means that a literal which only appears in an attribute
        reference will not be fully evaluated, so for example any
        references to undefined symbols within the literal value
        will not be detected.
    
        A literal containing '*' for the location counter generates
        a unique copy for each statement that references it, as the
        location may be different.  This means that separate
        references to the length attribute and value of a literal
        such as =A(*-START) will actually define two literals, but
        the one for the length attribute will not be generated.
    
    3.  A reference in a conditional assembly statement to an
        attribute (other than the Defined attribute) of a literal
        now defines the literal only when that statement is
        executed.
    
    4.  Processing of an attribute reference to a literal V-con has
        been corrected.
    
    Documentation changes to clarify the processing for attributes
    of literals, as described above, will be included in a future
    update to the publications.
    

Temporary fix

Comments

  • ×**** AE23/05/04 FIX IN ERROR. SEE APAR PH54338  FOR DESCRIPTION
    

APAR Information

  • APAR number

    PH43846

  • Reported component name

    HLASM MVS, VM &

  • Reported component ID

    569623400

  • Reported release

    160

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-02-04

  • Closed date

    2022-02-14

  • Last modified date

    2023-05-08

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

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

    UI79282 UI79283 UI79284

Modules/Macros

  •    ASMAINFO ASMA1G   ASMA1M   ASMA1N   ASMA1W
    ASMA12   ASMA15   ASMA16   ASMA2R   ASMA24   ASMA9Z
    

Fix information

  • Fixed component name

    HLASM MVS, VM &

  • Fixed component ID

    569623400

Applicable component levels

  • R160 PSY UI79283

       UP22/02/15 P F202

  • R360 PSY UI79282

       UP22/02/14 P 2202

  • R689 PSY UI79284

       UP22/02/14 I 1000

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":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSENW6","label":"High Level Assembler and Toolkit Feature"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"160"}]

Document Information

Modified date:
08 May 2023