Re-creating the source of PLTs

As of CICS® TS 5.5, CICS requires the source code of program list tables (PLTs) be available at run time, and processes the source of the PLTs directly. CICS cannot process assembled PLTs. If the source of a PLT has been lost, follow these instructions to re-create it.

Anatomy of a PLT

Figure 1 is an example of a PLT.

Figure 1. Example of a PLT

*
* LIST OF PROGRAMS TO BE EXECUTED SEQUENTIALLY DURING SYSTEM 
* INITIALIZATION.
* REQUIRED SYSTEM INITIALIZATION PARAMETER: PLTPI=I1
* 
  DFHPLT TYPE=INITIAL,SUFFIX=I1

The DFHPLT macro is used to create the PLT. The TYPE=INITIAL statement gives the PLT a name, which is a one- or two-character SUFFIX.


* 
* The following programs are run in the first pass of PLTPI
*
  DFHPLT TYPE=ENTRY,PROGRAM=TRAQA  
  DFHPLT TYPE=ENTRY,PROGRAM=TRAQB  
  DFHPLT TYPE=ENTRY,PROGRAM=TRAQC

Then the TYPE=ENTRY statements define one or more programs that are to be run during the first phase of PLT processing. If no first phase programs are required, no entries of this type need to be coded.


*
DFHPLT TYPE=ENTRY,PROGRAM=DFHDELIM
*

The special entry PROGRAM=DFHDELIM separates the list of programs that are invoked in the first phase of processing from the list of programs that are invoked in the second phase.


*
* The following programs are run in the second pass of PLTPI
* 
  DFHPLT TYPE=ENTRY,PROGRAM=TRASA  
  DFHPLT TYPE=ENTRY,PROGRAM=TRASB  
  DFHPLT TYPE=ENTRY,PROGRAM=TRASC

Then the TYPE=ENTRY statements define one or more programs that are to be run during the second phase of PLT processing. If no second phase programs are required, no entries of this type need to be coded.

DFHPLT TYPE=FINAL

Finally, the TYPE=FINAL statement, just before the END statement, signals the end of the PLT.

END

Re-creating the source of the PLT

If the source of one or more Program List Tables has been lost, you can re-create it by reference to its assembled version.

Figure 2 is an example of an assembled PLT.

Figure 2. Example of an assembled PLT

DFHPLT         -DFHPLTI1                                               00000001
TXT            *DFHPLTI1Ø   0670I              TRAQA   TRAQB   TRAQC   00000002
TXT            DFHDELIMTRASA   TRASB   TRASC   ””””””””        00000003 

The name of the PLT can be seen after DFHPLT on the first line. In this example, it is DFHPLTI1. From this, it can be seen how to code the TYPE=INITIAL statement (for example, DFHPLT TYPE=INITIAL,SUFFIX=I1).

On the next line, the release-specific information can be ignored (in this example, TXT *DFHPLTI1Ø 0670I). Following that information, the names of the programs that are part of the first phase of PLT processing can be seen. In this example, the first one is TRAQA. Each program name entry is 8 characters, so, in this example, TRAQA is followed by three blanks, then come TRAQB, and TRAQC. From this, the first set of TYPE=ENTRY statements can be re-created (for example, the first one would be DFHPLT TYPE=ENTRY,PROGRAM=TRAQA).

At the start of line 3, the special DFHDELIM entry can be seen. From this, the inclusion of a TYPE=ENTRY, PROGRAM=DFHDELIM statement is indicated.

The DFHDELIM entry is followed by the names of the programs that are part of the second phase of PLT processing. In this example, these are TRASA, TRASB, and TRASC. From this, the second set of TYPE=ENTRY statements can be re-created (for example, the first one would be DFHPLT TYPE=ENTRY,PROGRAM=TRASA).

The eight quotation marks after the list of program names are caused by the TYPE=FINAL entry, so this indicates the end of the table.

By reading the assembled version, the source of the PLT can easily be re-created. When it has been re-coded, it should be saved with a PDS member name that is the same name as the PLT. In this example, the source should be saved with the name DFHPLTI1.

When CICS TS starts up or shuts down, it uses DFHPLTI1 when a PLT with a suffix of I1 is specified. On startup, the PLT is identified on the PLTPI system initialization parameter. On shutdown, the PLTSD system initialization parameter, or a CEMT override, is used, but the same PLT code applies in all cases.