4 Policy

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.

The SMC POLicy Command

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.

SMC Policy and Esoteric Preferencing

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:

  1. Specific volume LSM location

  2. Esoteric list

  3. 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 Policy at IDAX

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 Esoteric Substitution at IDAX

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 Policy and the TAPEREQ Control Statement

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.

Specifying TAPEREQ and Policy by Volume Serial

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 VOLATTRs with SMC TAPEREQ and POLicy commands.

Note:

The VOLSER 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, The NOTAPEPLEX parameter on the POLicy command directs the SMC system to bypass its TapePlex volume lookup logic.

Example

The following example illustrates the recommended method for specifying SMC Policy commands, TREQDEF commands, and TAPEREQ control statements.

  1. Include the following entry in the SMC Start procedure:

    //SMCCMDS DD DSN=MY.PARMLIB(MYSMCCMD),DISP=SHR
    
  2. Include the following entries in SMCCMDS member MYSMCCMD:

    READ DSN('MY.PARMLIB(SMCPOL)')
    TREQDEF DSN('MY.PARMLIB(SMCTREQ)')
    

    Note:

    If TAPEREQ 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.
  3. 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)
    
  4. 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.

SMC DFSMS Processing

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.

Enabling or Disabling the SMC DFSMS Interface

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

Tailoring the SMC DFSMS Interface

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.

Defining StorageTek DFSMS ACS Routines to Specify MGMTCLAS

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.

Invoking ACS Routines

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:

JES2

  • SSI55 Interpreter/Dynamic Allocation Exit (IDAX)

  • SSI24 common allocation

  • Mount message interception

JES3

  • SSI55 Interpreter/Dynamic Allocation Exit (IDAX)

  • JES3 Converter/Interpreter (C/I)

  • SSI23 JES3 Dynamic Allocation

  • JES3 Main Device Scheduler (MDS)

  • Mount message interception

ACS Routine Order

The ACS routines are invoked in the following order:

  1. Data class

  2. Storage class

  3. Management class

  4. Storage group

Management class and storage group ACS routines are called only if a storage class is assigned.

DFSMS Automatic Class Selection (ACS) Routine Environment for SMC

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.

MGMTCLAS Routine Considerations

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, the STORCLAS routine assigns a storage class to every call. This ensures that the MGMTCLAS routine is also driven at mount time.

Availability of Read-only Variables

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.

JES2 Considerations

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.

JES3 Considerations

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.

Validating DFSMS ACS Routine Execution

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.