System definition preprocessor overview
Use the IMS system definition preprocessor to ensure that stage 1 input does not include duplicate resource names, such as transaction codes, LTERMs, and system names.
IMS provides a preprocessor that you can use to check the stage 1 input for duplicate names among the names you have defined. The preprocessor also ensures that the names are of the correct length and format. Assigned names are checked across resource types, too, so that transaction codes, LTERMs, and IMS system names (used for multiple systems coupling) do not contain duplications. The preprocessor helps maintain the integrity of the stage 1 input stream.
The system definition preprocessor is optional.
If the IMSCTRL NAMECHK=NO option is selected for IMS system definition, run the system definition preprocessor.
Stage 1 source statements are used as input and can include copy statements. However, they cannot include inline copies of IMS macros from the stage 1 input, inline user macros, user macro calls, or conditional assembler statements.
The preprocessor locates, reads, and processes copy statements by using the copy members as input. The order of search, which conforms to z/OS® standards, depends upon the order in which you have concatenated the libraries. Copy members are retrieved from the data sets specified by SYSLIB DD statements. The preprocessor scans the input for the following IMS macros:
- APPLCTN
- DATABASE
- MSLINK
- MSNAME
- MSPLINK
- NAME
- RTCODE
- SUBPOOL
- TERMINAL
- TRANSACT
The preprocessor does not recognize keywords that are split across continuation statements. The related parameters associated with these keywords generate error messages from the preprocessor.
- Within each resource type, the preprocessor verifies that no resources
of that type have duplicate names. The following types of resource
names are verified:
- DBD names
- PSB names
- VTAM® node names
- MS link names
- Logical terminal names
- Transaction codes
- Routing codes
- Subpool names
- MSLINK partner IDs
- MSPLINK physical link names
- Remote system VTAM node names
- These resource names are checked to ensure that they are of the appropriate length and are alphanumeric.
- The names specified for transactions, logical terminals, and multiple systems are cross-checked to ensure that no duplicate names exist across these three resource types.
Estimating storage requirements for the preprocessor
The preprocessor uses the default values to reserve an initial amount of storage for each resource name table (RNT). If this storage is insufficient, the preprocessor dynamically expands the table until all extended private storage is exhausted. Resource names not added to the appropriate RNT are ignored and excluded from further processing.
Additional space is required if the number of errors for any given resource name exceeds 50, or if the number of nested copy statements exceeds 50. For most cases, this additional storage is accounted for in the base system storage number.
The storage size is the minimum region size that can be specified on preprocessor invocation JCL.
The preprocessor also requires 1 MB of private storage below the 16 MB line.
Standard system definition:
- 1000 KB for the base system.
- Space needed for exit routines DFSPRE60 and DFSPRE70, if they are loaded.
- Table space in excess of the default. For each of the following resource types that exceeds
5120, determine the amount of storage from Table 1.
- APPLCTN
- DATABASE
- NAME
- RTCODE
- SUBPOOL
- TERMINAL (VTAM)
- TRANSACT
Resource range | Storage amount in K bytes | |
---|---|---|
5120 to 10,240 | 80 | |
10,240 to 20,480 | 240 | |
20,480 to 41,060 | 560 | |
41,060 to 82,120 | 1200 | |
82,120 to 164,240 | 2480 | |
164,240 to 328,480 | 5040 | |
328,480 to 656,960 | 10,160 | |
656,960 to 1,313,920 | 20,400 |
Preprocessor exit routines
- Exit DFSPRE60
This routine gains control after each record in the stage 1 input is read, but before any other processing takes place. It can modify the contents of the record and can even submit further statements to the preprocessor for checking. Any changes made by this routine are not permanent, nor are these changes automatically passed to stage 1.
- Exit DFSPRE70
This routine gains control when all cross-checking has been completed. It has access to all the tables of resource names. The routine can then format these tables as part of a documentation effort.
Sample JCL to execute the preprocessor
// JOB
// EXEC PGM=DFSPRE00,REGION=32M,PARM='xxx' 1
//STEPLIB DD DSN=IMS.SDFSRESL,DISP=SHR 2
// DD DSN=USER.EXITLIB,DISP=SHR 3
//SYSLIB DD DSN=USER.MACLIB,DISP=SHR 4
// DD DSN=IMS.SDFSMAC,DISP=SHR 4
//SYSPRINT DD SYSOUT=A
//SYSIN DD * 5
- The region size indicated is the size required to execute the preprocessor on a z/OS system. Guidelines for determining the region sizes are in Estimating storage requirements for the preprocessor.
The PARM field is specified only if the default exit routine indicators should be overridden.
- This DD statement should specify the library containing the preprocessor version that you want to execute. Different versions can exist because of SMP maintenance.
- This concatenated DD statement is required only if exit routines are requested.
- The SYSLIB DD statement should point to a library that contains the copy members. This DD statement is required if stage 1 source COPY statements exist.
- You can also use the statement:
//SYSIN DD DSN=....,DISP=SHR
The PARM field on the EXEC statement is specified as follows:PARM='a,b'
- a
- Indicates whether (Y) or not (N) exit routine DFSPRE60 is to be used during this invocation of the preprocessor. If DFSPRE60 is to be used, it must reside on the libraries pointed to by the STEPLIB DD statement. The default is N.
- b
- Indicates whether (Y) or not (N) exit routine DFSPRE70 is to be used during this invocation of the preprocessor. If DFSPRE70 is to be used, it must reside on the libraries pointed to by the STEPLIB DD statement. The default is N.