ストレージ・ツールキットの制限およびヒント
このトピックでは、ストレージ・ツールキットの制限、ヒント、およびその他の考慮事項について説明します。
これらの点に留意することにより、問題を避けることができます。 また、この章で説明する他の問題にも注意してください。
- ロックされていないデータ・セット: ストレージ・ツールキットでは、「バッチ・ジョブの作成」ダイアログ・ボックスで「JCL の編集」ボタンをクリックし、メインフレーム環境に存在するデータ・セットを編集できます。 ただし、編集セッション中はデータ・セットがロックされていない状態になるため、そのデータ・セットに他ユーザーが同時にアクセスすることのないようにする必要があります。 ユーザーの編集セッション中に別のユーザーが、例えば TSO で ISPF を使用して、データ・セットを編集できます。 他ユーザーに対しては「データ・セット使用中」のメッセージが表示されず、他ユーザーがユーザーより先に変更を保存する場合には、ユーザーの変更が他ユーザーの変更にオーバーレイされます。 ユーザーが変更を保存しようとするときに他ユーザーがまだそのデータ・セットを編集している場合は、変更の保存に失敗します。 各編集セッションの結果は、そのシナリオと他ユーザーが使用する編集ツールによって異なるため、予測不能です。
- EBCDIC コード・ページ 037 のみ: OMEGAMON® for Storage on z/OS®に組み込まれている JCL エディターは、EBCDIC コード・ページ 037 のみをサポートしています。 EBCDIC コード・ページ 930 (日本語 EBCDIC) などの他のコード・ページにおける JCL の編集またはオーサリングはサポートされていません。
- ストレージ・ツールキットの最初と最後のステップ: すべてのバッチ・ジョブにおいて、ストレージ・ツールキットは、ジョブ内のステップ全体のモニターをセットアップする、ツールキット固有の最初のステップを挿入します。 モニターは、ジョブ内の各ステップからターゲットの出力を収集します。 ストレージ・ツールキットは、ジョブの終わりに最後のステップも追加します。 最後のステップでは、JES 出力および戻りコードと一緒に、前の各ステップからターゲットの SYSOUT を収集します。 また、バッチ・ジョブが完了したことをモニター・エージェントに通知します。 ツールキット固有の最初のステップは、JCL 内にある最初の EXEC、PROC、または INCLUDE ステートメントの直前に挿入されます。 注: JCL 内で INCLUDE ステートメントが EXEC または PROC ステートメントの前にある場合、INCLUDE メンバーに、最初のジョブ・ステップより前に置く必要がある JCL ステートメント(JCLLIB など) を含めることはできません。 ツールキットの最初のステップは INCLUDE の前に挿入されるため、この場合はバッチ・ジョブが失敗します。
- ジョブの終わりを示す null ステートメントの使用: 「バッチ・ジョブの作成」ダイアログ・ボックスを使用してユーザー定義 JCL を実行すると、ストレージ・ツールキットは JCL のコピーを生成し、それにツールキット固有の最初のステップと最後のステップを追加します。 JCL が、ジョブ終了を意味する以下の null JCL ステートメントで終わる場合、
その null ステートメントは、生成される JCL から除去されます。これは、ツールキット固有の最後のステップが実行されるまでは、そのジョブが終了しないからです。// - 条件付き処理: JOB カードまたは EXEC ステートメントでは、COND パラメーターを指定しないでください。このパラメーターを指定すると、JCL に挿入されたストレージ・ツールキットのステップが実行されなくなる可能性があります。 COND パラメーターを使用する場合、または IF/THEN/ELSE/ENDIF ステートメントを使用する場合は、ストレージ・ツールキットの最初のステップと最後のステップが確実に実行されるようにする必要があります。
- ユーザー定義 JCL での複数ジョブの非サポート: 「バッチ・ジョブの作成」ダイアログ・ボックスを使用してユーザー定義 JCL を実行する場合は、JCL に複数のジョブを含めることはできません。 ストレージ・ツールキットは、このタイプの JCL をサポートしていません。 結果は予測不能です。
- JOB カード:
- 「バッチ・ジョブ作成」ダイアログ・ボックスを使用してユーザー定義 JCL を実行する場合、バッチ・ジョブは、「JCL」タブで指定する「JCL JOB カードの置換」を使用して実行依頼されます。 これは、JCL 内にある JOB カードをオーバーライドします。 「JCL JOB カードの置換」を指定しない場合は、インストール固有の JOB カードが使用されます。
- ジョブをコピーまたはスキャンするだけの JOB カードでは、CLASS または TYPRUN オプションを指定しないでください。 バッチ・ジョブが実行されないため、アクション要求が EXECUTING 状態のままになります。 その要求を取り消して、要求に関連付けられているスレッドとリソースを解放し、EXECUTING 状態を解除する必要があります。
- JOB カードでは COND パラメーターを指定しないください。このパラメーターを指定すると、JCL に挿入されたストレージ・ツールキットの最初と最後のステップが実行されなくなる可能性があります。
- 後で表示するために JES 出力をコピーするよう要求する場合は、JOB カードの MSGLEVEL が、必要な出力レベルに設定されていることを確認してください。
- JOB カードを指定する場合は、固有のジョブ名を付けることを考慮してください。 ご使用の z/OS システムで実行中のバッチ・ジョブと名前が一致すると、その実行中のジョブが完了するまでユーザーのジョブが遅延する可能性があります。 これを防止するには、ジョブに固有の名前を付けます。
- ユーザー定義 JCL での PROC の使用: 「バッチ・ジョブ作成」ダイアログ・ボックスを使用する場合は、手順を実行する JCL を実行できますが、ストレージ・ツールキットは、その手順に関連付けられたファイルの内容を正しくコピーできない可能性があります。
- 手順は、インストリームであったり、システム内や専用プロシージャー・ライブラリー内に存在していたりします。 専用プロシージャー・ライブラリーを使用する場合は、JCLLIB ステートメントが確実にストレージ・ツールキットの最初のステップより前に挿入されるようにする必要があります。
- 手順で参照されるファイルは、後で表示できるようにコピーすることを要求できますが、次のような一定の制限があります。
- ステップ名は、その手順を実行する JCL でのステップ名です。 手順自体のステップ名を指定することはできません。
- 手順が 1 つのステップで構成されている場合は、要求されたファイルの内容が戻されます。
- 手順内に複数のステップがある場合は、プロシージャー・ステップごとに (つまり、複数回)、要求されたデータ・セットの内容またはデータ・セットを示す DD 名が戻されます。 SYSOUT に送付される DD 名の内容は、SYSOUT DD 名が定義されているプロシージャー・ステップごとに戻されます (すなわち、1 回以上)。
- ユーザー定義 JCL でのステップ名の使用: ステップに関連付けられたファイルを後で表示できるようにコピーする場合は、それらのステップをステップ名を指定せずにユーザー定義 JCL に含めないでください。 ストレージ・ツールキットでは、ステップ名を必要とします。
- /*XMIT: JCL では、/*XMIT ステートメントを使用しないでください。 ストレージ・ツールキットではサポートされていません。 結果は予測不能です。
- DYNAMNBR: データ・セットを割り振るユーザー定義 JCL を実行依頼する場合は、ストレージ・ツールキットも各ステップでデータ・セットを割り振ることを注意してください。 必要であれば、EXEC ステートメントで DYNAMNBR パラメーターを使用して、ユーザーのデータ・セットと、3 つのストレージ・ツールキットのデータ・セットを使用できるようにしてください。
- JCL エラー: 各バッチ・ジョブの終わりに追加されるストレージ・ツールキットの最後のステップにより、バッチ・ジョブの完了がモニター・エージェントに通知されます。 このとき、ジョブの完了が保留されているアクション要求は、バッチ・ジョブの結果に従って更新されます。 バッチ・ジョブの最後のステップが実行されない場合 (例えば、JCL エラーでバッチ・ジョブが失敗したり、条件付き処理により最後のステップが迂回されたりした場合)、そのアクション要求は EXECUTING 状態のままになります。 特定のアクション要求が、予期されるより長く EXECUTING 状態を続けていると判断される場合は、z/OS システム上のバッチ・ジョブの状況を確認する必要があります。 最後のステップが実行されずにジョブが失敗した場合は、Tivoli® Enterprise Portal でそのアクション要求の実行を取り消す必要があります。 これにより、その要求に関連付けられているスレッドとリソースが解放され、EXECUTING 状態が解除されます。 次いで、ジョブが失敗した理由を判別し、エラーを修正して、その要求を再実行依頼することができます。
- 戻りコード: ストレージ・ツールキットがアクション要求の処理中にエラーを検出すると、通常 1 つの状況とペアになっている特定の戻りコードが、ストレージ・ツールキットによって設定されます。 以下の表に、一般的な戻りコードとそれに対応する状況を示します。見慣れない戻りコードが戻された場合は、そのコードがバッチ・ジョブでの異常終了を示す可能性があるので、対応する 16 進数に変換してみてください。 例えば、戻りコード 193 は x'0C1' と同じです。
表 1. 共通の ストレージ・ツールキット の戻りコード 戻りコード 状況 117 通常この状況は、置換変数が適用されたときに JCL が 72 文字を超過したことを示します。 また、JOB カードの欠落などの他の JCL 関連エラーや、置換変数の適用時に 80 文字を超える変数置換を必要とする別のデータ・セットを示すこともあります。 119 ユーザー・データ・サーバーが異常終了したか、バッチ・ジョブが終了しましたが、ストレージ・ツールキットで戻りコードを判別できません。 121 許可は失敗しました。 123 ユーザーの JCL が含まれているデータ・セットが存在しないなどのデータ・セット・エラーが発生しました。 この結果を分析する場合は、Tivoli Enterprise Monitoring Server の RKLVLOG 中のメッセージが役立ちます。 125 存在しないグループ・セットまたは実行時に空のグループ・セットにアクション要求が関連付けられていたため、アクション要求の実行は停止されました。 結果の要約ワークスペースに表示される状況は、以下のいずれかの値に設定されます。- 非存在グループ
- 要求に関連付けられているグループが存在しなかったことを示します。
- 空グループ
- 要求に関連付けられているすべてのグループが空であったことを示します。
- 不良グループ
- グループが空であるエラーとグループが欠落しているエラーの組み合わせがグループ・セット全体に影響したことを示します。 この状況値は、グループの処理時に別のエラーが検出されたことを示している場合もあります。 RKLVLOG 内のメッセージを確認して、結果の分析に役立ててください。
注: グループが空である原因として、収集が実行中かまだ実行されていないことが考えられます。 これに当てはまる場合は、収集が完了してから要求を再試行してください。 - 変数置換と行長制限: ストレージ・ツールキット によって定義される置換変数は、アクション要求の実行時に置換されます。 ストレージ・ツールキットは、一時データ・セットを作成して更新されたステートメントを収容します。 置換変数によって更新されるデータ・セットには、2 種類の基本カテゴリー (JCL とその他) があります。 ストレージ・ツールキットはこれらを、次のように処理します。
- JCL データ・セット: 変数置換は、JOB カード、追加 JCL、ツールキット固有のステップ、JCL の本文、およびすべてのインストリーム・データ・セットなど、バッチ・ジョブのすべてのコンポーネントに適用されます。
ストレージ・ツールキットは、列 72 を連結文字と解釈し、その内容を保持します。
列 2 から列 71 の間のデータは、変数名とその置換値のサイズに応じて、左または右にシフトします。 データが列 71 を越えてシフトすると、要求は失敗します。 その要求の戻りコードは 117 に設定され、この実行の状況は「InvalidJCL」になります。
以下のアクションを実行する必要があります。
- 置換変数と値が正しく、バッチ・ジョブのコンポーネントに対して予期せぬ結果を及ぼさないことを検証します。
- JCL を訂正し、行の制限を超過する行がないようにします。
- その他のデータ・セット: 置換変数を含む、ジョブの必要に応じて指定するその他のデータ・セットにおいても、すべてのレコードに対して、変数置換が適用されます。 ツールキットはデータ・セットの内容に関する想定を行なわず、1 から 80 列目までの各行を 1 行のデータと見なします。 変数置換は、変数名およびその値のサイズに応じて、2 から 80 列目までのデータを左または右にシフトさせる可能性があります。 末尾のブランクを除いてデータが 80 列目を超えてシフトされた場合は、要求は失敗します。 その要求の戻りコードは 117 に設定され、この実行の状況は「InvalidJCL」になります。 以下のアクションを実行する必要があります。
- 置換変数および値が正しく、データ・セットの内容に対して意図しない結果を及ぼしていないことを確認してください。
- データ・セットの内容を修正して、制限を超える行が存在しないようにしてください。
- JCL データ・セット: 変数置換は、JOB カード、追加 JCL、ツールキット固有のステップ、JCL の本文、およびすべてのインストリーム・データ・セットなど、バッチ・ジョブのすべてのコンポーネントに適用されます。
ストレージ・ツールキットは、列 72 を連結文字と解釈し、その内容を保持します。
列 2 から列 71 の間のデータは、変数名とその置換値のサイズに応じて、左または右にシフトします。 データが列 71 を越えてシフトすると、要求は失敗します。 その要求の戻りコードは 117 に設定され、この実行の状況は「InvalidJCL」になります。
以下のアクションを実行する必要があります。
- JCL の検証: 「バッチ・ジョブの作成」ダイアログ・ボックスで使用する JCL を記述する場合は、そのバッチ・ジョブを実行依頼する前に記述の妥当性を必ず確認してください。 例えば、「JCL の編集」ダイアログ・ボックスで JCL を編集する場合は、変数置換の実行後の行の長さが 72 バイト制限を超過しないかどうかを考慮します。 置換変数が実行時に JCL で置換されるとき、置換後の JCL 行に 72 バイトより多くのバイトが含まれていると、その JCL は実行依頼されません。 そのアクション要求の結果の要約ワークスペースに、「InvalidJCL」の状況が表示されます。
- 予約済み変数名: ストレージ・ツールキットでは、次の変数名が予約されています。 作成する変数にこれらの名前を付けることはできません。
%%KS3TK_CMD_DSN%% %%KS3TK_HSM%% %%KS3TK_DYNAMNBR%% - 置換変数も含む、ジョブで必要な完全修飾データ・セット: 「バッチ・ジョブの作成」ダイアログ・ボックスを使用する場合は、置換変数を含む追加のデータ・セットを指定できます。 ストレージ・ツールキットは、更新を含む一次データ・セットを作成し、JCL のコピーにおいて、元のデータ・セットの名前を一時的な名前で置き換えます。 名前を置換するため、そのデータ・セットを JCL で参照する必要があります。それらのデータ・セットは、カタログされた手順内に含まれていたり、JCL で使用する INCLUDE メンバーであったりすることはできません。
- JES 出力:
- JES ログおよびシステム処理の出力データ・セット (SYSOUT) を収集するためにストレージ・ツールキットで使用される技法では、ご使用の z/OS オペレーティング・システムで JES2 を使用することを前提としています。
- ストレージ・ツールキットの最後のステップは、バッチ・ジョブの終了直前に JES 出力を収集するため、ジョブの開始 (IEF375I) メッセージやジョブの終了 (IEF376I) メッセージなど、JES ログで一般的なメッセージのいくつかは JES 出力に含まれていません。
- メインフレームのコマンド:
- メインフレーム・コンソールのコマンドは、SDSF バッチ・ジョブ・インターフェースから実行依頼されます。 次の例のように、コマンドの前にはスラッシュ (/) を挿入する必要があります。この例では、タイム・シェアリング・ユーザー (tso_user_ID) を取り消します。
/C U=tso_user_ID - メインフレーム・コンソールのコマンドの場合には、コマンドの実行がバッチ・ジョブの実行と同期化されないため、コマンド出力は返されません。
- コマンドの実行がバッチ・ジョブの実行と同期化されないため、そのアクション要求に関連付けられた戻りコードは、SDSF バッチ・ジョブ・インターフェースへのコマンドの実行依頼を反映します。 コマンド自体の実行は反映しません。
- ストレージ・ツールキットでは SDSF が使用されるため、z/OS オペレーティング・システムで JES2 を使用する必要があります。
- メインフレーム・コンソールのコマンドは、SDSF バッチ・ジョブ・インターフェースから実行依頼されます。 次の例のように、コマンドの前にはスラッシュ (/) を挿入する必要があります。この例では、タイム・シェアリング・ユーザー (tso_user_ID) を取り消します。
- 共用 DASD: 生成される JCL、結果のデータ・セット、および他のファイルを収容するためにストレージ・ツールキットが作成する一時データ・セットは、ツールキットとバッチ・ジョブの間で共用されます。 バッチ・ジョブは、モニター・エージェントが実行されている SYSPLEX とは異なるユーザーの SYSPLEX の z/OS システムで実行される場合があるため、システム全体に渡って共用される DASD で一時データ・セットを作成する必要があります。 ご使用のインストール済み環境では、PARMGEN のオプションを使用して、一時データ・セットの場所を管理できます。またこれらのオプションにより、「バッチ・ジョブの作成」ダイアログ・ボックスの「JCL の編集」オプションを使用して作成されたデータ・セットの場所を管理することもできます。
さらに、「バッチ・ジョブの作成」ダイアログ・ボックスを使用する場合には、実行依頼する JCL を含んでいるデータ・セットを指定し、オプションとして、置換変数も含んでいるジョブによって必要とされるデータ・セットを指定します。 これらのデータ・セットは、モニター・エージェントが実行されている z/OS システムからアクセス可能なオンライン DASD にカタログして配置する必要があります。
- リモート・システムの APF 許可ロード・ライブラリー: ストレージ・ツールキットは、すべてのバッチ・ジョブに最初のステップと最後のステップを挿入します。 これらのステップでは、ご使用のインストール済み環境のランタイム環境で TKANMODL ロード・ライブラリーに存在するツールキット・コードを実行します。 ロード・ライブラリーは APF 許可になっている必要があります。 バッチ・ジョブがモニター・エージェントと同じ z/OS システムで実行される場合、通常は、ロード・ライブラリーがすでに APF 許可になっています。 ご使用の SYSPLEX 内の別の z/OS システムでバッチ・ジョブが実行される場合は、そのシステムでもロード・ライブラリーが APF 許可になっていることを確認する必要があります。 またロード・ライブラリーは、システム全体で共用される DASD に配置されていることも必要です。
- 印刷不能文字: 「バッチ・ジョブの作成」ダイアログ・ボックスの「後で参照するために内容をコピーするファイル」として指定するファイル、または「コマンド実行」ダイアログ・ボックスのコマンドからの出力には、必ず文字データのみが含まれるようにする必要があります。 それらのファイルまたはコマンド出力に印刷不能文字 (例えば、16 進数データ) が含まれている場合、それらの文字は、ストレージ・ツールキットの結果の詳細ワークスペースに正しく表示されない可能性があります。
- チェックポイント・データ・セット・ストレージの枯渇: アクション要求を実行依頼すると、その要求に関する情報はチェックポイント・データベースに保管されます。 要求が完了すると、その実行結果も保管されます。 チェックポイント・データベースに保管される情報には、次の要素があります。
- 要求の名前と説明
- 要求が実行依頼された時刻と完了した時刻
- 要求に関連付けられているリソース
- 要求の実行からの戻りコード
- 要求の実行によって生成された出力。次の情報を含みます。
- コマンド出力
- 後で表示するためにコピーされたファイル
- 実行依頼された JCL
- バッチ・ジョブによって生成された JES ファイル。
注: アクション要求の実行結果がチェックポイント・データベースで使用可能なフリー・スペースを超過すると、出力全体が消失します。 Tivoli Enterprise Monitoring Server の RKLVLOG に表示されるエラー・メッセージ「KS3T830E SERVICE CHECKPOINT DATASET STORAGE EXHAUSTED」は、この状態になったことを示します。 この問題について詳しくは、「IBM® OMEGAMON for Storage on z/OS トラブルシューティング・ガイド」を参照してください。