Previously we got 3 online programs (Let us say the screens A, B and C). The control passes from one screen to other thru XCTL command. The flow will be like (A --> B --> C and again C --> A). The length of the COMM area, used is '978'.
Now, we included a new program 'D', which is almost similar to 'C'. (Which made the flow to be A --> B --> C --> D and again D --> A)
The below listed are the only differences between the programs 'C' and ''D':
1. One of the field's length is 5 bytes in 'C', whereas it is 9 bytes in 'D'
2. The length of the file from which the values are retrieved is '200' in the In program 'C', whereas it is only 150 in program 'D'.(These files are declared under linkage section).
The flow is smooth from 'A' thru 'D'. The problem arises when the flow proceeds from 'D' --> 'A'. When the control comes from 'C' to 'D' (and displays the screen 'D') and any key pressed in the screen 'D' is throwing an abend, stating
"DFHAC2206 10:16:15 R3DACICS Transaction HELP failed with abend HLP4. Updates to local recoverable resources backed out"
Please refer the below displayed code for the reference.
Joined: 06 Jun 2008 Posts: 8212 Location: Dubuque, Iowa, USA
Since transaction HELP and code HLP4 are part of your application, would it not make sense for someone AT YOUR SITE to look at the source code and see under what circumstances the transaction is invoked?
This is an application problem and what you have posted is completely useless -- is the code part of program A, B, C, or D? Where's the XCTL code? Doing a CICS RETURN without a transaction means your application is ending and none of the programs A, B, C, or D will be invoked -- so perhaps you need to look at what is on the screen to see the transaction being started?