2. Planning for Installation and Use of CA MICS › 2.3 Installation Planning and Parameter Specification › 2.3.3 CA MICS JCL Planning and Parameters › 2.3.3.3 JCLGEN Parameters for Special Requirements
2.3.3.3 JCLGEN Parameters for Special Requirements
If you need to tailor a member provided with or created by
CA MICS more than is allowed by the tailoring described in
Section 2.3.3.2, Standard JCLGEN Parameters, this section
discusses additional tailoring facilities.
Before you undertake the task of further tailoring JCLGEN,
you need to understand the logic of the CA MICS JCL
generation process. The JCLGEN processes run in batch under
control of the TMP (terminal monitor program -- essentially a
batch TSO session). A standard CA MICS JCL procedure,
MICSDM, is used for all complex-level JCLGEN runs except the
first, JCLGEN0. Because MICSDM does not exist before JCLGEN0
is run, it is coded as an instream PROC within the JCLGEN0
job.
At the unit level, JCLGEN processing uses the MICSDUx JCL
procedure for the unit. Like at the complex-level, the first
unit-level JCLGEN job (JCLGENA) uses an instream PROC within
the JCLGENA job because the MICSDUx PROC does not exist until
after the JCLGENA job executes.
In all cases, the JCLGEN jobs invoke SAS and read the SAS
statements specified in the PDS member identified on the
//SYSIN DD statement for the JOB. The specific JCLGEN
processing being invoked is defined through the //GENLIST DD
statement.
The SAS program JCLGEN01 uses the information provided in two
SAS macro variables (COMPLEX and GENLIST), together with
parameters from MICS.PARMS and other CA MICS data sets, to
perform the JCL generation process.
It is possible for the CA MICS JCL Generator (JCLGEN) to
perform a wide range of generation activity in one execution.
This activity is different between complex and unit level
generations. The control flow of JCLGEN execution is
summarized by the steps listed below. A "C" indicates this
function is performed for complex level JCLGENs only, while a
"U" indicates that the function is only for unit level
JCLGENs.
1. Rebuild statement lookup table ($JCLGEN).
2. Process JCL definition statements
C sharedprefix.MICS.PARMS(JCLDEFC) or
U prefix.MICS.PARMS(JCLDEF)
3. Process complex/unit information in GENLIB(DBTABLE).
U 4. Get name and title from PARMS(EXECDEF) and
PARMS(SITE).
5. Process component definitions from GENLIB(COMPTDEF).
U 6. Process prefix.MICS.PARMS(DBSPLIT).
U 7. Build $STEP and $USTEP formats.
8. Read (shared)prefix.MICS.PARMS(JCLNAMES).
9. Create name resolution tables for symbolic variables.
U 10. Prepare update for prefix.MICS.USER.SOURCE(PREFIX).
C 11. Process sharedprefix.MICS.PARMS(CPLXDEF).
12. Process sharedprefix.MICS.PARMS(JCLINFO,JCL$Iccc) and
U prefix.MICS.PARMS(JCLINFO).
13. Read list of jobs/CLISTs to be generated.
14. Convert PROTOLIB/PARMS to SAS files.
15. Generate GENLIST items using GCL and symbolic
variables.
16. Update libraries.
17. Build special macros in MACAUTOS.
The following description of each step in the JCLGEN process
expands on the operation of the program.
1. Rebuild the statement lookup table.
Sharedprefix.MICS.SOURCE(JCLGEN02) is included and executes
PROC FORMAT to build member $JCLGEN in
sharedprefix.MICS.MCOLIB. The format is used to specify the
edit checks to be performed on the various statements
contained in the JCLDEF or JCLDEFC members.
2. Process the JCL Generator definitions.
The parameter library JCL definition member is examined to
obtain the user specifications for JCL planning parameters.
For the complex level jobs, this member is
sharedprefix.MICS.PARMS(JCLDEFC)
and that member contains control definitions, library
definitions, JCL definitions, and extended job card
definitions. The contents of this member are completely
described in Section 2.3.1.6.
For other JCLGEN jobs (at the database unit level), this
member is
prefix.MICS.PARMS(JCLDEF)
which contains control definitions, library definitions, JCL
definitions, extended job card definitions, and CA MICS
option definitions. The contents of this member are
completely described in Section 2.3.3.2.1.
If a JCLDEF DD card is present in the JCLGEN job,
then any definition specified here will override values
in JCLDEFC or JCLDEF.
For either member being processed and the JCLDEF DD (if
present), all statements are read and reflected on the
MICSLOG. Any semantic or syntax check that can be performed
on an individual statement is done as the statement is read.
Error and warning messages from these checks are reflected on
the MICSLOG immediately after the definition statement.
After all statements have been processed, logic checks are
performed. These include making sure required parameters
have been specified and checking parameter interdependencies.
For example, the maximum PRTY that can be specified for JES3
is 14. Any error or warning messages that result from these
checks will be listed on the MICSLOG after all the definition
statements are listed. If there are any errors, processing is
terminated at this point with a U998 ABEND.
If no errors have occurred, the JCL parameter table in
sharedprefix.MICS.ISPTLIB is updated (or created if
necessary). This table contains the JCL definitions for use
by some online functions. There is one table for complex
level definitions (MAFJPT) and one table for each unit
(MAFJPTx, where x is the unit identifier).
The final activity in this step of the JCLGEN process only
occurs for unit generations. The list of requested
components and the list of SMFRECORDING components is sorted,
and duplicate definitions are eliminated.
3. Process complex/unit information in GENLIB(DBTABLE).
There is a table of installed database units contained in
sharedprefix.MICS.GENLIB(DBTABLE). This member contains two
master entries and one entry per database unit.
The first master entry, designated by having "*: " in
positions one through three, contains the unit identifier of
the primary unit. This entry will only exist if a primary
unit has been defined. The second master entry, designated
by having "*:: " in positions one through four, contains the
sharedprefix and the maintenance level of the JCL generation
processor that last updated DBTABLE. The maintenance level
indicator is checked by the load process for new component
distributions.
For each unit that has been defined in the complex, there is
one record in DBTABLE. It contains the unit's prefix, name,
identifier, the name of the PARMS library for the unit, the
unit type, and the maintenance level of JCLGEN that last
updated the record. A sample DBTABLE member, with all items
defined, is:
*: S
*:: CPM981.CMN MICS. BAS6000
DPM981.DB1 CPMPROD S DPM981.DB1.MICS.PARMS P BAS5075
DPM981.IMS IMSPROD I DPM981.IMS.MICS.PARMS U BAS6000
DPM981.TEST TEST T DPM981.TEST.MICS.PARMS T BAS5075
DBTABLE is read during each JCLGEN. For complex level
generations, the sharedprefix in JCLDEFC is checked against
the sharedprefix in the master entries. For unit JCLGENs,
the sharedprefix is taken from the master entry.
The unit description records in DBTABLE are used to check for
duplicate definitions. The unit prefix, database name, and
unit identifier must be unique. In addition, there can be
only one PRIMARY database unit in a complex. For JCLGENs
other than the first in a unit, checks are made to ensure
that the unit prefix, database name, and unit identifier
have not changed. If any of these checks fail, the JCLGEN
process will be terminated.
When processing DBTABLE, the JCLGEN process produces a report
on the MICSLOG describing the unit definitions. If no
primary unit has been defined, a warning message is issued
that the complex level data libraries will not be backed up.
The unit description records will be sorted by database name
and an IEBUPDTE file to replace the DBTABLE member will be
written to the FT15F003 work file.
4. Get name and title from PARMS(EXECDEF) and PARMS(SITE).
This step in the JCLGEN process is only performed for unit
level generations. Prefix.MICS.PARMS(EXECDEF) is read to
find the TITLE statement. Prefix.MICS.PARMS(SITE) is read to
find the NAME statement. These values are used to update the
ICFDBTDB ISPF table.
5. Process component definitions from GENLIB(COMPTDEF).
Sharedprefix.MICS.GENLIB(COMPTDEF) contains descriptive
information on components.
For complex level JCLGENs, the only information that is
needed from COMPTDEF is the list of all valid components that
might be in the complex.
For unit level JCLGENs, the processing is more complex. The
component, information area, and file statements are matched
against the list of components being generated in the unit.
For those components and the component BAS, the following
information is gathered:
o The list of components defined in the unit, which is used
for later translation in the GCL generation process
o The components' step names, which are extracted for the
CA MICS update processes
o The information area names
o The files defined in the information areas
o The components that are eligible for:
- Archive Audit
- Archive Weekly History
- Archive Monthly History
Prefix.MICS.PARMS(DBCONFIG) contains an extract of the
information from GENLIB(COMPTDEF) for components that are
defined for the unit, combined with configuration information
gathered later in the JCLGEN process from DBSPLIT and the
name translation process. The beginning of DBCONFIG is built
while processing COMPTDEF by writing an IEBUPDTE stream to
FT15F004.
Another process performed while processing DBCONFIG is the
creation/update of some of the ISPF tables used by the online
processes. The following tables are created/updated:
- MAFDBCx - where x is the unit identifier
- ICFDBTDB
- MAF$DB
MICSLOG messages are produced to give the defined components,
requested components, SMF recording components, non-SMF
components, and the components that will be in each of the
archive processes.
6. Process prefix.MICS.PARMS(DBSPLIT).
The processing of DBSPLIT is performed only for unit level
generations. For more information on the specification of
DBSPLIT, refer to Section 2.3.3.3.2.4.
To provide the capability to have multiple SAS data libraries
for a timespan, CA MICS has a parameter to split a timespan
by information area. The definitions are read from
prefix.MICS.PARMS(DBSPLIT) and validated syntactically. The
DBSPLIT information is then merged with the information area
definitions previously extracted from COMPTDEF and matched to
ensure that only information areas for components defined in
the unit are specified in the DBSPLIT definition.
As the DBSPLIT and information area definitions are being
merged, the information area records for PARMS(DBCONFIG) are
added to the previous information maintained on FT15F004.
7. Build $STEP and $USTEP formats.
For unit level JCLGENs, the step information extracted from
COMPTDEF for the components defined in this unit are sorted
to find the predecessor and successor steps for each step in
the CA MICS update processes (DAILY, INCRccc, WEEKLY,
MONTHLY, YEARLY, BACKUP, and RESTORE). A report is produced
via the MICSLOG that provides this information while the
$STEP format is built in prefix.MICS.MUOLIB.
Names are built to define the DAILY, INCRccc, WEEKLY,
MONTHLY, and YEARLY steps for the symbolic variable
resolution process later.
Prefix.MICS.USER.SOURCE(USTEP) is %INCLUDEd to allow you the
capability to override the standard CA MICS step names. For
more information on this process, refer to Section 2.3.3.3.6.
8. Read (shared)prefix.MICS.PARMS(JCLNAMES).
The parameter library JCL name list member is examined to get
the user specifications for data set and procedure name
modifications. For the complex level jobs, this member is
sharedprefix.MICS.PARMS(JCLNAMES), while for unit level jobs,
the member is prefix.MICS.PARMS(JCLNAMES).
That member contains overrides for the default data set and
procedure names that JCLGEN would generate. Each keyword
parameter in the Generation Control Language that represents
a data set name has a default pattern for combining the
prefix, CA MICS level, and low-order descriptive nodes to
construct the data set name. JCLNAMES normally contains no
statements, because all data set names and procedure names
have default values. Default values for each data set name,
illustrating the effective contents of the JCLNAMES member,
are contained in the member ALLNAMES in either PARMS library.
For more information on the modification of data set names
and procedure names, see Section 2.3.3.3.2.3 in this guide.
9. Create name resolution tables for symbolic variables.
One of the main functions of JCLGEN is to translate the
symbolic names contained in the PROTOLIB and PARMS members
that are being generated. A main part of this translation
process is done later by looking up symbolic variables in the
$KEYWORD SAS format. This step in the JCLGEN process builds
that format.
First, shareprefix.MICS.SOURCE(JCLPARM) is read to get the
defaults for all symbolic variables. Then a SAS merge is
performed of the JCLPARM data, the JCLNAMES information, the
parameters from the JCL definition statements in JCLDEF or
JCLDEFC, the DD names from DBSPLIT and COMPTDEF, and the
component list from COMPTDEF. The SAS merge is done in the
order listed so that duplicate definitions will be taken from
the item listed last.
The translations for some symbolic variables are taken from
other sources. These variables are items such as SYSDATE and
SYSTIME, taken from the system; and SYSUID, taken from the
name of the GENLIST.
While building the format for symbolic variable lookup, two
ISPF tables (ICFDSI and MAFDSNx, where x is the unit
identifier) are built that contain the name translation
information used by CA MICS online processes. The definition
of which names to place in these tables is controlled by
sharedprefix.MICS.SOURCE(JCLPARM).
10. Prepare update for prefix.MICS.USER.SOURCE(PREFIX).
If the generation is a unit level JCLGEN, an IEBUPDTE stream
is built in FT15F006 that will add/update the member PREFIX
to prefix.MICS.USER.SOURCE.
11. Process sharedprefix.MICS.PARMS(CPLXDEF).
For complex level JCL generations, the CPLXDEF member is read
and validated. An update for
sharedprefix.MICS.MACAUTOS(CPLXDEF) is prepared in FT15F006
to define the CPLXDEF macro that specifies the options for
ESSENTIAL and DERIVED support.
12. Process (shared)prefix.MICS.PARMS(JCLINFO) and
sharedprefix.MICS.PARMS(JCL$Iccc).
Both JCLINFO and all sharedprefix.MICS.PARMS(JCL$Iccc)
members are processed to get the component, jobname, time,
lines, class, priority, and PROTOLIB member name for each
possible generation request. The generic component jobs
(___CHECK, ___EVA, ___CGEN,and ___PGEN) in JCL$IBAS are
expanded for each possible component. For more information
on the format and content of the JCLINFO member, refer to
Section 2.3.3.3.2.2.
13. Read list of jobs/CLISTs to be generated.
There are two ways to specify the list of jobs to generate.
First, A list of jobs can be specified on the GENLIST DD.
Second, a GENLIST parameter is passed to the JCL generation
process as a SAS macro variable. The GENLIST parameter is
used as a member name in the appropriate MICS.PARMS library
to read the list of items to be generated. If there are no
items to be generated, the generation process is terminated
normally and a message is produced to the MICSLOG. When this
happens, the only updates that have occurred are the
generation of the $STEP and $USTEP formats and the updates to
the various ISPF tables.
The list of GENLIST items to be generated is merged with the
information from JCLINFO. If no specific line item is
available in JCLINFO for the item to be generated, an error
message is written on the MICSLOG and processing of the item
is bypassed.
For unit level generations, a match is performed against the
component specification from JCLINFO and the components to be
defined for the unit. If an item is for a specific component
(i.e., not BAS) that is not defined in the unit, the
generation of that item is ignored.
14. Convert PROTOLIB/PARMS to SAS files.
Sharedprefix.MICS.PROTOLIB and the MICS.PARMS libraries are
partitioned data sets. Both of these are read, their
noncomment lines are loaded to SAS files, and PROC FORMATS
are built to define the starting and ending record numbers in
the SAS file for each member.
15. Generate GENLIST items using GCL and symbolic variables.
For each GENLIST item to be generated, the appropriate member
of PROTOLIB (as defined in JCLINFO) is processed.
Generation Control Language (GCL) statements are interpreted
and acted upon. This can cause the processing of additional
members of PROTOLIB and/or the appropriate MICS.PARMS
library. See Section 2.3.3.3.3 for further information on
GCL.
Symbolic variables are resolved during the generation
process. Because it is possible for new symbolic variables
to be defined during the process and for previously defined
symbolic variables to take on new values, a table is
maintained for dynamic symbolic variables. Some positions of
this table are filled during the initialization of this step
of the JCL generation process. While translating symbolic
variables, the dynamic table is searched first. If the
variable is not found in the dynamic table, the $KEYWORD
format (created in step 9 above) is used to resolve symbolic
variables. If the symbolic variable is not found in the
format, an error message is produced and generation
processing terminates with the end of the current member.
GENLIST items are not updated directly into CA MICS
libraries. Updates for sharedprefix.MICS.CNTL are written to
FT15F001 file in IEBUPDTE format; updates for
sharedprefix.MICS.MACAUTOS or prefix.MICS.USER.SOURCE are
written to FT15F006; while updates for
sharedprefix.MICS.CLIST are written to FT15F002.
16. Update libraries.
If all processes have been successful to this point, the
updates to the CA MICS libraries are made. The updates are
done by reading the various IEBUPDTE streams (FT15F00x work
files) that have been created. The updates listed below
will be made as a batch. Batching these updates reduces the
time the data sets are reserved.
Work File Destination Comments
FT15F001 MICS.CNTL Jobs
FT15F002 sharedprefix.MICS.CLIST CLISTs
FT15F003 sharedprefix.MICS.GENLIB DBTABLE
FT15F004 MICS.PARMS DBCONFIG
FT15F005 sharedprefix.MICS.SOURCE
FT15F006 prefix.MICS.USER.SOURCE unit only
sharedprefix.MICS.MACAUTOS complex only
17. Build special macros in MACAUTOS.
Finally, ISPF file tailoring is used to create/update the
DBVERFY, DSNAME, DDNx, DDIAMPx, and DSNx macros in
sharedprefix.MICS.MACAUTOS, where x is the unit identifier
for unit level JCLGENs or not present for complex level
JCLGENs. The DSNAME macro is also built with file tailoring.
If you have any questions about the facilities described in
this section, please contact CA MICS Product Support.
The following sections describe points at which you can
intervene in the JCLGEN process described above to get the
outputs you desire.
1 - Prototype Library (PROTOLIB)
2 - JCLGEN Definition Tables
3 - Generation Control Language
4 - OS Data Set Names
5 - OS Job Names
6 - OS Step Names
7 - OS Job Attributes
8 - Writing A User Exit