SMC の 2 つのプライマリ機能は、MVS 割り振りに影響を及ぼしテープボリュームに適合するデバイスを選択することと、テープマウントとマウント解除の MVS メッセージをインターセプトして、ライブラリドライブおよび仮想ドライブのこれらの動作を自動化することです。
特定のボリュームの場合、SMC 割り振りは主にボリュームのメディアと場所に基づきます。
スクラッチボリュームの場合、SMC 割り振りとマウント処理は主にユーザーポリシーに基づきます。スクラッチの割り振りとマウントを制御するためのポリシーは、StorageTek DFSMS ACS インタフェースまたは SMC TAPEREQ 制御文のどちらかを使用して選択できます。
ユーザー出口を使用するとポリシーを選択できます。詳細については、『ELS レガシーインタフェースリファレンス』を参照してください。
DFSMS によって指定されたポリシーは、TAPEREQ によって指定されたポリシーより優先されます。後者はさらに、ユーザー出口で指定されたポリシーより優先されます。
テープの割り振りおよびマウント要求のためのポリシーを指定するには、SMC POLicy コマンドを使用します。このコマンドを使用すると、MEDia、RECtech または MODel、SUBPool、ESOTeric、VTCS MGMTclas、TAPEPlex などの、割り当てまたはマウントイベントに関連付けられたすべての属性を含む名前付きポリシーを作成できます。
POLicy コマンドを TAPEREQ 文または StorageTek DFSMS インタフェースと組み合わせて使用すると、名前付きポリシーを割り振りおよびマウント要求に関連付けることができます。
また、POLicy コマンドは、IDAX (MVS インタプリタ/動的割り振り出口) 処理中に割り振り変数に影響を及ぼす機能も提供します。POLicy IDAX パラメータは、通常は JCL によって提供される変数を変更するために、StorageTek DFSMS インタフェースと TAPEREQ のどちらのユーザーでも使用できます。
SMC ポリシーは通常、1 つのデータセットまたは PDS メンバーの中で定義され、SMC READ コマンドを使用して SMC の起動時にロードされます。また、POLicy コマンドは、新しいポリシーを追加したり既存の内容を置き換えたりするために、いつでも発行できます。
次の SMCCMDS データセットの例では、READ コマンドが、SMC ポリシーを含む CNTL.PDS(POLMEM) データセットをロードします。
ALLOCDEF ZEROSCR(ON,INSIDE) MSGDEF CASE(MIXED) TAPEPLEX NAME(HSCPLEX) LOCSUB(HSC0) READ DSN(’CNTL.PDS(POLMEM)’) TREQDEF DSN(’CNTL.PDS(TREQMEM)’)
注:
TAPEREQ 文がポリシーを名前で参照している場合、TREQDEF コマンドの前に POLicy コマンドを処理する必要があります。
いずれかの POLicy コマンドが TAPEPlex を参照している場合は、POLicy コマンドが処理される前に、TAPEPlex コマンドを使用して TapePlex 名を定義する必要があります。
SMC POLicy コマンド、SMSDef コマンド、および TAPEREQ 制御文の詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
SMC POLicy コマンドを使用すると、割り振り処理中にデバイスの優先順位を付けることができます。ESOTeric パラメータは、最大 8 つのエソテリックを含むリストを指定できます。ドライブ除外中、リスト内の任意のエソテリックのデバイスが追加されます。ドライブ優先度中、エソテリックリストの位置に従ってデバイスの順序が示されます。この機能では、次を実行できます。
同等のドライブの速いモデルまたは遅いモデルを優先します。
ドライブが使用できる場合は特定のデバイスタイプ (9940 など) を優先します。優先ドライブが使用中の場合は、ほかのデバイスタイプを選択します
デフォルトでは、SMC は次の基準に順番に従って、ドライブを優先付けします。
特定のボリューム LSM 位置
エソテリックリスト
LSM スクラッチカウント
相対的な重要度は POLicy PREFer パラメータを使用して変更できます。詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
IDAX (MVS インタプリタ/動的割り振り出口) での SMC 処理は、SMC IDAX コマンド設定と、個々の SMC POLicy コマンドで指定したテープポリシーに基づいて、追加ユーザーポリシーを指定できます。
SMC IDAX 処理を使用すると、名前付き SMC ポリシーオブジェクトで指定されたポリシーに基づいて、エソテリック、ボリュームカウント、有効期限または保存期間、あるいはサブシステムおよびプログラム名の JCL パラメータを変更できます。
これら IDAX ポリシー機能は SMC IDAX コマンドによって有効化されます。これを使用すると、次のことができます。
IDAX ポリシーが TAPEREQ に基づいて適用されるように指定します。IBM DFSMS インタフェース処理が実行される前に SMC IDAX 処理を実行する必要があるように指定します。IDAX コマンドパラメータ SEQUENCE(FIRST) は、SMC IDAX 処理を StorageTek DFSMS 処理の前に行うように指定します。
MOD データセットが新しい (MOD(ON)) として処理されるように指定します。
SMC POLicy コマンドを使用すると、IDAX 処理中に適用するポリシーを設定できます。「IDAX」の文字で始まるすべてのポリシーパラメータは、SMC IDAX コマンドパラメータ POLICY(ON) が指定されている場合にのみ適用されます。次のようなパラメータがあります。
IDAXESOTERIC
このパラメータは JCL エソテリックの代替エソテリック名を指定します。また、IDAXESOTERIC は JCL 文にユニット情報が含まれていない場合にも適用されます。デバイスを JCL エソテリックのサブセットとして指定するために使用できる POLICY ESOTERIC パラメータとは異なり、IDAXESOTERIC は「真の」エソテリック置換を実行します。
IDAXEXPDT および IDAXRETPD
これらのパラメータはいずれか一方しか指定できません。保存期間または有効期限を DD 文に指定し、JCL で指定されている値を置き換えます。
IDAXVOLCNT
このパラメータを使用すると、JCL で指定されるボリュームカウントパラメータをオーバーライドできます。
IDAXSUBSYS および IDAXPROGRAM
これらのパラメータを使用すると、Oracle の StorageTek ExHPDM (Extended High-Performance Data Mover) を使用するように割り振りに指示できます。
SMC は、POLicy コマンドの IDAXESOTERIC パラメータを使用して IDAX でエソテリック置換を実行できます。SMC が IDAX でエソテリック置換を実行する場合、元のユニットは別のユニット (エソテリック) に置き換えられます。有効な任意のエソテリックを置換できます。たとえば、ディスクエソテリックでテープエソテリックを置換できます。
注:
SMC IDAX 処理で、オプションのディスクであったユニットを変更するか、またはテープユニットをディスクに変更する場合は、IDAX コマンドパラメータ SEQUENCE(FIRST) を指定して、SMC DFSMS 処理を IBM DFSMS 処理の前に行えるようにすることを推奨します。これにより、テープおよびディスクのデータセットを想定どおりに管理できます。
DFSMS が管理する新しい割り振りは、SMC IDAX エソテリック置換の対象ではありません。
すべての DISP=NEW データセットに対して、エソテリック置換が実行されます。
デフォルトでは、SMC は DISP=MOD データセットを既存のデータセットとして処理し、エソテリック置換を実行しません。SMC は、IDAX コマンドの MOD(ON) パラメータが指定され、かつジョブの JCL 内のそのデータセットへの最初の参照で DISP=MOD または DISP=NEW のどちらかが指定されている場合にのみ DISP=MOD データセットのエソテリック置換を実行します。
チェーンの異なるメンバーが、異なる IDAXESOTERIC パラメータを指定した POLICY を選択すると、ユニットのアフィニティーチェーンは分離されます。
ボリュームリファレンスが確実に適用されるよう、必要な場合は、チェーンヘッドであるエソテリックを用いて、ジョブ内の VOL=REF チェーンを検証/更新できます。
一時データセットに対して IDAX エソテリック置換を実行できるようにするには、その前に SMSDef TEMPdsn(ON) を指定する必要があります。
IDAX および SMSDef コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
SMC TAPEREQ 制御文は、割り振りおよびマウント要求に関連付けられたテープポリシーなどの、テープ要求属性を識別します。選択されたポリシーは、データセット名やジョブ名などの TAPEREQ 選択基準に基づいています。
TAPEREQ POLicy パラメータは、SMC に SMC POLicy コマンドで定義されている関連付けられた SMC ポリシーを参照するよう指示します。
TAPEREQ 制御文は、TREQDEF オペレータコマンドが指定する定義データセット内にあります。TAPEREQ 文はこの定義データセット内に配置する必要があります。これをオペレータコマンドとして発行することはできません。
注:
SMC TAPEREQ 制御文および POLicy コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
TAPEREQ 文がポリシーを名前で参照している場合、TREQDEF コマンドの前に POLicy コマンドを処理する必要があります。SMCCMDS データセットの例を参照してください。
インストールで POLICY なしの TAPEREQ 文 (つまり、ユーザー出口) が使用されている場合は、POLICY とその他の TAPEREQ の間の対話やユーザー出口ポリシーの指定について『ELS レガシーインタフェースリファレンス』を参照してください。
SMC では、TAPEREQ 文と POLicy コマンドの組み合わせを使用して、特定のボリュームシリアル番号に基づいて割り当てポリシーを指定できます。場合によっては、この機能を使用して、HSC ライブラリ外 VOLATTR を SMC TAPEREQ および POLicy コマンドで置換できることがあります。
注:
TAPEREQ 文で VOLSER キーワードが許可されるのは、POLicy キーワードも指定され、それがキーワード VOLTYPE(SPECIFIC) で以前に定義された SMC ポリシーを参照している場合だけです。ボリュームシリアルに関連付けられたポリシーを使用すると、次のことができます。
異なるクライアントに向けて、同じボリュームシリアルに異なるボリューム特性を定義できます。
たとえば、volser AAAAAA が STK1R のメディアを備えた HSC サーバー上の TapePlex 内に存在するが、特定のクライアント上で、ボリューム AAAAAA がライブラリ外の標準カートリッジであるとします。POLicy コマンドと TAPEREQ 文を次のように組み合わせると、SMC はボリューム AAAAAA に対するボリューム検索をバイパスし、指定されたポリシー情報を使用します。
POLICY NAME(MANVOL) VOLTYPE(SPECIFIC) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAAAAA) POLICY(MANVOL)
ボリュームシリアルに基づいて、ボリューム検索を 1 つの TapePlex に制限できます。
たとえば、クライアントホスト上の SMC に、重複したボリュームシリアル範囲 (AAA000-AAA999 と BBB000-BBB999) を含む 2 つの定義済み TapePlex である PLEX1 と PLEX2 が存在するとします。デフォルトでは、SMC は TapePlexes を定義されている順番で照会し、ボリュームシリアルを認識する最初の TapePlex からの情報を使用します。POLicy コマンドと TAPEREQ 文を次のように組み合わせると、SMC はクライアントホストに対して正しいバージョンのボリュームを選択できます。
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)
ライブラリ外のボリュームを特定 TapePlex に割り振るように指示できます。
POLicy コマンドと TAPEREQ 文を次のように組み合わせると、SMC はライブラリボリュームの検索をバイパスし、選択されたライブラリ外ボリュームを標準カートリッジと互換性のあるライブラリドライブに割り振ります。
POLICY NAME(INLIB) VOLTYPE(SPECIFIC) ESOTERIC(LIB1ESOT) MEDIA(STANDARD) NOTAPEPLEX TAPEREQ VOLSER(AAA000-AAA999) POLICY(INLIB)
注:
上の例では、POLicy コマンドの NOTAPEPLEX パラメータが、SMC システムに TapePlex のボリューム検索ロジックをバイパスするよう指示します。次の例は、SMC Policy コマンド、TREQDEF コマンド、および TAPEREQ 制御文を指定するときの推奨方法を示したものです。
SMC Start 手順に次のエントリを含めます。
//SMCCMDS DD DSN=MY.PARMLIB(MYSMCCMD),DISP=SHR
SMCCMDS メンバー MYSMCCMD に次のエントリを含めます。
READ DSN(’MY.PARMLIB(SMCPOL)’) TREQDEF DSN(’MY.PARMLIB(SMCTREQ)’)
注:
TAPEREQ 文に POLicy パラメータが含まれている場合は、TAPEREQ 文内のポリシー名は定義されたポリシー定義に対して検証されるため、TREQDEF コマンドの前に POLicy コマンドを処理する必要があります。メンバー SMCPOL に SMC POLicy コマンドを追加します。例を次に示します。
POLICY NAME(POL1) SUBPOOL(SP1) MEDIA(STK1R) RECTECH(STK1RC) TAPEPLEX(HSC) POLICY NAME(POL2) SUBPOOL(SP2) MEDIA(VIRTUAL) MGMTCLAS(ABC)
指定ポリシーを指し示すようにメンバー SMCTREQ 内の TAPEREQ 制御文を変更します。例を次に示します。
TAPEREQ DSN(A.B.*) POLICY(POL1)TAPEREQ DSN(A.C.*) POLICY(POL2)
これらの TAPEREQ 文は、ステップ 3 で定義した SMC ポリシー名を指し示します。
SMC READ コマンドの HOST パラメータを使用すると、異なるホストに対して異なるポリシー定義を指できます。例:
READ DSN(MY.PARMLIB(PRODPOLS)) HOST=PRODREAD DSN(MY.PARMLIB(TESTPOLS)) HOST=TEST
ホスト名が PROD である場合は、メンバー PRODPOLS がロードされます。ホスト名が TEST である場合は、メンバー TESTPOLS がロードされます。
DFSMS への SMC インタフェースにより、StorageTek DFSMS ACS ルーチンから MGMTCLAS 名を返すことによって SMC POLICY を選択する機能が提供されます。
注:
SMC DFSMS インタフェースを使用するための代わりの方法は、『ELS レガシーインタフェースリファレンス』で説明されています。SMC DFSMS インタフェースを有効化するには、ALLOCDef コマンドの SMS パラメータを次のように指定します。
ALLOCDEF SMS=ON
SMC DFSMS インタフェースを無効化するには、ALLOCDef コマンドの SMS パラメータを次のように指定します。
ALLOCDEF SMS=OFF
SMSDef コマンドを使用すると、使用しているインストール要件に応じてデフォルトの SMC DFSMS サポートをカスタマイズできます。SMSDef コマンドによって、特定の SMC DFSMS 機能をインクルードまたはバイパスすることができます。SMSDef コマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
STORCLAS および MGMTCLAS は、Automatic Class Selection (ACS: 自動クラス選択) ルーチンを実行することによって指定できます。
注:
SMC DFSMS インタフェースでは、STORCLAS および MGMTCLAS JCL パラメータはサポートされません (IBM MVS DFSMS と競合するため)。STORCLAS JCL パラメータを使用すると、データセットが IBM DFSMS で管理されるようになり、MGMTCLAS JCL パラメータには IBM DFSMS で管理されるデータセットが必要になります。同様に、DFSMS ルーチンで &ACSENVIR=’STKTAP1' 変数をテストしないとデータセットが IBM DFSMS で管理されるようになり、SMC DFSMS インタフェースでは使用できなくなります。SMC に DFSMS によって返されたすべての管理クラス名をポリシー名として処理するよう指示するために、SMSDef MGMTPol (ALL) を指定することをお勧めします。
SMC SMSDef オペレータコマンドを使用すると、特定の SMC DFSMS 機能を含めたり省略したりして、デフォルトの SMC DFSMS サポートをカスタマイズできます。このコマンドの詳細については、『ELS コマンド、制御文、およびユーティリティーリファレンス』を参照してください。
変数 &ACSENVIR が STKTAP1 に設定された状態で SMC が ACS ルーチンを呼び出す前に、IBM DFSMS は、変数 &ACSENVIR が ALLOC に設定された状態で ACS ルーチンを呼び出します。
SMC は処理の次の時点で ACS ルーチンを開始します。
SSI55 Interpreter/Dynamic Allocation Exit (IDAX: インタプリタ/動的割り振り出口)
SSI24 共通割り振り
マウントメッセージインターセプト
SMC は、該当情報を取得すると、次の読み取り専用変数を DFSMS に渡します。すべての変数が ACS ルーチンへの各呼び出しで利用可能であるとは限りません。特に、JES3 アドレス空間で実行される処理 (MDS など) の場合、SMC は、これらのフィールド値を有する MVS 制御ブロックにはアクセスできません。例外については、各 DFSMS インタフェースの解説を参照してください。
&ACSENVIR (SMC インタフェースの STKTAP1 と同等)
&ALLVOL
&ANYVOL
&DATACLAS
&DD
&DSORG
&DSN
&DSTYPE
&EXPDT
&FILENUM
&JOB
&LABEL
&LIBNAME
&NVOL
&PGM
&RETPD
&SYSNAME
&SYSPLEX
&UNIT
STKTAP1 環境では、&ANYVOL 変数は特定の VOLSER に一致させるためにのみ使用され、VOL=REF 割り当てのための REF=xx 値は含んでいません。
&DATACLAS フィールドは、JCL DD 文でこのパラメータが指定されたときに設定されます。
SMSDef TEMPdsn(ON) が指定されており、処理されている現在のデータセットが一時データセットである場合、&LIBNAME は文字 3 に設定されます。
インストールで、DFSMS ACS ルーチン呼び出しの前に IGDACSXT ルーチンを使用して読み取り専用変数を変更している場合は、&ACSENVIR が STKTAP1 に設定されていると、次の変数は (初期化されていても) DFSMS ACS ルーチンに渡されないことに注意してください。
&ACCT_JOB
&ACCT_STEP
&GROUP
&MSGVP
&USER
&XMODE
読み取り専用変数を使用する場合の制約の詳細については、IBM の文献『DFSMSdfp Storage Administration Reference』を参照してください。
管理クラスルーチンを記述する場合は、次の点を考慮してください。
管理クラスルーチンを開始するには、ストレージクラスが割り当てられていなければなりません。
管理クラスルーチンは、&ACSENVIR=’STKTAP1’ 読み取り専用変数値をテストする必要があります。DFSMS ルーチンで &ACSENVIR=’STKTAP1' 変数をテストしないとデータセットが IBM DFSMS で管理されるようになり、SMC DFSMS インタフェースでは使用できなくなります。
ボリュームマウントメッセージ IEC501A のインターセプト中に、&UNIT 読み取り専用変数には一般ユニットタイプ (3490 など) が含まれます。そのため、&UNIT 読み取り専用変数を使用する ACS ルーチンをコーディングする場合は慎重に検討する必要があります。
DFSMS によって発行された JES3 静的割り振り用メッセージは、SMC GTF トレースファイルにルーティングされます。
次の図に、管理クラスルーチンの例を示します。
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
注:
この例では、STORCLAS ルーチンはすべての呼び出しにストレージクラスを割り当てます。これにより、マウント時には MGMTCLAS ルーチンも確実に開始されます。すべての読み取り専用変数の値は、DFSMS ACS ルーチン処理中、SMC が該当する情報を取得した時点で設定されます。SMC による ACS ルーチンの呼び出し処理で、すべての情報が利用可能であるとは限りません。
メッセージ IEF233A の割り当て時およびマウント時の処理で、&UNIT 読み取り専用変数は SMC によって、DD 文の UNIT= パラメータで指定された値に設定されます。メッセージ IEC501A のマウント時の処理で、SMC は &UNIT 読み取り専用変数を一般ユニットタイプ (3490 など) に設定します。
動的割り当て中に、DADACL テキストユニットをコーディングすることによって &DATACLAS 値を指定できます。ただし、マウントメッセージ IEF233A の処理中、この値は SMC から使用できません。
JES3 C/I POSTSCAN 処理中、SMC では、次の読み取り専用変数を使用できません。
&DATACLAS (JCL で指定されている場合)
&EXPDT
&PGM
&RETPD
SSI23 動的割り振り処理中は、ACS ルーチンですべての読み取り専用変数を使用できます。
JES3 MDS 処理中、SMC では、次の読み取り専用変数を使用できません。
&DATACLAS (JCL で指定されている場合)
&EXPDT
&PGM
&RETPD
IAT5210 マウントメッセージの処理中、次の読み取り専用変数は SMC から使用できません。
&DATACLAS (JCL で指定されている場合)
&EXPDT
&PGM
&RETPD
&UNIT (元のエソテリックは含まれませんが、0A10 などの選択されたデバイス番号は含まれます)
動的割り当てのためのマウントメッセージ IEF233A の処理中に、SVC99 テキストユニット DADACL で指定された &DATACLAS 値は使用できません。
マウントメッセージ IEC501A の処理中に、SMC は &UNIT 読み取り専用変数を一般ユニットタイプ (3490 など) に設定します。
注:
SMC が DFSMS と対話するたび、あらゆるレベルの ACS ルーチンが開始されます。上記の変数可用性は、すべての ACS ルーチンに適用されます。DFSMS の次の機能を用いて、正しい ACS ルーチンが実行されていることを検証できます。
ACS ルーチン内の DFSMS WRITE 文
DFSMS ISMF テスト機能
SMC トレーシングが有効になっている場合、SMC が DFSMS ACS ルーチンを開始すると、DFSMS WRITE 文によって発行されたすべてのメッセージが GTF トレースファイルにルーティングされます。
注:
DFSMS WRITE 文は、SSI55 インタプリタ/動的割り当て出口 (IDAX) エソテリック置換フェーズの SYSMSG データセットにのみ送信ます。
DFSMS ACS ルーチンの書き込みおよびテストの詳細については、参考文献『DFSMS/MVS DFSMSdfp Storage Administration Reference』を参照してください。