IBM Support

PI90075: AINSERT SUPPORT FOR SEQUENCE SYMBOLS AND LOOKAHEAD

A fix is available

Subscribe

You can track all active APARs for this component.

 

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
    

Publications Referenced
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