Two primary functions of the SMC are to influence MVS allocation to select devices compatible with tape volumes and to intercept MVS messages for tape mounts and dismounts to automate these operations for library and virtual drives.
For specific volumes, SMC allocation is primarily based on volume media and location.
For scratch volumes, SMC allocation and mount processing are primarily based on user policies. Policies to control scratch allocation and mounts may be selected using either the StorageTek DFSMS ACS interface or SMC TAPEREQ
control statements.
You can use user exits to select policies. Refer to the ELS Legacy Interfaces Reference for more information.
A policy specified through DFSMS has priority over one specified via TAPEREQ
, which in turn has preference over a policy specified in a user exit.
Use the SMC POLicy
command to specify your policies for tape allocation and mount requests. This command enables you to create a named policy containing all of the attributes associated with an allocation or mount event, including MEDia
, RECtech
or MODel
, SUBPool
, ESOTeric
, VTCS MGMTclas
, and TAPEPlex
.
The POLicy
command can be used with TAPEREQ
statements or the StorageTek DFSMS interface to associate a named policy with allocation and mount requests.
Additionally, the POLicy
command provides the ability to influence allocation variables during IDAX (MVS Interpreter/Dynamic Allocation Exit) processing. POLicy IDAX
parameters can be used by both StorageTek DFSMS interface and TAPEREQ
users to change variables normally supplied by JCL.
SMC policies are normally defined in a single data set or PDS member which is loaded at SMC startup using the SMC READ
command. Additionally, the POLicy
command may be issued at any time to add a new policy or replace the contents of an existing policy.
In the following sample SMCCMDS
data set, the READ
command loads the CNTL.PDS(POLMEM)
data set containing the SMC policies:
Example 4-1 Sample SMCCMDS Data Set
ALLOCDEF ZEROSCR(ON,INSIDE) MSGDEF CASE(MIXED) TAPEPLEX NAME(HSCPLEX) LOCSUB(HSC0) READ DSN('CNTL.PDS(POLMEM)') TREQDEF DSN('CNTL.PDS(TREQMEM)')
Note:
POLicy
commands must be processed before the TREQDEF
command if any TAPEREQ
statements reference policies by name.
If any POLicy
command references a TAPEPlex
, the TapePlex name must be defined using a TAPEPlex
command before the POLicy
command is processed.
Refer to the ELS Command, Control Statement, and Utility Reference for more information about the SMC POLicy
command, SMSDef
command, and TAPEREQ
control statement.
The SMC POLicy
command enables you to preference devices during the allocation process. The ESOTeric
parameter can specify a list containing a maximum of eight esoterics. During drive exclusion, devices in any of the listed esoterics are included. During drive prioritization, devices are ordered according to their position in the esoteric list. This feature enables you to do the following:
Prefer faster or slower models of equivalent drives.
Prefer a certain device type (for example, 9940) if drives are available but select an alternative device type if preferred drives are busy
By default, SMC prefers drives based on the following criteria in order:
Specific volume LSM location
Esoteric list
LSM scratch count
The relative weight can be changed using the POLicy
PREFer
parameter. Refer to the ELS Command, Control Statement, and Utility Reference for more information.
SMC processing at IDAX (MVS Interpreter/Dynamic Allocation Exit) allows specification of additional user policies based on the SMC IDAX
command setting and the tape policies specified in individual SMC POLicy
commands.
SMC IDAX
processing enables you to change the JCL parameters for esoteric, volume count, expiration date or retention period, or subsystem and program name, based on policies specified in named SMC policy objects.
These IDAX policy features are enabled by the SMC IDAX
command, which enables you to:
Specify that IDAX policies are applied based on TAPEREQ
.Specify that SMC IDAX processing must execute before IBM DFSMS interface processing occurs. The IDAX
command parameter SEQUENCE(FIRST)
specifies that SMC IDAX processing precedes StorageTek DFSMS processing.
Specify that MOD
data sets are treated as new (MOD(ON))
.
The SMC POLicy
command enables you to set the policies to be applied during IDAX. All policy parameters that begin with the letters ”IDAX” are applied only if the SMC IDAX
command parameter POLICY(ON)
is specified. These parameters include:
IDAXESOTERIC
This parameter specifies the name of an esoteric to be substituted for the JCL esoteric. IDAXESOTERIC
may also be applied when the JCL statement does not contain any unit information. Unlike the POLICY ESOTERIC
parameter, which enables you to specify devices as a subset of the JCL esoteric, the IDAXESOTERIC
performs a ”true” esoteric substitution.
IDAXEXPDT
and IDAXRETPD
These parameters are mutually exclusive and allow you to specify a retention period or expiration date to the DD statement, overriding any value that may have been specified in the JCL.
IDAXVOLCNT
This parameter enables you to override the volume count parameter specified in the JCL.
IDAXSUBSYS
and IDAXPROGRAM
You can use these parameters to direct an allocation to use Oracle's StorageTek ExHPDM (Extended High-Performance Data Mover).
SMC can perform esoteric substitution at IDAX using either the POLicy
command IDAXESOTERIC
parameter. When SMC performs esoteric substitution at IDAX, the original unit is replaced with a different unit (esoteric). Any valid esoteric can be substituted; for example, you can substitute a disk esoteric for a tape esoteric.
Note:
If your SMC IDAX processing modifies units which were optionally disk, or changes tape units to disk, it is recommended that you specify the IDAX
command parameter SEQUENCE(FIRST)
to allow SMC DFSMS processing to precede IBM DFSMS processing. This ensures that tape and disk data sets are managed as intended.
New allocations that are DFSMS-managed are not eligible for SMC IDAX esoteric substitution.
SMC performs esoteric substitution for all DISP=NEW
data sets.
By default, the SMC treats a DISP=MOD
data set as pre-existing and does not perform esoteric substitution. SMC performs esoteric substitution for DISP=MOD
data sets only if the IDAX
command MOD(ON)
parameter is specified and the first reference to the data set in the job's JCL specifies either DISP=MOD
or DISP=NEW
.
Unit affinity chains are separated if different members of the chain select POLICYs with different IDAXESOTERIC
parameters.
VOL=REF
chains within a job are validated and updated with the head-of-chain esoteric if necessary to ensure that volume references are honored.
You must specify SMSDef TEMPdsn(ON)
before IDAX esoteric substitution can be performed for temporary data sets.
Refer to the ELS Command, Control Statement, and Utility Reference for more information about the IDAX
and SMSDef
commands.
SMC TAPEREQ
control statements identify tape request attributes, including the tape policy associated with allocation and mount requests. The selected policy is based on the TAPEREQ
selection criteria, such as data set name or job name.
The TAPEREQ
POLicy
parameter directs the SMC to reference an associated SMC policy defined by an SMC POLicy
command.
TAPEREQ
control statements reside in a definition data set specified by the TREQDEF
operator command. TAPEREQ
statements must be placed in this definition data set; they cannot be issued as operator commands.
Note:
Refer to the ELS Command, Control Statement, and Utility Reference for more information about the SMC TAPEREQ
control statement and POLicy
command.
POLicy
commands must be processed before the TREQDEF
command if any TAPEREQ
statements reference policies by name. See "Sample SMCCMDS Data Set."
If your installation is using TAPEREQ
statements without POLICY
, or user exits, refer to the ELS Legacy Interfaces Reference for information about the interaction between POLICY
and other TAPEREQ
and user exit policy specifications.
Using a combination of TAPEREQ
statements and POLicy
commands, SMC enables you to specify allocation policy based on specific volume serial numbers. In some cases this feature may allow you to replace HSC nonlibrary VOLATTR
s with SMC TAPEREQ
and POLicy
commands.
Note:
TheVOLSER
keyword on a TAPEREQ
statement is allowed only if the POLicy
keyword is also specified and references a previously defined SMC policy with the keyword VOLTYPE(SPECIFIC)
.Using policy associated with volume serials enables you to:
Define different volume characteristics for the same volume serial for different clients.
For example, suppose that volser AAAAAA
exists in the TapePlex on an HSC server with a media of STK1R
, but on a specific client, volume AAAAAA
is a nonlibrary standard cartridge. The following combination of POLicy
commands and TAPEREQ
statements allows the SMC to bypass the volume lookup for volume AAAAAA
and use the specified policy information:
POLICY NAME(MANVOL) VOLTYPE(SPECIFIC) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAAAAA) POLICY(MANVOL)
Limit volume lookup to a single TapePlex based on volume serial.
For example, suppose that the SMC on a client host has two defined TapePlexes, PLEX1
and PLEX2
, which contain overlapping volume serial ranges (AAA000-AAA999
and BBB000-BBB999
). By default, SMC queries the TapePlexes in the order in which they are defined and uses information from the first TapePlex that recognizes the volume serial. The following combination of POLicy
commands and TAPEREQ
statements allows the SMC to choose the correct version of the volume for the client host:
POLICY NAME(PLEX1VOL) VOLTYPE(SPECIFIC) TAPEPLEX(PLEX1) POLICY NAME(PLEX2VOL) VOLTYPE(SPECIFIC) TAPEPLEX(PLEX2) TAPEREQ VOLSER(AAA000-AAA999) POLICY(PLEX1VOL) TAPEREQ VOLSER(BBB000-BBB999) POLICY(PLEX2VOL)
Direct allocation of volumes outside the library into a specific TapePlex.
The following combination of POLicy
commands and TAPEREQ
statements causes SMC to bypass library volume lookup and allocate the selected nonlibrary volumes to library drives compatible with standard cartridges:
POLICY NAME(INLIB) VOLTYPE(SPECIFIC) ESOTERIC(LIB1ESOT) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAA000-AAA999) POLICY(INLIB)
Note:
In the example above, TheNOTAPEPLEX
parameter on the POLicy
command directs the SMC system to bypass its TapePlex volume lookup logic.The following example illustrates the recommended method for specifying SMC Policy
commands, TREQDEF
commands, and TAPEREQ
control statements.
Include the following entry in the SMC Start procedure:
//SMCCMDS DD DSN=MY.PARMLIB(MYSMCCMD),DISP=SHR
Include the following entries in SMCCMDS
member MYSMCCMD
:
READ DSN('MY.PARMLIB(SMCPOL)') TREQDEF DSN('MY.PARMLIB(SMCTREQ)')
Note:
IfTAPEREQ
statements include POLicy
parameters, the POLicy
commands must be processed before the TREQDEF
command since the policy name in the TAPEREQ
statement is validated against the defined policy definitions.Add the SMC POLicy
commands to member SMCPOL
, for example:
POLICY NAME(POL1) SUBPOOL(SP1) MEDIA(STK1R) RECTECH(STK1RC) TAPEPLEX(HSC) POLICY NAME(POL2) SUBPOOL(SP2) MEDIA(VIRTUAL) MGMTCLAS(ABC)
Modify TAPEREQ
control statements in member SMCTREQ
to point to the named policies, for example:
TAPEREQ DSN(A.B.*) POLICY(POL1)TAPEREQ DSN(A.C.*) POLICY(POL2)
These TAPEREQ
statements point to the SMC policy names defined in Step 3.
The HOST
parameter on the SMC READ
command enables you to specify different policy definitions for different hosts. For example:
READ DSN(MY.PARMLIB(PRODPOLS)) HOST=PRODREAD DSN(MY.PARMLIB(TESTPOLS)) HOST=TEST
If the host name is PROD
, member PRODPOLS
is loaded. If the host name is TEST
, member TESTPOLS
is loaded.
The SMC interface to DFSMS provides the ability to select an SMC POLICY
by returning a MGMTCLAS
name from your StorageTek DFSMS ACS routines.
Note:
An alternative method for using the SMC DFSMS interface is described in the ELS Legacy Interfaces Reference.To enable the SMC DFSMS interface, specify the SMS
parameter of the ALLOCDef
command as follows:
ALLOCDEF SMS=ON
To disable the SMC DFSMS interface, specify the SMS
parameter of the ALLOCDef
command as follows:
ALLOCDEF SMS=OFF
The SMSDef
command enables you to tailor default SMC DFSMS support for your installation's requirements. This command provides the ability to include or bypass certain SMC DFSMS functions. Refer to the ELS Command, Control Statement, and Utility Reference for more information about the SMSDef
command.
STORCLAS
and MGMTCLAS
can be specified by executing an Automatic Class Selection (ACS) routine.
Note:
STORCLAS
and MGMTCLAS
JCL parameters are not supported by the SMC DFSMS interface due to conflicts with IBM MVS DFSMS. Using the STORCLAS
JCL parameter causes a data set to become IBM DFSMS-managed, and the MGMTCLAS
JCL parameter requires an IBM DFSMS-managed data set. Similarly, DFSMS routines that do not test for the &ACSENVIR='STKTAP1'
variable result in the data set becoming IBM DFSMS-managed, and cannot be used by the SMC DFSMS interface.It is recommended that you specify SMSDef MGMTPol (ALL)
to direct SMC to process all DFSMS returned management class names as policy names.
The SMC SMSDef
operator command enables you to tailor default SMC DFSMS support by including or bypassing certain SMC DFSMS functions. Refer to the ELS Command, Control Statement, and Utility Reference for more information about this command.
IBM DFSMS invokes ACS routines with the variable &ACSENVIR
set to ALLOC
before the SMC invokes the ACS routines with variable &ACSENVIR
set to STKTAP1
.
The SMC invokes the ACS routines at the following points in processing:
SSI55 Interpreter/Dynamic Allocation Exit (IDAX)
SSI24 common allocation
Mount message interception
The following list of read-only variables is passed by SMC to DFSMS when the information is available to the SMC. Not all variables are available for every call to the ACS routines. In particular, processes that occur in the JES3 address space, such as MDS, do not provide the SMC access to the MVS control blocks that contain the values for these fields. See the descriptions of each DFSMS interface for exceptions.
&ACSENVIR
(equals STKTAP1
for the SMC interface)
&ALLVOL
&ANYVOL
&DATACLAS
&DD
&DSORG
&DSN
&DSTYPE
&EXPDT
&FILENUM
&JOB
&LABEL
&LIBNAME
&NVOL
&PGM
&RETPD
&SYSNAME
&SYSPLEX
&UNIT
In the STKTAP1
environment, the &ANYVOL
variable is used only to match a specific VOLSER
and does not contain the REF=xx
values for VOL=REF
allocations.
The &DATACLAS
field is set when the JCL DD statement specifies this parameter.
&LIBNAME
is set to character 3
if SMSDef TEMPdsn(ON)
is specified and the current data set being processed is a temporary data set.
If your installation uses the IGDACSXT
routine to modify the read-only variables before the DFSMS ACS routine calls, be aware that the following variables, even if initialized, are not passed to the DFSMS ACS routines when &ACSENVIR
is set to STKTAP1
.
&ACCT_JOB
&ACCT_STEP
&GROUP
&MSGVP
&USER
&XMODE
Refer to the IBM publication DFSMSdfp Storage Administration Reference for more information about constraints when using read-only variables.
When writing a management class routine, consider the following:
The management class routine is invoked only when a storage class is assigned.
The management class routine must test for the &ACSENVIR='STKTAP1'
read-only variable value. DFSMS routines that do not test for the &ACSENVIR='STKTAP1'
variable result in the data set becoming IBM DFSMS-managed, and cannot be used by the SMC DFSMS interface.
During volume mount message IEC501A
interception, the &UNIT
read-only variable contains the generic unit type, such as 3490. Therefore, careful consideration must be taken when coding ACS routines that use the &UNIT
read-only variable.
DFSMS issued messages for JES3 static allocations are routed to the SMC GTF trace file.
The following figure provides a sample management class routine:
Example 4-2 Creating Management Class Routines
PROC STORCLAS IF &ACSENVIR = ’STKTAP1' THEN SET &STORCLAS = ’STKSTORC' END END ====================================================================== PROC MGMTCLAS FILTLIST LOCAL INCLUDE(BACKUP*.**., PROD.BKP*.**) FILTLIST REMOTE INCLUDE(PROD.OFFSITE.**) IF &ACSENVIR = 'STKTAP1' THEN SELECT WHEN (&DSN = &LOCAL) SET &MGMTCLAS = 'INVTAPE' WHEN (&DSN = &REMOTE) SET &MGMTCLAS = 'OFFVTAPE' END END
Note:
In this example, theSTORCLAS
routine assigns a storage class to every call. This ensures that the MGMTCLAS
routine is also driven at mount time.During DFSMS ACS routine processing, the SMC sets the values for all read-only variables when the information is available. Not all information is available for each process for which the SMC calls ACS routines.
At allocation time and at mount time processing of message IEF233A
, the &UNIT
read-only variable is set by the SMC to the value specified by the UNIT=
parameter of the DD statement. At mount time processing of message IEC501A
, the SMC sets the &UNIT
read-only variable to the generic unit type, such as 3490.
During dynamic allocation, the &DATACLAS
value can be specified by coding the DADACL
text unit. However, this value is not available to the SMC when processing mount message IEF233A
.
During JES3 C/I POSTSCAN processing, the following read-only variables are not available to the SMC:
&DATACLAS
(if specified in JCL)
&EXPDT
&PGM
&RETPD
During SSI23 dynamic allocation processing, all read-only variables are available to the ACS routines.
During JES3 MDS processing, the following read-only variables are not available to the SMC:
&DATACLAS
(if specified in JCL)
&EXPDT
&PGM
&RETPD
During IAT5210
mount message processing, the following read-only variables are not available to the SMC:
&DATACLAS
(if specified in JCL)
&EXPDT
&PGM
&RETPD
&UNIT
(does not contain the original esoteric but does contain the selected device number, such as 0A10
)
When processing mount message IEF233A
for a dynamic allocation, the &DATACLAS
value specified by the SVC99
text unit DADACL
is not available.
When processing mount message IEC501A
, the SMC sets the &UNIT
read-only variable to the generic unit type, such as 3490.
Note:
Each SMC interaction with DFSMS invokes all levels of ACS routines. The variable availability listed above applies to all ACS routines.DFSMS provides the following ways to validate correct ACS routine execution:
DFSMS WRITE
statement in the ACS routines
DFSMS ISMF
test function
When the SMC invokes the DFSMS ACS routines, all messages issued by DFSMS WRITE
statements are routed to the GTF trace file if SMC tracing is active.
Note:
DFSMS WRITE
statements are only sent to the SYSMSG
data set for the SSI55 Interpreter/Dynamic Allocation Exit (IDAX) esoteric substitution phase.
Refer to the publication DFSMS/MVS DFSMSdfp Storage Administration Reference for further information about writing and testing DFSMS ACS routines.