A fix is available
APAR status
Closed as program error.
Error description
If a CICS Java program is included in the CICS PLT (stage 3), the CICS region will issue the following message and then terminate with a DFHKE1800 (U1800 abend): . DFHSR0606 Abend (code ........) has ben detected. . If this Java program is not included in the CICS PLT at startup, CICS will initialize without any problems.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: All CICS Users * **************************************************************** * PROBLEM DESCRIPTION: A Java PLT program ABENDs when * * running in USER key with Storage * * Protection * **************************************************************** * RECOMMENDATION: * **************************************************************** A Java PROGRAM is defined with EXECKEY(USER) and is part of the Program List Table (PLT) to execute on CICS startup. Storage Protection is active. Because the PROGRAM is being run as part of PLT processing, the PROGRAM should be invoked in CICS key regardless of the EXECKEY value in the program definition. DFHAPLJ1 therefore overrides the TCB key field, EIS_PROGRAM_MODE, for the program changing it from J9 to J8. When the Java program is invoked from DFHSJIN, this is not honoured and the program is run in USER key. As part of the Java program running it makes a JCICS call which results in an EXEC CICS ADDRESS command to be issued. This starts running on a J9, but because the call could have switched to QR if necessary, DFHEIP switches back to what it thinks was the caller's original TCB, using the EIS_PROGRAM_MODE field. This causes CICS to switch the task to a different J8 TCB instead of the caller's J9 TCB, and in turn leads to CICS ABENDing as this is not the TCB that the JVM was started on. Additional Keywords: abendU1800 msgDFHKE1800 msgDFHSR0606
Problem conclusion
CICS has been updated to not override EIS_PROGRAM_MODE in DFHLI1 if the PLT program has been invoked on a J9 TCB - as Java programs with EXECKEY(USER) are. This restores the behaviour to how CICS behaved prior to CICS TS 3.1. This contrasts with what the Customization Guide states, and a Documentation change will be made to the guide for Java programs only. The Customization Guide for CICS TS 3.1 (SRL: SC34-6429-04) will be updated as follows: In chapter 4 'Writing initialization and shutdown programs', the section titled 'Execution key for PLT programs' will be updated as follows: - Under the 'Execution key for PLT programs' title add the following line: At PLT time CICS handles Java and non-Java program differently. - After this add a title 'Non-Java Programs' before the paragraph starting "CICS always gives control to PLT programs in CICS Key'. - After this paragraph (including the 'Important' section') add a new paragraph titled 'Java Programs' as follows: Java Programs A Java program in the PLT runs in the key defined in its PROGRAM resource definition (EXECKEY) and is not overridden to run in CICS key, unlike all other program types. When a Java program runs, a JVM is created if one does not already exist for that JVM profile in the key the program is executing. If REUSE=YES is specified in the corresponding JVM profile, the JVM persists after the Java program has ended. If a Java program, that is defined as EXECKEY(USER), was overridden to start in CICS key at PLT time, any subsequent invocations of that program would run in USER key and would therefore not be able to reuse the JVM created when the program ran at PLT time. Other Java programs that are defined with EXECKEY(USER) and use the same JVM Profile would also not be able to access the JVM that is started at PLT time. Therefore CICS does not override the execution key of Java programs at PLT time. If you want to run an EXECKEY(USER) Java program in CICS key at PLT time: 1. Create a separate PROGRAM resource definition using the same JVMCLASS attribute value and specify EXECKEY(CICS). 2. Add the PROGRAM resource definition to the PLT. The original PROGRAM resource definition with EXECKEY(USER) can then be used subsequently. ------------------------------------------------------------- The Customization Guide for CICS TS 3.2 (SRL: SC34-6814-01) will be updated as follows: In chapter 4 'Writing initialization and shutdown programs', the section titled 'Execution key for PLT programs' will be updated as follows: - Under the 'Execution key for PLT programs' title add the following line: At PLT time CICS handles Java and non-Java program differently. - After this add a title 'Non-Java Programs' before the paragraph starting "CICS always gives control to PLT programs in CICS Key'. - After this paragraph (including the 'Important' section') add a new paragraph titled 'Java Programs' as follows: Java Programs A Java program in the PLT runs in the key defined in its PROGRAM resource definition (EXECKEY) and is not overridden to run in CICS key, unlike all other program types. When a Java program runs, a JVM is created if one does not already exist for that JVM profile in the key the program is executing. If REUSE=YES is specified in the corresponding JVM profile, the JVM persists after the Java program has ended. If a Java program, that is defined as EXECKEY(USER), was overridden to start in CICS key at PLT time, any subsequent invocations of that program would run in USER key and would therefore not be able to reuse the JVM created when the program ran at PLT time. Other Java programs that are defined with EXECKEY(USER) and use the same JVM Profile would also not be able to access the JVM that is started at PLT time. Therefore CICS does not override the execution key of Java programs at PLT time. If you want to run an EXECKEY(USER) Java program in CICS key at PLT time: 1. Create a separate PROGRAM resource definition using the same JVMCLASS attribute value and specify EXECKEY(CICS). 2. Add the PROGRAM resource definition to the PLT. The original PROGRAM resource definition with EXECKEY(USER) can then be used subsequently.
Temporary fix
FIX AVAILABLE BY PTF ONLY
Comments
APAR Information
APAR number
PK60455
Reported component name
CICSTS V3 Z/OS
Reported component ID
5655M1500
Reported release
400
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2008-02-04
Closed date
2008-07-16
Last modified date
2008-08-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UK38206 UK38207
Modules/Macros
DESLI1 DFHAPLI1 DFHAPLJ1 DFHAPLX1
SC34642904 | SC34681401 |
Fix information
Fixed component name
CICSTS V3 Z/OS
Fixed component ID
5655M1500
Applicable component levels
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":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"3.1","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"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":"3.1","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
01 August 2008