Prior to the availability of IMS 15 (which took place on October 27, 2017), if you wanted to run a program in a batch message processing (BMP) or Java batch processing (JBP) region, your system programmer had to first define a runtime program resource (PDIR) to IMS. The system programmer could define that resource using either the APPLCTN macro in the IMS SYSGEN, or the CREATE PGM command. If the runtime program resource was not defined, scheduling of the program would fail with user abend 428.
Letâ€™s imagine that you have an application that only runs once per month. You donâ€™t want the overhead of maintaining runtime resources for an application that requires it only on the day it runs, right?
IMS 15 introduces a new user exit routine (TYPE = PGMCREAT), which helps prevent that 428 abend. As you might infer from its name, PGMCREAT, this user exit not only dynamically creates the PDIR for a program when IMS schedules it in a BMP or JBP region, it also creates one required runtime database resource (DDIR) — a runtime version of the database that the program will access.
The Program Create user exit greatly simplifies how a system programmer creates runtime resources in IMS 15. Now that you no longer have to use the system definition APPLCTN macro or the CREATE PGM command, IMS start up time is reduced, and (bonus!) you may also use less storage.
Timing is Everything
System programmers can use the PGMCREAT user exit to coordinate the creation of the runtime resources (PDIR and DDIR) with the scheduling of the program in a BMP or JBP region. You can specify parameters for the program as well as the database in the PGMCREAT user exit and return them to IMS. Any parameters not specified by the PGMCREAT user exit will be obtained from the default program descriptor for the PDIR or the default database descriptor for the DDIR. In the event that you choose to keep the runtime resources beyond the next IMS cold start, you can set the export bit in the exit, so that the PDIR and optional DDIR created by the exit are eligible to be exported (or â€śhardenedâ€ť) to the system RDDS or IMSRSC repository. Otherwise, the runtime resources are not available after cold start, and have to be recreated at the subsequent scheduling of the BMP or JBP program.
The PGMCREAT user exit also provides a lot of flexibility. Your system programmer can define customized exits for different scenarios. For example, you may want to manage runtime resources for a payroll program differently than for an accounting program. If you need to change a value in the user exit, you can also dynamically refresh user exits using REFRESH USEREXIT command.
The PGMCREAT user exit requires Dynamic Resource Definition (DRD) to be enabled in the IMS system.
Key benefit of using the PGMCREAT user exit
The key benefit of the PGMCREAT user exit is that you avoid the overhead of building and maintaining persistent PDIRs and DDIRs for programs that run infrequently in BMPs and JBPs. Instead, you can bring up IMS without the runtime resources required for BMPs or JBPs and create them dynamically as needed. You can find sample PGMCREAT exits (DFSPGCX0 for BMP and DFSPGCX1 for JBP) in IMS.ADFSSMPL, the IMS sample exit library. Dynamic creation of these resources means that your IMS system will not allocate control blocks at start up, so you may see the following improvements in your system:
- IMS NRE and COLDSTART times may improve.
- IMS Checkpoint time may be smaller.
- The use of IMS common storage may be decreased.
IMS DBCTL, DB/TM, and DCCTL clients can use the PGMCREAT user exit; IMS DB/TM and DCCTL customers use the DFSINSX0 exit.
Whether your IMS system has many program resources or infrequently used program resources, you can now choose to dynamically define runtime program definitions rather than define them during IMS startup. Be prepared, use of the new PGMCREAT user exit may improve your IMS experience!