IBM Support

DFHAC2016 for PROGRAM resource defined in CICS Application Bundle

Question & Answer


Question

Why do I receive message DFHAC2016 for a CICS program that is defined within an Application Bundle? I have set up a Platform and Application within my environment. I have defined a CICS Bundle that contains a transaction, a program, and a library. Transaction TRN1 is defined to run program CICSPGM1 which is defined in library CICS.LOADLIB. When I run (execute) the transaction, I receive message DFHAC2016 which says the program is not available.

For example, I receive the following message when I try to run my transaction TRN1:

 DFHAC2016 date time applid Transaction TRN1 cannot run because program CICSPGM1 is not available.

Answer

CICS Transaction Server for z/OS (CICS TS) V5.2 makes it possible for programs to be either public (callable by any program, as was the case in prior releases of CICS) or private (callable only by programs within the same Application). If the program is private to the application, but the application does not have an Entry Point, it will not be possible to execute this program. In CICS TS V5.2 an entry point can be either a PROGRAM or a URIMAP. In order for this to work, you need to have some way of getting into the application in the first place. For example, some program that is part of the application, but still "public", and callable by any other program or transaction in the CICS system. These programs are called "Entry Points".

So to resolve this, you need to do the following:

  • Open the CICS Explorer and locate the projects that comprise your Application and CICS Bundle.

  • Open the Bundle Manifest for the CICS Application Bundle project. The Bundle Manifest is the META-INF/cics.xml file within the CICS Bundle Project.

  • The CICS Bundle Manifest Editor should open and display the Bundle Overview tab. This will show the Defined Resources (for example, program CICSPGM1) in a box in the lower left quadrant of the editor. There are three tabs in this editor. You need to open the Entry Points tab.

  • Add an Entry Point to the Bundle. You need to supply an Operation name of your choosing, and a Program name (for example, CICSPGM1). There is also a drop down to select the Resource Type, and the default is the one for PROGRAM (Note: you could make a URIMAP entry point if you prefer).

  • Having completed that, if you view the Application editor again you should now see the Operation name in the list of Entry Points.

  • Export the Application to the Platform USS directory again.

  • Use CICS Explorer to Disable, Discard, and re-install your Application.

  • Make your installed Application Enabled, and then make it Available.

You should now be able to execute the program invoked by the transaction.

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
11 February 2016

UID

dwa1245703