Skip to main content

Problem

Customer is compiling CICS programs using Net Express 5.1 to run under IBM TX Series under Windows. The programs are compiled as .dlls and are given the extension .cbmfnt before they can be run as a TX Series transaction.

As part of the customer's build scenario, they essentially build the cbmfnt, move it into the bin directory of the region and run the transaction. They then might make a change, rebuild the cbmfnt and move the new cbmfnt into the bin directory. When they tried to do this with Netexpress, they got an error when trying to copy the new version of the cbmfnt in because another process had the first version of the dll open.

The TX Series documentation states that to deactivate the Micro Focus cache, that you should set the environment variable COBSW to -l0. But this doesn't seem to have any impact. The documentation also states that you could do a CEMT PROGRAM(blah) NEWCOPY (or PHASEIN) which would 'uncache' any Micro Focus programs. Trying all combinations of these had no effect - they still cannot copy the cbmfnt in until they actually shut down the CICS server process.

Resolution

The l0 switch is only available under Server Express on Unix. It has no effect under Windows.

The equivalent to this would be in the Net Express IDE under Project-->Properties-->Application-->Program Loading tab unselect the check box for enable program cache.

You could also try setting the run-time tunable default_cancel_mode=0 to disable program cache.
This can be set by creating a text file called cobconfig.cfg and placing the following line in it:

set default_cancel_mode=0

and then setting the environment variable COBCONFIG_ to point to the location and name of this file.