475 lines
38 KiB
Plaintext
475 lines
38 KiB
Plaintext
|
SMP DEMYSTIFIED: Part II
|
||
|
By Sam Golob
|
||
|
|
||
|
Modification Control Statements
|
||
|
|
||
|
Now is a good time to mention the syntax of SMP Modification Control
|
||
|
Statements, before going into the details of RECEIVE, APPLY, and ACCEPT
|
||
|
processing.
|
||
|
|
||
|
Rule number one is that all SYSMOD control statements (known in IBMese
|
||
|
as MCS) must begin with the characters ++ in columns 1 and 2 of the
|
||
|
SYSMOD's card-image records. The other keywords and parameters in
|
||
|
SYSMOD syntax are free-flowing. Extra blanks don't count. Columns 73
|
||
|
to 80 are not used in the SYSMOD statements themselves, but are required
|
||
|
for IEBUPDTE source and macro update cards. A SYSMOD cannot be
|
||
|
renumbered. Comments are as in the PL/I language, they begin with the
|
||
|
characters /* and end with the characters */. Everything in between
|
||
|
these characters, even on many successive lines, is treated by SMP as a
|
||
|
comment. All SMP statements must end in a period. The period is the
|
||
|
delimiter for statements in SMP syntax, and one must be exceedingly
|
||
|
careful with them.
|
||
|
|
||
|
Every SYSMOD must begin with the statements: ++ FUNCTION, ++ PTF,
|
||
|
++ APAR, or ++ USERMOD, followed by the seven character SYSMOD ID
|
||
|
enclosed in parentheses, and delimited by a period. FUNCTION
|
||
|
SYSMODS have already been covered in the first part of this article
|
||
|
(Technical Support, December 1988).
|
||
|
|
||
|
PTF SYSMODS or PTFs are (after the invention of SMP and the change in
|
||
|
IBM's maintenance philosophy) really permanent system fixes, even though
|
||
|
their name stands for Program Temporary Fix. The temporary fixes are
|
||
|
now called APARs, which is really a short term for APAR FIX. APAR
|
||
|
stands for Authorized Program Analysis Report, and it refers to a
|
||
|
problem that was reported to IBM. IBM assigns a number to each problem,
|
||
|
and when the problem is fixed, the temporary fix itself is assigned the
|
||
|
same number. This number (or something very close to it) is what SMP
|
||
|
uses for the APAR SYSMOD ID. APAR SYSMODS are intended to be replaced,
|
||
|
or superseded, by permanent fixes, or PTFs. They are therefore not
|
||
|
usually ACCEPTed into the Distribution Libraries.
|
||
|
|
||
|
USERMODs are packaged SMP SYSMODS written by the individual
|
||
|
installation, usually to modify some IBM code. They look like PTFs or
|
||
|
APARs, but SMP puts them in a special category so that they stay a bit
|
||
|
distant from the real IBM maintenance. The user has flexibility to
|
||
|
assign almost any seven character SYSMOD ID to a USERMOD, but each
|
||
|
different SYSMOD must have a unique ID, and it is wise to steer clear of
|
||
|
IBM-type names. USERMODs are also usually not ACCEPTed into IBM
|
||
|
Distribution Libraries (also known as DLIBs) because they are likely to
|
||
|
overlay IBM code there. USERMODs should only be ACCEPTed if you really
|
||
|
know what you are doing.
|
||
|
|
||
|
I'll quickly explain the concepts of other keywords you're likely to
|
||
|
find at the top of SMP SYSMODS. I don't intend to be exhaustive. The
|
||
|
idea is to cut through the ice and give you some idea of what is
|
||
|
happening.
|
||
|
|
||
|
++ VER means version of the operating system, or perhaps "domain of SMP
|
||
|
activity" would also be an appropriate explanation. The values for this
|
||
|
parameter have four characters, and there aren't too many valid choices.
|
||
|
Z038 means MVS 3.8 and upwards through XA. (Z037 or MVS 3.7 probably
|
||
|
isn't used anymore.) C150 means CICS 1.5 and upward. These values
|
||
|
almost never change, and within the same domain of activity, you always
|
||
|
find the same value. The ++VER values were originally intended to
|
||
|
differentiate between similar maintenance on different MVS releases, but
|
||
|
because of the evolution of the SMP product since those days, it isn't
|
||
|
as important any more. The purpose of the ++VER statement has been
|
||
|
largely taken over by the FMID. It is still required, however, and must
|
||
|
be included in all SYSMODs.
|
||
|
|
||
|
Inside the ++VER statement are the FMID, PRE, REQ, and SUP keywords.
|
||
|
FMID has been discussed. Every SYSMOD must belong to a unique FMID. In
|
||
|
the parentheses following the FMID keyword, the FMID which will own the
|
||
|
SYSMOD must be specified.
|
||
|
|
||
|
PRE and SUP are quite simple. In the parentheses following the PRE
|
||
|
keyword, and separated by spaces or commas, is a list of SYSMOD IDs
|
||
|
which have to be present before the new SYSMOD can be APPLYed. The
|
||
|
prerequisite SYSMODs must have been already APPLYed themselves, or else
|
||
|
they have to be APPLYed together with this new SYSMOD. If all the PREs
|
||
|
or prerequisites are not present, the new SYSMOD will not go on.
|
||
|
|
||
|
REQ is like PRE, but the SYSMODs that are REQuired for the new SYSMOD,
|
||
|
must be APPLYed in the same run as the new SYSMOD. It is seldom
|
||
|
necessary to use the REQ keyword, usually PRE will suffice.
|
||
|
|
||
|
Following the SUP keyword is a list of SYSMODS that are effectively
|
||
|
replaced, or SUPERSEDED by the new SYSMOD. SUP is used when the intent
|
||
|
of the new material is to completely obsolete all the material from all
|
||
|
of the SYSMODs in the SUP list. If only some of the material in a
|
||
|
previous SYSMOD or PTF will be replaced, that SYSMOD should be placed in
|
||
|
the PRE list or prerequisite list. For a SYSMOD to be superseded or
|
||
|
SUPed (to use the common parlance) its purpose in the operating system
|
||
|
should be completely replaced by the later SYSMOD.
|
||
|
|
||
|
The new SYSMOD may have a sequence of ++IF FMID(fmidnam) THEN
|
||
|
REQ(sysmdid) statements. This happens if different levels of the same
|
||
|
product exist, as mentioned earlier regarding the various MVS/370
|
||
|
product levels. If the new SYSMOD is for a lower level of the product,
|
||
|
and the installation has both that level and a higher level, it may be
|
||
|
necessary to apply another fix to satisfy the requirements of the higher
|
||
|
level. SMP is informed of this by a coded ++IF statement in the lower
|
||
|
level SYSMOD. If the higher level referred to in the ++IF statement is
|
||
|
not present on the system, then the fix suffices, and it will go on to
|
||
|
the system normally. If the installation has the higher level of the
|
||
|
product also, the lower level SYSMOD will not go on without the presence
|
||
|
of the SYSMOD ID in the REQ keyword of the ++IF statement. The FMID
|
||
|
name within the ++IF statement is usually for a higher level of the
|
||
|
product than the current SYSMOD is for.
|
||
|
|
||
|
Below all this VER, PRE, SUP and IF stuff is the actual fix. A ++MOD
|
||
|
statement followed by object code signifies an object module replacement
|
||
|
of a CSECT. A ++SRC statement followed by source code is a complete
|
||
|
source code replacement. A ++MAC statement is followed by the complete
|
||
|
replacement for the macro. A ++SRCUPD statement or ++ MACUPD statement
|
||
|
followed by IEBUPDTE control cards signifies updates to an existing
|
||
|
source module or macro. Keywords in these statements supply necessary
|
||
|
additional instructions so that the change is done according to the
|
||
|
author's or IBM's specifications. Specification of the destination
|
||
|
libraries for the ELEMENT to be changed is also accomplished by these
|
||
|
keywords.
|
||
|
|
||
|
A single SYSMOD can contain fixes for many system ELEMENTs. Each ELEMENT
|
||
|
to be changed must have its own ++SRC, ++MOD, +SRCUPD, ++MAC or ++MACUPD
|
||
|
control card, followed by the replacement or additional material for
|
||
|
that ELEMENT. An approximate limit to the number of element fixes in
|
||
|
one SYSMOD is set by a global SMP parameter called PEMAX. It is
|
||
|
advisable to set PEMAX to a high number, usually 9999.
|
||
|
|
||
|
One more important note. Libraries in SMP control statements are
|
||
|
referred to by their DDNAMES only, which are one to eight characters
|
||
|
long. It is a safe and wise practice in SMP work to always make the
|
||
|
DDNAME of the library correspond to the lowest-level qualifier of its
|
||
|
dataset name. Dataset name prefixes don't count to the SMP program. It
|
||
|
is therefore advisable to use the same SMP JCL procedure when doing
|
||
|
system modifications to one system. The JCL of that PROC will uniquely
|
||
|
and unchangeably determine the destination libraries of the SMP action.
|
||
|
Thus, the SMP control information and the actual contents of the
|
||
|
affected libraries will always be kept in synchronization. (SMP/E has a
|
||
|
facility for determining dataset names by dynamic allocation. These
|
||
|
dynamically determined library names are called DDDEFs. DDDEFS,
|
||
|
dynamically accomplish what DD cards do in a JCL procedure.)
|
||
|
|
||
|
The SMP Work Flow
|
||
|
|
||
|
The discussion of control datasets is based on the three processes of
|
||
|
SMP flow. These are RECEIVE, APPLY, and ACCEPT. RECEIVE, APPLY, and
|
||
|
ACCEPT are the SMP- language equivalents of: taking a new SYSMOD into
|
||
|
the SMP environment, putting its pieces into the Target Libraries in the
|
||
|
proper places, and finally, storing its pieces in the Distribution
|
||
|
Libraries for archival and possible later use. Again, the flow is:
|
||
|
IBM-supplied SYSMODS, to Target Libraries, to Distribution Libraries.
|
||
|
|
||
|
How do the RECEIVE, APPLY, and ACCEPT processes work? I will discuss
|
||
|
these processes briefly in order, with the aim of keeping the discussion
|
||
|
conceptual. Once the concepts are understood, and the vocabulary words
|
||
|
associated with them are learned, then the IBM literature will become
|
||
|
readable.
|
||
|
|
||
|
RECEIVE
|
||
|
|
||
|
RECEIVE basically involves storing a new SYSMOD and recording some vital
|
||
|
statistics about it, so that it is pre-digested by SMP. The text of the
|
||
|
entire SYSMOD is stored in a partitioned dataset called the PTS, or PTF
|
||
|
Temporary Store dataset. In the older version of SMP, SMP4, the control
|
||
|
information taken during the RECEIVE process is stored in the PTS also.
|
||
|
However, in SMP/E, all control information is stored in VSAM files known
|
||
|
as ZONEs. The VSAM file which stores the control information from the
|
||
|
RECEIVE process is known as the GLOBAL ZONE. The text of the SYSMOD
|
||
|
thus goes to the PTS as before, but the control information is stored in
|
||
|
the GLOBAL ZONE.
|
||
|
|
||
|
Certain SYSMODS are RECEIVEd a bit differently. These are SYSMODS which
|
||
|
have what are known in SMP language as RELFILE. The word RELFILE
|
||
|
roughly translates to IEBCOPY. If a modification has large numbers of
|
||
|
linkedited csects, macros, ISPF panels, or other ELEMENTs, which are
|
||
|
suitable for direct IEBCOPY into Target Libraries, then those ELEMENTs
|
||
|
included in the SYSMOD which have similar record format and record
|
||
|
length can be loaded into a single PDS. This PDS is unloaded onto the
|
||
|
SYSMOD distribution tape using IEBCOPY, and its file sequence order on
|
||
|
the tape is very important. If the Sysmod Specification File on the
|
||
|
tape (known as the SMPMCS) calls for three RELFILEs for instance, then
|
||
|
the next three files on the tape, hopefully IEBCOPY unloaded, are known
|
||
|
as RELFILE(1), RELFILE(2), and RELFILE(3) respectively.
|
||
|
|
||
|
The RECEIVE process on a SYSMOD with RELFILE is the following: The
|
||
|
SMPMCS, which contains the SMP control statements of the SYSMOD, is read
|
||
|
from the tape. The number of RELFILEs (three in this example) is
|
||
|
determined from the RELFILES (3) keyword in the SMPMCS. The three files
|
||
|
on the tape which follow the SMPMCS file are then unloaded to a disk
|
||
|
pack (determined by the SMPTLIB DD statement in the SMP job) and given
|
||
|
special names, which SMP will understand during later APPLY and ACCEPT
|
||
|
processing of the SYSMOD. These names are of the format:
|
||
|
prefix.sysmodid.Fn, where n is 1, for the first relfile, 2 for the
|
||
|
second, and so forth. The prefix is set in the GLOBAL ZONE for SMP/E
|
||
|
(or in the PTS system entry in SMP4) and is not changed during the
|
||
|
entire process. When a SYSMOD with RELFILEs is RECEIVEd, the Relfile
|
||
|
Libraries are loaded from tape to disk. The elements they contain are
|
||
|
thus readied, so that the APPLY and ACCEPT processes to follow can
|
||
|
selectively copy them to where they will be needed. Meanwhile, the
|
||
|
SMPMCS is itself copied to the PTS, and its control information is dealt
|
||
|
with as discussed before.
|
||
|
|
||
|
With SMP/E there is a bit more to the RECEIVE process. Besides the
|
||
|
RECEIVE of SYSMODS, one must also RECEIVE SYSMOD error information. This
|
||
|
is known as HOLDDATA. HOLDDATA consists of a list of ++HOLD and
|
||
|
++RELEASE control statements in sequential order. Each of these
|
||
|
statements point to a PTF or an APAR SYSMOD. The purpose of the ++HOLD
|
||
|
statement is to prevent SMP/E from APPLYing a PTF that is in error,
|
||
|
known as a PE PTF. A ++RELEASE statement that is RECEIVED after a
|
||
|
++HOLD statement against the same SYSMOD will undo the effect of the
|
||
|
++HOLD statement. The order in which the statements are RECEIVED is of
|
||
|
paramount importance. SMP/E will honor the ++RELEASE only if it occurs
|
||
|
after all ++HOLD statements for that particular SYSMOD. The HOLDDATA is
|
||
|
kept in the SMP/E GLOBAL ZONE.
|
||
|
|
||
|
A quick word about undoing the RECEIVE of a SYSMOD. A RECEIVE can be
|
||
|
undone by an SMP process called REJECT. To REJECT a SYSMOD that has
|
||
|
been RECEIVEd causes the SYSMOD to be erased from the PTS and its
|
||
|
control information associated with the RECEIVE process to be wiped out.
|
||
|
If the SYSMOD has RELFILEs, the disk-loaded copies are deleted. The
|
||
|
SYSMOD cannot then be APPLIED or ACCEPTED unless it is re-RECEIVED.
|
||
|
REJECTing a SYSMOD will not affect the status of a SYSMOD that has
|
||
|
already been APPLYed or ACCEPTed. It stays in the Target Libraries and
|
||
|
in the Distribution Libraries.
|
||
|
|
||
|
APPLY
|
||
|
|
||
|
Now once a SYSMOD is RECEIVEd, how is it APPLYed to the Target
|
||
|
Libraries?
|
||
|
|
||
|
When thinking about APPLYing SYSMODS to your system, never forget that
|
||
|
the purpose of a SYSMOD is to supply new components for the operating
|
||
|
system or a product. The APPLY process puts the new pieces or elements
|
||
|
into their proper places in the executing libraries of the system, the
|
||
|
Target Libraries. It also keeps detailed track of what was done.
|
||
|
|
||
|
APPLY can only be done to a SYSMOD that has been RECEIVEd. The RECEIVE
|
||
|
process has put the SYSMOD into the SMP staging areas, the PTS, and
|
||
|
possibly the unloading RELFILE, and has done some preliminary accounting
|
||
|
in the SMP/E GLOBAL ZONE or the SMP4 PTS. The APPLY process will pick
|
||
|
up the SYSMOD from there. Accounting for the APPLY process is done in
|
||
|
SMP/E using a VSAM cluster called the TARGET ZONE, and in SMP4 using
|
||
|
several partitioned datasets, the most important of which is called the
|
||
|
CDS or Control Data Set.
|
||
|
|
||
|
A word about ELEMENT accounting. If a SYSMOD will replace an ELEMENT,
|
||
|
that ELEMENT acquires an RMID (Replacement Module ID) equal to the
|
||
|
SYSMOD ID of the SYSMOD which replaced it. Since the piece was
|
||
|
completely replaced, each MAC, MOD, or SRC ELEMENT can have only one
|
||
|
RMID. If on the other hand, the SYSMOD will update a MACRO, update
|
||
|
SOURCE, or zap a LOAD MODULE, then that ELEMENT acquires a UMID (Update
|
||
|
Module ID) equal to the SYSMOD ID that updated it. One macro or module
|
||
|
can have many UMIDS, because it is possible to update a single ELEMENT
|
||
|
many times.
|
||
|
|
||
|
Now back to APPLY processing. Many SYSMODS can be APPLYed together in
|
||
|
one run. This is one of the great conveniences of the SMP product. The
|
||
|
programmer can select a list of individual SYSMODS by their
|
||
|
seven-character SYSMOD IDs in the SMPCNTL DD statement, where the APPLY
|
||
|
parameter is entered into the SMP job. This is accomplished simply by
|
||
|
stating APPLY SELECT (sysmdid,sysmdid, ...).. Just one SYSMOD can be
|
||
|
selected to APPLY, if that is what is desired.
|
||
|
|
||
|
It is almost always advisable to do APPLY CHECK before doing the real
|
||
|
APPLY. APPLY CHECK is a dry run of the APPLY process. All SMP control
|
||
|
information will be verified, just as if the real APPLY was being done.
|
||
|
With APPLY CHECK however, no real library updates are done, and the
|
||
|
SYSMODS will not really be APPLYed to the system. A report will be
|
||
|
generated that tells what would be done. ACCEPT and RESTORE processing,
|
||
|
to be mentioned later, also have the CHECK facility.
|
||
|
|
||
|
It is also possible to do what is called a MASS APPLY. By simply stating
|
||
|
the word APPLY in the SMPCNTL DD statement of an SMP job, SMP will
|
||
|
attempt to APPLY all RECEIVEd SYSMODS that are eligible for the system
|
||
|
but have not been APPLYed yet. SMP will look at all the un-APPLYed
|
||
|
RECEIVEd SYSMODS and will build a SYSMOD SELECT list. SMP will then
|
||
|
proceed to APPLY all the selected SYSMODS to the system.
|
||
|
|
||
|
It is possible to EXCLUDE a list of SYSMODS specifically from a MASS
|
||
|
APPLY, by using the EXCLUDE or E parameter in the APPLY control
|
||
|
statement. In SMP/E (but not in SMP4) there is an additional way to
|
||
|
exclude a SYSMOD from an APPLY. This is through a ++HOLD modification
|
||
|
control statement which has been RECEIVEd previous to the APPLY request.
|
||
|
|
||
|
MASS APPLY is the normal means of APPLYing IBM's periodic system
|
||
|
maintenance known as PUTs (Program Update Tapes) to the system, because
|
||
|
this maintenance consists of large numbers of PTFs, perhaps several
|
||
|
hundred of them, and it is inconvenient to SELECT them individually.
|
||
|
|
||
|
There is another APPLY option called APPLY GROUP. APPLY GROUP works
|
||
|
very much like APPLY SELECT for APPLYing a list of SYSMODS. The
|
||
|
difference concerns missing prerequisites. If APPLY GROUP(sysmdid,...)
|
||
|
is coded instead of APPLY SELECT, SMP will go to the trouble of adding
|
||
|
all necessary prerequisites to the SELECT list before doing the APPLY.
|
||
|
It is only necessary that the added SYSMODS have been previously
|
||
|
RECEIVEd. APPLY GROUP is handy for APPLYing new PTFs when information
|
||
|
is unknown about other necessary PTFs. This option does use extra
|
||
|
overhead, but it can be used to avoid multiple SMP runs when some
|
||
|
prerequisites may be missing.
|
||
|
|
||
|
BYPASS is a useful facility of SMP APPLY processing, especially during
|
||
|
APPLY CHECK for determining if the APPLY should work. The BYPASS
|
||
|
parameter (also available with ACCEPT) of APPLY allows SYSMODS to be
|
||
|
APPLYed to the system, even though prerequisites or other requirements
|
||
|
are missing. During a real APPLY situation, the BYPASS parameter will
|
||
|
allow putting on a SYSMOD in an exceptional circumstance, when there is
|
||
|
no other way of getting it on. During a CHECK situation however, it is
|
||
|
advisable to BYPASS all or most error conditions on the first try. This
|
||
|
is because SMP will often stop further action when it encounters the
|
||
|
first ERROR.
|
||
|
|
||
|
For instance, suppose SYSMODS B and C both require SYSMOD A, and SYSMOD
|
||
|
A has a ++HOLD against it. When trying to APPLY CHECK SELECT SYSMODS A,
|
||
|
B, and C together, without a BYPASS (HOLDERROR) coded, SMP will not
|
||
|
indicate how the three SYSMODS will APPLY, and what ELEMENTs they will
|
||
|
affect. SMP will simply say that it cannot APPLY SYSMODS B and C
|
||
|
because it could not APPLY SYSMOD A. On the next try, if a BYPASS
|
||
|
(HOLDERROR) is coded in the APPLY CHECK, SMP/E would give a complete
|
||
|
report of the ELEMENTs affected by all three SYSMODS, because the BYPASS
|
||
|
allowed the simulation of a completed APPLY, and all the consequences of
|
||
|
the APPLY will show in the report.
|
||
|
|
||
|
As a matter of procedure, most people BYPASS every error condition
|
||
|
during APPLY CHECK, but some try not to use BYPASS on the real APPLY.
|
||
|
They exert much effort to completely clean up the APPLY CHECK so they
|
||
|
can avoid coding a BYPASS for the real APPLY run. I personally leave the
|
||
|
BYPASS in during the real APPLY runs too. I just make sure that the
|
||
|
APPLY CHECK will show the exact result that I want to achieve. My
|
||
|
approach avoids an excessive number of APPLY CHECK runs, which can take
|
||
|
a long time. This is a matter of personal preference. The important
|
||
|
thing is that the real APPLY should always be done with the same
|
||
|
parameters as the last satisfactory APPLY CHECK run.
|
||
|
|
||
|
The final point on APPLY processing is to show how the pattern of the
|
||
|
system is determined or changed during APPLY. System patterns are
|
||
|
communicated to SMP by means of the JCLIN facility. JCLIN consists of
|
||
|
MODEL JCL statements for ASSEMBLY, LINKEDIT or COPY steps. SMP reads
|
||
|
these statements, and uses them to determine how source can be
|
||
|
reassembled after a MACRO change, or how load modules of one or many
|
||
|
csects (called LMODs by SMP) are linkedited from component parts,
|
||
|
including all linkedit control statements and attributes. JCLIN is only
|
||
|
associated with Target Libraries and the TARGET ZONE, not with
|
||
|
Distribution Libraries, which have only separate pieces of the system.
|
||
|
JCLIN tells SMP how to construct the working programs of the system from
|
||
|
their component pieces.
|
||
|
|
||
|
This is reminiscent of our discussion of the SYSGEN process. In fact,
|
||
|
JCLIN is the means of communicating the contents of the SYSGEN STAGE II
|
||
|
DECK to SMP. A JCLIN stream can be put into SMP in two ways. The first
|
||
|
way is by means of a dataset of JCL, which is referred to in the SMP job
|
||
|
by the SMPJCLIN DD statement. The second means is from within a SYSMOD
|
||
|
itself. This second way is called INLINE JCLIN. The JCL stream is
|
||
|
included in the text of the SYSMOD and preceded with a ++ JCLIN
|
||
|
statement. This will cause the JCL pattern to be read into the TARGET
|
||
|
ZONE or CDS when the SYSMOD is APPLYed.
|
||
|
|
||
|
RESTORE
|
||
|
|
||
|
The APPLY process is reversed with the RESTORE process. RESTORE takes
|
||
|
off SYSMODS that have already been APPLYed but not ACCEPTed. SMP
|
||
|
provides a RESTORE CHECK facility so the user can determine in advance
|
||
|
if the RESTORE will work. RESTORE allows bad SYSMODS to be backed off
|
||
|
if they are causing trouble during system tests, after APPLYs have been
|
||
|
done.
|
||
|
|
||
|
ACCEPT
|
||
|
|
||
|
The ACCEPT process of SMP takes the ELEMENT replacements which have
|
||
|
already been APPLYed to the system (and presumably tested), and puts
|
||
|
them into the Distribution Libraries to archive them. This also allows
|
||
|
them to be used in a subsequent SYSGEN or IOGEN (a partial SYSGEN to
|
||
|
rearrange IO-configuration related ELEMENTS). ACCEPT is thus a very
|
||
|
important process.
|
||
|
|
||
|
Control information for the ACCEPT processing is kept, for SMP/E, in a
|
||
|
VSAM cluster known as a DLIB ZONE. Each DLIB ZONE must be paired with a
|
||
|
corresponding TARGET ZONE. This is because SMP will normally ACCEPT
|
||
|
only SYSMODS that have already been APPLYed, and the TARGET ZONE has the
|
||
|
control information for the APPLYed SYSMODS. It is possible for one
|
||
|
GLOBAL ZONE to control several pairs of TARGET and DLIB ZONES, so that
|
||
|
several sets of system libraries can be maintained out of one SMP/E
|
||
|
configuration.
|
||
|
|
||
|
For SMP4, control information for ACCEPT is kept in two partitioned
|
||
|
datasets, the ACDS (Alternate Control Data Set) and the ACRQ (Alternate
|
||
|
Conditional Requisite Queue Data Set). There is also a CRQ dataset for
|
||
|
APPLY information. These datasets correspond to the information that is
|
||
|
kept in the DLIB ZONE for SMP/E.
|
||
|
|
||
|
ACCEPT control parameters are similar to those for APPLY, as discussed
|
||
|
above. It is always advisable to do ACCEPT CHECK runs before doing a
|
||
|
real ACCEPT run, just to make sure the job will achieve the desired
|
||
|
result. Doing ACCEPT CHECK runs will make it possible to fix errors
|
||
|
before the ACCEPT run. Once a SYSMOD has been ACCEPTed on the SYSTEM,
|
||
|
it cannot be removed, except by another SYSMOD that will supersede it
|
||
|
and replace all its ELEMENTS.
|
||
|
|
||
|
In order for an ELEMENT to be used in a subsequent SYSGEN or IOGEN, its
|
||
|
SYSMOD must first be ACCEPTed. This loads the ELEMENT into its proper
|
||
|
Distribution Library. As stated before, the SYSGEN process uses the
|
||
|
material in the DLIBS to build the system, and one doesn't want
|
||
|
back-level code to creep into the system after an IOGEN has been done.
|
||
|
It is therefore mandatory to do a MASS ACCEPT before a SYSGEN or IOGEN
|
||
|
is done.
|
||
|
|
||
|
There is a special case of ACCEPT processing which allows SMP to
|
||
|
simulate the SYSGEN process. This type of ACCEPT processing is called
|
||
|
ACCEPT NOAPPLY, and its purpose is to replace SYSGEN MACROS and other
|
||
|
pieces of the Distribution Libraries so a newly updated SYSGEN STAGE II
|
||
|
DECK can be created. This new STAGE II DECK will reflect the new
|
||
|
pattern that IBM has planned for the new version of the operating
|
||
|
system. ACCEPT NOAPPLY processing replenishes the DLIBS directly from
|
||
|
RECEIVEd SYSMODS, bypassing the Target Libraries entirely. After the
|
||
|
ACCEPT NOAPPLY has been done, and the DLIBS reflect the state of the new
|
||
|
system, a STAGE II SYSGEN DECK is assembled from the installation's
|
||
|
STAGE I DECK, and the new STAGE II DECK is made known to SMP through the
|
||
|
JCLIN process. When a subsequent APPLY of the same SYSMODS is done, all
|
||
|
their ELEMENTs will fit into the system according to their proper new
|
||
|
pattern.
|
||
|
|
||
|
UCLIN and LIST
|
||
|
|
||
|
UCLIN for SMP control datasets roughly corresponds to ZAP for data.
|
||
|
UCLIN provides the facility for arbitrarily changing SMP control
|
||
|
information. Sometimes SMP control entries must be adjusted to allow a
|
||
|
PTF to be APPLYed or ACCEPTed properly. For example, suppose PTF B is
|
||
|
intended to replace ELEMENT A, but the installation has modified ELEMENT
|
||
|
A with a USERMOD. The intention is to replace ELEMENT A with IBM's new
|
||
|
version of it, supplied by PTF B. After the element is replaced, the
|
||
|
USERMOD will be refitted to the new version. This is what is intended,
|
||
|
but SMP will not allow it. That is because PTF B doesn't know, in its
|
||
|
PRE and SUP keywords about the USERMOD, which tagged ELEMENT A with a
|
||
|
UMID equal to the USERMOD's SYSMOD ID. The APPLY CHECK run to APPLY PTF
|
||
|
B will report an ID CHECK, stopping PTF B from going on.
|
||
|
|
||
|
One way to get around this situation is to use UCLIN processing to
|
||
|
remove the strange UMID from ELEMENT A before doing the APPLY for PTF B.
|
||
|
Then PTF B can be APPLYed without any trouble, and it will replace
|
||
|
ELEMENT A on the system, achieving the desired result. (Another approach
|
||
|
is to BYPASS ID CHECKS and force PTF B on. The UCLIN approach seems
|
||
|
cleaner to me.)
|
||
|
|
||
|
UCLIN can also be used to replace large pieces of SMP control data. SMP
|
||
|
has a facility called UNLOAD, that converts entire SMP entries, or even
|
||
|
an entire ZONE into UCLIN control statements. This may prove useful to
|
||
|
some users. The UCLIN facility provides fine control on the SMP
|
||
|
entries, outside of the RECEIVE, APPLY, ACCEPT milieu. Obviously, UCLIN
|
||
|
should be used with extreme caution, and only by someone who knows
|
||
|
exactly what they are doing. Sometimes an IBM-supplied PTF will
|
||
|
recommend the application of UCLIN. This should also be done with care,
|
||
|
because a previous SYSMOD may have done the proper adjustment already.
|
||
|
|
||
|
LIST allows the SMP user to display all SMP control information, and it
|
||
|
is obviously the tool to use for determining if UCLIN is necessary, and
|
||
|
if your UCLIN worked properly. LIST also has considerable
|
||
|
general-purpose use in SMP. It is the way to do SMP inquiry. With SMP4,
|
||
|
it is practically the only way to find out SMP control information.
|
||
|
(There are a few other tools around, including a LISTCDS TSO command on
|
||
|
file 300 of the CBT tape.) With SMP/E, there is an extensive ISPF
|
||
|
Inquiry System that takes the place of the LIST function for most
|
||
|
routine lookups. LIST can still be used for big inquiries in batch.
|
||
|
The SMP books have much information on the use of the LIST command.
|
||
|
|
||
|
|
||
|
End Of Lesson
|
||
|
|
||
|
Now you can try your hand at the SMP books. You'll probably find them
|
||
|
clear and well-written now, because you're past the vocabulary barrier.
|
||
|
Any words I haven't defined here can probably be found in the glossaries
|
||
|
of the SMP publications, and you will be on your way.
|
||
|
|
||
|
After you hit the books, you can use SMP carefully, but with confidence.
|
||
|
|
||
|
|