Skip to main content

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.

Old KB# 2588

#MFDS
#EnterpriseDeveloper