A fix is available
APAR status
Closed as program error.
Error description
Unpredictable results could occur when using AINSERT statements to insert code which defined or referenced conditional assembly sequence symbols. Symptoms include "ASMA140W END record missing", program checks or incorrect conditional assembly branches.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Users of HLASM for z/OS, z/VM, z/VSE and * * Linux on z * **************************************************************** * PROBLEM DESCRIPTION: AINSERT support for sequence symbols * **************************************************************** * RECOMMENDATION: * **************************************************************** 1. Unpredictable results could occur when using AINSERT statements to insert code which defined or referenced conditional assembly sequence symbols, or code which triggered lookahead processing. Symptoms include "ASMA140W END record missing", program checks or incorrect conditional assembly branches. 2. In some cases AINSERT statements were processed at unexpected points, in particular if a new AINSERT sequence was created before a previous one had finished being processed. 3. The source indicator prefix in the column after the statement number could sometimes be inconsistent, including the following cases: - When a library macro was invoked from COPY code and had previously been referenced within the same assembly, any continuation lines on the macro call were previously missing the "=" prefix for COPY code. - COPY code within an in-line macro was missing the "=" prefix. - MHELP output could incorrectly be prefixed with ">" or "=". - When code was being read from lookahead, for example because of a conditional assembly branch back, SYSIN statements after a COPY code section could be flagged with "=" as if they were part of the COPY section.
Problem conclusion
1. AINSERT now fully supports the use of open code conditional assembly and lookahead within inserted code sequences, including within COPY statements inserted using AINSERT. 2. AINSERT processing has been revised so that the whole sequence is inserted into the input stream at the relevant point and the active buffer queue is reset to empty, instead of input records being taken from the active AINSERT buffer queue. This prevents any unexpected interaction when AINSERT is used in multiple ways within the same assembly. When processing reaches the end of an AINSERT sequence, or uses a conditional assembly branch to jump out of the sequence, the sequence is discarded and any sequence symbols which were defined within the sequence are deleted, so it is not possible to jump back into the sequence. 3. Source indicator prefixes are now set consistently according to the input type. The MVS PTF for this APAR also contains another copy of the JCLIN for PTF UI42852 because the z/OS 2.3 Serverpac copy of HLASM was built with an older level of the JCLIN, causing the ALIAS IEV90 added in that PTF to go missing from SASMMOD1. DOCUMENTATION UPDATES: In the HLASM Language Reference manual SC26-4940-08 the following changes are required to the topic "AINSERT instruction". Replace the first paragraph with the following revised text (which clarifies how the instruction operates without any functional change): The AINSERT instruction inserts records into the input stream. If it is used in a macro, the records are queued until the macro generator has completed expanding the current outermost macro instruction. At that point the internal buffer queue is inserted into the input stream, so that it provides the next record or records. If AINSERT is used in open code, the buffer queue only contains one record, which is inserted immediately after the AINSERT instruction. An operand controls the sequence of the records within the internal buffer queue. After note 3, add the following additional notes, describing the revised method of processing: 4. After the buffer queue has been inserted into the input stream, any further AINSERT instruction starts a new buffer queue. This is inserted at the appropriate point in the input stream, which may be before the remaining records from a previous inserted buffer queue. 5. Processing of each inserted buffer queue is terminated either when input processing reaches the end of the queue or when a conditional assembly branch is taken to a sequence symbol before or after the point at which the queue was inserted. At this point, any unprocessed source code in the queue or included members is discarded, and any sequence symbols defined by the inserted or included code are deleted. It is not possible for conditional assembly to branch back into the inserted source code. 6. Records in the AINSERT buffer queue are not visible to lookahead processing until the queue has been inserted into the input stream. However, the AREAD instruction takes input records from the AINSERT buffer queue before reading the input stream. END OF DOCUMENTATION UPDATES
Temporary fix
Comments
×**** PE18/02/06 FIX IN ERROR. SEE APAR PI93326 FOR DESCRIPTION ×**** AE18/04/20 FIX IN ERROR. SEE APAR PI96968 FOR DESCRIPTION ×**** AE18/06/25 FIX IN ERROR. SEE APAR PI99545 FOR DESCRIPTION
APAR Information
APAR number
PI90075
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
2017-11-10
Closed date
2018-01-08
Last modified date
2018-07-11
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI53045 UI53046 UI53047
Modules/Macros
ASMAINFO ASMA1A ASMA1F ASMA1J ASMA1L ASMA1M ASMA1N ASMA1P ASMA1R ASMA1S ASMA1W ASMA11 ASMA13 ASMA17 ASMA2R ASMA2V ASMA20 ASMA25 ASMA26 ASMA9Z ASMA90 ASMA93 HMQ4160J
| SC26494008 |
Fix information
Fixed component name
HLASM MVS, VM &
Fixed component ID
569623400
Applicable component levels
R160 PSY UI53046
UP18/01/09 P F801
R360 PSY UI53045
UP18/01/08 P 1801
R689 PSY UI53047
UP18/01/08 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":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"160","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSENW6","label":"High Level Assembler and Toolkit Feature"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"160","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
11 July 2018