The APPLCTN macro describes to the IMS control program the resources for the program running as a BMP. It’s assembled as part of the IMSGEN STAGE 1 process and becomes part of the input to the IMSGEN STAGE 2 process. An entry is required for each BMP:
Notice that the PSB name is used instead of the program name. This macro can be defined and assembled any time before the BMP is scheduled; a TRANSACT macro isn’t needed.
Database Dynamic Allocation
IMS databases can be defined as DD cards in the DLIBATCH job JCL or dynamically allocated when the job starts. Either way, they’re allocated at the beginning of the jobstep, before the application starts. If the databases aren’t JCL allocated, dynamic allocation is always attempted unless it’s disabled by a NODYNALLOC statement in the DFSVSMxx PROCLIB member. Here ‘xx’ is the VSPEC parameter of the job start-up procedure DFSPBxxx PROCLIB member, and ‘xxx’ is the RGSUF symbolic in the PARM passed in the start-up JCL to the IMS control region program DFSMVRC0. The DFSMDA macro is used to define databases that can be dynamically allocated. It’s instream data to an Assembler job followed by a linkedit to the *.DYNALLOC loadlib in the JOBLIB or STEPLIB. The same job can have DD card-specified databases and dynamically defined databases. Figure 4 shows a sample dynamic allocation macro.
While the PCB describes the logical organization of a database, a Database Descriptor Block (DBD) describes the physical aspects (device type, database type, field and segment lengths, etc.) of a database. It’s created through a DBDGEN process. To be useful, the information in the PSB and DBD must be combined into an Application Control Block (ACB) in an ACBLIB. The primary difference between a DLIBATCH and DBBBATCH job is how the ACB is generated. For a DLIBATCH job, the ACB is built dynamically at step initialization. For a DBBBATCH job, the ACB is created offline by running an ACB maintenance utility, which makes a DDBBATCH job somewhat more efficient than a DLIBATCH job.
IMS won’t dynamically create an ACB for a BMP job, so one would have to be created offline and provided in an ACBLIB, using the ACBGEN procedure to create an ACBLIB entry with the same name as the PSB. The ACBLIB doesn’t need to be in the BMP procedure; it can be defined in the control region. Since the DLI job doesn’t use the ACB, it can be created any time before the conversion.
Other Subsystem Considerations