Previous Topic: Module FormatNext Topic: Sample JCL


Creating Modules

Use the CREATE MODULE command to create the module form of a program or panel. This batch-only command is used the first time you convert a program or panel to module format. You also use it when you convert a new PROD version of the same program or panel to module format. As long as you use the same one- to seven-character module name, the CREATE MODULE command replaces the old module. However, if the module name for the program or panel changes, you must first delete the old module with the DELETE MODULE command.

The primary output of a CREATE MODULE command is a set of IBM-format object decks with appropriate Linkage Editor control statements, written to a sequential file (three object decks per CA Ideal program and one object deck per panel). This file is used as input to the IBM Linkage Editor. Regardless of the number of VLS object entities, there is always one object deck (module) created for each of the reentrant, non-reentrant (updateable), and symbol table portions of each CA Ideal program.

For example, a VLS object library listing can contain the following entries:

$IDDEMOPGM5     PRDJA
$IDDEMOPGM5     PRDJB
$IDDEMOPGM5     PRDTA
$IDDEMOPGM5     PRDTB
$IDDEMOPGM5     PRDTC

The VLS panel library listing can contain the following entry:

$IDDEMOPNL5     001U

If you specify the following commands to convert the CA Ideal application to module format, the following modules are created as shown in the following table:

CREATE MODULE DEMPGM5 FROM PGM DEMOPGM5
CREATE MODULE DEMPNL5 FROM PNL DEMOPNL5 VERSION 1

VLS Object Members

Object Deck Member

Link edited Load Module Member

$IDDEMOPGM5 PRDJA

$IDDEMOPGM5 PRDJB

DEMPGM5S

DEMPGM5S

$IDDEMOPGM5 PRDTA

$IDDEMOPGM5 PRDTB

DEMPGM5U

DEMPGM5U

$IDDEMOPGM5 PRDTC

DEMPGM5R

DEMPGM5R

$IDDEMOPNL5 OO1U

DEMPNL5P

DEMPNL5P

Note how the multiple VLS object members for the program symbol table (PRDJA and PRDJB) were combined into one load module as were the multiple VLS members for the updateable portion of the program (PRDTA and PRDTB). The non‑updateable portion of the program (PRDTC) is stored in a separate load module.

Three separate modules are created for each program:

Only one module is created for each panel for the Panel Control Block (PCB), the reentrant portion of a panel.

The names of the created modules are the one- to seven-character modname with a one-character suffix. The suffixes are:

R-Reentrant (non-updateable) part of a program

U-Updateable (non-reentrant) part of a program

S-Symbol table of a program

P-Reentrant part of a panel

Use these suffixes in the following cases:

When dealing with non-Ideal services, the user must account for all three program modules and must specify the appropriate module suffix for each of these parts and for any panel modules.

You can specify many CREATE MODULE commands in the same CA Ideal batch run. The resultant object decks and appropriate Linkage Editor control statements are concatenated into the same sequential output data set. The user must specify a job step following the CA Ideal batch step to execute the Linkage Editor and read that sequential file as its input.

Execute a SELECT SYSTEM command before the CREATE MODULE command to identify the CA Ideal system that contains the program. Do not execute RUN commands in the same CA Ideal job step as CREATE MODULE commands or the results can be unpredictable.

If you need to modify the database ID associated with the program, use an ALTER PROGRAM DBID command before the CREATE MODULE, not after.

The secondary output of the CREATE MODULE command is a new or updated MODULE entity occurrence in Datadictionary. The entity name is a concatenation of the following:

'$I'  'PGM'  modname
'$I'  'PNL'  modname

The attributes maintained for the MODULE entity include the module name, version (always version 1), the date and time the module was created, entity information about the original program or panel, type, system, name, version, date and time of program compilation. In addition, the name of the user executing the CREATE command is placed in the author and controller attributes.

An alias is also created for the MODULE entity occurrence identifying the corresponding program or panel. It is a concatenation of the following:

'$I'  'P'  sss  pgm-name
'$I'  'M'  sss  pnl-name

If you are creating a module for a new version of a program or panel to which a module was previously created, then the previous MODULE entity occurrence and its related information is replaced in the dictionary. If a module is created for a program or panel and a program or panel with a different name or from a different system was already converted with the same module name, an error message is issued and the CREATE MODULE is aborted. Choose a new name or delete the old module.

The syntax of the CREATE MODULE command is described in the Command Reference Guide.

The program or panel must be in production status to be converted. If there are multiple versions, the one that is in production status is the one that is converted.

Production programs and panels that were transported with the CA Ideal Object Transport Utility can be converted to a module format even though there is no production program or panel dictionary facility entity occurrence for them. In this case, you must specify the panel's version number (you cannot specify PROD instead of the version number).