A fix is available
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