Problem:
We have installed MFE 3.1 and are testing all the programs before migrating. The error message is given below:
"Execution of the program MTBNYFS has been interrupted. This program is not debuggable, but you can view the call/perform stack. The cause of the interrupt was: 205 Invalid mainframe pointer value D:\\UNIT\\PGMLIB\\MTBNYFS.gnt"
Presently, we are using MFE 3.0. and there is no problem at all.
Resolution:
This is a subtlety in the differences between MFCICS and IBM CICS
(z/OS really). MFCICS defaults to a Commarea of 0 bytes, so whatever
the program uses it what one gets. Because we expect CICS programs
to pass valid sizes between them we default to a Zero byte value. In an
Intel environment, every byte counts, so a reference outside of the
allocated storage results in a GPF (General Protection Fault).
On the host, there is a 4K variance because the smallest storage allocation
z/OS uses is a 4K page (4096 bytes). Since IBM documents that CICS
programs should pass a DFHCOMMAREA of equal size between programs,
this is really a user error, but on the mainframe, using values less than 4096
bytes allow one to remain within the same storage page and IBM will never
complain and the coding will not cause an abend. So CICS programs can
pass each other varying commareas of say 100, 400 or even 1,000 bytes
and IBM does not detect this as a problem because as stated above, all
those references would be kept within the same storage page as long as
they were less than the 4096-byte size.
For Mainframe Express, we recommended a Commarea Override size of
4096. This can be set in the CICS Properties and in the Active SIT
Properties. First, set the CICS System value via Project View>CICS tab,
in the left hand pane select CICS System, then right-click and select
Properties. On the window presented in the Overrides tab, there is a field
for 'Commarea override'. Set it to 4096. Click OK. Next, highlight the SIT
in the left hand pane and then select the Active SIT in the right hand pane
(if the selection box in the right hand pane says 'All SITs', change the
selection box to show 'Active SIT'). Right-Click the Active SIT and select
Properties. In the window displayed, select the Development tab. On this
tab, change the value in the 'Commarea override' field to 4096, then click
OK.
The RTS205 error was trying to say we had a bad pointer because we had
referenced a storage area outside of the expected DFHCOMMAREA. After
we re-compiled the user program so the GNT was animatable, we found
that we were failing on a SET of an index as we entered the program. This
program received control via an EXEC CICS XCTL passing a Commarea
with a different length. Once the default MFCICS Commarea lengths were
changed to 4096 (from our default of 0), the user program ran fine.
#MFDS
#EnterpriseDeveloper