IBM Support

PQ07918: EXEC SET PROGRAM MASK (SPM) TO ENABLE PROGRAM INTERRUPTS DOES NOT WORK IN ASSEMBLER SUBROUTINE OF COBOL WITH LE/MVS RUNTIME.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • A COBOL II or COBOL/MVS program calls an assembler subroutine
    that uses a SPM (Set Program Mask) instruction to enable all
    program interrupts.  The subroutine then executes instructions
    that should cause a Decimal Overflow Exception - ABENDS0CA.
    Under LE/MVS 1.7 using the TRAP(ON) runtime option, the
    the program does not abend and there is no message.
    NOTE:  The same coding sequence fails with a S0CA when a
    COBOL II program and runtime library is used.
    

Local fix

  • TRAP(OFF) is NOT the recommended runtime option, but the
    ABENDS0CA may occur if it is used.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: COBOL users who call an assembler program    *
    *                 that sets the program mask (by an SPM        *
    *                 instruction) and expects to get control      *
    *                 when a fixed-point overflow, decimal         *
    *                 overflow, exponent underflow, or             *
    *                 significance program interrupt occurs.       *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: When a program interrupt occurs (such   *
    *                      as ABENDS0CA) in the assembler program, *
    *                      the interrupt is ignored and no dump    *
    *                      or message is produced.                 *
    *                                                              *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    *                                                              *
    ****************************************************************
    When a program interrupt occurs (such as ABENDS0CA), Language
    Environment searches the save area chain for the first
    recognized language. It then invokes that language's  condition
    handler. When COBOL's condition handler is invoked, it checks
    to see if the program interrupt should be ignored and if so,
    it will be ignored. However, the current program running is not
    a COBOL program, but rather, an assembler program.
    

Problem conclusion

  • The COBOL condition handler will be modified to only ignore
    the program interrupt if the program causing the interrupt is
    a COBOL program or a COBOL library routine.
    
    Documentation changes are identified below:
    
    +-------------------------------------------------------------+
    | Start of changes for the IBM COBOL for MVS & VM             |
    | Compiler and Run-Time Migration Guide (SC26-4764-03)        |
    
    In Appendix D, "Applications with COBOL and Assembler",  add
    a new bullet to the list at the top of the page:
    
    * Converting programs that change the program mask
    
    Add a new section in Appendix D as follows:
    
    Converting programs that change the program mask
    
    When a VS COBOL II program calls an assembler program that
    changes the program mask (for example, uses an SPM
    instruction), the program mask is restored after the call
    to the assembler program.
    
    With COBOL/370 and COBOL for MVS & VM, the program mask
    is not restored. Hence, if you change the program mask
    in your assembler program, you must restore it before
    returning to the COBOL program. Failure to restore the
    program mask could result in data errors not being
    detected. This includes fixed-point overflow, decimal
    overflow, exponent underflow, and significance exceptions.
    
    | End of changes for the IBM COBOL for MVS & VM               |
    | Compiler and Run-Time Migration Guide (SC26-4764-03)        |
    +-------------------------------------------------------------+
    
    PUBS CLOSING CODE: DEVCHNG
    

Temporary fix

Comments

APAR Information

  • APAR number

    PQ07918

  • Reported component name

    LE COBOL LIB

  • Reported component ID

    568819802

  • Reported release

    710

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    1997-09-02

  • Closed date

    1997-09-03

  • Last modified date

    1997-10-01

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

    PN90452

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

    UQ09092

Modules/Macros

  •    IGZCHCM
    

Publications Referenced
SC26476403    

Fix information

  • Fixed component name

    LE COBOL LIB

  • Fixed component ID

    568819802

Applicable component levels

  • R710 PSY UQ09092

       UP97/09/08 P F709

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":"LOB16","label":"Mainframe HW"},"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG27M","label":"APARs - z\/VM environment"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"710"}]

Document Information

Modified date:
22 January 2021