A fix is available
APAR status
Closed as program error.
Error description
A dependent USING statement is currently required to be resolved using 12-bit addressing. For programs which use 20-bit addressing, this can be an unhelpful limitation. Also, the Using Map report and Active Usings headings may show incorrect start and range values if a dependent USING base address is not the start of a section.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Users of HLASM for z/OS, z/VM, z/VSE and * * Linux * **************************************************************** * PROBLEM DESCRIPTION: Dependent USING incorrectly required * * 12 bit displacement to resolve * **************************************************************** * RECOMMENDATION: * **************************************************************** 1. A dependent USING instruction is rejected if the second operand address cannot be referenced using a 12-bit displacement, although the documentation suggests that a 20-bit displacement should also be accepted. This can be worked around, but is an unhelpful limitation when writing programs that use 20-bit displacements. 2. The USING Map information in the value field for a dependent USING was incorrect when the specified base address was not the start of a section. It should always be the offset of the second (address) operand from the start of the supporting ordinary USING. Similar problems were also present in the register offset values shown for dependent USINGs in the Active Usings headings. 3. If a USING statement was used to resolve a qualified (labeled) dependent USING, the last used statement and maximum displacement in the USING Map were incorrectly updated even though this should not count as a reference. 4. If an end address is specified on a dependent USING, the documentation says that the range will be limited either to that end address or to the end address of the original USING, whichever is lesser. This check was not complete, so the range of a dependent USING was not being limited by an end address specified on the original USING. 5. If the Active Using headers included a nesting depth, there should have been one blank before the first USING item.
Problem conclusion
1. If the selected OPTABLE option supports 20-bit addressing, a dependent USING statement is now accepted whenever the second operand address is addressable using either a 12-bit displacement or a signed 20-bit displacement if necessary. The displacement value in the object code columns of the USING statement is now increased to five hexadecimal digits (a signed 20-bit displacement) if the first byte is non-zero. 2. The value field shown in the USING map has been corrected for a dependent USING where the base address is not at the start of a section. The offset may now be a negative value when a 20-bit displacement is used. The active USING headings have also been corrected for similar existing problems with dependent USINGs and updated to show correct information for 20-bit dependent USING statements. If the second operand address is not addressable by a 12-bit displacement, then the 12-bit range is now shown as '(0)'. Also, if the range of addressability for a dependent USING is simply to the end of the base registers, the range is omitted, as for an ordinary USING, even if the start of range is offset from the first base register. 3. The last used statement and maximum displacement in the USING map are no longer updated when the USING statement is being used only to resolve another USING statement. 4. If the end address specified on a dependent USING is beyond the end address of the original USING, it is now limited to match the original USING, as documented. 5. When the Active Using headers include a nesting depth, there is now a blank after "(n):" before the first USING item. DOCUMENTATION UPDATES: In the HLASM Language Reference, SC26-4940, in the topic "Dependent USING instruction", the second sentence of the description of the address operand is modified as follows: The range of an active USING is considered to be that which is valid for generating 12 bit displacements, or for signed 20 bit displacements if the specified OPTABLE level includes support for instructions with displacements in this form. END OF DOCUMENTATION UPDATES
Temporary fix
Comments
×**** PE22/01/25 FIX IN ERROR. SEE APAR PH42918 FOR DESCRIPTION
APAR Information
APAR number
PH42050
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
2021-11-12
Closed date
2021-11-16
Last modified date
2022-01-25
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI78084 UI78085 UI78086
Modules/Macros
ASMAINFO ASMA2F ASMA2W ASMA26 ASMA9Z
| SC26494009 |
Fix information
Fixed component name
HLASM MVS, VM &
Fixed component ID
569623400
Applicable component levels
R160 PSY UI78085
UP21/11/17 P F111
R360 PSY UI78084
UP21/11/16 P 2111
R689 PSY UI78086
UP21/11/16 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.
[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"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:
26 January 2022