Comments
Description
Transcript
プログラミング: REXX および NetView コマンド・リスト言語
IBM Tivoli NetView for z/OS バージョン 6 リリース 1 プログラミング: REXX および NetView コマンド・リスト言語 SA88-4395-00 (英文原典:SC27-2861-00) IBM Tivoli NetView for z/OS バージョン 6 リリース 1 プログラミング: REXX および NetView コマンド・リスト言語 SA88-4395-00 (英文原典:SC27-2861-00) お願い 本書および本書で紹介する製品をご使用になる前に、 227 ページの『特記事項』に記載されている情報をお読みください。 本書は、IBM Tivoli NetView for z/OS (製品番号 5697-NV6) バージョン 6 リリース 1、および新しい版で明記され ていない限り、以降のすべてのリリースおよびモディフィケーションに適用されます。 お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示さ れたりする場合があります。 原典: SC27–2861–00 IBM Tivoli NetView for z/OS Version 6 Release 1 Programming: REXX and the NetView Command List Language 発行: 日本アイ・ビー・エム株式会社 担当: トランスレーション・オペレーション・センター 第1刷 2011.6 © Copyright IBM Corporation 1997, 2011. 目次 図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 本書について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 対象読者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi IBM Tivoli NetView for z/OS ライブラリー . . . . . . . . . . . . . . . . . . . . . . . . xi 関連資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii オンライン用語集へのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv NetView for z/OS オンライン・ヘルプの使用 . . . . . . . . . . . . . . . . . . . . . . . xv LookAt を使用してメッセージの説明を検索する . . . . . . . . . . . . . . . . . . . . . . xv マニュアルへのオンライン・アクセス . . . . . . . . . . . . . . . . . . . . . . . . . xvi マニュアルのご注文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi アクセシビリティー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Tivoli 技術研修 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Tivoli ユーザー・グループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi ダウンロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii サポート情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii 本書の表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii 書体の規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii オペレーティング・システム依存の変数とパス . . . . . . . . . . . . . . . . . . . . . . xix 構文図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix 第 1 章 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 コマンド・リスト使用の利点 . . . . . . . . . . . . . . . 共通の開始コマンド・リストの例 . . . . . . . . . . . . ネットワーク制御プログラムの活動化の例 . . . . . . . . . コマンド・リストの作成方法 . . . . . . . . . . . . . . . コマンド・リストへのアクセスの制御 . . . . . . . . . . . . ストレージへのコマンド・リストのロード . . . . . . . . . . コマンド・リストの実行 . . . . . . . . . . . . . . . . NetView 開始時のコマンド・リストの実行 . . . . . . . . . ログオン時のコマンド・リストの実行 . . . . . . . . . . . メッセージまたは MSU を受け取った後のコマンド・リストの実行 . 端末からのコマンド・リストの実行. . . . . . . . . . . . 指定された時刻または時間間隔でのコマンド・リストの実行 . . . 別のコマンド・リストからのコマンド・リストの実行. . . . . . ユーザー作成コマンド・プロセッサーからのコマンド・リストの実行 コマンド・リスト内のネットワーク・コマンドの使用 . . . . . . コマンド・リスト内でのシステム・コマンドの使用 . . . . . . コマンド・リスト内での長期実行コマンドの使用 . . . . . . . Tivoli NetView for z/OS パイプラインの使用 . . . . . . . . VIEW コマンドの使用 . . . . . . . . . . . . . . . . フルスクリーン・コマンドの使用 . . . . . . . . . . . . 基本 POI タスク (PPT) の制限 . . . . . . . . . . . . . AUTOTASK OST の制約事項 . . . . . . . . . . . . . コマンド・リスト出力の制御 . . . . . . . . . . . . . . メッセージの処理 . . . . . . . . . . . . . . . . . . 第 2 章 REXX 言語の概要 REXX 言語の概要 . . . . © Copyright IBM Corp. 1997, 2011 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . 2 . 2 . 3 . 4 . 5 . 7 . 7 . 7 . 8 . 8 . 8 . 9 . 12 . 12 . 12 . 13 . 14 . 14 . 14 . 15 . 16 . 16 . 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 iii REXX コマンド・リストのコンパイルと実行 . . . . . . . . . . 解釈される REXX での %INCLUDE の使用 . . . . . . . . . . Data REXX の使用 . . . . . . . . . . . . . . . . . . . Data REXX ファイルの処理 . . . . . . . . . . . . . . . 追加情報 . . . . . . . . . . . . . . . . . . . . . Data REXX ディレクティブ . . . . . . . . . . . . . . . /*%DATA . . . . . . . . . . . . . . . . . . . . . /*%LOGIC . . . . . . . . . . . . . . . . . . . . . REXX コマンド・リストおよび Data REXX ファイルのコーディング規則 レコード・サイズ . . . . . . . . . . . . . . . . . . 引用符の使用 . . . . . . . . . . . . . . . . . . . . 非 REXX コマンドの表示の抑制 . . . . . . . . . . . . . Tivoli NetView for z/OS の REXX 命令の制限 . . . . . . . . . オペレーター入力のための休止 . . . . . . . . . . . . . . SAY 命令の使用. . . . . . . . . . . . . . . . . . . CALL 命令の使用 . . . . . . . . . . . . . . . . . . REXX 関数に関する NetView の制約事項 . . . . . . . . . . . REXX 関数パッケージの作成 . . . . . . . . . . . . . . . REXX コマンド・リストでアドレッシングされた環境の変更 . . . . . Data REXX ホスト・コマンド環境 . . . . . . . . . . . . . EXECIO コマンドの使用 . . . . . . . . . . . . . . . . . MVS コマンドと VTAM コマンドの使用 . . . . . . . . . . . NetView ALLOCATE コマンドと FREE コマンドの使用 . . . . . . REXX コマンド・リストの使用. . . . . . . . . . . . . . . アセンブラー、C、または PL/I からの REXX のネスト . . . . . . REXX コマンド・リスト内の解析 . . . . . . . . . . . . . . REXX コマンド・リストのトレース . . . . . . . . . . . . . REXX コマンド・リスト内の戻りコード. . . . . . . . . . . . REXX コマンド・リスト内のエラーからのリカバリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 21 21 22 24 25 25 26 27 27 27 29 30 30 31 31 32 32 33 34 34 34 34 35 36 37 37 38 39 第 3 章 NetView 環境で実行されるコマンド・リストの REXX 命令 . . . . . . . . . . 41 ネストされた REXX コマンド・リストでの TRAP の使用 ネストされたコマンド・リスト内の WAIT の使用 . . . ネストされたコマンド・リスト内の MSGREAD の使用. . MSGREAD によって設定される関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 43 43 43 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 . . 45 変換関数 . . . . . . . . . . . . IP アドレス処理 . . . . . . . . . . コマンド・リスト情報 . . . . . . . . クロスドメイン情報関数 . . . . . . . データ・セット情報関数 . . . . . . . グローバル変数情報関数 . . . . . . . メッセージ処理情報関数 . . . . . . . メッセージ処理情報 . . . . . . . ROUTCDE の例 . . . . . . . . . コマンド処理情報関数 . . . . . . . . REXX 管理サービス単位情報関数 . . . . ハードウェア・モニター (HMxxxxxx) の例 MSUSEG の構文および例. . . . . . 推定原因の構文および例 . . . . . . オペレーター情報関数 . . . . . . . . セッション情報関数 . . . . . . . . REXX 環境情報関数 . . . . . . . . 端末情報関数 . . . . . . . . . . . 時刻および日付変数 . . . . . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラミング: REXX および NetView コマンド・リスト言語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 49 50 55 57 59 59 60 73 74 76 86 89 92 93 93 98 99 99 ヌルおよびブランクの除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 第 5 章 自動化リソース管理 . . . . . . . . . . . . . . . . . . . . . . . . . . 103 NetView 自動化テーブル・コマンド・リストの定義 . . . . . . 自動化テーブル駆動のコマンド・リストからのメッセージの経路指定. NetView 自動化のインプリメント . . . . . . . . . . . . メッセージの抑制 . . . . . . . . . . . . . . . . . コマンド・リストの環境の決定 . . . . . . . . . . . . 自動化コマンド・リストのテスト. . . . . . . . . . . . ループおよび自動化 . . . . . . . . . . . . . . . . オペレーター対話に関する考慮事項 . . . . . . . . . . . 自動化に共通する問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 104 104 104 104 106 106 106 付録 A. NetView コマンド・リスト言語の簡単なコマンド・リストの作成 . . . . . . . . 109 NetView コマンド・リスト言語に含まれるもの . . . . . . . . NetView コマンド・リスト言語ステートメントのコーディングの規則 一般的コーディングの規則 . . . . . . . . . . . . . . 継続ステートメントの規則 . . . . . . . . . . . . . . 2 バイト文字セット・テキストの規則 . . . . . . . . . . 抑止文字の規則. . . . . . . . . . . . . . . . . . ラベル. . . . . . . . . . . . . . . . . . . . . . 変数 . . . . . . . . . . . . . . . . . . . . . . 変数置換の順序. . . . . . . . . . . . . . . . . . パラメーター変数 . . . . . . . . . . . . . . . . . コマンド・リストにパラメーター変数情報を渡す方法 . . . . . コマンド・リストでのパラメーター変数の使用方法. . . . . . ネストされたコマンド・リストにパラメーター変数を渡す方法 . . パラメーター変数内の引用符付きストリングまたは特殊文字の使用 ヌル・パラメーター値 . . . . . . . . . . . . . . . 制御変数 . . . . . . . . . . . . . . . . . . . . ユーザー変数 . . . . . . . . . . . . . . . . . . 16 進表記 . . . . . . . . . . . . . . . . . . . . コメント . . . . . . . . . . . . . . . . . . . . . ヌル・ステートメント . . . . . . . . . . . . . . . . 割り当てステートメント. . . . . . . . . . . . . . . . 制御ステートメント . . . . . . . . . . . . . . . . . &CONTROL ステートメント . . . . . . . . . . . . . オペレーターに対する書き込み . . . . . . . . . . . . &PAUSE での NetView コマンドの使用 . . . . . . . . . &PAUSE の使用例 . . . . . . . . . . . . . . . . NetView 組み込み関数 . . . . . . . . . . . . . . . . &BITAND . . . . . . . . . . . . . . . . . . . &BITOR . . . . . . . . . . . . . . . . . . . . &BITXOR . . . . . . . . . . . . . . . . . . . &CONCAT . . . . . . . . . . . . . . . . . . . &HIER . . . . . . . . . . . . . . . . . . . . &LENGTH . . . . . . . . . . . . . . . . . . . &MSUSEG . . . . . . . . . . . . . . . . . . . &NCCFID . . . . . . . . . . . . . . . . . . . &NCCFSTAT . . . . . . . . . . . . . . . . . . &SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 110 110 111 112 112 113 114 114 115 116 117 117 118 119 119 119 121 121 121 122 123 124 125 130 131 132 132 133 134 135 135 138 139 140 141 142 付録 B. NetView コマンド・リスト言語のブランチ . . . . . . . . . . . . . . . . . 145 &IF 制御ステートメント . . &GOTO 制御ステートメント . &EXIT 制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 . 147 . 148 目次 v &WAIT 制御ステートメント . . . . . . . . . &WAIT 制御ステートメントのコーディング . . . &WAIT の終了 . . . . . . . . . . . . . NetView コマンドでの &WAIT の使用 . . . . . &WAIT で使用される制御変数とパラメーター変数 . ネストされたコマンド・リスト内の &WAIT の使用 &WAIT ステートメントのカスタマイズ . . . . CONTWAIT が有効な場合の &WAIT の終了 . . . &WAIT のコーディングに関する提案 . . . . . &WAIT を使用したサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 150 156 156 157 158 159 161 162 162 付録 C. NetView コマンド・リスト言語のグローバル変数 . . . . . . . . . . . . . . 165 &TGLOBAL および &CGLOBAL の使用法 . . . . . . . &TGLOBAL . . . . . . . . . . . . . . . . . &CGLOBAL . . . . . . . . . . . . . . . . . &TGLOBAL を使用したタスク・グローバル変数の更新方法 . . &TGLOBAL および &CGLOBAL 使用時の変数のエクステント GLOBALV コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 166 167 169 170 173 付録 D. 共通操作サービス・コマンド . . . . . . . . . . . . . . . . . . . . . . . 175 共通操作サービス . . . . . . . . 共通操作サービスの戻りコード . . . LINKDATA および LINKTEST の結果 . LINKDATA および LINKTEST 変数 LINKTEST のその他の変数 . . . . LINKPD の結果 . . . . . . . . RUNCMD の結果 . . . . . . . . パイプラインでの RUNCMD の使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 176 176 176 177 178 178 179 付録 E. REXX と NetView コマンド・リスト言語の比較 . . . . . . . . . . . . . . 181 REXX 命令と NetView コマンド・リスト言語制御ステートメントとの比較 REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 コマンド・リストで使用されるコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 . 182 . 186 付録 F. コマンド・リストの例の索引 . . . . . . . . . . . . . . . . . . . . . . . 187 REXX コマンド・リストの例 . . . NetView コマンド・リスト言語の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 . 188 付録 G. NetView のための REXX コマンド・リストの例 . . . . . . . . . . . . . . 191 ACTAPPLS の例 . ACTLU の例 . . CHKOPNUM の例 . CHKRSTAT の例 . CNMS1101 . . . CNME1080 . . . CNMSRVAR の例 . CNMSRVMC の例 . DSPRSTAT の例 . GETCG の例 . . GREETING の例 . LISTVAR の例 . . PRINT の例 . . . TYPE の例 . . . TYPEIT の例 . . UPDCGLOB の例 . vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラミング: REXX および NetView コマンド・リスト言語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 193 193 195 197 209 210 213 215 216 217 217 219 221 222 224 特記事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 プログラミング・インターフェース . 商標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 . 229 索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 目次 vii viii プログラミング: REXX および NetView コマンド・リスト言語 図 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. STARTUP1 コマンド・リスト . . . . . . . 2 NCP 活動化の例 . . . . . . . . . . . 3 DSICLD ステートメントによるデータ・セット 連結の例 . . . . . . . . . . . . . . 3 ネストされたコマンド・リスト . . . . . . 10 ビット 17 をテストする REXX の例 . . . . 73 ビット 17 をテストする NetView コマンド・ リスト言語の例 . . . . . . . . . . . 73 ビット 17 をテストする REXX の POS 関数 の使用法 . . . . . . . . . . . . . 74 HMASPRID の例 A . . . . . . . . . . 86 HMASPRID の例 B . . . . . . . . . . 86 HMBLKACT の例 A . . . . . . . . . 86 HMBLKACT の例 B . . . . . . . . . 86 HMBLKACT の例 C . . . . . . . . . 86 HMCPLINK の例 A . . . . . . . . . . 86 HMCPLINK の例 B . . . . . . . . . . 86 HMEPNAU、HMEPNET、および HMFWDSNA の例 . . . . . . . . . . . . . . . 87 HMEPNETV の例 . . . . . . . . . . 87 HMEVTYPE の例 A . . . . . . . . . 87 HMEVTYPE の例 B. . . . . . . . . . 87 HMFWDED の例 A . . . . . . . . . . 87 HMFWDED の例 B . . . . . . . . . . 87 HMGENCAU の例 A . . . . . . . . . 88 HMGENCAU の例 B . . . . . . . . . 88 HMONMSU の例 A . . . . . . . . . . 88 HMONMSU の例 B . . . . . . . . . . 88 HMORIGIN の例 . . . . . . . . . . . 88 HMSECREC の例 . . . . . . . . . . 89 HMSPECAU の例 A . . . . . . . . . 89 HMSPECAU の例 B. . . . . . . . . . 89 HMUSRDAT の例 . . . . . . . . . . 89 MSUSEG() の例 1 . . . . . . . . . . 91 MSUSEG() の例 2 . . . . . . . . . . 91 MSUSEG() の例 3 . . . . . . . . . . 91 MSUSEG() の例 4 . . . . . . . . . . 91 © Copyright IBM Corp. 1997, 2011 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 抑止文字の使用例 . . . . . . . . . . 割り当てステートメント . . . . . . . . PATH コマンド・リスト例の結果 . . . . . 1 行メッセージのオペレーターへの送信 変数置換を行う &BEGWRITE . . . . . . ENDIT コマンド・リスト例の結果 . . . . テンプレートを解析する &HIER の例 &APPLID を使用してドメイン・ネームを判別 する方法 . . . . . . . . . . . . . TAF セッションを停止する CLIST の例 特殊文字のあるトークンのコーディングの例 1 メッセージの &WAIT を発行するコマン ド・リスト . . . . . . . . . . . . ACTONE NODE1 のメッセージ・テキスト タスク・グローバル変数の定義、更新、およ び参照を行う CLIST1 コマンド・リスト . . タスク・グローバル変数を更新する UPDT1 コマンド・リスト . . . . . . . . . . グローバル変数のエクステントを表す GLOBVAR1 の例 . . . . . . . . . . ACTAPPLS の例 . . . . . . . . . . ACTLU の例 . . . . . . . . . . . . CHKOPNUM の例 . . . . . . . . . . CHKRSTAT の例 . . . . . . . . . . CNMS1101 の例 . . . . . . . . . . CNME1080 の例 . . . . . . . . . . CNMSRVAR の例 . . . . . . . . . . CNMSRVMC の例 . . . . . . . . . . DSPRSTAT の例 . . . . . . . . . . GETCG の例 . . . . . . . . . . . . GREETING の例 . . . . . . . . . . LISTVAR の例 . . . . . . . . . . . PRINT の例 . . . . . . . . . . . . TYPE の例 . . . . . . . . . . . . TYPEIT の例. . . . . . . . . . . . UPDCGLOB の例 . . . . . . . . . . 113 122 127 127 128 129 137 143 149 154 163 164 169 169 171 191 193 194 196 198 209 211 214 216 217 217 218 220 221 223 224 ix x プログラミング: REXX および NetView コマンド・リスト言語 本書について IBM® Tivoli® NetView® for z/OS® プロダクトは、複雑な、マルチプラットフォー ム、マルチベンダーのネットワークおよびシステムの可用性を、単一管理ポイント から最高度に維持するために使用できる拡張機能を提供します。 本書「IBM Tivoli NetView for z/OS プログラミング: REXX および NetView コマンド・リスト言語」 には、再構造化拡張実行プログラム言語 (REXX) または NetView コマンド・リス ト言語を使用して、NetView プロダクトのコマンド・リストを作成する方法につい て記述されています。 注: 本書には、NetView コマンドの説明はありません。コマンドに精通していない 場合は、NetView オンライン・ヘルプを参照してください。 対象読者 本書は、NetView 制御下で REXX プログラムを作成または実行するシステム・プ ログラマーおよびオペレーターを対象としています。REXX プログラムは、正規コ マンドやサブルーチンとして、正規コマンドやサブルーチンからの関数として、あ るいは Data REXX として使用することができます。読者は、NetView プログラム がネットワーク内でどのように使用されるかについて精通している必要がありま す。 資料 このセクションでは、IBM Tivoli NetView for z/OS ライブラリーに収められている 資料、およびその他の関連資料を取り上げます。 Tivoli マニュアルへのオンライ ン・アクセスの方法、および Tivoli マニュアルのご注文方法についても記述されて います。 IBM Tivoli NetView for z/OS ライブラリー IBM Tivoli NetView for z/OS ライブラリーには、以下のような資料が用意されてい ます。 v 「アドミニストレーション・リファレンス」(SA88-4383) には、システム管理に 必要な NetView プログラムの定義ステートメントについて記述されています。 v 「アプリケーション・プログラマーズ・ガイド」(SA88-4384) には、NetView プ ログラム間インターフェース (PPI) および NetView アプリケーション・プログ ラミング・インターフェース (API) の使用方法について記述されています。 v 「自動操作ガイド」(SA88-4387) には、自動化操作機能を使用して、システムと ネットワークの効率およびオペレーターの生産性を向上させる方法について記述 されています。 v 「Command Reference Volume 1 (A-N)」(SC27-2847) および「Command Reference Volume 2 (O-Z)」(SC27-2848) には、ネットワークとシステム操作およびコマン ド・リストとコマンド・プロシージャーで使用することができる NetView コマン ドについて記述されています。 © Copyright IBM Corp. 1997, 2011 xi v 「カスタマイズ・ガイド」(SA88-4388) には、NetView プロダクトをカスタマイ ズする方法が記述されており、関連情報のソースが示されています。 v 「Data Model Reference」(SC27-2850) では、Graphic Monitor Facility host subsystem (GMFHS) 、SNA トポロジー・マネージャー、およびマルチシステ ム・マネージャーのデータ・モデルについて説明しています。 v 「インストール: 追加コンポーネントの構成」(GA88-4389) には、NetView の基 本機能以外の追加機能の構成方法について記述されています。 v 「インストール: グラフィカル・コンポーネントの構成」(GA88-4390) では、 NetView グラフィックス・コンポーネントをインストールおよび構成する方法に ついて説明しています。 v 「Installation: Configuring the GDPS Active/Active Continuous Availability Solution」(SC14-7477) には、GDPS アクティブ/アクティブ継続的可用性ソリュー ションと一緒に使用される NetView 機能の構成方法について記述されています。 v 「インストール: NetView Enterprise Management Agent の構成」(GA88-4401) で は、NetView for z/OS Enterprise Management Agent をインストールおよび構成す る方法について説明しています。 v 「インストール: 概説」(GI88-4261) では、NetView の基本機能をインストールし て構成する方法について説明しています。 v 「インストール: マイグレーション・ガイド」(GA88-4391) には、NetView プロ ダクトの現行リリースによって提供される新規機能および前のリリースからの基 本機能のマイグレーションについて記述されています。 v 「IP 管理」(SA88-4386) NetView プロダクトを使用して IP ネットワークを管理 する方法について説明しています。 v 「Messages and Codes Volume 1 (AAU-DSI)」(GC27-2856) および「Messages and Codes Volume 2 (DUI-IHS)」(GC27-2857) では、NetView プロダクトのメッセー ジ、NetView 異常終了コード、NetView メッセージに含まれるセンス・コード、 および総称アラート・コード・ポイントについて説明しています。 v 「プログラミング: アセンブラー」(SA88-4392) には、アセンブラー言語を使用し て NetView プロダクトの出口ルーチン、コマンド・プロセッサー、およびサブタ スクの作成方法について記述されています。 v 「プログラミング: パイプ」(SA88-4393) には、NetView パイプラインを使用し てNetView インストール済み環境をカスタマイズする方法について記述されてい ます。 v 「プログラミング: PL/I および C」(SA88-4394) には、PL/I または C を使用し て NetView プロダクトのコマンド・プロセッサーおよびインストール・システム 出口ルーチンを作成する方法が記述されています。 v 「プログラミング: REXX および NetView コマンド・リスト言語」(SA88-4395) には、再構造化拡張実行プログラム言語 (REXX) または NetView コマンド・リ スト言語を使用して、NetView プロダクトのコマンド・リストを作成する方法に ついて記述されています。 v 「Resource Object Data Manager and GMFHS Programmer's Guide」(SC27-2862) では、NetView リソース・オブジェクト・データ・マネージャー (RODM) (非 SNA ネットワークの RODM への定義方法、およびネットワーク自動化とアプリ ケーション・プログラミングでの RODM の使用法を含む) について説明してい ます。 xii プログラミング: REXX および NetView コマンド・リスト言語 v 「セキュリティー・リファレンス」(SA88-4397) には、NetView 環境の許可検査 をインプリメントする方法について記述されています。 v 「SNA トポロジー・マネージャー インプリメンテーション・ガイド」 (SA88-4398) では、サブエリアを管理するために使用できる NetView SNA トポ ロジー・マネージャー、拡張対等通信ネットワーク機能 (Advanced Peer-to-Peer Networking)、および TN3270 リソースの計画およびインプリメントについて説明 しています。 v 「Troubleshooting Guide」(GC27-2865) には、NetView プロダクトで発生する問題 の文書化、診断、および解決に関する情報が提供されています。 v 「チューニング・ガイド」(SA88-4399) には、NetView プロダクトおよびネット ワーク環境の一定のパフォーマンス・ゴールを達成するために役立つチューニン グ情報があります。 v 「Automated Operations Network ユーザーズ・ガイド」(SA88-4385) では、イベン ト・ドリブン・ネットワーク自動化機能を提供してシステムとネットワークの効 率を向上させる NetView Automated Operations Network (AON) コンポーネント の使用方法について説明しています。また、AON コンポーネントの自動操作機能 を調整および拡張する方法についても説明しています。 v 「ユーザーズ・ガイド: NetView」(SA88-4400) では、NetView プロダクトを使用 して、複雑なマルチベンダーのネットワークとシステムを単一ポイントから管理 する方法について説明しています。 v 「NetView Enterprise Management Agent ユーザーズ・ガイド」(SA88-4402) に は、NetView Enterprise Management Agent を使用する方法について記述されてい ます。 v 「NetView 管理コンソール ユーザーズ・ガイド」(SA88-4396) では、NetView プ ロダクトの NetView 管理コンソール・インターフェースについて説明していま す。 v 「Licensed Program Specifications」(GC31-8848) には、NetView プロダクトのラ イセンス情報があります。 v 「Program Directory for IBM Tivoli NetView for z/OS US English」(GI11-9444) に は、IBM Tivoli NetView for z/OS 製品のインストールに関する資料と手順につい ての情報が記載されています。 v 「Program Directory for IBM Tivoli NetView for z/OS Japanese」(GI11-9445) に は、IBM Tivoli NetView for z/OS 製品のインストールに関する資料と手順につい ての情報が記載されています。 v 「Program Directory for IBM Tivoli NetView for z/OS Enterprise Management Agent」(GI11-9446)には、IBM Tivoli NetView for z/OS Enterprise Management Agent のインストールに関する資料と手順についての情報が記載されています。 v 「IBM Tivoli NetView for z/OS V6R1 Online Library」(LCD7-4913)には、NetView for z/OS ライブラリーにある資料が記載されています。資料は、PDF、HTML、 および BookManager® フォーマットで入手可能です。 関連資料 REXX についての詳細な情報は、TSO/E REXX ライブラリーを参照してください。 本書について xiii 追加の製品情報は、NetView for z/OS Web サイト (http://www.ibm.com/software/ tivoli/products/netview-zos/) 上で検索できます。 NetView ブリッジ機能については、「Tivoli NetView for OS/390 Bridge Implementation」(SC31-8238-03、V1R4 ライブラリーからのみ入手可能) を参照して ください。 オンライン用語集へのアクセス IBM Terminology Web サイトには、多数の IBM プロダクト・ライブラリーからの 用語が 1 つの便利なロケーションに統合されています。 Terminology Web サイト には http://www.ibm.com/software/globalization/terminology/ でアクセスできます。 NetView for z/OS の用語と定義については、IBM Terminology Web サイトを参照し てください。以下の用語は、このライブラリーで使用されます。 NetView 以下のプロダクト: v Tivoli NetView for v Tivoli NetView for v Tivoli NetView for v Tivoli NetView for v Tivoli NetView for v Tivoli NetView for z/OS バージョン 6 リリース 1 z/OS バージョン 5 リリース 4 z/OS バージョン 5 リリース 3 z/OS バージョン 5 リリース 2 z/OS バージョン 5 リリース 1 OS/390® バージョン 1 リリース 4 CNMCMD CNMCMD メンバー、および %INCLUDE ステートメントを使用してその 中に組み込まれるメンバーに関する用語 CNMSTYLE CNMSTYLE メンバー、および %INCLUDE ステートメントを使用してその 中に組み込まれるメンバーに関する用語 PARMLIB 連結シーケンスでの SYS1.PARMLIB およびその他のデータ・セットに関す る用語 MVS™ z/OS オペレーティング・システムに関する用語 MVS エレメント z/OS オペレーティング・システムの基本制御プログラム (BCP) エレメント に関する用語 VTAM® Communications Server - SNA Services に関する用語 IBM Tivoli Network Manager 以下のいずれかのプロダクトに関する用語 v IBM Tivoli Network Manager v IBM Tivoli OMNIbus and Network Manager IBM Tivoli Netcool/OMNIbus 以下のいずれかのプロダクトに関する用語 v IBM Tivoli Netcool/OMNIbus v IBM Tivoli OMNIbus and Network Manager xiv プログラミング: REXX および NetView コマンド・リスト言語 特に断りのない限り、プログラムを参照する場合は、そのプログラムの最新のバー ジョンおよびリリースを指します。バージョンのみが示されている場合は、そのバ ージョンのすべてのリリースを参照しています。 パーソナル・コンピューターまたはワークステーションの使用に関する参照の場合 は、すべてのプログラマブル・ワークステーションを使用できます。 NetView for z/OS オンライン・ヘルプの使用 インストール済み環境と構成に応じて、以下の種類の NetView for z/OS メインフレ ーム・オンライン・ヘルプが用意されています。 v 一般ヘルプおよびコンポーネント情報 v コマンド・ヘルプ v メッセージ・ヘルプ v センス・コード情報 v 推奨処置 LookAt を使用してメッセージの説明を検索する LookAt は、表示される IBM メッセージのほとんどと、一部のシステム異常終了お よびコードに関する説明を検索するために使用できるオンライン機能です。LookAt では、通常、該当メッセージの説明がただちに表示されるため、従来の方法よりも 短時間で、必要な情報を検索することができます。 LookAt を以下のロケーションから使用して、z/OS のエレメントおよびフィーチャ ー、z/VM®、VSE/ESA、および Clusters for AIX® and Linux システムに関する IBM メッセージの説明を検索できます。 v インターネット。LookAt Web サイト (http://www.ibm.com/systems/z/os/zos/bkserv/ lookat/) から IBM メッセージの説明に直接アクセスできます。 v z/OS TSO/E ホスト・システム。z/OS または z/OS.e システムにコードをインス トールして、TSO/E コマンド行 (例えば、TSO/E プロンプト、ISPF、または OMVS が稼働中の z/OS UNIX システム・サービス) から LookAt を使用し、 IBM メッセージの説明にアクセスできます。 v Microsoft Windows ワークステーション。 LookAt は、「z/OS Collection」 (SK3T-4269) または「z/OS and Software Products DVD Collection」(SK3T-4271) から直接インストールし、インストールされた Windows グラフィカル・ユーザ ー・インターフェース (GUI) から使用することができます。Windows 版の LookAt をインストールしたディレクトリーからは、引き続きコマンド・プロンプ ト (DOS コマンド行とも呼ばれる) 版を使用できます。 v ワイヤレス・ハンドヘルド・デバイス。ワイヤレス・アクセス機能とインターネ ット・ブラウザーを搭載したハンドヘルド・デバイスにより、 http://www.ibm.com/systems/z/os/zos/bkserv/lookat/lookatm.html から LookAt モバイ ル版を利用できます。 ホスト・システムまたは Microsoft Windows ワークステーションに LookAt をイン ストールするためのコードは、以下の場所から取得できます。 v z/OS Collection (SK3T-4269) の CD。 v z/OS and Software Products DVD Collection (SK3T-4271)。 本書について xv v LookAt Web サイト。「ダウンロード」をクリックして、プラットフォーム、リ リース、コレクション、および場所を選択します。詳しい情報は、ダウンロー ド・プロセス時に入手できる LOOKAT.ME ファイルに記載されています。 マニュアルへのオンライン・アクセス 資料 DVD「IBM Tivoli NetView for z/OS V6R1 Online Library」(SK2T-6175) には、 製品ライブラリーにある資料が含まれています。資料は、PDF、HTML、および BookManager フォーマットで入手可能です。資料へのアクセス方法の説明について は、DVD 上の README ファイルを参照してください。 IBM では、この製品およびその他のすべての Tivoli 製品に関する資料を、使用可 能になった時点および更新された時点で、Tivoli Information Center の Web サイト (http://publib.boulder.ibm.com/infocenter/tivihelp/v3r1/index.jsp) に載せています。 注: PDF 文書をレターサイズ以外の用紙に印刷する場合は、Adobe Reader のメニュ ーから「ファイル」→「印刷」を選択して表示されたウィンドウでオプションを 設定し、レターサイズのページをご使用の用紙に印刷できるようにしてくださ い。 マニュアルのご注文 日本 IBM 発行のマニュアルはインターネット経由でもご購入いただけます。詳し くは、http://www.ibm.com/jp/manuals/ の「ご注文について」をご覧ください。(URL は、変更になる場合があります) アクセシビリティー アクセシビリティー機能は、運動障害または視覚障害など身体に障害を持つユーザ ーがソフトウェア・プロダクトを快適に使用できるようにサポートします。製品で は、標準的なショートカット・キーおよびアクセラレーター・キーが使用され、オ ペレーティング・システムによって文書化されます。詳しくは、ご使用のオペレー ティング・システムが提供する資料を参照してください。 追加情報については、「ユーザーズ・ガイド: NetView」の付録『アクセシビリティ ー』を参照してください。 Tivoli 技術研修 以下は英語のみの対応となります。Tivoli 技術研修の情報については、以下の IBM Tivoli Education Web サイト ( http://www.ibm.com/software/tivoli/education) を参照し てください。 Tivoli ユーザー・グループ Tivoli ユーザー・グループは、独立した、ユーザーにより運営されたメンバーシッ プ組織であり、Tivoli ユーザーに対して、Tivoli Software ソリューションをインプ リメントする際にユーザーを支援する情報を提供します。このユーザー・グループ を介して、メンバーは情報を共有することができ、また、他の Tivoli ユーザーの知 識や経験を習得することができます。 xvi プログラミング: REXX および NetView コマンド・リスト言語 Tivoli ユーザー・グループには、http://www.tivoli-ug.org からアクセスします。 ダウンロード クライアントとエージェント、 NetView 製品のデモンストレーション、およびいく つかの無償の NetView アプリケーションを以下の NetView for z/OS サポート Web サイトからダウンロードできます。 http://www.ibm.com/software/sysmgmt/products/support/IBMTivoliNetViewforzOS.html 「IBM Tivoli for NetView for z/OS support」ペインで「Download」をクリックする と、ダウンロードを検索または選択できるページに移動します。 これらのアプリケーションは、以下の作業に役立ちます。 v カスタマイズ・パラメーターと初期化ステートメントを前のリリースから CNMSTUSR メンバーに、およびコマンド定義を前のリリースから CNMCMDU メンバーにマイグレーションする v 自動化テーブルの統計情報の入手、および自動化テーブルのリストとの統計情報 のマージ v JES (Job Entry Subsystem) ジョブの状況の表示、または指定された JES ジョブ の取り消し v プログラム間インターフェース (PPI) を使用した、NetView プログラムへのアラ ートの送信 v PPI を使用した、MVS コマンドの送信および受信 v TSO (Time Sharing Option) コマンドの送信および応答の受信 サポート情報 以下は英語のみの対応となります。 IBM ソフトウェアに問題がある場合は、早く 解決する必要があります。お客様が必要なサポートを得られるように、IBM は以下 の方法を提供しています。 オンライン Tivoli Software Support サイト (http://www.ibm.com/software/sysmgmt/ products/support/index.html?ibmprd=tivman) にアクセスします。IBM Software Support サイト (http://www.ibm.com/software/support/probsub.html) にアクセ スします。 IBM Support Assistant IBM Support Assistant は、 IBM ソフトウェア製品に関する疑問および問題 の解決に役立つ無償のローカル・ソフトウェア保守サービス・ワークベンチ です。Support Assistant により、問題判別のためのサポート関連の情報およ び保守サービス・ツールに迅速にアクセスできます。Support Assistant ソフ トウェアをインストールするには、http://www.ibm.com/software/support/isa/ にアクセスします。 トラブルシューティング情報 NetView for z/OS 製品の問題解決について詳しくは、「IBM Tivoli NetView for z/OS Troubleshooting Guide」を参照してください。NetView for z/OS 製 品の追加サポートは、Yahoo の NetView ユーザー・グループ ( 本書について xvii http://groups.yahoo.com/group/NetView/) で得られます。このサポートの対象 は NetView for z/OS ユーザーに限定されており、登録する必要がありま す。このフォーラムは、質問に答え、ガイダンスを与える NetView 開発者 がモニターしています。コードに関する問題が見つかると、解決策を得るた め正式な問題管理レコード (PMR) を開くよう求められます。 本書の表記規則 本書では、特殊な用語やアクション、オペレーティング・システムに依存するコマ ンドとパス、およびコマンド構文を表す場合に、いくつかの表記規則を使用してい ます。 書体の規則 本書では、書体について以下の規則を使用しています。 太字 v 周囲のテキストと見分けがつきにくい小文字のコマンドおよび大/小文字 混合のコマンド v インターフェース・コントロール (チェック・ボックス、プッシュボタ ン、ラジオ・ボタン、スピン・ボタン、フィールド、フォルダー、アイコ ン、リスト・ボックス、リスト・ボックス内の項目、複数列リスト、コン テナー、メニューの選択項目、メニュー名、タブ、プロパティー・シー ト)、ラベル (ヒント: およびオペレーティング・システムの考慮事項: な ど) v テキスト内のキーワードおよびパラメーター イタリック v 引用 (例: 資料、ディスケット、および CD のタイトル) v テキスト内で定義されている語 (例: 非交換回線は Point-to-Point 回線 と も呼ばれる) v 語および文字の強調 (言葉として扱われる語の例: "制限節を挿入するに は、単語 that を使用します"。文字として扱われる場合の例: "LUN アド レスは文字 L で始める必要があります"。) v テキスト中の新規用語 (定義リスト内を除く): view は、データが入って いるワークスペース内のフレームです。 v 指定する必要のある変数および値: ... ここで myname が表すものは ... モノスペース v 例およびコード例 v 周囲のテキストと見分けがつきにくいファイル名、プログラミングのキー ワード、およびその他のエレメント v ユーザー宛てのメッセージ・テキストおよびプロンプト v ユーザーが入力する必要のあるテキスト v 引数またはコマンド・オプションの値 xviii プログラミング: REXX および NetView コマンド・リスト言語 オペレーティング・システム依存の変数とパス ワークステーション・コンポーネントの場合、本書では、環境変数およびディレク トリー表記に UNIX の規則を使用しています。 Windows コマンド行を使用する場合、環境変数では $ 変数 を %変数 % で置き 換え、ディレクトリー・パスではスラッシュ (/) を円記号 (¥) で置き換えてくださ い。環境変数の名前は、Windows 環境と UNIX 環境とでは常に同じとは限りませ ん。例えば、Windows 環境の %TEMP% は、UNIX 環境の $TMPDIR と同等で す。 注: Windows システムで bash シェルを使用している場合は、UNIX の表記規則を 使用できます。 構文図 このセクションでは、構文図での構文エレメントの表記方法を説明します。水平線 (メインパス) に従い、左から右、上から下に向かって構文図を見てください。 記号 構文図では、以下の記号が使用されます。 コマンド構文の開始を示します。 コマンド構文が続くことを示します。 | コマンド構文のフラグメントまたは一部の開始および終わりを示します。 コマンド構文の終わりを示します。 パラメーター 構文図では、以下のタイプのパラメーターを使用しています。 必須 必須パラメーターはメインパス上に表示します。 オプション (任意指定) オプション・パラメーターは、メインパスの下に示されます。 デフォルト デフォルト・パラメーターは、メインパスの上に示されます。パラ メーターの説明では、デフォルト・パラメーターには下線が付いて います。 構文図では、強調表示、大括弧、または中括弧を頼りにすることはできません。構 文図において、主構文線に対するエレメントの相対位置は、エレメントが必須なの か、オプションなのか、またはデフォルト値なのかを示します。 パラメーターは、キーワードまたは変数に分類されます。キーワードは、大文字で 示されます。ユーザーが指定する名前または値を表す変数は小文字で表記され、斜 体で表示されるか、NetView ヘルプおよび BookManager の資料では異なる色で表 示されます。 以下の例では、USER コマンドがキーワード、user_id パラメーターが必須の変数、 そして password パラメーターがオプションの変数です。 本書について xix USER user_id password 句読点と括弧 コロン、セミコロン、コンマ、負符号 (-)、および一重引用符と二重引用符など、構 文図で示されているすべての句読点を含める必要があります。 オペランドに複数の値がある場合、一般にそれらの値は、括弧で囲んでコンマで区 切ります。単一の値の場合は一般に、括弧を省略できます。詳しくは、 xxi ページの 『複数のオペランドまたは値』を参照してください。 コマンドにキーワードと変数を区切る定位置コンマを入れる必要がある場合は、キ ーワードまたは変数の前にコンマを置きます。 コマンドの例を示す場合は、定位置オペランドが存在しないことを示すためにもコ ンマを使用します。例えば、2 番目のコンマはオプションのオペランドが使用され ていないことを示します。 COMMAND_NAME opt_variable_1,,opt_variable_3 末尾の定位置コンマを指定する必要はありません。定位置、非定位置にかかわら ず、末尾のコンマは無視されるか、コマンドがリジェクトされる原因となります。 末尾のコンマによってコマンドがリジェクトされるかどうかについては、各コマン ドの制約事項を参照してください。 省略形 コマンドおよびキーワードの省略形は、各コマンドの説明の後の同義語表を参照し てください。 構文例 このセクションでは、構文エレメントのさまざまな使用例を示します。 必須構文エレメント: 必須のキーワードおよび変数は、構文の主線上に示されま す。必須のキーワードと変数をコーディングする必要があります。 REQUIRED_KEYWORD required_variable 必要な選択項目 (2 つ以上の項目) は、メインパスの上側にある垂直スタックに表示 されます。項目は英数字順に表示されています。 REQUIRED_OPERAND_OR_VALUE_1 REQUIRED_OPERAND_OR_VALUE_2 オプションの構文エレメント: オプションのキーワードおよび変数は、構文の主線 より下に示されます。オプションのキーワードと変数は、コーディングしないこと を選択できます。 OPTIONAL_OPERAND xx プログラミング: REXX および NetView コマンド・リスト言語 必要な選択項目 (2 つ以上の項目) は、メインパスの下側にある垂直スタックに表示 されます。項目は英数字順に表示されています。 OPTIONAL_OPERAND_OR_VALUE_1 OPTIONAL_OPERAND_OR_VALUE_2 デフォルトのキーワードおよび値: デフォルトのキーワードおよび値は、以下のい ずれかの方法で、構文の主線より上に示されます。 v デフォルトのキーワードは、構文の主線より上にのみ示されます。このキーワー ドを指定することも、または、指定せずにデフォルトにすることもできます。以 下の構文例では、構文の主線より上にデフォルト・キーワード KEYWORD1 が、 構文の主線より下に残りのオプションのキーワードが示されています。 v オペランドにデフォルト値がある場合、そのオペランドは構文の主線より上と下 の両方に示されます。構文の主線より下に値がある場合は、オペランドを指定す るときに、デフォルト値または表示されている値のいずれかを指定する必要があ ることを示します。オペランドを指定しない場合は、構文の主線より上にあるデ フォルト値が使用されます。以下の構文の例は、構文の主線の上下にオペランド OPTION=* のデフォルト値が示されています。 KEYWORD1 OPTION=* KEYWORD2 KEYWORD3 KEYWORD4 OPTION= COMMAND_NAME * VALUE1 VALUE2 複数のオペランドまたは値: 一群のオペランドまたは値の上にある左に戻る矢印 は、複数選択が可能か、または 1 つの値を繰り返すことができることを示していま す。 , KEYWORD=( value_n ) , REPEATABLE_OPERAND_OR_VALUE_1 REPEATABLE_OPERAND_OR_VALUE_2 REPEATABLE_OPERAND_OR_VALUE_3 1 行より長い構文: 図が 1 行より長い場合は、続きのある各行が 1 つの矢印で終 わり、次の行の先頭が 1 つの矢印で始まります。 OPERAND1 OPERAND7 OPERAND2 OPERAND3 OPERAND4 OPERAND5 OPERAND6 OPERAND8 構文のフラグメント: 構文図によっては、構文の長い、複雑な、または繰り返され るセクションを表すために使用する構文のフラグメントが含まれています。構文の フラグメントは、メインの構文図の後に記述されます。それぞれの構文フラグメン 本書について xxi ト名は、大/小文字が混合しており、メインの構文図およびフラグメントの見出しに 示されます。以下の構文例は、Fragment1 および Fragment2 という 2 つのフラグメ ントを含む構文図を示しています。 COMMAND_NAME Fragment1 Fragment2 Fragment1 KEYWORD_A=valueA KEYWORD_B KEYWORD_C KEYWORD_E=valueE KEYWORD_F Fragment2 KEYWORD_D xxii プログラミング: REXX および NetView コマンド・リスト言語 第 1 章 はじめに Tivoli NetView for z/OS プログラムを使用すると、複雑なマルチベンダーのネット ワークとシステムを集中して管理することができます。コマンド・リストとは、コ ンピューター・プログラムのようにコマンドと特殊な命令を集めて 1 つの名前でグ ループ化したものです。 Tivoli NetView for z/OS プログラムでは、コマンド・リス トは再構造化拡張実行プログラム言語 (REXX) か、NetView コマンド・リスト言語 のいずれかで作成します。 REXX には、NetView コマンド・リスト言語では利用できない多くの関数と機能拡 張があります。 端末装置でコマンド・リスト名を入力すると、そのコマンド・リスト内のコマンド と命令が解釈されて処理されます。コマンド・リストの実行は、別の方法でも行う ことができます。例えば、タイマー・コマンドを発行して、指定された時刻または 時間間隔でコマンド・リストを実行することができます。複数のコマンド・リスト を、同時にさまざまなタスクの下で実行することもできます。詳しくは、7 ページ の『コマンド・リストの実行』を参照してください。 本章では、以下の説明を行います。 v コマンド・リストの作成 v コマンド・リストの実行 v コマンド・リストの使用 コマンド・リスト使用の利点 コマンド・リストは、ネットワークの自動化と管理、およびオペレーターの能率の 向上を支援します。コマンド・リストは、オペレーター、他のタスク、システム・ リソース、あるいはメッセージから情報を得ます。この情報を使用して、処理を実 行したり、次の処理を決定したりします。この柔軟性によって、繰り返される操作 や複雑な操作の自動化、リソース・リカバリーの実行、およびオペレーター間での 操作方法の統一を図ることができます。 例えば、システム・プログラマーまたはオ ペレーターが、下記の目的でコマンド・リストを作成することができます。 v NetView のタイマー・コマンド AT、EVERY、CHRON、および AFTER を使用 して、指定された時刻または時間間隔で、自動的にコマンド・リストを発行す る。 v 一定の条件下で、オペレーターがメッセージを見る前に、そのメッセージの語句 を変更するか、削除するか、または応答する。 v システム、ネットワーク、およびアプリケーションの操作中に特定のメッセージ または管理サービス単位 (MSU) を受信したときに、自動的に発行されるコマン ド・リストを提供する。 v NetView プログラムが 1 つのメッセージまたはメッセージのグループを受信する のを待ち、そのメッセージの内容に基づいてアクションをとる。 v バックアップおよびリカバリーの手順、例えば、障害発生リソースの自動的なリ カバリーの速度を速める。 © Copyright IBM Corp. 1997, 2011 1 基本トピック v サブシステムおよびプログラム (例えば、 VTAM、 CICS®、および TSO) のモニ ターおよび再始動。 v オペレーター画面についての情報を表示する。 v オペレーター・コマンドの入力を単純化する。 v オペレーター・コマンドとプロシージャーを、ユーザーのネットワークに合わせ て調整する。 v 一連のコマンドを発行する必要があるときに、必ず、完全で順序が正しくなるよ うにする。 v オペレーターの役割を拡張、または、オペレーターの効率と生産性を向上する、 特別なオペレーター・ダイアログをインプリメントする。 コマンド・リストを作成する前に、ユーザーのシステム、ネットワーク操作手順、 およびオペレーターが定期的に実行するタスクを分析してください。それらのジョ ブのうちどれを、コマンド・リストを使用して実行したいのかを決定します。まず 単純なコマンド・リストの作成から始めて、経験を積むに従って複雑な機能を追加 していくようにしてください。 注: 本書では、 NetView オペレーター・コマンドについての説明はありません。特 定のコマンドについての情報が必要な場合は、NetView オンライン・ヘルプま たは「IBM Tivoli NetView for z/OS Command Reference Volume 2 (O-Z)」を参 照してください。 共通の開始コマンド・リストの例 端末アクセス機能 (TAF) セッションを、情報管理システム (IMS™) およびホスト・ コマンド機能 (HCF) とともに設定したい場合、個別にコマンドを入力する代わり に、コマンド・リストを使用することができます。 図 1 (REXX で書かれている) は、 IMS および HCF との端末アクセス機能 (TAF) セッションを確立します。 /* STARTUP1 */ ’BGNSESS OPCTL,APPLID=IMS1,SRCLU=TAF11,LOGMODE=OPCTLLOG,SESSID=IMS’ ’BGNSESS OPCTL,APPLID=HCF1,SRCLU=TAF11,LOGMODE=OPCTLLOG,SESSID=HCFA’ ’BGNSESS OPCTL,APPLID=HCF1,SRCLU=TAF12,LOGMODE=OPCTLLOG,SESSID=HCFB’ EXIT 図 1. STARTUP1 コマンド・リスト オペレーターは 3 つのコマンドを覚えておいて入力する必要はなく、コマンド・リ スト名の STARTUP1 だけを入力します。コマンド・リストは 3 つのセッションを 開始し、オペレーターはこれら 3 つのコマンドを発行した場合と同様のメッセージ を受け取ります。 ネットワーク制御プログラムの活動化の例 コマンド・リストを作成することによって、ネットワーク制御プログラム (NCP) を 簡単に活動化することができます。 3 ページの図 2 は、NCP を活動化する REXX コマンド・リストの一例です。 2 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック /* NCP1 */ ’V NET,ACT,ID=NCP1,LOAD=YES,LOADSTA=LINK1’ EXIT 図 2. NCP 活動化の例 コマンド・リストの作成方法 コマンド・リストは、NetView プログラムの開始前または実行中に作成することが できます。それぞれのコマンド・リストを、コマンド・リスト区分データ・セット (PDS) のメンバーの形でコーディングします。コマンド・リストを作成した後で は、ISPF や IEBUPDTE などの機能を使用してコマンド・リストを更新します。 PDS メンバー名は、コマンドを実行するために入力する名前です。ただし、 CMDDEF ステートメントの CMDSYN キーワードでコマンド・リストに別の名前 を定義する場合を除きます。CMDSYN の詳細については、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 コマンド・リスト名は、非数字文字で始まる必要があり、1 文字から 8 文字までの 長さにすることができます。有効な文字は、0 から 9、A から Z、および特殊文字 @、$、# です。 コマンド・リストの作成および PDS メンバーとしての保存が済めば、オペレータ ーがそのコマンド・リストを使用する準備はできました。 注: 名前の競合を避けるために、ユーザー作成コマンド・リスト名には、NetView プログラムで提供されているコマンド・リストに使用されたコマンド同義語 (CMDSYN) 名以外の名前を付けてください。また、コマンド・リスト名の先頭 には、NetView プログラムによって使用されている 3 文字の接頭部 (AAU、 BNH、 BNJ、 CNM、 DSI、 DUI、 EZL、 FLC、 FKX、および FKV) のいずれも指 定しないでください。 NetView プログラムは、複数のボリュームにまたがって連結されているデータ・セ ット内のコマンド・リストをサポートします。 1. コマンド・リストを保管するために使用するデータ・セットを作成します。 2. 各コマンド・リストを、コマンド・リスト・データ・セットの別々のメンバーと してコーディングします。 NetView 始動プロシージャーにコマンド・リスト・ データ・セット名を定義するには、以下のように DSICLD の JCL DD ステート メントをコーディングしてください。 //DSICLD DD DSN=datasetname,DISP=SHR 3. 図 3 に示すような DSICLD ステートメントをコーディングすることによって、 データ・セットを連結します。 //DSICLD DD DSN=datasetname1,DISP=SHR // DD DSN=datasetname2,DISP=SHR // DD DSN=datasetname3,DISP=SHR // DD DSN=datasetnamen,DISP=SHR 図 3. DSICLD ステートメントによるデータ・セット連結の例 第 1 章 はじめに 3 基本トピック 4. DSICLD の下で定義された最初のコマンド・リスト・データ・セットが、連結さ れたコマンド・リスト・データ・セットの中で最大のブロック・サイズをもつ か、または最初の DD ステートメントに DCB=(BLKSIZE=xxxx) ステートメント (ここで、xxxx は連結データ・セットの最大ブロック・サイズに等しい) がある ことを確認してください。 Tivoli NetView for z/OS プログラムが z/OS システム上で稼働していて、その実行 中にコマンド・リストを更新または作成する予定の場合は、2 次エクステントなし でコマンド・リスト・データ・セットを定義してください。 2 次エクステントを使 用すると、コマンド・リストが新規エクステントにファイルされる可能性がありま す。この場合、2 次エクステント障害が発生し、その結果エラー・リカバリーが行 われて、コマンド・リストの実行の単一インスタンスが失われてしまう可能性があ ります。エラー・リカバリーが成功して、2 度目のコマンド・リスト呼び出しがな されると、コマンド・リストが利用可能になります。 データ・セットが満杯になり、コマンド・リストをもっと追加するためにデータ・ セットを圧縮する必要がある場合は、REACC コマンドを使用してください。詳細 は、「IBM Tivoli NetView for z/OS Command Reference Volume 2 (O-Z)」を参照し てください。また、パイプライン QSAM を使用してデータ・セットを読み取り、 プロシージャーを INSTORE DSICLD.clistname を使用してメモリーに保管すること により、データ・セット内のコマンド・リストを呼び出すこともできます。詳しく は、「IBM Tivoli NetView for z/OS プログラミング: パイプ」を参照してくださ い。 ブロック・サイズはレコード長の偶数倍でなければならず、レコード長は 80 でな ければなりません。レコードは、固定または固定ブロックで 80 にフォーマットし なければなりません。 ブロック・サイズがメモリーのページ・サイズを超えるとページングが起こりま す。その回数を減らすために、ブロック・サイズを 3920 以下にしてください。 コマンド・リストへのアクセスの制御 コマンド権限を使用して、特定のコマンド・リストを発行できるオペレーターを指 定することができます。 次に示すコマンド権限方式を利用できます。 v NetView コマンド権限テーブル v RACF® などのシステム許可機能の NETCMDS クラス どの方式が有効かを判別するには、LIST SECOPTS コマンドを使用します。 コマンドへのアクセスを制限する方式は、CNMSTYLE メンバーの中で定義され、 NetView REFRESH コマンドを使用して動的に変更することができます。 Tivoli NetView for z/OS プログラムは、コマンド・リストに対するオペレーター許 可を呼び出しの前に自動的に検査します。ただし、キーワードと値に対する許可 は、この目的でコーディングされたコマンド・リストのステートメントによって次 のように検査されなければなりません。 4 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック v 呼び出されたコマンド・リストは、渡されたパラメーターを検査し、またそれを 呼び出したオペレーターを検査することができます。したがって、コマンド・リ ストが不正に呼び出されたときは終了するように、コーディングすることができ ます。 v REXX コマンド・リストは、 AUTHCHK() 関数を使用できます。 v PL/I または C コマンド・プロセッサーを開始できます。キーワードや値を許可 したり、コマンド・リストを開始したり、コマンド・リストへオペランドを渡し たりするには、コマンド・プロセッサーを使用します。コマンド・リストをコー ディングして、正しく呼び出されたことを確認する必要があります。この確認を 行うには、PIPE ENVDATA コマンドから使用可能な系統リストまたは opid S 関 数を使用します。詳しくは、「IBM Tivoli NetView for z/OS プログラミング: パ イプ」を参照してください。 通常、あるコマンド・リストから呼び出されたコマンドやコマンド・リストもコマ ンド権限をもちます。この規則の例外は、コマンド・リストが自動化テーブルから 呼び出され、AUTOSEC=BYPASS が有効な場合です。詳しくは、NetView オンライ ン・ヘルプで DEFAULTS コマンドを参照してください。もう 1 つの例外は、 DSIPARM の DSIAUTB メンバー内に組み込まれることで特権を許可され、 AUTBYPAS 関数を使用するコマンド・リストの場合です (「IBM Tivoli NetView for z/OS セキュリティー・リファレンス」を参照)。 コマンド・リストを許可されていないユーザーから保護する方法の詳細について は、「IBM Tivoli NetView for z/OS セキュリティー・リファレンス」を参照してく ださい。 PL/I または C を使用するコマンド・プロセッサーの作成の詳細について は、「IBM Tivoli NetView for z/OS プログラミング: PL/I および C」を参照してく ださい。 ストレージへのコマンド・リストのロード Tivoli NetView for z/OS プログラムは、データを主ストレージにプリロードして入 出力を減らし、パフォーマンスを向上させるいくつかの方法を提供します。 MEMSTORE と LOADCL の 2 つの方法は、REXX または NetView コマンド・リ スト言語のプロシージャーに適しています。 MEMSTORE は自動タスクとして実行され、さまざまなメンバーの使用をモニター します。これはメンバーを経過時間で重み付けした使用頻度に基づいてストレージ にロードします。通常、MEMSTORE は、システム・プログラマーがユーザーのイ ンストール済み環境に適した制限と例外を設定したユーザーの Style 処理により開 始されます。REXX プロシージャーまたは NetView コマンド・リスト言語プロシ ージャーを変更する場合は、必ず MEMSTOUT REFRESH procname コマンドを使 用して、MEMSTORE が古いコピーをキャッシュに入れていないことを確認してく ださい。多くの変更を行う場合、テストと同様に、MEMSTORE がプロシージャー を永続的にロードしないように MEMSTOUT UNLOAD DSICLD.procname を発行す ることをお勧めします。MEMSTORE と MEMSTOUT の詳細については、オンライ ン・ヘルプでこれらのコマンドを参照してください。また、追加情報は「IBM Tivoli NetView for z/OS インストール: 概説」からも入手できます。 注: プリロードされていないコマンド・リストを呼び出すと、コマンド・リストは 主ストレージにロードされ、実行された後、主ストレージから除去されます。 第 1 章 はじめに 5 基本トピック したがって、コマンド・リストが実行されるたびに、コマンド・リストが存在 する補助ストレージ・デバイスから読み出さなければなりません。コマンド・ リストをプリロードすると、実行するたびに補助ストレージから何度も読み出 す必要がなくなります。 MEMSTORE のアクションは、NetView の標準 DD 名のメンバーにアクセスするす べての標準手段に影響します。例えば、REXX プロシージャーが MEMSTORE によ り主ストレージにロードされており、ユーザーが BROWSE コマンドを使用してメ ンバーを表示する場合、事前にロードされたデータが BROWSE により表示され、 連結レベルのリストに DATASET:0 と表示されます。同様に、LISTA DSICLD membname コマンドを使用すると、そのメンバーに対して INSTORE レベルのリスト が表示されます。プロシージャーが呼び出されると、メンバーは「読み取られる」 か、または解釈用にフォーマットされた別のロケーションにコピーされます。この コピーとフォーマットの手順を実行しないで、LOADCL を使用することでパフォー マンスをわずかに向上させることができます。LOADCL は DD=DSICLD のプロシ ージャーに対してのみ使用してください。LOADCL の後も、BROWSE コマンドは メンバーを補助ストレージにあるように表示し続けます。ただし、LIST CLIST コ マンドを使用すると、メンバーが主ストレージにあることが確認できます。 以下の NetView コマンドを使用して、コマンド・リストを主ストレージに入れたり 出したり、現在主ストレージにあるコマンド・リストをリストしたりすることがで きます。 LOADCL DROPCL および MAPCL と連動して、ロードされたプロシージャーに関す る情報と制御を提供する。 DROPCL 前に LOADCL コマンドを使用して主ストレージにロードされたコマンド・ リストを除去する。 MAPCL 現在主ストレージに置かれている、コマンド・リストをリストする。 LOADCL、DROPCL、または MAPCL の各コマンドの詳細については、 NetView オンライン・ヘルプを参照してください。 Tivoli NetView for z/OS プログラムは REXX コマンド・リストの AUTODROP (CNMS8003) を提供します。これにより、LOADCL コマンドを使用してストレージ にロードされるコマンド・リストの数を、管理することができます。 AUTODROP は MAPCL コマンドと DROPCL コマンドを使用して、コマンドを条件によって主 ストレージから除去しています。 注: NetView プログラムは、許可検査が生じる前に REXX/CLIST をロードすること によって REXX/CLIST の存在を確認します。これにより、無効なコマンドが入 力された場合の RACF からのメッセージ ICH4081 またはシステム管理機能 (SMF) レコード (または RACF メッセージと SMF レコードの両方) などの間 違ったセキュリティー違反が予防されます。 6 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック コマンド・リストの実行 実行するときにオペレーターの支援があまり必要ないコマンド・リストを設計しま す。コマンド・リストを実行する方法の一部を、以下にリストします。 v Tivoli NetView for z/OS プログラムが始動するとき v オペレーターがログオンするとき v メッセージまたは MSU の受信時 v 端末装置から v 指定された時刻に、または指定された時間間隔で v 別のコマンド・リストから v ユーザー作成コマンド・プロセッサーから v NetView 管理コンソールから v Web ページから v NetView リモート・ドメインから v ユーザー出口およびオプション・タスクから NetView 開始時のコマンド・リストの実行 Tivoli NetView for z/OS プログラムの開始時にコマンド・プロシージャーが自動的 に実行されるように指定するには、auxInitCmd ステートメントを使用して、 CNMSTYLE メンバーに含まれる CNMSTUSR または CxxSTGEN にそれらのプロ シージャーを定義します。詳しくは、「IBM Tivoli NetView for z/OS アドミニスト レーション・リファレンス」を参照してください。これらで使用されるコマンド は、基本プログラム・オペレーター・インターフェース・タスク (PPT) のもとで実 行されるものです。 PPT の制限の詳細については、15 ページの『基本 POI タス ク (PPT) の制限』を参照してください。 ログオン時のコマンド・リストの実行 オペレーターが正常にログオンした後に自動的に実行するように、コマンド・リス トを定義することができます。オペレーターがログオンしたときに実行するように 定義できるコマンド・リストは 1 つだけですが、このコマンド・リストで他のコマ ンド・リストを活動化することができます。他のコマンド・リストの呼び出しに適 用される規則については、 9 ページの『別のコマンド・リストからのコマンド・リ ストの実行』を参照してください。 PROFILE ステートメントの IC オペランド、または SAF プロダクトの NETVIEW セグメント内の IC フィールドを使用して、実行したいコマンド・リストの名前を オペレーターのプロファイルにコーディングします。例えば、オペレーターがログ オンするたびに HELLO コマンド・リストを実行したい場合、オペレーターが PROFBEG のプロファイルをもっていれば、次のように IC オペランドをオペレー ターのプロファイルに加えることができます。 PROFBEG PROFILE IC=HELLO PROFILE 定義ステートメントの詳細については、「IBM Tivoli NetView for z/OS ア ドミニストレーション・リファレンス」を参照してください。 初期化コマンド・リストに、多数のタイプのコマンドを組み込むことができます。 次のリストは、組み込み可能なコマンドの一部を示しています。 第 1 章 はじめに 7 基本トピック v 自動タスクを開始するには、AUTOTASK コマンドを使用します。 DST (デー タ・サービス・タスク) などの他のタスクを開始する場合は、 START コマンド を使用します。 v GLOBALV SAVET コマンドを使用して保管されたタスク・グローバル変数をす べて復元するには、次のステートメントを組み込みます。 GLOBALV RESTORET * 注: RESTORET は、前に SAVET を実行したタスクと、アクティブ状態の DSISVRT DST の 2 つによって決まります。 v DEFAULTS コマンドを使用して設定されている NetView 全体に渡る値を上書き してオペレーター固有のデフォルトを設定するには、OVERRIDE コマンドを使用 します。 メッセージまたは MSU を受け取った後のコマンド・リストの実 行 NetView 自動化テーブルは、メッセージまたは MSU を受け取ったときに、コマン ド・リストを開始することができます。 これらのコマンド・リストはメッセージや MSU に自動的に応答するので、オペレーターは応答する手間が省けます。 メッセージや MSU を受け取ったときに Tivoli NetView for z/OS プログラムが開 始するコマンド・リストには、そのメッセージや MSU の結果に応じた機能を実行 する、一連のコマンドを含めることができます。例えば、メッセージまたは MSU が NCP の障害を報告した場合、コマンド・リストはその NCP を再活動化する VTAM コマンドを発行できます。103 ページの『第 5 章 自動化リソース管理』に は、コマンド・リストを使用した NetView 自動化の実行についての追加情報が含ま れています。 端末からのコマンド・リストの実行 他のコマンドやオペランドと同じ方法で、端末からコマンド・リスト名を入力する ことができます。コマンド・リストの名前を入力すると、そのコマンド・リストが 処理を開始します。コマンド・リストの作成方法によっては、メッセージの応答や 他の情報をオペレーターに送ることができます。 指定された時刻または時間間隔でのコマンド・リストの実行 指定された時刻または時間間隔でコマンド・リストを実行するために、オペレータ ーは、次の NetView コマンドを使用することができます。 AFTER 指定された期間の後でコマンド・リストを実行するように、Tivoli NetView for z/OS プログラムに指示します。 AT 特定の時刻にコマンド・リストを実行するように、 Tivoli NetView for z/OS プログラムに指示します。 CHRON 複数の異なる柔軟な方法でコマンドを実行するように、Tivoli NetView for z/OS プログラムに指示します。 8 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック EVERY 一定の時間間隔で繰り返しコマンド・リストを実行するように、 Tivoli NetView for z/OS プログラムに指示します。 AFTER、AT、および EVERY コマンドは、コマンド・リストから発行することも できます。 AT、EVERY、および AFTER コマンドは、実行時にオペレーターがログオンして いない場合でも、コマンド・リストを実行するように設定することができます。こ れを行うには、アクティブになる自動タスクを選択し、タイマー・コマンドで ROUTE コマンドの oper オペランドをコーディングします。コマンド・リストは、 基本 POI タスク (PPT) の下で実行できます。これを行う際の制限については、15 ページの『基本 POI タスク (PPT) の制限』を参照してください。ただし、できる かぎり自動タスクの下でコマンド・リストを実行してください。AUTOTASK コマ ンドを使用する際の制限は、16 ページの『AUTOTASK OST の制約事項』で説明さ れています。 コマンド・リストが常に他のコマンド・リストの処理に割り込むように定義するこ とができます。この場合、CMDDEF ステートメントの TYPE=H (優先順位が高い) オペランドを使用するか、コマンドの接頭部に CMD HIGH を付けます。CMDDEF ス テートメントのコーディング方法の詳細については、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。CMD コマン ドの詳細については、オンライン・ヘルプを参照してください。 AT、EVERY、および AFTER コマンドについてさらに詳しく調べるには、 NetView オンライン・ヘルプを参照してください。 別のコマンド・リストからのコマンド・リストの実行 あるコマンド・リストで、別のコマンド・リストを活動化することができます。コ マンド・リストが別のコマンド・リストの制御下で実行されているとき、そのコマ ンド・リストは、呼び出し側コマンド・リスト内でネストされています。別のコマ ンド・リスト内でコマンド・リストをネストするには、呼び出されるコマンド・リ ストの名前を制御コマンド・リスト内で、コマンドとしてコーディングします。 Tivoli NetView for z/OS プログラムは、コマンド・リストの名前のステートメント に到達すると、ネストされたコマンド・リストの実行を開始します。ネストされた コマンド・リストの終わりに達すると、 10 ページの図 4 で示すように、呼び出し側 コマンド・リストに制御が戻されます。 第 1 章 はじめに 9 基本トピック CMDLISTA CMDLISTB CMDLISTC statement1a statement2a statement3a CMDLISTB statement5a statement6a statement7a statement8a statement9a statement1b statement2b statement3b statement4b CMDLISTC statement6b statement1c statement2c statement3c statement4c statement5c statement6c statement7c EXIT EXIT EXIT 図 4. ネストされたコマンド・リスト 他のコマンド・リストを実行するコマンド・リストの作成を計画するときは、以下 の考慮事項に注意してください。 v REXX コマンド・リストは、REXX コマンド、サブルーチン、または関数として 呼び出すことができます。 v REXX コマンド・リストは、 NetView コマンド・リスト言語で作成されたコマ ンド・リストをコマンドとして呼び出すことはできますが、サブルーチンまたは 関数として呼び出すことはできません。 v NetView コマンド・リスト言語で書かれたコマンド・リストは、 NetView コマ ンド・リスト言語または REXX コマンド・リストで作成された別のコマンド・ リストを、コマンドとして呼び出すことができます。 v REXX で作成されたコマンド・リストと、 NetView コマンド・リスト言語で作 成されたコマンド・リストのあいだでは、相互に呼び出し可能です。 v 外部的にネストされたコマンド・リストのレベルは、250 まで可能です。 コマンド、外部サブルーチン、または外部関数として呼び出された REXX コマ ンド・リストだけが、外部でネストされたコマンド・リストの 250 レベルの 1 つとしてカウントします。内部のサブルーチンおよび関数として 250 個までの REXX コマンド・リストを呼び出すことができますが、これらは外部でネストさ れたコマンド・リストの 250 レベルにはカウントしません。 v ネストされたコマンド・リストのチェーンの一部としてコマンド・リストを実行 する前に、それぞれのコマンド・リストをテストしてください。 REXX のサブルーチンと関数の詳細については、 REXX ライブラリーを参照して ください。 コマンド・リスト間で情報を渡す方法 REXX コマンド・リストと、 NetView コマンド・リスト言語で作成されたコマン ド・リストとが互いに呼び出し合うとき、呼び出しコマンド・リストからネストさ れたコマンド・リストへ、オペランドを渡すことができます。ただし、ネストされ たコマンド・リストが終了すると、戻りコードだけが呼び出しコマンド・リストに 送られます。 追加情報を渡すには、パイプラインの SAFE、STEM、または VAR のステージ、あ るいはグローバル変数プールを使用できます。 10 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック SAFE ステージ NetView メッセージまたはパイプライン内の他のデータは、呼び出し側のプ ロシージャーまたは呼び出し先のプロシージャーにより、名前が付いた SAFE ステージに置くことができます。名前が付いた SAFE ステージは、 ネストされたファミリーのメンバーが実行している間は持続します。呼び出 し側のプロシージャーまたは呼び出し先のプロシージャーは、SAFE からの データに対して追加、変更、または削除を行うことができます。SAFE ステ ージの詳細については、「IBM Tivoli NetView for z/OS プログラミング: パ イプ」を参照してください。 KEEP ステージ パイプラインの KEEP ステージは SAFE ステージと同様で、メッセージを 保管するためのタスク・グローバルな場所を定義できます。KEEP ステージ の詳細については、「IBM Tivoli NetView for z/OS プログラミング: パイ プ」を参照してください。 STEM ステージおよび VAR ステージ パイプラインの STEM と VAR のステージを使用すると、これらの変数名 が認識されている場合は、呼び出し先のプロシージャーは、呼び出し側のプ ロシージャーの変数を読み取りまたは書き込むことができます。 REXX で 書き込まれた呼び出し側のプロシージャーは、REXX の組み込みキーワー ド PROCEDURE と EXPOSE を使用して、このようなアクセスを制御する ことができます。例えば、WINDOW (CNME1505) プロシージャーは exterCmd という名前の内部プロシージャーからユーザー定義のサブコマン ドを呼び出し、toShow という名前のリストへの変数のアクセスを制限しま す。このプロシージャーの使用に関する詳細については、CNME1505 およ びサブコマンド CNMEXEC の例を参照してください。 グローバル変数 プロシージャーは、COMMON または TASK グローバル変数のデータを保 管および変更することができます。GLOBALV コマンドを使用すると、パ イプラインの VAR と STEM のステージを使用する場合と同様の方法でこ れを行うことができます。COMMON または TASK グローバル変数を使用 すると、データを他のプロシージャーと共用できます。これはプロシージャ ーが直接呼び出されたか、その他の方法で呼び出されたかに関わらず行われ ます。関連するプロシージャーが失敗した場合に備えて、共用するデータの 正確性を検査する方法を必ず用意してください。 エラー処理 ネストされたコマンド・リストがリカバリー不能エラーに遭遇した場合、そのコマ ンド・リストは終了し、呼び出しコマンド・リストにエラーを渡します。 注: 戻りコードについては、 38 ページの『REXX コマンド・リスト内の戻りコー ド』を参照してください。 呼び出しコマンド・リストが REXX で作成されている場合、そのコマンド・リスト は、ネストされたコマンド・リストから渡されたエラーからリカバリーできる場合 があります。エラーからリカバリー可能な REXX コマンド・リストのコーディング についての情報は、39 ページの『REXX コマンド・リスト内のエラーからのリカバ リー』を参照してください。 第 1 章 はじめに 11 基本トピック 呼び出しコマンド・リストが NetView コマンド・リスト言語で作成されている場 合、ネストされたコマンド・リストでエラーが起こると、呼び出しコマンド・リス トも終了します。呼び出し側コマンド・リストが別のコマンド・リストに呼び出さ れた場合は、その呼び出し側のコマンド・リストにエラーを渡し続けます。 ユーザー作成コマンド・プロセッサーからのコマンド・リストの実 行 コマンド・リストを呼び出すコマンド・プロセッサーを作成することができます。 コマンド・プロセッサーは、アセンブラー、PL/I、または C で作成されたプログラ ムです。コマンド・プロセッサーの作成方法についての情報は、「IBM Tivoli NetView for z/OS プログラミング: アセンブラー」または「IBM Tivoli NetView for z/OS プログラミング: PL/I および C」を参照してください。 コマンド・リスト内のネットワーク・コマンドの使用 このセクションでは、コマンド・リスト内でネットワーク・コマンドを使用する方 法について説明します。次のコマンドは、組み込み可能なネットワーク・コマンド のタイプの一部です。 v NetView コマンド v ユーザー作成の NetView コマンド v VTAM コマンド コマンド・リスト内で使用されるコマンドは、次の場合にコマンド権限の影響を受 けます。つまり、CMDDEF ステートメントで SEC=BY が指定されていない、また は AUTOSEC=BYPASS が有効でない場合、あるいは、コマンド・リストが、 DSIPARM の DSIAUTB メンバー内に組み込まれることで特権を許可されて AUTBYPAS 関数 (本書で説明されている) を使用してもいない場合です。詳しく は、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参 照してください。 注: 1. NetView RETURN コマンドは、コマンド・リスト内では無効です。 2. CMDDEF ステートメントで正規、高位、または両方 (TYPE=R、 TYPE=H、 TYPE=B) と定義された、Tivoli NetView for z/OS コマンドとユーザー作成コマ ンドを使用できます。未定義のコマンド・リストを使用することもできます。 3. 次のように、適切な接頭部を使用しなければなりません。 v NLDM (セッション・モニター・コマンドの場合) v NPDA (ハードウェア・モニター・コマンドの場合) v STATMON (状況モニター・コマンドの場合) コマンド・リスト内でのシステム・コマンドの使用 コマンド・リスト内でシステム・コマンドを使用することができます。例えば、 MVS コマンドを入力するには、次の NetView MVS コマンドのいずれかを使用し ます。 v MVS S jobname v MVS D A,L 12 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック 詳細については、 Tivoli NetView for z/OS オンライン・ヘルプを参照してくださ い。 コマンド・リスト内での長期実行コマンドの使用 ほとんどの NetView コマンドとユーザー作成コマンドの一部は、オペレーターの入 力、オプション・タスクからのデータ、またはその他の非同期イベントを待機する ために呼び出し側のプロシージャーをブロックします。これらのコマンドは長期実 行コマンド と呼ばれます。長期実行コマンド は、ユーザーのコマンド・リストで 使用することができます。コマンド・リスト内で長期実行コマンドを使用すると、 優先順位が低いキューにある他のコマンドが実行を開始します。コマンドの優先順 位の詳細については、NetView オンライン・ヘルプを参照してください。 長期実行コマンド は、アセンブラーのマクロ DSIPUSH を使用して、必要な待機を 実行する一方、メッセージ自動化などの重要な NetView 機能を続行します。 DSIPUSH マクロに関する追加情報は、「IBM Tivoli NetView for z/OS プログラミン グ: アセンブラー」から入手できます。長期実行コマンドの例は、NPDA と VIEW です。 長期実行コマンドのタイプ、およびコマンド・リストが CMD コマンドを使用して コマンドを待機させるかどうかによって、長期実行コマンドまたは発行コマンド・ リストが処理優先順位を受け入れるかどうかが決まります。詳しくは、 14 ページの 『長期実行コマンドのキューイング』を参照してください。 長期実行コマンドをコーディングする場合、プロシージャーの次の命令の前に長期 間内に発生する可能性がある 2 種類のイベントについて計画することが重要です。 暗黙の取り消し (Implied Cancellation) 通常、オペレーターにはコマンドを入力する機会が 1 回あります (いくつ かの例外については、「IBM Tivoli NetView for z/OS カスタマイズ・ガイ ド」に記載されています)。オペレーターが同じ長期実行コマンド (または同 じコンポーネント名の VIEW) を呼び出す場合、そのプロシージャーは停止 します。このため、長期実行コマンドを呼び出す REXX プロシージャー は、必ず SIGNAL ON HALT をコーディングする必要があります。その HALT ラベルでは、必要なその他のクリーンアップ処理に加えて、EXIT -5 をコーディングしてください。-5 戻りコードは、停止状態をプロシージャ ーの呼び出し側に伝搬します (存在する場合)。また、UNIQUE コマンドを 使用して、この停止状態に対してある程度の制御を実行できます。UNIQUE の詳細については、「IBM Tivoli NetView for z/OS カスタマイズ・ガイド」 を参照してください。 割り込み (Interruption) 通常、ユーザーのプロシージャーは、メッセージ自動化からキューに入れら れた別のコマンド、オペレーターのアクション、時刻指定のコマンド、また は別のコマンドからの EXCMD によって割り込まれることはありません (いくつかの例外については、DEFAULTS コマンドのコマンド・ヘルプに記 載されています)。長期実行コマンドが呼び出されると、オペレーターの入 力に対する待機を延長できるため、Tivoli NetView for z/OS プログラムは キューに入れられたその他のコマンドを呼び出します。これは、グローバル 第 1 章 はじめに 13 基本トピック 変数を使用している場合、または照会した後に外部リソースの状況について アクションを実行する場合に、ユーザーのプロシージャーに影響を与えるこ とがあります。 長期実行コマンドのキューイング NetView CMD コマンドを使用して長期実行コマンドをキューに入れ、長期実行コ マンドの処理を制御することができます。長期実行コマンドをキューに入れると、 ユーザーのコマンド・リストとは独立して処理されます。長期実行コマンドの結果 が、コマンド・リストの結果に影響を与えることはありません。長期実行コマンド をキューに入れると、戻りコードにはキューイング操作だけの結果が示されます。 キューに入れられたコマンドからの戻りコードは得られません。 コマンド・リストがスタックされるか、取り消されるか、割り込まれるか、または 完了するまで NLDM の処理を遅らせるには、CMD LOW NLDM を使用します。 Tivoli NetView for z/OS パイプラインの使用 Tivoli NetView for z/OS パイプラインは、コマンド・リストに対する別のレベルの 機能、および融通性を提供しています。フルスクリーン・アプリケーションの自動 化は、パイプラインの多様な機能の 1 つです。詳細については、「IBM Tivoli NetView for z/OS プログラミング: パイプ」または NetView オンライン・ヘルプを 参照してください。 VIEW コマンドの使用 コマンド・リスト内の VIEW コマンドを使用して、パネルを表示することができま す。 VIEW コマンドは、その VIEW コマンドを発行するコマンド・リスト内のロ ーカル変数とグローバル変数の集合、および NetView ローカル変数へアクセスする ことができます。 ローカル変数およびグローバル変数の詳細について、またコマンドおよびコマン ド・リストを用いる VIEW コマンドの使用の詳細については、「IBM Tivoli NetView for z/OS カスタマイズ・ガイド」を参照してください。 フルスクリーン・コマンドの使用 フルスクリーン・プロセッサーから実行されるコマンド・リストがフルスクリー ン・コマンドを発行した場合、Tivoli NetView for z/OS プログラムは、フルスクリ ーン・コマンドの出力を表示する前に、コマンド機能パネルを表示することができ ます。コマンド機能パネルが表示されるのは、コマンド・リストがオペレーターに 対して表示される他の出力を生成する場合だけです。コマンド機能パネルが表示さ れると AUTOWRAP の設定が中断され、フルスクリーン出力の自動表示が行われま せん。コマンド機能パネル出力が表示される可能性を最低限にするには、他の出力 を生成して表示することがないように、コマンド・リストを定義およびコーディン グします。 例えば、次のとおりです。 v コマンド・リストに ECHO=N を指定した CMDDEF 定義ステートメントをコー ディングします。CMDDEF ステートメントのコーディングについては、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してく ださい。 14 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック v REXX コマンド・リストの先頭に、TRACE ERRORS または TRACE OFF をコ ーディングします。TRACE 命令の詳細については、REXX ライブラリーを参照 してください。 v REXX コマンド・リストに SAY 命令をコーディングしないでください。 v NetView コマンド・リスト言語で作成されたコマンド・リストの先頭には、 &CONTROL ERR をコーディングします。 v NetView コマンド・リスト言語で作成されたコマンド・リストには、 &WRITE または &BEGWRITE 制御ステートメントをコーディングしないでください。 v 行モード出力のあるコマンドを発行しないでください。 注: コマンド・リストが、フルスクリーン・コマンド・プロセッサーの実行中に 30 秒を超えるタイムアウトのステートメントを検出すると、次のメッセージが発 行されます。 DSI594A COMMAND PROCEDURE cmdlistname WARNING - type STATE ENTERED 次に、コマンド・リストがオペレーターの応答を待機している場合は必要な情 報を入力するか、あるいは他のコンポーネントへローリングする前に WAIT ま たは &WAIT を満たすことを確認します。 基本 POI タスク (PPT) の制限 コマンド・リストは、基本 POI タスク (PPT) の下で実行することができます。た だし、可能な場合は自動タスクの下でコマンド・リストを実行してください。自動 タスクでのコマンド・リストの実行の詳細については、16 ページの『AUTOTASK OST の制約事項』を参照してください。 下記の基準のいずれかを満たしている場合、コマンド・リストを PPT の下で実行す ることができます。 v NetView 自動化の結果として処理されるように PPT へ経路指定されている。 v CNMSTYLE 定義ステートメント上で、 Tivoli NetView for z/OS プログラムの初 期化時に実行されるようにコーディングされている。 v オペランドとして PPT を使用する AT、EVERY、AFTER、または EXCMD コマ ンドによって呼び出された (AT、EVERY、および AFTER に PPT があると、そ のコマンドはスケジュールしたオペレーターがログオンしていない場合でも実行 できるようになります)。 多くのコマンドは PPT 下で実行できません。 PPT の下で実行するコマンド・リス トには、適用されるいくつかの制約事項があります。 v 一般に、フルスクリーン・コマンドと即時コマンドは使用できません。次の NetView コマンドは、使用しないでください。 – AUTOWRAP – BGNSESS – INPUT – LOGOFF – ROUTE – SET – SUBMIT – TRAP 第 1 章 はじめに 15 基本トピック – WAIT v 次の REXX 命令を使用しないでください。 – FLUSHQ – MSGREAD – PARSE EXTERNAL – PARSE PULL (REXX データ・スタックに何もない場合) – PULL (REXX データ・スタックに何もない場合) v 次の NetView コマンド・リスト言語制御ステートメントは、使用しないでくださ い。 – &PAUSE – &WAIT PPT で実行されるコマンド・リストがメッセージを生成した場合、そのメッセージ は許可された受信先が存在する場合にはそこに送信されます。許可された受信先が 存在しない場合、これらのメッセージはシステム・コンソールに出力されます。ま た、これらのメッセージには 2 バイト文字などの非ラテン文字を含めることはでき ません。 AUTOTASK OST の制約事項 この制約事項は、AUTOTASK コマンドで開始される自動化タスクに適用されま す。 v フルスクリーン・コマンドを自動化する場合には、ATTACH コマンドを使用しま す。 自動タスクの制約事項は PPT より少ないので、できるかぎり PPT でなくこちらを 使用してください。 コマンド・リスト出力の制御 コマンド・リストの処理時にオペレーターに対して表示されるデータの量を、制御 することができます。コマンド・リスト内のコマンドに対する応答、またはコマン ド・リストで端末画面に送られるメッセージを、オペレーターに表示することがで きます。 REXX コマンド・リストの処理時にオペレーターに対して表示されるデータの量を 制御するには、NetView PIPE CONSOLE コマンド、TRAP 命令、または抑止文字 (29 ページの『非 REXX コマンドの表示の抑制』を参照) を使用します。TRAP 命 令の詳細については、NetView オンライン・ヘルプおよび REXX ライブラリーを 参照してください。 NetView コマンド・リスト言語で作成されたコマンド・リストの処理時に、オペレ ーターに表示されるデータの量を制御するには、&CONTROL ステートメント (124 ページの『&CONTROL ステートメント』を参照)、&WAIT SUPPRESS 制御ステー トメント (159 ページの『&WAIT ステートメントのカスタマイズ』を参照)、また は抑止文字 (112 ページの『抑止文字の規則』を参照) を使用します。 コマンド・リストの処理時に表示されるコマンドとメッセージは、NetView コマン ド・ファシリティー・パネルのメッセージ領域に表示されます。通常、コマンド・ リストの出力の前には C というタイプ・コードが付いています。NetView のパネ 16 プログラミング: REXX および NetView コマンド・リスト言語 基本トピック ル・レイアウトとそのパネルに送信されるメッセージ形式の詳細については、「IBM Tivoli NetView for z/OS ユーザーズ・ガイド: NetView」を参照してください。 メッセージの処理 メッセージ は、次の部分から構成されているオブジェクトです。 v オプションの応答 ID v 1 行以上のテキスト v 各行のテキストに関連した属性 v メッセージ全体に関連した属性 メッセージに存在する 現行メッセージ は常に、最大で 1 つのみです。現行メッセ ージは、以下のイベントのうち直近に発生したイベントにより設定されます。 v メッセージ自動化。プロシージャーが呼び出される際、自動化をトリガーしたメ ッセージが現行メッセージです。NetView 自動化の詳細については、103 ページ の『第 5 章 自動化リソース管理』を参照してください。 v パイプライン。直前のステージから渡されたメッセージによって、プロシージャ ーの呼び出しがトリガーされると、そのメッセージが現行メッセージになりま す。 v REXX の場合は、メッセージの正常な TRAP 後に発生する MSGREAD です。 NetView CLIST 言語の場合は、&WAIT です。制御変数を &WAIT とともに使用 する方法の詳細については、157 ページの『&WAIT で使用される制御変数とパ ラメーター変数』を参照してください。 v プロシージャーが NetView パイプラインを「第 1 以外の」ステージとして動作 している SAFE * とともに呼び出す場合。 v LINKPD コマンドの結果が処理される場合。LINKPD コマンドの詳細について は、178 ページの『LINKPD の結果』を参照してください。 前にリストされた、現行メッセージを設定するすべての方法は、メッセージを現行 メッセージにした方法にかかわらず、現行メッセージからデータを戻します。複数 行オペレーター宛メッセージ (MLWTO) の場合、これらの関数により検証されるの はメッセージの先頭行だけです。 現行メッセージ に関する情報は、REXX 関数か NetView CLIST 変数 ( 59 ページ の『メッセージ処理情報関数』を参照)、MSU 関数 ( 76 ページの『REXX 管理サー ビス単位情報関数』を参照)、またはメッセージ情報のコマンド ( 186 ページの『コ マンド・リストで使用されるコマンド』を参照) を使用して検索できます。 注: 1. 通常、先頭行のテキストにある、ブランクで区切られた先頭の語がメッセージ ID として見なされます。応答 ID (存在する場合) は無視されます。 2. 現行メッセージがあるかどうかをテストするには、次のコマンドを発行します。 PIPE SAFE * | COUNT LINES | VAR LINECOUNT 変数 LINECOUNT に 0 が入っている場合には、現行メッセージは存在しませ ん。LINECOUNT に 0 以外の値が入っている場合には、現行メッセージが存在 します。 第 1 章 はじめに 17 基本トピック 3. 現行メッセージに関するデータを戻す REXX 関数は、メッセージが現行メッセ ージになった方法に関係なくデータを戻します。複数行のメッセージの場合、こ れらの関数により検証されるのは先頭行だけです。ただし、特に明記されている 関数を除きます。 4. MSGREAD、&WAIT、PIPE SAFE *、または LINKPD が発行されると、メッセージが ヌルであっても (MSGREAD が RC=4 の場合など)、結果のメッセージが現行メ ッセージになります。 18 プログラミング: REXX および NetView コマンド・リスト言語 第 2 章 REXX 言語の概要 本章では、REXX について簡潔に紹介します。ただし、すべての REXX の機能や 構文規則について説明するわけではありません。本書では、主として Tivoli NetView for z/OS プログラムが備えている REXX の命令と機能に焦点をあてま す。 注: REXX の詳細については、TSO/E REXX ライブラリーを参照してください。 REXX 言語の概要 REXX は、インタープリター 言語として頻繁に使用されます。REXX インタープ リターは、実行するときにプログラム上で直接 1 行ずつ、そして 1 ワードずつ処 理します。解釈済み言語は、COBOL などの他のプログラミング言語とは異なり、 REXX コマンド・リストを実行する前にコンパイルする必要はありません。ただ し、処理時間を短縮するためには、REXX コマンド・リストを実行する前にコンパ イルするという方法もあります。 各 NetView REXX コマンド・リスト、または Data REXX ファイルは、コメント で開始する必要があります。REXX のコメントは、始まりは /*、終わりは */ で示 し、 REXX コマンド・リスト内のどこでも必要に応じて使用できます。 REXX コマンド・リストまたは Data REXX ファイルは一連の文節で構成されてお り、それぞれの文節には別々の目的があります。簡単な REXX コマンド・リストで は、文節はコーディングされたとおりの順序で解釈されます。処理順序を変更する 特殊なコマンドを使用することによって、文節の実行順序を制御できます。 REXX 命令は、REXX インタープリターに何かを行うように命令します。REXX 命 令はキーワードで識別されますが、このキーワードは文節の最初の項目でなければ なりません。 文節の 2 番目の項目が等号 (=) である場合、その文節は代入文節として識別されま す。代入節は、変数に値を指定する場合に使用します。変数は、コマンド・リスト 内の文節に異なる値を定義します。 文節の 2 番目の項目がコロン (:) であると、その文節はラベルとして解釈されま す。ラベルは、制御を渡すターゲット・ステートメントを識別します。 REXX 言語は、関数と呼ばれる内部ルーチンまたは外部ルーチンを呼び出す場合に 使用します。 REXX 関数名の後には、必ず括弧を続けなければなりません。括弧の 中には、最高 10 個の式を互いにコンマで分離して並べることができます。式は、 計算が可能です。 REXX インタープリターは、関数の名前によって示される計算を 実行して、結果を返します。その計算結果は、式の中の関数呼び出しに置き換えて 使用されます。関数を使用するには、コマンド・リストまたは Data REXX ファイ ルの中で結果をアクセスしたい場所に、関数名を指定します。 REXX 言語には、あ © Copyright IBM Corp. 1997, 2011 19 REXX 言語の概要 らかじめ定義された操作を実行する組み込み関数も、何個か組み込まれています。 REXX 言語の機能についての詳しい説明は、 REXX ライブラリーを参照してくだ さい。 REXX コマンド・リストのコンパイルと実行 REXX コマンド・リストをコンパイルすることによって、パフォーマンスを格段に 向上させることができます。 コマンド・リストがコンパイルされるシステムには、IBM REXX/370 コンパイラー 製品をインストールする必要があります。 REXX コマンド・リストのコンパイル方法についての手順は、REXX ライブラリー を参照してください。コンパイルされた REXX コマンド・リストのパフォーマンス に関する詳細については、「IBM Tivoli NetView for z/OS チューニング・ガイド」 を参照してください。 注: 1. Tivoli NetView for z/OS プログラムが常駐するシステム上で、コンパイラーをイ ンストールしたり、始動する必要はありません。 2. コンパイルされた実行可能ファイルは、コンパイルされていない元のコマンド・ リストより大きくなる (大きいスペースが必要) 可能性があります。 3. Tivoli NetView for z/OS プログラムは、REXX/370 コンパイラーの CEXEC (コ ンパイル済み EXEC) 出力形式と OBJECT (オブジェクト・デック) 出力形式を サポートします。 4. オブジェクト・デックからロード・モジュールを作成する際は、次の点に注意し てください。 v オブジェクト・デックは、REXX コンパイラーで作成および保存する必要が あります。 v REXXL カタログ式プロシージャー内の、次の 2 つの DDNAME は特に重要 です。 – SYSIN DD ステートメントは、オブジェクト・デック (入力) を参照する 必要があります。 – SYSLMOD DD ステートメントは、ロード・モジュール (出力) によって指 定されたロード・ライブラリーを参照する必要があります。 – オブジェクト・デックは、EFPL スタブとリンク・エディットしてロード・ モジュールを作成しなければならず、またロード・モジュール名は、どの NetView、REXX、またはその他のロード・モジュール名とも競合してはな りません。 – REXXL カタログ式プロシージャーは、ロード・モジュールを作成するため に使用され、REXX.V6R1M0.EAGPRC の中にあります。 – ロード・モジュールは、REXX CALL 命令を介して、または REXX 関数 としてのみ、呼び出すことができます。 5. CEXEC 形式でコンパイルされた REXX コマンド・リストを実行するには、出 力ファイルを DSICLD データ・セットのいずれか 1 つのメンバーに入れます。 20 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 6. コンパイルされた REXX コマンド・リストを実行するシステム上で、許可され たライブラリーにコンパイラー・ランタイム・ライブラリーをインストールして ください。 解釈される REXX での %INCLUDE の使用 コードを簡単に再利用できるようにするには、REXX コードのセグメントを使用し て DSICLD データ定義のメンバーを作成し、 NetView プログラムで提供される %INCLUDE 機能を使用します。 準備したコード・セグメントを組み込むには、プロ グラムの先頭行を /*%NETVINCL で開始し、その後に、選択したコメントを続けま す。次に、プログラムの任意の場所で、独立した行に %INCLUDE をコーディング し、その後に、準備したメンバー名を続けます。準備されたコード・セグメントが 実際に現れてくるのは、プログラムが解釈される時点です。それはあたかも、その 準備されたコード・セグメントがプログラムに既に埋め込まれていたかのようにな ります。 REXX プログラムをコンパイルする予定の場合は、INCLUDE 関数を使用しないで ください。 Data REXX の使用 Data REXX ファイルは、Data REXX プログラム外の環境に (コマンドではなく) データを送信する特殊な REXX プログラムです。 %INCLUDE の処理をサポートする NetView アプリケーションの場合、アプリケー ションが通常読み取るメンバーを Data REXX プログラム・ファイルで置き換える ことができます。ユーザーのプログラムで生成されるデータは、アプリケーション に引き渡されるデータとなります。 REXX 言語では、外部の ADDRESS 環境をサポートします。一般的に、これは呼び 出されるコマンドのためのものです。Data REXX では、サポートされる ADDRESS 環境は NETVDATA のみです。NETVDATA 環境に送信される文字ストリングは、 コマンドではなくデータとなります。このデータは、Data REXX プログラム・ファ イルが読み取られて処理された後にアプリケーションに引き渡されます。アプリケ ーションからは、Data REXX プログラムの REXX 言語要素は全く認識されませ ん。 注: ここでは、生成されるデータ とは、受信アプリケーションに送られる前に評価 が必要な REXX 変数または関数呼び出しを含むデータのことです。受信アプリ ケーションの 1 つの例は、Tivoli NetView for z/OS の初期化中に行われるスタ イル・シートの処理フェーズです。 定義上、Data REXX ファイルは、最初のレコードの 1 桁目が Data REXX ファイ ル・ディレクティブの /*%DATA または /*%LOGIC で始まる任意の NetView デー タ・ファイルです。これらの Data REXX ファイル・ディレクティブにより、ディ レクティブの後の Data REXX コード形式が決まります。これらのディレクティブ は、ロジック形式とデータ形式を切り替える際に役立ちます。これらのディレクテ ィブについて次に説明します。 第 2 章 REXX 言語の概要 21 REXX 言語の概要 /*%LOGIC Data REXX ディレクティブが有効な場合、データは従来の REXX プロ グラムのコマンドと同様に Data REXX プログラムに組み込まれるか、生成されま す。これはロジック・モード とも呼ばれます。 /*%DATA ディレクティブが有効な場合、組み込みデータまたはリテラル・データ が、アプリケーション・プログラムが予期するとおりの形式でプログラミングされ ます。REXX プログラム (NETVDATA アドレス環境用に生成されたデータ文節を 含む) は、各レコードの 1 桁目と 2 桁目に %> を付けて書き込まれます。これは データ・モード とも呼ばれます。 サンプルの BNJMBDST は、ロジック・ファイルの例です。サンプルの CNMCMSYS は、データ・ファイルの例です。サンプルの CNMSTASK は、データ 形式とロジック形式の両方を使用します。 データ・モードは、受信アプリケーションが受信するとおりの形でデータを記述で きるリテラル・データを含んだ Data REXX プログラムのセクションを、大量に記 述する場合に役立ちます。その全体または一部がプログラミングによって動的に生 成されるデータは、Data REXX プログラム・ファイル内で、1 桁目と 2 桁目が %> で始まらなければなりません。例えば、ユーザーのアプリケーションが現在実 行されている Tivoli NetView for z/OS プログラムのドメイン名でデータ・レコード を作成するには、1 桁目から次のステートメントをコーディングします。 %> ’My domain name is’ domain()’.’ ユーザーのアプリケーションが現在実行されている Tivoli NetView for z/OS プログ ラムのドメイン名が CNM01 の場合は、次のデータ・レコードが読み取られます。 My domain name is CNM01. Data REXX で生成されたデータ・レコードが次のレコードまで継続して書き込まれ る場合は、次のレコード先頭の 1 桁目から %> を付けます。例えば、前の例に続 けて、ユーザーのアプリケーションが現在実行されている Tivoli NetView for z/OS プログラムのバージョンとリリースを含む記述を追加するには、 1 桁目から次のス テートメントをコーディングします。 %> ’My domain name is’ domain() ’and my NetView version is’, %> substr(netview(),3,1) ’and release is, %> substr(netview(),4,1)’.’ ユーザーのアプリケーションが現在実行されている Tivoli NetView for z/OS プログ ラムのドメイン名が CNM01 であり、Tivoli NetView for z/OS プログラムのバージ ョンが 5、リリースが 4 の場合は、次のデータ・レコードが読み取られます。 My domain name is CNM01 and my NetView version is 5 and release is 4. Data REXX ファイルの処理 NetView アプリケーションが Data REXX プログラム・ファイルを読み取る際、処 理は 3 ステップで行われます。 1. REXX プログラムがロードされます。NetView アプリケーションは、NetView DSIDKS サービスを使用して Data REXX ファイルにアクセスし、それらを Data REXX ファイルとして処理する必要があります。DSIDKS サービスがファ イル・メンバーを検出すると、ファイルの最初のレコードを読み取り、そのファ イルの先頭に 2 つの Data REXX ディレクティブのいずれかがあるかを判別し 22 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 ます。いずれかのディレクティブがある場合は、Data REXX ファイル全体がス トレージ内にロードされます。ロード時、ファイルは REXX インタープリター が実行できる形式に再フォーマットされます。データ・モードの場合、%> シン ボルが REXX インタープリターに認識されないようにレコードがロードされま す。先頭に %> シンボルがないレコードは、REXX インタープリターで評価され ないで NETVDATA アドレス環境に渡されるように、ロードされます。 ロジック・モードで読み取られるレコードは、変更されずにストレージ内に読み 取られます。Data REXX ディレクティブは削除されません。これは、これらの ディレクティブが REXX コメントとして REXX に見なされ、無視されるが削 除されないためです。このとき、%INCLUDE ステートメントは処理されませ ん。 2. REXX プログラムが完了するまで実行されます。REXX プログラムをロードし た後、プログラムは REXX インタープリターに渡されて実行されます。実行 中、外部コマンドとして REXX に見なされる REXX 文節は、NETVDATA ア ドレス環境に送られます。これらのコマンドは、実際は、Tivoli NetView for z/OS プログラムで収集され、NetView アプリケーションに渡されるデータ・レ コードです。このステップで、%INCLUDE ステートメントが Data REXX プロ グラムにより生成されます。 3. 結果として生成されたデータは、アプリケーションにより読み取られます。すべ てのデータ・レコードが Tivoli NetView for z/OS プログラムで収集された後、 NetView アプリケーションに渡されます。読み取られるファイルが Data REXX プログラムであるかどうかは、NetView アプリケーションには認識されません。 このステップ中に、%INCLUDE ステートメントは、DSIDKS サービスによって 検出されると必ず処理されます。また、組み込みファイルは、Data REXX ファ イルかどうかを判別するために検査され (先頭行で判別)、Data REXX ファイル だった場合は独立して、同じ 3 ステップで処理されます。 最初のステップでは、ソース・ファイルの各行は個別に処理されます。ただし、2 番目のステップでは、REXX は Data REXX プログラム全体を REXX 言語のルー ルに従って解釈します。このため、1 行の REXX エレメントが、以降の行が解釈さ れる方法に影響を与えます。例えば、次の Data REXX ファイルがあるとします。 1 2 3 4 5 6 /*%DATA Put any comments you want here. %> x = cglobal(’y’); /* getting a value for x PASSWORD = XYZ %> any comment */ %> IF tower(’AON’) THEN AUTOCMD.mytable.ORDER = C */ 3 行目と 6 行目に %> コーディングがないことに注意してください。 tower(’AON’) 関数が真と評価されると、この例により次のレコードが生成されま す。 AUTOCMD.mytable.ORDER = C 最初のステップで、3 行目がロードされます。ただし、3 行目は 3 番目のステップ では認識されません。それは、2 行目の REXX コメントの開始区切り文字 /* と 4 行目の REXX コメントの終了区切り文字 */ が一致するためです。 第 2 章 REXX 言語の概要 23 REXX 言語の概要 6 行目は、先頭に %> データ REXX 指定子がありませんが、直前の IF-THEN の評 価の結果となる部分です。6 行目は REXX コードと似ていますが Data REXX イ ンタープリターでは評価されません。この行は、ここに書かれたとおりの形で NETVDATA アドレス環境に送られます (tower(’AON’) 関数が真と評価された場 合)。6 行目が %INCLUDE 命令だった場合も同様です。このような場合、 %INCLUDE ステートメントは、Data REXX プログラムの完了後に Tivoli NetView for z/OS プログラムで処理されます。 追加情報 以下の情報は、データとロジックの両方のファイルに適用されます。 v Data REXX は、次の場所でのみサポートされています。 – CNMCMD – CNMSTYLE – DSICNM – DSIOPF – 自動化テーブル – コード・ポイント・テーブル – コマンド権限テーブル – コマンド・ファシリティー・パネル・フォーマット定義メンバー (CNMSCNFT など) – ハードウェア・モニター (NPDA) メンバー (BNJHEADR 以外) – INCL オプションを指定した NetView ディスク・サービスを使用して読み取ら れるメンバー – オペレーター・プロファイル (DSIPRF) メンバー – セッション・モニター (NLDM) メンバー – スパン・テーブル – HELPMAP v Data REXX は、VSAM ファイルではサポートされていません。 v 代わりに、通常の REXX 環境でコマンドとして処理される REXX 文節が NETVDATA 環境に渡されます。その結果、これらの文節が、メンバーを読み取 るアプリケーションによりデータとして認識されます。 v Data REXX ファイルは、全体がストレージに読み取られるため、小さいサイズで なければなりません。Data REXX ファイルで参照される %INCLUDE ファイル も、それが Data REXX ファイルであれば、ストレージに読み取られます。Data REXX ファイルではないファイルは、全体がストレージに読み取られることはあ りません。したがって、ストレージを節約するために、%INCLUDE ファイルで Data REXX ファイルを使用しないでください。 v SAY 命令と TRACE 命令による出力ストリングは、ネットワーク・ログに書き 込まれます。 v REXX キーワード命令の ADDRESS は使用できますが、NETVDATA アドレス のみがサポートされます。 v 次の REXX 関数は、Data REXX ファイルでは使用できません。 – GETMSG – LISTDSI – MSG – MVSVAR 24 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 – – – – – – OUTTRAP PROMPT SETLANG STORAGE SYSDSN SYSVAR v 次の REXX キーワード命令は、Data REXX ファイルでは使用できません。 – TRACE ? (対話式トレース) – PARSE EXTERNAL v PULL と PARSE PULL 命令は、REXX データ・スタックからのデータにアクセ スするためだけに使用できます。オペレーター入力を休止するために PULL およ び PARSE PULL を使用することは避けてください。Data REXX には、オペレ ーター入力の機能がありません。 v 同義名を使用して Data REXX から呼び出された REXX 関数は、NetView 初期 化の CNMSTYLE 処理中はサポートされていません。 Data REXX ディレクティブ Data REXX ファイル・ディレクティブにより、Data REXX コードの形式が決まり ます。これらのディレクティブは、ロジック形式とデータ形式を切り替える際に役 立ちます。 /*%DATA NetView REXX /*%DATA ディレクティブは、その後に続く Data REXX コードに 対してデータ・モードを指定します。/*%LOGIC ディレクティブが検出されるか、 ファイルの終わり (EOF) に到達するまで、ファイルはデータ・モードのままです。 NetView REXX /*%DATA ディレクティブの構文は、次のとおりです。 /*%DATA /*%DATA コメント*/ ここで各要素は以下のとおりです。 /*%DATA /*%DATA ディレクティブの先頭には、1 桁目にスラッシュ記号 (/) を付けなけ ればなりません。DATA の後にスペースが 1 つ必要で、DATA はすべて大文 字である必要があります。ファイルは、1 行目が DATA または LOGIC ディレ クティブで開始する必要があります。 comments 挿入したい任意のコメントを指定します。コメントは、複数の行にまたがること ができます。 */ DATA ディレクティブの終わりを指定します。 使用上の注意 v データ・モードでは、すべての REXX 命令の先頭に %> を 1 桁目に付ける必要 があります。 %> で始まらない行は、データとして処理されます。 第 2 章 REXX 言語の概要 25 REXX 言語の概要 例: 次の例は、Data REXX をデータ・モードでコーディングする方法を示します。 /*%DATA --- demonstrate data mode */ Data line (this line has two leading blanks) %>IF CGLOBAL(’ABC’) = 1 THEN %INCLUDE ABCFILE %>ELSE %> DO %> ’%INCLUDE’ CGLOBAL(XYZfilenameVar) Another data line %> END Final data line 関連ステートメント: /*%LOGIC /*%LOGIC NetView REXX /*%LOGIC ディレクティブは、その後に続く Data REXX コードに 対してロジック・モードを指定します。/*%DATA ディレクティブが検出される か、ファイルの終わり (EOF) に到達するまで、ファイルはロジック・モードのまま です。 NetView REXX /*%LOGIC ディレクティブの構文は、次のとおりです。 /*%LOGIC /*%LOGIC コメント*/ ここで各要素は以下のとおりです。 /*%LOGIC /*%LOGIC ディレクティブの先頭には、1 桁目にスラッシュ記号 (/) を付けな ければなりません。LOGIC の後にスペースが 1 つ必要で、LOGIC という文字 はすべて大文字の必要があります。ファイルは、1 行目が DATA または LOGIC ディレクティブで開始する必要があります。 comments 挿入したい任意のコメントを指定します。コメントは、複数の行にまたがること ができます。 */ LOGIC ディレクティブの終わりを指定します。 使用上の注意 v 通常の REXX 環境でコマンドとして処理される REXX 文節が代わりに NETVDATA 環境に渡されます。その結果、これらの文節が、メンバーを読み取 るアプリケーションによりデータとして認識されます。 v ロジック・モードでは、REXX 命令の先頭に %> を付けてはなりません。 例: 次の例は、Data REXX をロジック・モードでコーディングする方法を示しま す。 /*%LOGIC --- demonstrate logic mode */ ’ Data line (this line has two leading blanks)’ IF CGLOBAL(’ABC’) = 1 THEN ’ %INCLUDE ABCFILE’ ELSE DO 26 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 ’%INCLUDE’ CGLOBAL(XYZfilenameVar) ’Another data line’ END ’Final data line’ 関連ステートメント: /*%DATA REXX コマンド・リストおよび Data REXX ファイルのコーディング規則 このセクションでは、 Tivoli NetView for z/OS プログラム用の REXX コマンド・ リストまたは Data REXX ファイルのコーディングに適用される構文規則を説明し ます。 レコード・サイズ Tivoli NetView for z/OS プログラム用 REXX コマンド・リストまたは Data REXX ファイル内のレコードのデータの長さは、最高 80 文字までです (レコードは 80 文字の固定長にする必要があります)。REXX コマンド・リストまたは Data REXX ファイルの最初のレコードの 73 桁目から 80 桁目までに数字が含まれている場 合、そのコマンド・リストまたは Data REXX ファイルにはシーケンス番号が含ま れていると見なされます。Tivoli NetView for z/OS プログラムは、実行可能ステー トメントまたは Data REXX 制御ステートメントを含む行から、そのシーケンス番 号を削除します。すなわち、シーケンス番号は、データのみと見られる行 (/*%DATA セクション内に含まれ、先頭に %> がない行) に保持されます。 Tivoli NetView for z/OS プログラムは、REXX コマンド・リストと Data REXX ファイル 内のすべての REXX レコードから末尾のブランクも切り捨てます。ブランクの REXX レコードは廃棄されませんが、切り捨てられてブランク 1 文字になります。 引用符の使用 REXX コマンド・リストまたはロジック・モードの Data REXX ファイルのストリ ング上での変数置換を避けるには、そのストリングを単一引用符 (') または二重引 用符 (") で囲みます。引用符は、REXX にそのストリングで変数置換を実行させた くないということを知らせます。つまり、REXX インタープリターにストリングを 解釈させたくないということです。 REXX は、コマンド・リスト・ステートメント または Data REXX ステートメントで開始引用符 (単一または二重) を検出すると、 対応する終了引用符に達するまで解釈を停止します。 REXX 命令は、引用符で囲まないでください。REXX は、自分自身の命令を認識し て、 REXX 命令の変数置換を実行しません。次の例は、引用符を使用して REXX SAY 命令の変数置換を防ぐ方法を示しています。 SAY ’THIS IS A STRING WITH SINGLE QUOTATION MARKS’ SAY "THIS IS A STRING WITH DOUBLE QUOTATION MARKS" これら 2 つの命令は、REXX 使用時には次のテキストをユーザーの端末に表示し、 Data REXX 使用時にはネットワーク・ログに書き込みます。 THIS IS A STRING WITH SINGLE QUOTATION MARKS THIS IS A STRING WITH DOUBLE QUOTATION MARKS 引用符で囲まれたストリングのテキスト中でアポストロフィまたは二重引用符を使 用する場合、次の行をコーディングします。 第 2 章 REXX 言語の概要 27 REXX 言語の概要 SAY SAY SAY SAY "IT’S EIGHT O’CLOCK. TIME TO BRING UP CICS." ’IT’’S EIGHT O’’CLOCK. TIME TO BRING UP CICS.’ ’PLEASE ENTER "GO NODENAME" OR "GO STOP"’ "PLEASE ENTER ""GO NODENAME"" OR ""GO STOP""" 最初の 2 つの命令は、いずれも次の例の最初の行を表示、または Data REXX 使用 時にはネットワーク・ログに書き込みます。最後の 2 つの命令は、いずれも 2 番 目の行を表示します。 IT’S EIGHT O’CLOCK. TIME TO BRING UP CICS. PLEASE ENTER "GO NODENAME" OR "GO STOP" 一般に、任意の NetView コマンド、または Tivoli NetView for z/OS プログラムが 認識するシステム・コマンドは、引用符で囲んでください。 このようなコマンドの オペランドで、変数置換を行いたい場合は例外です。変数置換を行いたい場合は、 そのオペランドを引用符の外側に置いてください。 注: NetView コマンドは、Data REXX ファイルからは発行できません。 Data REXX でサポートされているアドレス環境は、ADDRESS NETVDATA だけで す。 REXX 文節が REXX で外部コマンドとして処理される場合、Data REXX では外部データとして処理されます。 例えば、コマンド・リスト内で NetView INACT コマンドを使用して、NODE1 と いう名前のノードを非活動化したい場合は、次のようにコーディングします。 ’INACT NODE1’ コマンド・リストに NODE という名前の変数が含まれているときに、NODE 変数 の現行値を名前にもつノードを非活動化したい場合は、次のようにコーディングし ます。 ’INACT ’ NODE 次の例では、REXX にコマンドの一部分に限って、変数置換を行わせるために引用 符を使用します。この例では、DDNAME はすでに割り振られているものとしま す。この例は、最初に DDNAME という名前の変数へのユーザー入力を解析しま す。次に、TSO/E の EXECIO コマンドを使用して、その DDNAME の 1 行を読 み取ります。 ADDRESS MVS は REXX 命令なので、引用符では囲みません。 EXECIO は TSO/E コマンドなので、引用符はこの前から始まります。引用符は DDNAME の前で終了し、REXX が DDNAME 変数の現行値を EXECIO コマンド に置き換えることができるようにします。 EXECIO コマンドの残りの部分は、 STEM オペランドと LINE オペランドでは変数置換が行われないようにするため に、引用符で囲みます。 ARG DDNAME ADDRESS MVS ’EXECIO 1 DISKR ’ DDNAME ’ ( STEM LINE’ 注: 1. 複数レコードにまたがる引用符で囲まれたストリングのある REXX 文節を書く ときは、注意が必要です。 Tivoli NetView for z/OS プログラムは、コマンド・ リストを実行する前にすべての REXX コマンド・リスト・レコードから末尾の ブランクを切り捨てるので、複数のレコードにまたがる、引用符で囲まれたスト リングをもつ REXX 文節は、期待どおりに実行されない可能性があります。例 28 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 えば、次に示す複数レコードにまたがる REXX 文節の集合では、 Tivoli NetView for z/OS プログラムが引用符付きストリングの中央にあるブランクを出 力から削除します。 次のコマンドを入力します。 say ’ABC DEF’ 出力は次のテキストです。 ABCDEF すべての末尾ブランクが、文字 C と D の間から削除されました。 保持しておくブランクは、以下の例に示すように、その次の行にコーディングし ます。 say ’ABC DEF’ 出力は次のテキストです。 ABC DEF 2. 引用符付きストリングを、 NetView コマンド・リストの次の行に継続する必要 がある場合は、次のステートメントをコーディングします。 SAY ’THIS IS AN EXAMPLE OF A LONG’, ’QUOTED STRING’ 出力は次のテキストです。 THIS IS AN EXAMPLE OF A LONG QUOTED STRING 連結のコンマは、端末装置上では、最初の引用符付きストリングを表示した後に 1 個のブランクを表示します。ブランクを表示したくない場合は、連結のバーを 使用すれば削除することができます。コマンド・リストに長いシステム・コマン ドをコーディングするときには、このようなことがよくあります。連結バーは、 次のようにコーディングします。 SAY ’THIS IS AN EXAMPLE OF A LONG QUO’||, ’TED STRING’ 出力は次のテキストです。 THIS IS AN EXAMPLE OF A LONG QUOTED STRING 非 REXX コマンドの表示の抑制 REXX 命令のエコーを制御するには、REXX TRACE コマンドを使用します。非 REXX (例えば NetView) コマンドを抑制するには、CNMSTYLE メンバー内の SUPPCHAR ステートメントを使用します。 注: 1. IGNRLSUP は、REXX コマンド・リストから発行されるコマンドに対しては無 視されます。 2. FOLDUP は、REXX コマンド・リストから発行されるコマンドに対しては無視 されます。 第 2 章 REXX 言語の概要 29 REXX 言語の概要 IGNRLSUP コマンドと FOLDUP コマンドの詳細については、「IBM Tivoli NetView for z/OS Command Reference Volume 1 (A-N)」と「IBM Tivoli NetView for z/OS Command Reference Volume 2 (O-Z)」を参照してください。 状況を戻りコードに入れて戻すコマンドを発行するとき、コマンドからの同期出力 を抑制すれば、コマンド・リストのパフォーマンスを上げることができます。同期 出力を抑制するには、抑止文字を 2 回コーディングします。抑止文字が不明か、変 更されている可能性がある場合、あるいは抑止文字が CNMSTYLE メンバー内で明 示的に定義されていない場合、次に示す抑止の一般形式を使用してください。 SUPPCHAR()||SUPPCHAR()||’SET PF24 IMMED RETRIEVE’ コマンドの同期出力がオペレーターに表示されなくなります。 戻りコードによって状況が十分に分かっていて、同期的に行モード・メッセージを 作成するコマンドのパフォーマンスを上げたい場合は、二重抑止文字を使用しま す。二重抑止文字を使用しても、コマンドによってスケジュールされた出力 (例え ば、D NET、APPLS) には影響ありません。また、長期実行コマンド (例えば、 NLDM) の出力を確実に減らすわけではありません。 抑止文字の詳細については、 93 ページの『セッション情報関数』の SUPPCHAR() 関数を参照してください。PIPE コマンドの HOLE ステージでも抑止が可能です。 詳しくは、「IBM Tivoli NetView for z/OS プログラミング: パイプ」を参照してく ださい。 Tivoli NetView for z/OS の REXX 命令の制限 このセクションでは、 NetView プログラム用の REXX コマンド・リスト内で、 REXX 命令をコーディングする際に適用される制約事項について説明します。 オペレーター入力のための休止 REXX 命令 (PARSE EXTERNAL、PARSE PULL、PULL、および TRACE ?) は、 オペレーター入力のためにコマンド・リストを休止させます。 注: この方法は、3270 型画面でオペレーターによって直接発行された場合にのみ使 用できます。ご使用のコマンド・リストが以下の項目のいずれかを発信元とす る可能性がある場合は、この方法をオペレーターとの通信に使用しないでくだ さい。 v NetView 管理コンソール v パイプライン v 自動タスク v 一部の在席 MVS コンソール・インターフェース v EXCMD コマンドまたは RMTCMD コマンドによってリモート側で発行され た呼び出し PARSE EXTERNAL 命令、または PARSE PULL 命令を他の命令とともに使用する ことによって、オペレーターに質問して入力された応答を処理するコマンド・リス トをコーディングすることができます。オペレーターが入力する必要があるものの 記述には、REXX SAY 命令を使用します。コマンド・リストを一時的に停止するに は、SAY 命令の後に PARSE EXTERNAL 命令か、 PARSE PULL 命令をコーディ 30 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 ングします (PARSE PULL の場合は、REXX データ・スタックにデータが存在する 場合を除きます)。コマンド・リストは、一時的に停止された後、オペレーターが NetView GO コマンドを入力すると継続します。コマンド・リストに渡すデータ は、 GO コマンドのオペランド (複数も可) の形式で入力します。例えば、コマン ド・リストがオペレーターからの YES または NO の応答を処理するようにしたい 場合は、次のような SAY 命令と、 PARSE EXTERNAL 命令をコーディングしま す。 SAY ’ENTER "GO YES" OR "GO NO" TO CONTINUE’ PARSE EXTERNAL ANSWER オペレーターは、GO YES または GO NO のいずれかでコマンド・リストに応答し ます。 GO コマンドはコマンド・リストに処理を継続させ、YES または NO の値 は PARSE EXTERNAL 命令により拾われて、変数 ANSWER に入れられます。 Data REXX ファイルで PARSE EXTERNAL、PARSE PULL、PULL および TRACE を使用する場合の制約事項については、 21 ページの『Data REXX の使 用』を参照してください。 SAY 命令の使用 REXX SAY 命令では任意の長さの文字ストリングを使用できますが、Tivoli NetView for z/OS は一度に 32 000 文字しか表示できません。 Tivoli NetView for z/OS プログラムの REXX コマンド・リストで REXX SAY 命 令を発行すると、オペレーターの画面上に表示されるデータの前にヘッダーが付け られます。このヘッダーは、有効な画面フォーマットのメンバーにより定義され、 デフォルトでは 12 文字の長さです。 Data REXX ファイルでは、SAY と TRACE 命令による出力ストリングは、ネット ワーク・ログに書き込まれます。 SAY 命令のテキストは、通常の NetView メッセージとして処理されるので、 MSGID() は SAY 命令の出力の最初の項目として指定する場合には注意してくださ い。このような処理を行うと、メッセージが TRAP 命令のトラップにかかり、誤っ て WAIT 命令を実行してしまうか、または自動化処理がループしてしまう恐れがあ ります。 CALL 命令の使用 呼び出されたルーチンでより簡単に解析できるようにデータ (引数) を受け渡すに は、REXX CALL 命令を使用します。CALL 命令の詳細については、TSO/E REXX ライブラリーを参照してください。ただし、CALL 命令を使用する場合、呼び出し 先プログラムは呼び出し側プログラムの変数に PIPE VAR と STEM ステージでア クセスすることはできません。 他の REXX コマンド・リストから REXX コマンド・リストを呼び出すために CALL 命令を使用する場合は、注意が必要です。呼び出されるコマンド・リストは サブルーチンのように扱われるので、一部のデータは初期コマンド・リストと呼び 出されるコマンド・リストの間で共用されます。例えば、トラップされたメッセー ジ・キュー、 NetView コマンド (GETMLINE など) の値、およびメッセージ処理 REXX 関数 (MSGID など) の値は、 2 つのコマンド・リストの間で共用されま 第 2 章 REXX 言語の概要 31 REXX 言語の概要 す。このようなデータの共用を避けるために、CALL 命令を使用せずに、NetView コマンドとしてルーチンを呼び出してください。Data REXX の使用時にはこのオプ ションを使用することができないことに注意してください。 REXX 関数に関する NetView の制約事項 このセクションでは、 Tivoli NetView for z/OS プログラム用の REXX コマンド・ リストまたは Data REXX ファイルに REXX 関数をコーディングする際に適用さ れる、制約事項を説明します。 REXX LINESIZE() 関数は、Tivoli NetView for z/OS 用の REXX コマンド・リスト または Data REXX ファイルで使用すると、常に 32 728 の値を戻します。 Data REXX ファイルで REXX 関数を使用する場合の制約事項については、 21 ペ ージの『Data REXX の使用』を参照してください。 REXX STORAGE() 関数を使用可能にするには、DEFAULTS コマンドまたは OVERRIDE コマンドで REXXSTRF キーワードを使用してください。 REXX STORAGE() 関数は、Data REXX ファイルでは、使用できません。 REXX 関数パッケージの作成 Tivoli NetView for z/OS プログラム用に、独自の REXX 関数パッケージを作成す ることができます。Tivoli NetView for z/OS プログラムは、NetView REXX コマン ド・リストで使用する関数パッケージの作成を支援するために、2 つのダミー・デ ィレクトリーを用意しています。1 つのディレクトリーはユーザー関数パッケージ 用で (DSIRXUFP)、もう 1 つのディレクトリーはローカル関数パッケージ用 (DSIRXLFP) です。 ユーザー関数パッケージの場合はロード・モジュール DSIRXUFP に、またはロー カル関数パッケージの場合は DSIRXLFP に、実ディレクトリーと関数コードをリン ク・エディットしてください。ユーザーの関数コードとのインターフェースをコー ディングする際の一部として、新しい EVALBLOCK を取得するために、NetView DSIRXEBS マクロを使用します。 実ディレクトリーのコーディング、および関数コードへのインターフェースのコー ディングについての説明は、REXX ライブラリーを参照してください。 DSIRXEBS マクロと関数パッケージ、および関数パッケージ・ディレクトリーの作 成については、「IBM Tivoli NetView for z/OS プログラミング: アセンブラー」を 参照してください。 Tivoli NetView for z/OS プログラムの REXX 関数パッケージのパフォーマンスを 向上させることについては、「IBM Tivoli NetView for z/OS インストール: 追加コ ンポーネントの構成」と「IBM Tivoli NetView for z/OS チューニング・ガイド」を 参照してください。 32 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 REXX コマンド・リストでアドレッシングされた環境の変更 Tivoli NetView for z/OS プログラム用の REXX コマンド・リストは、デフォル ト・アドレッシング環境として Tivoli NetView for z/OS を使用します。 この環境 を変更したい場合は、REXX ADDRESS 命令を使用します。例えば、コマンド・リ ストで MVS サブコマンドを実行するようにしたい場合は、最初に ADDRESS MVS 命令でアドレッシング環境を変更します。 ADDRESS MVS の中では、次のコマンドを使用できます。 v DELSTACK v DROPBUF v EXECIO v MAKEBUF v NEWSTACK v QBUF v QELEM v QSTACK v SUBCOM v TE v TS これらのコマンドと REXX ADDRESS 命令の詳細については、TSO/E REXX ライ ブラリーを参照してください。 NETVIEW アドレッシング環境では、コマンド・ストリング全体が大文字に変換さ れます。小文字を使用してコマンドを発行したい場合は、次のようにアドレッシン グ環境を NETVASIS に変更してください。 address netvasis 'WTO This is a mixed case message.' 注: 1. NetView REXX コマンド・リストで認識できる有効なアドレッシング環境は、 NETVIEW、NETVASIS、および任意の MVS アドレス・スペースにおいて TSO/E REXX がサポートするものだけです。 2. プログラム呼び出しを実行する SDSF などのプログラムは、リンクや接続など を行うと異常終了します。例えば、NetView 状況モニターとサブシステム・ルー ターは、プログラム呼び出しを実行できるプログラムの例です。 Tivoli NetView for z/OS プログラムは、プログラム呼び出しを実行できるプログラムなどにリン クまたは接続することはできません。 3. Tivoli NetView for z/OS プログラムは、 NetView アドレス・スペース内で TSO/E 環境をサポートしません。 4. 誤ったアドレッシング環境に経路指定されたコマンドを実行しようとすると、 Tivoli NetView for z/OS プログラムはエラーを戻します。 5. ADDRESS コマンドは、Data REXX ファイルから発行された場合、アドレス環 境 NETVDATA のみをサポートします。 第 2 章 REXX 言語の概要 33 REXX 言語の概要 Data REXX ホスト・コマンド環境 NETVDATA は、Data REXX のためのホスト・コマンド環境です。それ以外の環境 は、サポートされていません。このホスト・コマンド環境では、コマンドはサポー トされていません。 EXECIO コマンドの使用 コマンド・リスト内で EXECIO コマンドを使用する場合は、コマンド・リストが処 理を完了する前に FINIS オプション付きの EXECIO コマンドを発行するようにコ ーディングしてください。 EXECIO を使用するコマンド・リストがネストされたコ マンド・リストのチェーンの一部分になっている場合は、コマンド・リストのチェ ーンが処理を完了する前にコマンド・リストの中の 1 つが FINIS オプション付き の EXECIO を発行するように、そのチェーンをコーディングしてください。 FINIS オプションが実行される機会を得られるように SIGNAL ON HALT をコーディング できます。 EXECIO コマンドは、エラーが発生すると RC 変数を非ゼロ戻りコードに設定しま す。 EXECIO コマンドによって使用される戻りコードについては、REXX ライブ ラリーを参照してください。 EXECIO を使用して区分データ・セット (PDS) のメンバーの読み取りまたは書き込 みを行う場合、そのメンバーが存在するかどうか確かでなければ、NetView REXX の FNDMBR(...) 関数を使用してそのメンバーの存在を判別してから、EXECIO コ マンドを発行します。 REXX コマンド・リスト内で EXECIO を使用する方法の例については、219 ペー ジの『PRINT の例』および 221 ページの『TYPE の例』を参照してください。 注: EXECIO コマンドは、Data REXX ファイルでは、使用できません。 MVS コマンドと VTAM コマンドの使用 MVS および VTAM コマンドは、非同期コマンドの例です。 ユーザーのプロシー ジャーで処理するこれらのコマンドの出力を取り出すには、NetView パイプライン または TRAP と WAIT に記述されている手法を使用してください。 注: 1. REXX 文節が REXX で外部コマンドとして処理される場合、Data REXX では 外部データとして処理されます。 2. パイプラインは、Data REXX ファイルではサポートされていません。 NetView ALLOCATE コマンドと FREE コマンドの使用 NetView ALLOCATE および FREE コマンドは、 Tivoli NetView for z/OS プログ ラムからデータ・セットを動的に割り振りまたは割り振り解除します。 これらのコマンドは、データ・セットの割り振りおよび割り振り解除において、 TSO/E コマンドと非常によく似ています。ただし、これらのコマンドは、 Tivoli NetView for z/OS プログラムが提供しているので、コマンド・リストで使用すると 34 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 きに、 ADDRESS MVS 命令を使用する必要がありません。 他の NetView コマン ドと同様に、コマンドを引用符で囲んでください。 191 ページの『付録 G. NetView のための REXX コマンド・リストの例』の TYPE、TYPEIT、および PRINT の例は、 NetView ALLOCATE コマンドを使用しています。 ALLOCATE コマンドと FREE コマンドの構文については、NetView オンライン・ ヘルプを参照してください。 注: REXX 文節が REXX で外部コマンドとして処理される場合、Data REXX では 外部データとして処理されます。 REXX コマンド・リストの使用 Tivoli NetView for z/OS プログラムで REXX コマンド・リストが実行されるたび に、REXX は Tivoli NetView for z/OS プログラムのための REXX 環境をセットア ップします。コマンド・リストが終了したとき、この固有の環境を同じタスクで再 利用できるように保存しておくことができます。1 つのオペレーター・タスクで、 同時に 2 つのコマンド・リストを実行する場合 (例えば、1 つのコマンド・リスト の実行中にもう 1 つが中断している場合)、2 つの環境が必要になります。別の REXX コマンド・リストから呼び出された REXX コマンド・リストは、呼び出し 側の REXX 環境を使用します。 REXX コマンド・リストを実行する前に、任意の NetView タスクに対して、通常 いくつの REXX コマンド・リストが同時にアクティブになるかを考慮してくださ い。NetView は、DEFAULTS コマンドまたは OVERRIDE コマンドを使用して、保 存される REXX 環境の数を変更しない限り、最高 10 の REXX 環境とそれらに関 連するストレージをユーザーがログオフするまで保持しています。DEFAULTS コマ ンドと OVERRIDE コマンドについての追加情報は、NetView オンライン・ヘルプ を参照してください。 Tivoli NetView for z/OS プログラムが REXX 環境を保持しているのは、 REXX 環 境の初期化のパフォーマンスを向上させるためです。 REXX コマンド・リストの実 行時に複数の REXX 環境が利用可能な場合、REXX コマンド・リストは異なる REXX 環境を使用して実行することができます。これが行われるかどうかは、 REXX コマンド・リストが並行処理される間に他の REXX コマンド・リストが開 始および終了された順序によります。各 REXX 環境に関連するストレージは、 REXX コマンド・リストの必要に応じて増やすことができます。各 REXX コマン ド・リストのストレージ必要量はそれぞれ異なるため、 REXX 環境は、最大の要求 量をもつ REXX コマンド・リストの必要量に合わせて大きくすることができます。 REXX を使用する各タスクが必要とするストレージを最小化するために、 Tivoli NetView for z/OS プログラムが保存する REXX 環境の数を減らすことができま す。ただし、この数をゼロに設定すると、 Tivoli NetView for z/OS プログラムが REXX 環境をまったく保存できなくなり、すべての REXX コマンド・リストの初 期化パフォーマンスに影響を及ぼします。 REXX コマンド・リストを実行する前に、REXX 環境の初期化に必要なストレージ について検討してください。デフォルトでは、REXX は約 6 レベルのネストされた 第 2 章 REXX 言語の概要 35 REXX 言語の概要 呼び出しをもつ REXX コマンド・リストに対して、十分なストレージを獲得してい ます。DEFAULTS または OVERRIDE コマンドを使用して、獲得ストレージ量を変 更することができます。 多数の REXX 変数を使用するか、または 6 レベルを超えてネストする REXX コ マンド・リストには、必要に応じてストレージを増加させることになります。各 REXX コマンド・リストは、開始するためにそれぞれ約 12K のストレージを必要 とします。初期化ストレージの量をゼロに設定すると、必要に応じてストレージを 獲得できますが、この REXX 環境を使用する最初の REXX コマンド・リストのパ フォーマンスが低下します。 注: 1. ネストされていない NetView または REXX のコマンド・リストには、 REXX IRXANCHR テーブルの中にそれぞれ 2 つの項目が必要です。他の REXX コマ ンド・リストから REXX コマンド・リストを呼び出すには、新しい環境は必要 ありません。ネストされたコマンド・リストは、基本コマンド・リストの環境を 使用します。 2. Tivoli NetView for z/OS プログラムのための IRXANCHR の中の REXX 環境ス ロットのデフォルトの数は、すべての NetView タスクの下で同時に実行するよ うにスケジュールできるコマンド・リストの最大数の 2 倍に、アクティブな NetView の Data Rexx ごとに 1 を加えたものです。 3. どの NetView タスクによって初期化されることが許可される REXX 環境の数 も、DEFAULTS コマンドの REXXENVL キーワード、および OVERRIDE コマ ンドの REXXENVL キーワードを使用して制御できます。 1 つの NetView タ スクについて初期化された REXX 環境の数、および、すべての REXX 環境に 対するそれらの相対的割合は、LIST オペレーター・コマンドまたは LIST STATUS=TASKS,RXENVCNT=YES コマンドを使用して表示できます。後者のコ マンドは、NetView が使用できる REXX 環境の総数、および初期化される REXX 環境の総数も表示し、それに続いて括弧内に総数の割合も表示します。ま た、このコマンドは、各 NetView タスクごとに初期化される REXX 環境の数 も表示し、それに続いて括弧内に総数の割合も表示します。 アセンブラー、C、または PL/I からの REXX のネスト アセンブラー、C、または PL/I のコマンド・プロセッサーによって、REXX コマン ド・リストがネストされるたびに、固有の REXX 環境がその REXX コマンド・リ ストのために作成されます。ネストされたチェーンの中の、任意の REXX コマン ド・リストのデータ・スタックは、追加の固有環境には渡されません。例えば、 REXX コマンド・リストが PL/I コマンド・プロセッサーを呼び出した場合、その PL/I コマンド・プロセッサーが別の REXX コマンド・リストを呼び出すと、2 番 目の REXX コマンド・リストのために追加の固有 REXX 環境が作成されます。 一時に作成できる固有の REXX 環境の数は、 MVS によって制限されています。 したがって、ネストされたチェーンも、アセンブラー、C、または PL/I コマンド・ プロセッサーによって呼び出すことができる REXX コマンド・リストの数以内に限 られています。 アドレス・スペース内の環境の最大数については、REXX ライブラリーを参照して ください。 36 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 REXX コマンド・リスト内の解析 REXX コマンド・リスト内では、REXX PARSE 命令、NetView PARSEL2R コマン ド、もしくは PIPE EDIT ステージのいずれかを使用して、文字ストリングを解析 することができます。 NetView コマンド・リスト言語と REXX の両方で利用できる、 REXX PARSE 命 令に相当する命令を作成するために、 Tivoli NetView for z/OS プログラムは PARSEL2R を用意しています。 REXX PARSE 命令は、PARSEL2R より優れた機 能を持っているので、可能な場合には使用してください。 REXX コマンド・リストで PARSEL2R を使用するときは、変数置換を避けるため にコマンドを引用符で囲んでください。例えば、次のとおりです。 TITLE = ’PROCEDURE/ACTION NOT SUPPORTED: X'’087D’'’ ’PARSEL2R TITLE A1 A2 A3 A4 A5 A6 A7 A8’ PIPE EDIT コマンドと PARSEL2R コマンドについては、NetView オンライン・ヘ ルプを参照してください。REXX PARSE 命令については、REXX ライブラリーを 参照してください。 注: Data REXX では、REXX PARSE 命令だけをサポートしています。 REXX コマンド・リストのトレース TRACE START (TS) コマンドを使用すると、 Tivoli NetView for z/OS プログラム 用の REXX コマンド・リスト作成時に、 REXX インタープリターが式をどのよう に評価するかが分かります。TS コマンドは、REXX インタープリターがコマン ド・リストの解釈を開始するとき、またはネストされたコマンド・リストが完了し た後でコマンド・リストに制御が戻されるときに、REXX インタープリターが検査 するインディケーターを設定します。TS コマンドの構文は以下のとおりです。 TS TS 次のメッセージを受信したとします。 CNM431I REXX INTERACTIVE TRACE. ENTER ’GO’ TO CONTINUE. ENTER ’GO TRACE OFF’ TO END TRACE, トレースを終了する場合は GO TRACE OFF と入力し、トレースを続行する場合は GO と入力します。また、トレース・ポイントに達したことを示すメッセージを 1 つ受信した後に、GO に続いてコマンド・リスト内の一定の場所で実行したいコマ ンドまたは命令を入力することができます。例えば、コマンド・リスト内のその場 所で変数を特定の値に設定したい場合は、次のように入力します。 GO X=5 また変数の現行値を表示する場合は、次のように入力することができます。 GO SAY ’VAR1 CURRENTLY IS ’VAR1 第 2 章 REXX 言語の概要 37 REXX 言語の概要 いったん TS コマンドを入力したが、トレースが始まる前に、トレースを実行しな いことに決めた場合、TRACE END (TE) コマンドを使用してトレースを取り消すこ とができます。TE コマンドを使用して、対話式でないトレースを終了させることも できます。 注: Data REXX では、TS および TE コマンドは、サポートしていません。 TE コマンドの構文は以下のとおりです。 TE TE TS と TE の詳細については、NetView オンライン・ヘルプを参照してください。 REXX コマンド・リスト内の戻りコード REXX 戻りコード変数 (RC) は各命令、コマンド、またはネストされたコマンド・ リストの完了後に設定されます。ネストされたコマンド・リスト内で EXIT ステー トメントを使用すると、コマンド・リストを終了させて、RC を呼び出しコマン ド・リストに戻す値に設定することができます。コマンド・リストが始まるとき に、 RC には初期値が与えられていません。 取り得る RC 値とその意味は、次のとおりです。 値 意味 0 エラーはありません。コマンド、命令、またはネストされたコマンド・リス トが正常に完了しました。 -1 コマンド、命令、またはネストされたコマンド・リストでエラーが発生しま した。 SIGNAL ON FAILURE とコーディングしてあると、 -1 の戻りコー ドは FAILURE ラベルに制御を渡します。 -3 コマンドまたはネストされたコマンド・リストがこのオペレーターには許可 されていないか、REXX ADDRESS 環境が有効ではありません。 SIGNAL ON FAILURE とコーディングしてあると、 -3 の戻りコードは FAILURE ラベルに制御を渡します。 -5 コマンド・リストは取り消されます。SIGNAL ON HALT とコーディング してあると、 -5 の戻りコードは HALT ラベルに制御を渡します。 その他 その他の戻りコードは個々のコマンド、命令、またはネストされたコマン ド・リストによって設定されます。 Tivoli NetView for z/OS プログラムでの SIGNAL 命令の使用に関する詳細につい ては、 39 ページの『REXX コマンド・リスト内のエラーからのリカバリー』を参照 してください。 38 プログラミング: REXX および NetView コマンド・リスト言語 REXX 言語の概要 REXX コマンド・リスト内のエラーからのリカバリー REXX コマンド・リストでエラーが起きたときは、 SIGNAL 命令を使用して一定 の場所で処理が継続できるようにすることができます。REXX コマンド・リストが REXX の外部のコマンド・プロセッサー (TRAP や WAIT など) を呼び出す場合 は、SIGNAL 命令を使用してそのコマンド・プロセッサーからのエラー条件を処理 します。コマンド・リストは、次の理由からエラーに遭遇する可能性があります。 v コマンド・リストのコーディングにエラーがある。 v コマンド・リストがネストされたチェーンの一部で、そのチェーンの他のコマン ド・リストの中の 1 つに、呼び出しコマンド・リストに戻されるエラーが含まれ ている。 v オペレーターが、コマンド・リスト内でエラーの原因となるコマンドを入力す る。 エラーが起きた場合は、SIGNAL 命令がコマンド・リストの別の部分に制御を渡し ます。エラー条件によっては、SIGNAL 命令がコマンド・リスト内の以下の 3 つの 異なるラベルに制御を渡すことができます。 v SIGNAL ON FAILURE は、エラー条件の結果戻りコードが負になると、 FAILURE という名前のラベルに制御を渡します。Tivoli NetView for z/OS プロ グラムが戻す負の戻りコードは、-1 と -3 だけです。ただし、コマンド・リスト がユーザー作成コマンドを呼び出す場合は、-5 を除く任意の負の戻りコードが戻 されたときに FAILURE に制御が渡されます。 コマンド・リストがエラーからリカバリーした場合は、呼び出しコマンド・リス トに適切な戻りコードを戻すことができます。コマンド・リストがエラーからリ カバリーしない場合は、EXIT -1 で呼び出しコマンド・リストにその障害情報を 渡してください。 v SIGNAL ON ERROR は、コマンド・リスト内の任意のコマンドまたは関数が正 の戻りコードを戻すときに、ERROR という名前のラベルに制御を渡します。 SIGNAL ON FAILURE をコーディングしないときに、コマンドまたは関数が -5 以外の任意の負の戻りコードを戻すと、ERROR にも制御が渡されます。 ご使用のコマンド・リストをネストした任意のコマンド・リストに渡す戻りコー ドは、エラーの重大度を示す必要があります。ゼロ (0) の戻りコードはすべての NetView コマンドで正常終了を示すものと認識され、一方、正の戻りコードはす べてエラーが発生したことを示すものと認識されます。 v SIGNAL ON HALT は、コマンド・リストが取り消されると、HALT という名前 のラベルに制御を渡します。コマンド・リストが取り消されるのは、次の場合で す。 – ユーザーのコマンド・リストの実行中に、RESET NORMAL コマンドが現行オ ペレーター・タスクで実行される。 – ユーザーのコマンド・リストの実行中に、CLOSE IMMED コマンドがユーザ ーの Tivoli NetView for z/OS プログラム内の任意のタスクで実行される。コ マンド・リストは、NetView コマンドを出さないかぎり処理を継続します。 – SNA セッション中に、ユーザーのコマンド・リストの実行時にオペレーター が Attn キーを押す。 第 2 章 REXX 言語の概要 39 REXX 言語の概要 – ユーザーのコマンド・リストによって発行されたコマンドが、取り消される か、または -5 の戻りコードを戻す。 – コマンド・リストの実行中に、オペレーターが LOGOFF コマンドを入力する ことを含んだ、オペレーター端末セッションが、何らかの理由で失われる。 ユーザーのコマンド・リストをネストする任意のコマンド・リストに HALT 条件を 渡すには、EXIT -5 でコマンド・リストを終了します。 注: 1. SIGNAL ON HALT をコーディングしないと、Tivoli NetView for z/OS プログ ラムは、ユーザーのコマンド・リストをネストしたコマンド・リストに停止条件 を渡します。 2. 別の REXX コマンド・リストを関数またはサブルーチンとして呼び出すときは いつでも、コマンド・リストの次の順次ステートメントで、RESULT 変数が -5 の取り消し条件かどうかテストされます。 3. SIGNAL ON FAILURE をコーディングする場合、EXIT -1 をコーディングする と、Tivoli NetView for z/OS プログラムは呼び出しコマンド・リストに停止条件 のみを渡します。 SIGNAL 命令の詳細については、REXX ライブラリーを参照してください。 40 プログラミング: REXX および NetView コマンド・リスト言語 第 3 章 NetView 環境で実行されるコマンド・リストの REXX 命令 NetView プログラムの REXX コマンド・リストで使用される命令の中には、 REXX コマンド・リストが特定の NetView アクティビティーを実行できるよう に、 NetView プログラムの一部として提供されているものもあります。 これらの 命令はプログラムによって提供されているものであり、標準の REXX 命令ではない ので、NetView 環境で実行するコマンド・リストでしか使用できず、非 NetView 環 境で実行されている REXX EXEC では機能しません。 NetView プログラムに備わ っている REXX 命令は、コマンド・リスト内でのみ使用可能で、オペレーター・コ ンソールから入力して使用することはできません。 エラー条件を処理するには、こ れらの NetView 命令のうちの 1 つを使用する任意の REXX コマンド・リスト内 で、SIGNAL 命令をコーディングします。 本章には、NetView プログラムが提供する各 REXX 命令の説明、その命令の働 き、および REXX コマンド・リスト内でその命令をコーディングする方法について も記載されています。 NetView コマンド・リスト言語の制御ステートメントに相当する全 REXX 命令の リストについては、 181 ページの『付録 E. REXX と NetView コマンド・リスト 言語の比較』を参照してください。 このリストには、NetView の提供する命令と、 REXX の提供する命令の両方が載っています。 REXX 命令 MSGREAD および FLUSHQ は、NetView プログラムによって提供されますが、Data REXX ではサポ ートされないことに注意してください。 Data REXX でサポートされるコマンドは ありません。 パイプライン (PIPE コマンドで呼び出される) は、メッセージ処理の自動化に関し て機能が拡張され、また複雑さは軽減しています。PIPE コマンドは、TRAP 命令や WAIT 命令の代わりとなるものです。 NetView パイプラインについては、「IBM Tivoli NetView for z/OS プログラミング: パイプ」を参照してください。 REXX 構文規則の詳細およびその他の REXX 命令については、REXX ライブラリ ーを参照してください。 TRAP、WAIT、および MSGREAD は、特定のメッセージについてオペレーター端 末タスク (OST) をモニターするか、指定された期間待機します。 コマンド・リストが待機する必要があるメッセージを定義するには、TRAP コマン ドを使用してください。TRAP 命令が出されると、NetView は指定されたメッセー ジがあるかどうかオペレーター・タスクのモニターを開始します。そのメッセージ は、受信されるとメッセージ・キューに保管されます。 WAIT コマンドが発行されると、コマンド・リストは、TRAP 命令で指定されたメ ッセージのうち 1 つ以上が受信されるまで、または Persist アクションが TRAP 命 © Copyright IBM Corp. 1997, 2011 41 NetView が提供する REXX 命令 令にメッセージを提供する時まで処理を停止します。 WAIT 命令が完了すると、 EVENT() 関数が戻した値により、WAIT 命令の完了した理由が示されます。 オペレーター・タスクが TRAP 命令で指定されたメッセージのうちのいずれかを受 信した場合、MSGREAD 命令を使用すれば、メッセージ・キューからトラップされ たメッセージを読み取ることができます。次に、コマンド・リストは各メッセージ の内容に応じた処理を行います。 FLUSHQ 命令は、メッセージ・キューからトラップされたメッセージをすべて除去 するときに使用します。 GLOBALV コマンドは、REXX コマンド・リスト内のタスクおよび共通グローバル 変数の定義、読み取り、書き込み、保管、復元、および削除を行います。 これらの REXX 命令とその構文の詳細については、NetView オンライン・ヘルプ を参照してください。 ネストされた REXX コマンド・リストでの TRAP の使用 ネストされたコマンド・リストを含む REXX コマンド・リスト内に、TRAP コマン ドをコーディングすることができます。ネストされた REXX コマンド・リストに、 TRAP 命令を入れることもできます。ただし、トラップされたメッセージは、 TRAP 命令を発行したコマンド・リストでしか使用できません。 注: TRAP 命令は、Data REXX ファイルでは、使用できません。 サブルーチンまたは関数として呼び出された REXX コマンド・リストは、呼び出し コマンド・リストの一部であると見なされます。したがって、サブルーチンまたは 関数から発行された TRAP コマンドは、呼び出しコマンド・リスト内で呼び出され た場合と同様に作動します。 REXX CALL 命令を使用してネストされたコマンド・リストを呼び出した場合、ト ラップ・メッセージ・キューはネストされたコマンド・リストで共用されているの で、MSGREAD を使用して除去されていないトラップされたメッセージはそのまま 使用可能です。ただし、CALL 命令を使用しないでネストされたコマンド・リスト を呼び出した場合は、トラップされたメッセージは TRAP 命令を発行したコマン ド・リストに対してのみ使用可能です。 注: ネストされたコマンド・リストがトラップされたメッセージが戻る前に終了す る場合、これらの同じメッセージが呼び出しコマンド・リストによってトラッ プされたとすると、そのメッセージは呼び出しコマンド・リストに対して使用 可能になり、メッセージ・キューに入れられます。このため、メッセージ・キ ューが大きくなり、NetView プログラムがストレージを使い果たしてしまう可 能性があります。 これを防ぐには、以下のいずれかのアクションを行います。 v 呼び出しコマンド・リストを終了させる。 v TRAP NO MESSAGES 命令を発行する。 v FLUSHQ 命令を定期的に発行する。 42 プログラミング: REXX および NetView コマンド・リスト言語 NetView が提供する REXX 命令 ネストされたコマンド・リスト内の WAIT の使用 REXX コマンド・リストは、コマンド・リストが正規コマンド、サブルーチン、ま たは関数として呼び出された場合、WAIT コマンドを発行できます。 注: 1. WAIT コマンドは、Data REXX ファイルでは、使用できません。 2. コマンド・リストが VIEW を開始する場合は、メッセージの待機、またはオペ レーター入力の待機のために WAIT コマンドを使用する必要はありません。 VIEW の詳細については、「IBM Tivoli NetView for z/OS カスタマイズ・ガイ ド」を参照してください。 3. WAIT コマンドは、PPT タスクでは、使用できません。 ネストされたコマンド・リストで WAIT を使用するときは、次の考慮事項が適用さ れます。 v 待機コマンド・リストのために到着するメッセージは、ネストされたコマンド・ リストが処理を終了するまでエンキューされています。 v TRAP コマンドで待機コマンド・リストとネストされたコマンド・リストの両方 に同じメッセージ番号を指定すると、そのメッセージはネストされたコマンド・ リスト内の WAIT を満たします。 v REXX CALL 命令を使用してネストされたコマンド・リストを呼び出した場合、 トラップ・メッセージ・キューはネストされたコマンド・リストで共用されてい るので、MSGREAD を使用して除去されていないトラップされたメッセージはそ のまま使用可能です。ただし、コマンドとしてネストされたコマンド・リストを 呼び出した場合は、トラップされたメッセージは TRAP コマンドを発行したコマ ンド・リストに対してのみ使用可能です。 ネストされたコマンド・リスト内の MSGREAD の使用 MSGREAD は、ネストされた REXX コマンド・リストと、初期 REXX コマン ド・リストの両方でコーディングすることができます。REXX CALL 命令を使用し てネストされたコマンド・リストを呼び出す場合、トラップされたメッセージは初 期コマンド・リストとネストされたコマンド・リストの両方に対して使用可能で す。CALL 命令を使用しないでネストされたコマンド・リストを呼び出す場合は、 トラップされたメッセージは TRAP 命令を発行したコマンド・リストに対してのみ 使用可能です。 注: MSGREAD 命令は、Data REXX ファイルでは、使用できません。 MSGREAD によって設定される関数 MSGREAD 命令は、現行メッセージを参照するすべての REXX 関数に影響を与え ます。 例えば、MSGREAD を使用して次のメッセージをドメイン DOM01 から読み取ると します。 DSI008I SPAN1 NOT ACTIVE 以下の関数が設定されます。 第 3 章 NetView 環境で実行されるコマンド・リストの REXX 命令 43 NetView が提供する REXX 命令 変数 値 MSGORIGN() DOM01 MSGID() DSI008I MSGSTR() SPAN1 NOT ACTIVE MSGCNT() 3 MSGVAR(1) SPAN1 MSGVAR(2) NOT MSGVAR(3) ACTIVE MSGVAR(4) から MSGVAR(31) ヌル これらのメッセージ処理関数やその他のメッセージ処理関数の詳細については、 59 ページの『メッセージ処理情報関数』を参照してください。 注: 1. MSGREAD 命令が出される前は、MSGID()、MSGORIGN()、および MSGSTR() の値はヌルになっています。MSGCNT() の値は 0 です。MSGVAR(n) 関数は、 コマンド・リストの実行時に与えられた値を保存します。 2. メッセージ・キューが空のときに MSGREAD 命令を発行すると、MSGID()、 MSGORIGN()、MSGSTR()、および MSGVAR(n) の値はヌルに設定されます。 MSGCNT() の値は 0 です。 3. MSGREAD 命令が複数行のメッセージを読み取ると、関数は、メッセージの最 初の行に従って設定されます。複数行のメッセージの処理については、NetView オンライン・ヘルプの GETM コマンド、または「IBM Tivoli NetView for z/OS Command Reference Volume 1 (A-N)」を参照してください。 4. MSGVAR(1) から MSGVAR(31) までの関数は、&1 から &31 までの NetView コマンド・リスト言語のパラメーター変数と同じ方法でコマンド・リストが呼び 出されたときに、値を指定することができます。コマンド・リストが呼び出され たときに MSGVAR(1) から MSGVAR(31) に値を指定する場合は、MSGREAD 命令を発行する前にそれらの値を変数に保管しておいてください。これにより、 MSGREAD 命令によって変更された値を使用できます。 5. MSGREAD 命令を使用した後で、別の MSGREAD 命令を発行する前に、メッセ ージ関数の値を変数に保存してください。 44 プログラミング: REXX および NetView コマンド・リスト言語 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 NetView プログラムには、NetView REXX コマンド・リストおよび Data REXX フ ァイル内のみで使用する多数の REXX 関数があります。これらの関数は、REXX で書かれたコマンド・リストおよび Data REXX ファイルが、特定の NetView アク ティビティーを実行できるようにするために提供されています。これらの関数は NetView プログラムによって提供されているものであり、標準的 REXX 関数では ないので、NetView 環境で実行するコマンド・リストおよび Data REXX ファイル でのみ使用できます。 REXX コマンド・リストのパフォーマンスは、NetView プログラムが提供する REXX 関数の使用を制限することによって向上させることができます。 NetView が提供する 1 つの関数をコマンド・リスト内で何回も使用し、関数の値は変わらな い場合、その関数は 1 回だけ使用して、関数の戻り値をローカル変数に設定するよ うにしてください。これにより、関数の代わりにローカル変数を使用することがで きます。関数によって戻された値がコマンド・リストの処理中に変化することがあ る場合は、その関数を (ローカル変数の代わりに) 毎回使用して、その現行値にアク セスする必要があります。 NetView プログラムが提供する関数は、システム情報に基づいて値を戻します。関 数を使用するには、REXX コマンド・リスト内の、情報をアクセスしたい場所に関 数名を配置します。コマンド・リストの実行時に、NetView プログラムはその関数 に関連するシステム情報の現行値を戻します。 関数を使用すると、操作環境に関する情報を入手したり、コマンド・リスト内で条 件をテストしたり、また結果に基づいてアクションを実行することができます。 REXX 構文規則および他の REXX 関数の詳細については、 REXX ライブラリーを 参照してください。 NetView コマンド・リスト言語の制御変数に相当する全 REXX 関数のリストは、 181 ページの『付録 E. REXX と NetView コマンド・リスト言語の比較』を参照し てください。このリストには、NetView プログラムが提供する関数と REXX 自体 が提供する関数の両方が含まれます。 本章のテーブルでは、各 NetView REXX 関数および NetView コマンド・リストで 使用される同等の NetView コマンド・リスト言語の制御変数により、実行されるタ スクを示しています。各テーブルには、NetView 関数がリストされています。 REXX 関数および同等の NetView コマンド・リスト言語の制御変数は、REXX 関 数を先にして、アルファベット順に並べられています。 これらのテーブルでは、関数と制御変数は、後に説明を記載しています。 © Copyright IBM Corp. 1997, 2011 45 REXX 関数 注: 1. 1 つのタスクに対して、NetView コマンド・リスト言語の制御変数と REXX 関 数の両方が存在する個所では、NetView コマンド・リスト言語の接頭部のアンパ ーサンド記号や REXX の接尾部の開き括弧/閉じ括弧を付けずに、総称的に 説 明しています。 2. NetView コマンド・リスト言語の制御変数バージョンと REXX バージョンで機 能の使用上に相違がある個所では、それぞれを別々に説明しています。NetView コマンド・リスト言語の説明箇所では、2 つのバージョンの相違点だけを説明し ています。 3. NetView プログラムが使用するために提供されている REXX 関数は、NetView プログラムでのみ使用できます。これらの関数は、REXX インタープリターでは サポートされておらず、非 NetView 環境で実行される REXX EXEC で使用す ることはできません。 4. すべての NetView REXX 関数を Data REXX ファイルで使用できるとは限りま せん。関数が Data REXX ファイルで使用できるかどうかは、その関数の説明を 参照して判断してください。 5. 60 ページの表 7 および 77 ページの表 10 にリストされている REXX 関数は、 Data REXX ファイルで使用するとき、処理するメッセージのない、一貫する値 を戻します。 変換関数 表 1. 変換関数 関数または変数 説明 CODE2TXT(table,code) 各種タイプのコード・ポイントの各国語テキストへの変換を行います。 NetView プログラムを問題管理データベースとともに使用すると、NetView アラートの 受信時に問題記録をオープンすることができます。アラートで受信した数字コード・ポ イントを読み取り可能なテキストに変換するために、REXX ではコード・ポイント変換 関数が用意されています。 CODE2TXT 関数の構文は以下のとおりです。 CODE2TXT CODE2TXT(table,code) 46 プログラミング: REXX および NetView コマンド・リスト言語 変換 表 1. 変換関数 (続き) 関数または変数 説明 CODE2TXT(table,code) (続き) ここで各要素は以下のとおりです。 code 変換するコード・ポイントを示します。このフィールドは、16 進のコード・ポイン トを表す 1 から 4 文字の値で指定されます。文字は、大文字でも小文字でも構い ません。先行ゼロは無視されますが、4 文字制限内の文字としてはカウントされま す。 SNADATA テーブル内のコード・ポイントは 2 文字だけです。それを他のテーブ ルのコード・ポイントと同じ長さにするために、 CODE2TXT は、最後に "00" を 連結することによってコードを調整します (例えば、"DD" は "DD00" になり、 "01" は "0100" になります)。詳細については、BNJ82TBL のサンプルおよび、 「IBM Tivoli NetView for z/OS カスタマイズ・ガイド」を参照してください。 table 変換に使用するテーブルの名前を指定します。以下のテーブルが有効です。 SNAALERT システム・ネットワーク体系 (SNA) アラート記述コード・ポイ ント SNACAUSE SNA 推定原因コード・ポイント SNADDATA サブフィールド X'82' からの SNA 明細データ・コード・ポイン ト SNADDAT5 サブフィールド X'85' からの SNA 明細データ・コード・ポイン ト SNADDAT6 解像度主ベクトルのための SNA 実アクション・コード・ポイン ト SNAFCAUS SNA 障害原因コード・ポイント SNAICAUS SNA インストール原因コード・ポイント SNAREACT SNA 推奨アクション・コード・ポイント SNAUCAUS SNA ユーザー原因コード・ポイント CODE2TXT を使用した例を以下に示します。 CODE2TXT(SNAALERT,362B) この例では、SNAALERT テーブルのコード・ポイント 362B を 『TRANSMITTER FAILURE』 に変換します。 エラー処理: この関数によって発生したエラー状態は、次のように処理されます。 v 無効なオペランド。無効なオペランド (無効なテーブル名など) が検出されると、 NetView プログラムはメッセージ CNM432I (オペランドが無効) を発行します。 REXX 構文条件フラグが立てられ、その後 REXX インタープリターがメッセージを 生成します。 v 無効なコード構文。無効な構文が検出されると、NetView プログラムはメッセージ CNM423I (構文が無効) を発行します。REXX 構文条件フラグが立てられ、REXX イ ンタープリターがメッセージを生成します。 v オペランドが過多。余分なオペランドは無視されます。 v コード・ポイントがテーブル内で未検出。ヌル・ストリングが戻されますが、フラグ は立てられません。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 47 変換 表 1. 変換関数 (続き) 関数または変数 説明 SUBSYM(symbolic) リテラルまたは変数の文字ストリング (複数の MVS システム・シンボルまたは単一の MVS システム・シンボルが埋め込まれている任意の文字ストリング) を、その中に含ま れる MVS システム・シンボルが置換された状態で戻します。 NetView の始動時に置換が使用不可にされなかった場合は、&DOMAIN シンボルについ ての置換が常に実行されます。そうならない場合は、ユーザーが MVS システムで MVS システム・シンボルを定義していないのが原因です。 SUBSYM 関数の構文は以下のとおりです。 SUBSYM SUBSYM(symbolic) ここで各要素は以下のとおりです。 symbolic MVS システム・シンボルの名前を指定します。 以下は、SUBSYM を使用して、&DOMAIN の名前を検索する例です。 SUBSYM(’&DOMAIN’) 48 プログラミング: REXX および NetView コマンド・リスト言語 IP アドレス処理 IP アドレス処理 表 2. IP アドレス処理 関数または変数 説明 IPXLATE('xltype', 'xlindata') 表示形式の IP アドレスを検査して別のフォーマット (標準フォーマットまたは圧縮フォーマット) に変換する場合に使用されます。 IPXLATE 関数の構文は以下のとおりです。 IPXLATE IPXLATE(xltype,xlindata) この記述の中で xltype は、実行される IP アドレス検査または変換のタイプが入ったストリングです。有効なストリ ングは次のとおりです。 COMPRESS 表示形式の IP アドレスを圧縮された表示形式に変換します。複数の連続したゼロのアド レス・セグメントのグループは、2 重コロン (::) で置き換えられます。この圧縮は、 IPv4 にマップされた IPv6、IPv4 互換の IPv6、および IPv6 アドレスにのみ適用されま す。 IPv4 アドレスは、標準表示形式で返されます。 STANDARD 表示形式の IP アドレスを標準表示形式に変換します。IPv4、IPv4 にマップされた IPv6、および IPv4 互換の IPv6 アドレスは、小数点付き 10 進数の IPv4 アドレス・フ ォーマットで表示されます。 IPv6 アドレスは、16 進形式で表示されます。標準表示形 式では、アドレスのすべてのセグメントが存在し、先行ゼロが除去されます。 VERIFY 入力データが表示形式の IP アドレスであることを検査します。 V42STD 表示形式の IP アドレスを IPv6 表示形式に変換します。 IPv4 および IPv4 にマップさ れた IPv6 アドレスは、IPv4 にマップされた IPv6 アドレスとして表示されます。すべ ての IP アドレスは、標準表示形式で返されます。 xlindata 表示形式の IP アドレスが入ったストリングです。 戻りコード: IPXLATE 関数からの出力は、戻りコードが入ったストリング、および変換された IP アドレス・ストリング (戻りコードが 0 でタイプ・パラメーターが VERIFY ではない場合) で す。タイプ・パラメーターが VERIFY の場合には、IP アドレス・ストリングは返されません。 出力ストリングが次のように構文解析できます。 parse var xxxxxx trancode ipaddr ここで、xxxxxx は変換結果が入った変数名、trancode は変換サービスからの戻りコード、ipaddr は 変換されたアドレス・ストリング (存在する場合) です。 trancode の値は次のとおりです。 関数が正常に実行されました。 0 4 から 16 変換ルーチン内の内部エラーのため、IP アドレス変換は失敗しました。 NetView ログ で DWO050E メッセージを確認して、IBM ソフトウェア・サポートにお問い合わせくだ さい。 20 以上 サービスに渡される IP アドレスが有効ではありませんでした。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 49 コマンド・リスト情報 コマンド・リスト情報 表 3. コマンド・リスト情報 関数または変数 説明 AUTBYPAS この関数の詳細については、「IBM Tivoli NetView for z/OS セキュリティー・リファレ ンス」を参照してください。 AUTHCHK(keyword=value) この REXX 専用関数は、REXX プログラムからのキーワードおよび値についてコマン ド・セキュリティー検査を行います。この関数を使用すると、コマンド・リストに渡さ れたパラメーター、またはこのコマンド・リストに関連するキーワードおよび値として 検査したい他の項目を検査することができます。 AUTHCHK 関数の構文は以下のとおりです。 , AUTHCHK ( keyword=value keyword ここで各要素は以下のとおりです。 ) keyword 権限検査を行うキーワードを指定します。それぞれの keyword には、最大 8 文字 まで入れることができます。オプションの値とともに、最大 20 個のキーワードを プログラムに渡すことができます。変数置換ではヌル・キーワードが発生する場合 があるため、AUTHCHK はヌル・キーワードを受け入れます。例えば、AUTHCHK() は、AUTHCHK 関数の有効な呼び出しです。ヌル・キーワードが AUTHCHK 関数 に渡されると、その特定のキーワードに対して権限が得られたものと見なされま す。 value キーワードに対する値を指定します。それぞれの value には、最大 8 文字まで入 れることができます。 keyword= パラメーターを同時に指定せずに、value を指定 することはできません。 変数置換ではヌル値が発生する場合があるため、AUTHCHK はヌル値を受け入れ、 「=」(等号) を取り除いて、「キーワードのみ」のセキュリティー検査を行うこと ができます。例えば、変数置換後では、次に示すものは AUTHCHK 関数の有効な 呼び出しです。 AUTHCHK(1=,2=value2,keyword3,keyword4=value4) keyword と keyword=value の組み合わせは、コンマで区切る必要があります。 使用上の注意: 1. キーワードと値が両方ともヌルである場合には、ヌル・ストリングが戻され、こ れは権限が認められたことを暗に示します。 2. keyword=value は、以下の項目いずれでも構いません。 v 単一変数の値。 v 間に ‘=’ が入った 2 つの変数。= 符号は、単一引用符で囲む必要がありま す。 v 間に ‘=’ が入った 2 つのリテラル・ストリング。= 符号は、単一引用符で囲 む必要があります。 v 間に ‘=’ が入ったリテラルと変数。= 符号は、単一引用符で囲む必要があり ます。 50 プログラミング: REXX および NetView コマンド・リスト言語 コマンド・リスト情報 表 3. コマンド・リスト情報 (続き) 関数または変数 説明 AUTHCHK() (続き) リスト内のすべての keyword または keyword=value の組み合わせが権限検査にパスし た場合、AUTHCHK はヌル・ストリングを戻します。そうでない場合には、権限検査に 失敗した最初の keyword が戻され、残りの keyword は検査されません。value が権限 検査に失敗した場合、失敗した最初の keyword=value の組み合わせが戻され、残りの keyword は検査されません。構文エラーが発生した場合は、その構文エラーが含まれて いる keyword または keyword=value の組み合わせが戻され、残りの keyword は検査さ れません。 例えば、NVRXCMD START,LU=LU200 を入力することにより REXX プログラムが実行され た場合、 START および LU=LU200 のキーワードの権限検査は、NVRXCMD プログ ラム内で次のステートメントをコーディングすることよって行われます。 /* NVRXCMD: SAMPLE REXX PROGRAM */ PARSE ARG P1’,’P2’,’. RESULT=AUTHCHK(P1,P2) ... IF RESULT¬=’’ THEN DO SAY OPID() ’IS NOT AUTHORIZED TO KEYWORD/VALUE’ RESULT EXIT END ... この例では、変数の P1 および P2 によって渡されるパラメーターのいずれかが権限検 査にパスしない場合には、AUTHCHK によって非ヌル値が戻されます。キーワードが検 査にパスしない場合、そのキーワードはメッセージに組み込まれ、REXX プログラムは 終了します。値が検査にパスしない場合には、キーワードと値がメッセージに組み込ま れ、REXX プログラムは終了します。例えば、OPER1 が NVRXCMD START,LU=LU200 と 入力したが、START キーワードの使用を許可されていない場合は、OPER1 IS NOT AUTHORIZED TO KEYWORD/VALUE START と表示され、NVRXCMD が終了します。OPER1 が NVRXCMD START,LU=LU202 と入力したが、LU202 値の使用を許可されていない場合 は、OPER1 IS NOT AUTHORIZED TO KEYWORD/VALUE LU=LU202 と表示され、NVRXCMD が終了します。 キーワード・セキュリティーについては、RACF ライブラリーおよび「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 51 コマンド・リスト情報 表 3. コマンド・リスト情報 (続き) 関数または変数 AUTHCHKX(command, keyword=value) 説明 この REXX 専用関数を使用すると、REXX プログラムからのコマンドおよびそれに関 連したキーワードと値に対するコマンド・セキュリティー検査を行うことができます。 コマンドとすべてのキーワード、キーワードと値、またはコマンドに関連するキーワー ドと値として検査したいその他の項目を検査するには、この関数を使用してください。 AUTHCHKX 関数の構文は以下のとおりです。 , AUTHCHKX (command, keyword=value keyword ここで各要素は以下のとおりです。 ) command 許可検査に使用されるコマンドを指定します。これは必須パラメーターです。ヌ ル・コマンドが渡されると、構文エラーが発生します。それぞれのコマンドには、 最大 8 文字までを入れることができます。 keyword 権限検査を行うキーワードを指定します。それぞれのキーワードには、最大 8 文字 まで指定できます。最大で、オプションの値をもつ 19 個のキーワードをプログラ ムに渡すことができます。変数置換ではヌル・キーワードが発生する場合があるた め、AUTHCHKX はヌル・キーワードを受け入れます。例えば、 AUTHCHKX(command) は、AUTHCHKX 関数の有効な呼び出しです。ヌル・キーワー ドが AUTHCHKX 関数に渡されると、関数呼び出しで渡されたコマンドに対して 権限が与えられたものと見なされます。 value キーワードに対する値を指定します。それぞれの value には、最大 8 文字まで入 れることができます。 keyword= を指定せずに、value を指定することはできませ ん。 変数置換ではヌル値が発生する場合があるため、AUTHCHKX はヌル値を受け入 れ、"=" (等号) をはずして、「キーワードのみ」のセキュリティー検査を行いま す。例えば、変数置換後では、次のものは AUTHCHKX 関数の有効な呼び出しで す。 AUTHCHKX(command,keyword1=,keyword2=value2,keyword3,keyword4=value4) keyword と keyword=value の組み合わせは、コンマで区切る必要があります。 52 プログラミング: REXX および NetView コマンド・リスト言語 コマンド・リスト情報 表 3. コマンド・リスト情報 (続き) 関数または変数 AUTHCHKX()(続き) 説明 使用上の注意: 1. この関数は、コマンド、キーワード、または値の構文検査は行いません。この関数 は、コマンド、キーワード、または値、あるいはそのすべての組み合わせが、任意の NetView セキュリティー機能を使用して保護されているかどうかのみを判別できま す。 2. キーワードと値が両方ともヌルである場合には、ヌル・ストリングが戻され、これは 権限が認められたことを暗に示します。 3. keyword=value は、以下の項目いずれでも構いません。 v 単一変数の値。 v 間に '=' (等号) が入った 2 つの変数。= は、単一引用符で囲む必要があります。 v 間に '=' (等号) が入った 2 つのリテラル・ストリング。= は、単一引用符で囲む 必要があります。 v 間に '=' (等号) が入ったリテラルと変数。= は、単一引用符で囲む必要がありま す。 4. リスト内のすべてのキーワードまたはキーワード = 値の組み合わせが権限検査にパ スした場合に、AUTHCHKX はヌル・ストリングを戻します。そうでない場合に は、権限検査に失敗した最初の keyword が戻され、残りの keyword は検査されませ ん。value が権限検査に失敗した場合、失敗した最初の keyword=value の組み合わせ が戻され、残りの keyword は検査されません。 例えば、NetView のコマンド・リスト言語プログラム NVCLCMD が、それに渡さ れた 2 つのパラメーターの権限検査を行う必要がある場合は、NVCHKAUT NVCLCMD,&P1,&P2 と入力して REXX プログラム NVCHKAUT を呼び出すことが できます。NVCHKAUT は、次のようにコーディングできます。 /* NVCHKAUT: SAMPLE REXX PROGRAM */ PARSE ARG P1’,’P2’,’P3’,’. RESULT=AUTHCHKX(P1,P2,P3) ... IF RESULT ¬= ’’ THEN DO SAY OPID() ’ IS NOT AUTHORIZED TO ISSUE ’P1’ WITH ’RESULT Return_Code = 8 END ... Return Return_Code この例では、P2 および P3 で渡されたパラメーターのいずれかが、P1 で渡された コマンドの権限検査にパスしない場合には、AUTHCHKX によって非ヌル値が戻さ れます。キーワードが検査にパスしない場合、そのキーワードは渡されたコマンドと ともにメッセージに組み込まれ、REXX プログラムは戻りコード 8 を設定し、それ を戻します。値が検査にパスしない場合、キーワードと値は渡されたコマンドととも にメッセージに組み込まれ、REXX プログラムは戻りコード 8 を設定し、それを戻 します。例えば、OPER1 が NVCLCMD START, LU=LU200 と入力したが、START キーワードの使用を許可されていない場合は、「OPER1 IS NOT AUTHORIZED TO ISSUE NVCLCMD WITH START」と表示され、NVCHKAUT は戻りコード 8 を NVCLCMD に戻し NVCLCMD が終了します。 キーワード・セキュリティーについては、RACF ライブラリーおよび「IBM Tivoli NetView for z/OS セキュリティー・リファレンス」を参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 53 コマンド・リスト情報 表 3. コマンド・リスト情報 (続き) 関数または変数 説明 CMDNAME() この REXX 専用関数は、プログラムの呼び出し時に用いられた名前を戻します。この 名前は、REXX PARSE SOURCE コマンドによって 3 番目のトークンに戻される名前 と同じ場合があります。この名前は、入力されたときのコマンドです。場合によっては その同義語です。 Data REXX では、この関数は、処理されているファイルのメンバー名を戻します。 IPV6ENV() IPv4 または IPv6 の指定構成値を示します。 この関数により返される値は次のとおりです。 NONE この値が返された場合には、NetView サービス、関数、およびコンポーネント は IPv6 オペレーションを実行しようとせず、IPv4 オペレーションのみを使用 します。IPv6 アドレスのみが使用可能な場合であっても、失敗します。 MIXED この値が返された場合には、NetView サービス、関数、およびコンポーネント は IPv6 オペレーションをまず実行しようとします。これが失敗した場合に は、IPv4 オペレーションを使用します。多くの環境で、IPv4 と IPv6 オペレ ーションの両方を同時にサポートするオペレーションを使用することが可能で す。例えば、IPv4 データグラムまたは IPv6 データグラム (どちらかが SNMP トラップを表せます) の AFINET6 ソケットで listen することが可能です。混 合環境では、処理中の IP コマンドでのアドレス・ファミリーの明示的指定に 従います。 DEFAULT.IPV6ENV 変数の指定と矛盾するアドレス・ファミリー の明示的な指定はエラーとして処理されます。 DEFAULT.IPV6ENV 変数の指 定については、「IBM Tivoli NetView for z/OS アドミニストレーション・リフ ァレンス」で説明されています。 ONLY PARMCNT() &PARMCNT &PARMSTR 54 この値が返された場合には、NetView サービス、関数、およびコンポーネント は IPv6 オペレーションのみを実行しようとします。それが成功しないか、 IPv4 アドレスのみが使用可能な場合には、失敗します。 コマンド・リストの開始時に入力されるパラメーター変数の数を戻します。例えば、コ マンド・リスト RESC が、RESC ACT,LU200 を入力することによって開始される場合、 PARMCNT は 2 になります。パラメーター変数が存在しない場合、PARMCNT はゼロ です。 コマンド・リストの開始時に使用されるパラメーター値のストリングを戻します。 &PARMSTR は、コマンド・リスト名を含みません。例えば、コマンド・リスト RESC が RESC ACT,LU200 を入力することによって開始される場合、&PARMSTR は ACT,LU200 になります。パラメーター変数が存在しない場合、&PARMSTR はヌルで す。&PARMSTR によって戻される、ストリングの最大長は 255 文字です。 プログラミング: REXX および NetView コマンド・リスト言語 コマンド・リスト情報 表 3. コマンド・リスト情報 (続き) 関数または変数 説明 &RETCODE 最新のコマンド・プロシージャー、最新の活動化されたコマンド・リスト、もしくは最 新のネストされたコマンド・リストのいずれかによって設定される戻りコードを戻しま す。 &RETCODE はゼロに初期設定されています。 &RETCODE は、コマンド・プロシージ ャーまたはネストされたコマンド・リストによって設定されます。別のコマンド・リス トによって呼び出されるコマンド・リストを作成する場合、ネストされたコマンド・リ スト内の &EXIT ステートメントで戻りコードを設定することができます。呼び出し側 のコマンド・リストで &RETCODE を使用すると、この戻りコードをテストすることが できます。148 ページの『&EXIT 制御ステートメント』を参照してください。 &EXIT ステートメントでは、戻りコードを 0、-1、または正の整数に設定できます。 NetView プログラムでは、戻りコードを 0、-1、-2、-3 または -5 に設定できます。 &EXIT ステートメントで -2 または -3 をコーディングすることはできませんが、テス トすることはできます。その他のすべての負の戻りコードは予約されています。 可能な &RETCODE の値と意味は以下のとおりです。 n 正の整数。ユーザーが意味を定義します。&CONTROL ERR が有効な場合、コ マンドはパネルにエコーされます。 0 エラーはありません。 -1 エラーが検出されました。このコマンド・リストおよびネストされたすべての コマンド・リストは終了します。このコマンド・リストに対して、メッセージ DSI197I が発行されます。 -2 コマンド・リストのコマンドが正しくありません。誤ったコマンドとともに、 メッセージ DSI209I が表示されます。コマンドは無視され、コマンド・リスト は続行されます。 -3 コマンド・リストのコマンドは、このオペレーターには許可されていません。 メッセージ DSI210I とともに、誤ったコマンド・リスト・ステートメントが表 示されます。コマンドは無視され、コマンド・リストは続行されます。 -5 RESET または他の障害の結果、コマンド・リストが停止しました。 クロスドメイン情報関数 表 4. クロスドメイン情報関数 関数または変数 説明 NVCNT() オペレーターがクロスドメイン・セッションを確立できる、NetView ドメインの数を戻 します。 &NCCFCNT 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 55 クロスドメインおよびグローバル変数 表 4. クロスドメイン情報関数 (続き) 関数または変数 説明 NVID(n) クロスドメイン・セッションの確立が可能なドメインの NetView ドメイン ID を戻し ます。クロスドメイン・セッションの確立が可能なドメインは、オペレーター・プロフ ァイルの DOMAINS ステートメントによって定義されます。 &NCCFID n ただし、ユーザーのプロファイルが AUTH CTL=GLOBAL を指定している場合は、 CNMSTYLE メンバー内の RRD ステートメントで指定したドメインとクロスドメイ ン・セッションを確立することができます。オペレーター・プロファイルで DOMAINS も CTL=GLOBAL も指定されていない場合、この関数の使用時にエラー・メッセージ を受信します。 DOMAINS および RRD ステートメントの詳細については、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 n の値は、数字、または数値をもつ変数のいずれかです。 n の最大値は NVCNT の値 です。 注: 1. n に無効な値を指定すると、次のようになります。 v NVID の場合は、ヌル値が戻されます。 v &NCCFID の場合は、エラー・メッセージが戻されます。 2. ローカル・ドメイン ID を得るには、APPLID 関数を使用します。 APPLID は、 NetView プログラムによって割り当てられた 3 文字の英数字値が追加されたローカ ル・ドメイン ID を戻します。 NVMASTER() シスプレックスのマスター NetView プログラムのドメイン名を戻します。マスター NetView プログラムが存在しない場合は、ヌル値を戻します。 NVSTAT(name) ドメインとのアクティブ・セッションがあるかどうかを示します。 name の値は、照会 中のドメインのドメイン ID です。ドメインとのアクティブ・セッションがある場合、 NVSTAT(name) または &NCCFSTAT は ACT の値を戻します。ドメインとのアクティ ブ・セッションがない場合には、INACT が戻されます。 注: name を指定しない場合、あるいは無効な name を指定した場合には、次のように なります。 v NVSTAT の場合には、ヌルが戻されます。 v &NCCFSTAT の場合には、エラー・メッセージが戻されます。 &NCCFSTAT name 56 プログラミング: REXX および NetView コマンド・リスト言語 データ・セット情報関数 データ・セット情報関数 表 5. データ・セット情報関数 関数または変数 説明 FNDMBR (DD_name,member_name) DD 名によって識別されたファイル内の、指定されたメンバーの検出を試みます。ファ イルは、FNDMBR の実行時にすでに NetView によって割り振られている必要がありま す。割り振られたファイルは、区分データ・セット (PDS) でなければなりません。 FNDMBR は、2 つの明確な結果と、REXX プログラムのデバッグに使用可能な、調査 を要するいくつかの結果を戻します。 FNDMBR 関数の引数は、次のように定義されています。 DD_name 割り振られた PDS ファイルが NetView プログラムに認識される際の DD 名 を指定します。 member_name 検出しようとする、割り振り済み PDS ファイル内のメンバーの名前を指定し ます。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 57 データ・セット情報関数 表 5. データ・セット情報関数 (続き) 関数または変数 説明 FNDMBR (DD_name,member_name) (続き) 以下の結果が FNDMBR 関数によって返される可能性があります。 0 指定されたメンバー名が検出されたことを示します。 4 指定されたメンバー名が検出されなかったことを示します。 100 この要求の処理の実行中にシステム・エラーが起こったことを示します。 F cccccccc rrrrrrrr ここで各要素は以下のとおりです。 F MVS FIND マクロが失敗したことを示します。 cccccccc FIND マクロの戻りコードです。 rrrrrrrr FIND マクロの理由コードです。 O cccccccc rrrrrrrr ここで各要素は以下のとおりです。 O MVS OPEN マクロが失敗したことを示します。 cccccccc OPEN マクロのシステム ABEND (異常終了) コードまたはゼロで す。 rrrrrrrr OPEN マクロの戻りコードです。cccccccc がゼロでない場合、これは OPEN マクロのシステム異常終了コードに関連した IEC1nnI メッセ ージ内の戻りコードの値と同じです。cccccccc がゼロの場合、これは OPEN マクロからの戻りコードです。例えば、この場合の戻りコード 8 は、DD ステートメントが欠落しているか、またはファイルが割り 振られていないことを意味します。 以下の例で、FNDMBR 関数の使用法を示します。 IF FNDMBR(’DSICLD’,’MYREXX’) = 0 THEN この REXX ステートメントは、MYREXX が DSICLD 内に存在していれば真、 MYREXX が DSICLD 内に存在していなければ偽であると評価します。 注: 1. OPEN マクロの戻りコードについては、MVS/DFP ライブラリーを参照してくださ い。OPEN マクロのシステム異常終了コード (X'n13' 異常終了コード) および IEC1nnI メッセージの説明については、MVS/ESA ライブラリーを参照してくださ い。 2. REXX 変数を使用して FNDMBR 関数に対する DD 名またはメンバー名を保持し、 変数に置換されるテキストが 8 文字を超えないようにする場合は、FNDMBR 関数 を呼び出す前に先頭のブランクおよび末尾のブランクを値から取り除いてください。 3. NetView ALLOCATE コマンドを使用してデータ・セットが割り振ってある場合に は、 FNDMBR 関数を他のコマンド (例えば、EXECIO) とともに使用して割り振り 済みファイルにアクセスする際に、 ALLOCATE コマンドの FREE オプションは決 して使用しないでください。FNDMBR 関数は MVS OPEN および CLOSE を実行 し、割り振りコマンドで FREE オプションがコーディングされていた場合には、割 り振られていたファイルの割り振りが解除されます。この制限は、NetView 始動プ ロシージャー内の DD ステートメントを使用して割り振られているファイルに対し ては適用されません。 4. データ・セットは、メンバー・レベルに下げて割り振ることができます。ただし、メ ンバーが検出されない場合に IEC141I メッセージが出されるため、これは行わない でください。 58 プログラミング: REXX および NetView コマンド・リスト言語 データ・セット情報関数 グローバル変数情報関数 表 6. グローバル変数情報関数 関数または変数 説明 CGLOBAL(name) REXX 名前付き共通域グローバル変数が存在する場合には、その値を戻します。指定された name をもつ共通グローバル変数が存在しない場合には、ヌル値が戻されます。 name を指定しない場合、または複数の name を指定した場合には構文エラーとなります。 REXX の終り NetView コマンド・リスト言語 NetView コマンド・リスト言語制御ステートメント &CGLOBAL は、ここで説明する NetView REXX 関数とは、機能的に異なります。166 ページの『&TGLOBAL および &CGLOBAL の使用法』を参照してください。 NetView コマンド・リスト言語 の終り TGLOBAL(name) REXX 指定されたタスク・グローバル変数が存在する場合には、その値を戻します。指定され た name をもつタスク・グローバル変数が存在しない場合には、ヌル値が戻されます。 name を指定しない場合、または複数の name を指定した場合には構文エラーとなりま す。 REXX の終り NetView コマンド・リスト言語 NetView コマンド・リスト言語制御ステートメント &TGLOBAL は、ここで説明する NetView REXX 関数とは、機能的に異なります。166 ページの『&TGLOBAL および &CGLOBAL の使用法』を参照してください。 NetView コマンド・リスト言語 の終り メッセージ処理情報関数 60 ページの表 7 は、NetView プログラムがサポートするすべてのオペレーティン グ・システム・プラットフォームによって生成されるメッセージで (特に明記しな い限り) 使用できる関数および変数を示しています。 使用できるメッセージ処理情報がない場合には、特に指定がない限り、 NetView コ マンド・リスト言語の制御変数および REXX 関数の値はヌルです。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 59 メッセージ処理 このセクションに記載されている関数と変数の一部では、現行メッセージ について 説明しています。 17 ページの『メッセージの処理』では、現行メッセージ に関す る追加情報が記載されています。 メッセージ処理情報 表 7. メッセージ処理情報 関数または変数 説明 ACTIONDL() NetView プログラムが関連メッセージを削除した理由を戻します。次のいずれかの値に なります。 &ACTIONDL ACTIONMG() (null) メッセージは削除されていません。 LOCAL CONSOLE DELETE ステージのオペレーターの重ね打ちによってメッ セージが削除されました。 NETVIEW NetView の DOM NVDELID または CURMSG オプション、あるい は NetView プログラムによってメッセージが削除されました。 SMSGID SMSGID を使用した MVS DOM によってメッセージが削除されまし た。 TOKEN TOKEN を使用した MVS DOM によってメッセージが削除されまし た。 TCB タスク終了に対する MVS DOM によってメッセージが削除されまし た。 ASID アドレス終了スペースに対する MVS DOM によってメッセージが削 除されました。 INVALID メッセージに、制御フラグ設定の無効な組み合わせがあります。 メッセージがアクション・メッセージである場合には 1 を戻します。それ以外の場合に は、0 を戻します。 &ACTIONMG AREAID() メッセージを表示する複数コンソール・サポート・パネル上の区域についての、 1 文字 (A から Z) の ID を戻します。 &AREAID ATTNID() &ATTNID VSE アテンション ID を戻します。正符号 (+) は、このメッセージに対して即時に 応 答が必要であることを示します。負符号 (-) は、このメッセージに対して応答が必要で あることを示します。 メッセージが VSE システムからのものである場合には、この関数には値があります が、非 VSE メッセージの場合にはヌルです。 AUTOTOKE() &AUTOTOKE DESC() &DESC 60 MVS メッセージ処理機能 (MPF) 自動化トークンの 1 から 8 文字までの名前を戻しま す。 注: MPF テーブルで AUTO(YES) または AUTO(NO) を指定している場合、値 YES および NO は自動化トークンではありません。 MVS DESCriptor コードを、順位のあるビットを表す一連の 16 個のオン (1) およびオ フ (0) の EBCDIC 文字で戻します。 コード値の詳細については、MVS ライブラリー を参照してください。 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 EVENT() WAIT 命令を満足する NetView イベントは、REXX EVENT() 関数の値により判別され ます。 REXX コマンド・リストは、EVENT() 関数を使用して、変数をセットし、その 設定値に基づき適切なアクションを取ることができます。考えられる EVENT() 関数の 戻り値は以下のとおりです。 M コマンド・リストが待っているメッセージが到着した。メッセージは、 MSGREAD 命令により読み取ることができる。 T コマンド・リストが待機していた時間枠が満了し、処理が再開された。 G ユーザーが GO コマンドを入力し、処理が再開された。 E WAIT または TRAP 命令が正しくコーディングされていない。例えば、オペ ランドを正しくない順序で入力した、または、マッチする TRAP 命令なし に、メッセージ命令に WAIT を発行した。コマンド・リストは、処理を再開 します。 X 追加データの PERSIST TRAP がアクティブで、PERSIST が完了しています。 コマンド・リストで WAIT 命令を発効しない場合は、 EVENT() 関数の値は、ヌル値 で置換されます。 HDRMTYPE() &HDRMTYPE IFRAUGMT() 受信されたメッセージまたは MSU の、 1 文字の NetView バッファー・タイプを指定 します。バッファー・タイプは、「IBM Tivoli NetView for z/OS プログラミング: アセ ンブラー」に説明されています。 自動化内部機能要求 (AIFR) が作成されたら、 UTC 平均時間を戻します。変数 IFRAUGMT は、ストア・クロック形式の 8 バイトの 16 進値で戻されます。 &IFRAUGMT 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 61 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 IFRAUIND() 2 バイトのインディケーター・ビットを、順位をもった一連の 16 個のオン (1) および オフ (0) の EBCDIC 文字で戻します。このデータは、DSIIFR にマップされます。有効 なビット位置は、次のとおりです。 1 MVS システム情報が付加されています (WQE データ)。 5 NetView PPT からのメッセージです。 6 クロスドメインで受信されたメッセージです。 11 メッセージは、ASSIGN コマンドによって経路指定された PRI です。 12 メッセージは、ASSIGN コマンドによって経路指定された SEC です。 13 メッセージは、ASSIGN コマンドによって経路指定された COPY です。 14 メッセージは、許可された受信先に経路指定されました。 15 メッセージは、NetView メッセージ改訂テーブルによって改訂されました。 16 メッセージは非送信請求されました。 &IFRAUIND 注: 1. 他のビットは、テストすることはできますが、定義された使用法はありません。すべ てのビットは、DSIIFR マッピング制御ブロックに定義されています。詳細について は、「IBM Tivoli NetView for z/OS プログラミング: アセンブラー」を参照してくだ さい。 2. 非送信請求フラグがオンになっているメッセージは、 ASSIGN PRI および SEC 経 路指定に対して適格です。 3. このフィールドは、AIFR インディケーター・フィールドの IFRAUIND および IFRAUIN2 を示しています。 4. サブシステム・ルーター CNMCSSIR を除き、任意のタスクに経路指定された MVS システム・メッセージは、送信請求メッセージと見なされます。 5. 送信請求メッセージおよび非送信請求メッセージの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。 IFRAUIN3() &IFRAUIN3 1 バイトのインディケーター・ビットを、順位をもった一連の 8 個のオン (1) および オフ (0) の EBCDIC 文字で戻します。このデータは、DSIIFR にマップされます。有効 なビット位置とその意味は、次のとおりです。 1-2 00 = デフォルトの優先順位 3 IFRAUI3X() &IFRAUI3X 01 = 低い優先順位 10 = 高い優先順位 11 = 受信側の優先順位のテスト VM PMX DSIIFR の IFRAUI3X の語の中の制御フラグに相当する、1 と 0 の値の 32 バイトの ストリングを戻します。先頭の 8 ビットは、IFRAUIN3 と同じで、32 ビットすべてを 一度にアクセスできます。 IFRAUSB2() DSIIFR 内の 2 バイトのユーザー・フィールドを 2 文字のストリングで戻します。 &IFRAUSB2 注: 1. フィールドがすべてブランクかまたは 2 進ゼロの任意の組み合わせである場合、こ の関数はヌルです。 2. IFRAUSB2 と IFRAUSRB は同じユーザー・フィールドを指しますが、値は別の形 式で戻します。 62 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 IFRAUSC2() &IFRAUSC2 DSIIFR 内の 16 バイトのユーザー・フィールドを、順位のあるビットを表す一連の 128 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 注: IFRAUSC2 と IFRAUSRC は同じユーザー・フィールドを指しますが、値は別の形 式で戻します。 IFRAUSDR() 発信元の NetView タスクの 1 文字から 8 文字までの名前を戻します。 &IFRAUSDR &IFRAUSRB DSIIFR 内の 2 バイトのユーザー・フィールドを、順位のあるビットを表す一連の 16 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 注: IFRAUSRB と IFRAUSB2 は同じユーザー・フィールドを指しますが、値は別の形 式で戻します。 IFRAUSRC() DSIIFR 内の 16 バイトのユーザー・フィールドを 16 文字のストリングで戻します。 &IFRAUSRC 注: IFRAUSRB() 1. フィールドがすべてブランクかまたは 2 進ゼロの任意の組み合わせである場合、こ の関数はヌルです。 2. IFRAUSRC と IFRAUSC2 は同じユーザー・フィールドを指しますが、値は別の形 式で戻します。 IFRAUTA1() &IFRAUTA1 6 バイトのインディケーター・ビットを、順位をもった一連の 48 個のオン (1) および オフ (0) の EBCDIC 文字で戻します。 IFRAUTA1 を使用すると、制御情報を検査す ることができます。有効なビット位置は、次のとおりです。 1, 2, 25 HOLD アクション。 5, 6, 26 SYSLOG アクション。 7, 8, 27 NETLOG アクション。 9, 10, 28 HCYLOG アクション。 11, 12, 29 DISPLAY アクション。 13, 14, 30 BEEP アクション。 16 コマンド・エコー 20 MVS からのメッセージ。 23 VSE 形式メッセージ。 24 アクション・メッセージ。 47 自動化ベクトル拡張が存在します。 48 表示ベクトルがデータ・バッファー内に存在します。 注: 1. 他のビットは、テストすることはできますが、定義された使用法はありません。 2. DSIIFR フィールドの IFRAUTA1 から IFRAUTA6 までについての説明は、「IBM Tivoli NetView for z/OS プログラミング: アセンブラー」を参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 63 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 IFRAUWF1() 4 バイトの MVS 特有の WTO 情報を、順位のあるビットを表す一連の 32 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。定義された使用法で有効な特定のビッ ト位置とその意味は、次のとおりです。 6 メッセージは WTOR です。 7 メッセージは抑制されます。 8 すべてにブロードキャストします。 9 ジョブ名を表示します。 10 状況を表示します。 14 セッションを表示します。 注: 他のビットは、テストすることはできますが、定義された使用法はありません。こ の区域内での MLWTO フラグにも定義された使用法はありません。 MLWTO インデ ィケーターは、データ・バッファーに移されます。 &IFRAUWF1 JOBNAME() &JOBNAME 1 から 8 文字までの MVS ジョブ名の ID を戻します。 JOBNAME は、メッセージを 発信したジョブの名前であるため、メッセージが指しているジョブの名前と常に同じで あるとは限りません。例えば、MVS が NetView ジョブに関するメッセージを発行して いる場合、ジョブ名は異なることがあります。また、ジョブの開始時または停止時に JOBNAME がイニシエーターの名前 (実際のジョブ名ではなく) を含む可能性もありま す。始動中または停止中にメッセージが出される場合は、ジョブ名は JOBNAME 関数 を使用するのではなくメッセージ・テキストから抜き出してください。 MSGCOJBN を使用して同じ情報を利用することができます。MSGCOJBN について、 66 ページを参照してください。 JOBNUM() 8 文字の MVS ジョブ番号 ID を戻します。 注: MVS ジョブ ID には、ブランクが埋め込まれている場合があります。 &JOBNUM KEY() メッセージに関連した 8 文字の検索キーを戻します。 &KEY LINETYPE() &LINETYPE 64 以下の複数行のオペレーター向け書き込み (MLWTO) 行タイプまたは MSU データ・ バッファー・タイプを戻します。 C メッセージ制御行。 L メッセージ・ラベル行。 D メッセージ・データ行。 DE 最終メッセージ・データ行。 E この行は最終メッセージ行で、データは入っていません。 H この行は HIER データ・バッファー・タイプです。 M この行は MSU データ・バッファー・タイプです。 ブランク メッセージは単一行メッセージです。 ヌル このコマンド・リストに関連したメッセージまたは MSU データ・バッファー はありません。 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MCSFLAG() システム・メッセージ・フラグを、順位のあるビットを表す一連の 8 個のオン (1) お よびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとお りです。 1 メッセージを条件付きでコンソール SYSCONID に送信します。 2 メッセージを無条件でコンソール SYSCONID に送信します。 3 RESP。 4 REPLY。 5 BRDCST。 6 HRDCPY のみ。 7 NOTIME。 8 NOCPY。 &MCSFLAG 注: 1. この関数は、自動化テーブル比較項目と同じ、複数コンソール・サポート・フラグの マッピングを戻しません。 2. MCSFLAG='00000000' の設定は有効です。これは、着信 WTO により設定される MCSFLAG をオーバーライドします。 MSGASID() &MSGASID MSGAUTH() &MSGAUTH MSGCATTR() &MSGCATTR MSGCMISC() &MSGCMISC メッセージが出された MVS のシステム・アドレス・スペース ID を戻します。 MSGASID の値は、1 桁から 5 桁までの 10 進数です。 注: MVS アドレス・スペースから出されたものではないメッセージに対しては、この 値はヌルです。 メッセージが許可プログラムから出されたものであるかどうかを示す 2 文字の値を戻し ます。 00 WTO メッセージは MVS から出されていません。 10 WTO は未許可プログラムから出されています。 11 WTO は許可プログラムから出されています。 16 ビットの MVS メッセージ属性フラグを、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のと おりです。 1 メッセージは抑制されます。 2 メッセージはコマンド応答です。 3 メッセージは許可プログラムによって出されました。 4 メッセージは、自動化メッセージ保存機能 (AMRF) によって保存されます。 注: 他のビットは、テストすることはできますが、定義された使用法はありません。 8 ビットの MVS の各種経路指定フラグを、順位のあるビットを表す一連のオン (1) お よびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとお りです。 1 UD (配信不能) メッセージを表示します。 2 UD メッセージのみを表示します。 3 ID のみを使用してキューに入れます。 4 メッセージが NetView 自動化に対して適格であるとして、メッセージ処理機 能 (MPF) テーブルにマークされているかどうかを示します。 注: 他のビットは、テストすることはできますが、定義された使用法はありません。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 65 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGCMLVL() 16 ビットの MVS メッセージ・レベル・フラグを、順位のあるビットを表す一連のオ ン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、 次のとおりです。 1 WTOR 2 即時アクション 3 クリティカル・イベント・アクション 4 イベント・アクション 5 通知 6 ブロードキャスト 注: 他のビットは、テストすることはできますが、定義された使用法はありません。 &MSGCMLVL MSGCMSGT() &MSGCMSGT 16 ビットの MVS メッセージ・タイプ・フラグを、順位のあるビットを表す一連のオ ン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、 次のとおりです。 1 ジョブ名を表示します。 2 状況を表示します。 3 活動状態をモニターします。 6 SESS をモニターします。 注: 他のビットは、テストすることはできますが、定義された使用法はありません。 MSGCNT() REXX &MSGCNT 現行メッセージのメッセージ・ストリング内の項目数を戻します (現行メッセージ につ いては、 17 ページの『メッセージの処理』を参照してください)。 REXX の終り NetView コマンド・リスト言語 メッセージ・ストリング内のワード数を戻します。 制御変数を &WAIT とともに使用する方法の詳細については、157 ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。 NetView コマンド・リスト言語 の終り MSGCOJBN() 1 から 8 文字までの発信元ジョブ名を戻します。JOBNAME (64 ページ) を使用して、 同じ情報を利用することができます。 &MSGCOJBN MSGCPROD() &MSGCPROD MSGCSPLX() 16 文字の MVS プロダクト・レベルを戻します。文字は、次のように定義されていま す。 v 最初の 4 文字は、MVS 制御点オブジェクトのバージョン・レベルを表します。 v 次の 4 文字は、制御プログラム名 (MVS) を表します。 v 最後の 8 文字は、発信側システムの機能変更 ID (FMID) を表します。 受け取ったメッセージが発信された MVS SYSPLEX の 1 から 8 文字の名前を戻しま す。 MVS/ESA バージョン 4 リリース 3 以降で実行している場合に使用できます。 &MSGCSPLX MSGCSYID() DOM に対する 1 から 3 桁の 10 進数のシステム ID を戻します。 &MSGCSYID 66 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGDOMFL() 8 ビットの MVS DOM フラグを、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。 1 メッセージ ID による DOM 2 システム ID による DOM 3 ASID による DOM 4 ジョブ・ステップ TCB による DOM 5 トークンによる DOM &MSGDOMFL MSGGBGPA() &MSGGBGPA 4 バイトの 16 進数の背景表示属性を戻します。有効なバイトとその説明は、次のとお りです。 1 背景色制御フィールド 2 背景色フィールド 3 背景色強調表示フィールド 4 背景色輝度フィールド 次の書式のいずれかを使用して、16 進値を検査してください。 REXX IF MSGGBGPA() = ’12345678’X THEN ... REXX の終り NetView コマンド・リスト言語 &IF &MSGGBGPA = X’12345678’ &THEN ... NetView コマンド・リスト言語 の終り MSGGDATE() &MSGGDATE MSGGFGPA() &MSGGFGPA yyyyddd の 7 文字形式でメッセージ日付を戻します。 yyyy は年、ddd は暦日を示しま す。 注: これが必ずしも現在日付であるとは限りません。MVS が、メッセージが発行され たとして関連づけた日付である場合もあります。 4 バイトの 16 進数の前景表示属性を戻します。有効なバイトとその意味は、次のとお りです。 1 前景色制御フィールド 2 前景色フィールド 3 前景色強調表示フィールド 4 前景色輝度フィールド 次の書式のいずれかを使用して、16 進値を検査してください。 REXX IF MSGGFGPA() = ’12345678’X THEN ... REXX の終り NetView コマンド・リスト言語 &IF &MSGGFGPA = X’12345678’ &THEN ... NetView コマンド・リスト言語 の終り 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 67 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGGMFLG() &MSGGMFLG 16 ビットの MVS 汎用メッセージ・フラグを戻します。 有効なビット位置とその意味 は、次のとおりです。 1 DOM (オペレーター・メッセージの削除) MSGGMID() 4 文字の 16 進値の MVS メッセージ ID フィールドを戻します。 &MSGGMID MSGGSEQ() 1 から 8 文字までの数値の 10 進数シーケンス番号を戻します。この関数は MSGGMID の最後の 3 バイトを表します。 &MSGGSEQ MSGGSYID() 1 から 3 文字までの数値の 10 進数システム ID を戻します。これは、MSGGMID の 最初のバイトです。 &MSGGSYID MSGGTIME() 11 文字 (ピリオドを含む) の時刻を hh.mm.ss.th の形式で戻します。この記述の中で、 hh は時間、mm は分、ss は秒、th は 10 分の 1 秒および 100 分の 1 秒です。 &MSGGTIME MSGID() REXX &MSGID 現行メッセージ のメッセージ ID を戻します (現行メッセージ の定義については、 17 ページの『メッセージの処理』を参照してください)。これは先頭のトークンです。ここ ではトークンはブランクで判別されます。応答 ID (存在する場合) は無視されます。メ ッセージとともに応答 ID が送信される場合には、先頭のトークンとして使用されませ ん。複数行オペレーター宛メッセージ (MLWTO) の場合、MSGID はメッセージの先頭 行の先頭のトークンを使用します。MSU バッファーが処理中の場合、MSGID はヌル ('') と同じです。 注: VM PROP/PMX インターフェースを通じて受信されるメッセージの場合、メッセー ジの前に追加される情報のため、MSGID は実際のメッセージ ID に設定されません。 REXX の終り NetView コマンド・リスト言語 REXX と異なる点は、&MSGID は NetView 自動化では &WAIT および LINKPD コマ ンドとともに使用されることです。 NetView コマンド・リスト言語 の終り 68 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGITEM(n) REXX &MSGITEM 現行メッセージからの項目を戻します ( 17 ページの『メッセージの処理』では、現行メ ッセージ に関する追加情報が記載されています)。項目 0 と同様、応答 ID (存在する 場合) の後の先頭のブランク区切りストリングは、メッセージ ID と見なされます。メ ッセージ ID の後、項目 1 から以下の MSGCNT() の構文解析が実行されます。 v ストリングはブランクまたはコンマで区切ることができます。 v ブランクまたはコンマが前にある単一引用符で始まるストリング、およびブランクま たはコンマが後にある単一引用符で終わるストリングは、引用符付きストリングと見 なされ、単一項目として扱われます。これは引用符で囲まれません。 v 引用符付きストリング内にはない、他のすべての区切られたストリングは単一項目と して扱われます。 v 引用符付きストリング内にはない区切り文字は、どの項目の一部でもありません。 MSGITEM は 255 より長いストリングを戻せます。 REXX の終り MSGORIGN() REXX &MSGORIGIN MSGREAD によって読み取られる最終メッセージが発信されたドメインを戻します。 MSGORIGN() は、NetView 自動化では MSGREAD コマンドとともに、そしてまた LINKPD コマンドとともに使用されます。 関数を MSGREAD とともに使用する方法の詳細については、 NetView オンライン・ヘ ルプを参照してください。 REXX の終り NetView コマンド・リスト言語 メッセージが発信されたドメインを指定します。 &MSGORIGIN は、NetView 自動化 では、 &WAIT とともに、そしてまた LINKPD コマンドとともに使用されます。 NetView 自動化の詳細については、103 ページの『第 5 章 自動化リソース管理』を参 照してください。 制御変数を &WAIT とともに使用する方法の詳細については、157 ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。 LINKPD コマンドの詳細については、178 ページの『LINKPD の結果』を参照してくだ さい。 NetView コマンド・リスト言語 の終り 注: このコマンドの NetView コマンド・リスト言語バージョンと REXX バージョンと では、スペルにわずかな違いがあります。コマンド・リストを作成するときは、正しい スペルを使用するよう注意してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 69 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGSRCNM() 1 から 17 文字までのソース・オブジェクト名を戻します。このソース名は、 DSIMMDBS または CNMPMDB のいずれかのアプリケーション・プログラミング・イ ンターフェース (API) の呼び出しによって提供されたソース・オブジェクトからの ID です。 &MSGSRCNM DSIMMDBS の詳細については、「IBM Tivoli NetView for z/OS プログラミング: アセ ンブラー」を参照してください。 CNMPMDB に関する詳細については、「IBM Tivoli NetView for z/OS プログラミング: PL/I および C」を参照してください。 ソース名は、以下の規則に従ってソース・オブジェクトから選択されます。 v 最初のニックネーム (ある場合) v ネットワーク・アドレス可能単位 (NAU) 名に連結された最初のネットワーク ID で、間にピリオド (.) を付けたもの(両方が順番に存在する場合) v 最初の NAU 名 (ある場合) v ストリング 『N/A』 (このリスト内の他の名前のどれもソース・オブジェクトで指定 されていない場合) v ヌル (ソース・オブジェクトが存在しない場合) ソース・オブジェクトの定義方法の詳細については、「IBM Tivoli NetView for z/OS プ ログラミング: アセンブラー」の DSIAIFRO マッピングを参照してください。 MSGSTR() REXX &MSGSTR 現行メッセージのメッセージ・テキストを戻します (現行メッセージ については、 17 ページの『メッセージの処理』を参照してください)。 MSGSTR() は、メッセージ ID (MSGID() 関数によって使用されるトークン) を組み込みません。複数行オペレーター 宛メッセージ (MLWTO) の場合、MSGSTR() はメッセージの先頭行のメッセージ・テ キストになります。 REXX の終り NetView コマンド・リスト言語 NetView が受け取った最新のメッセージのメッセージ・テキストです。&MSGSTR は、 メッセージ ID (&MSGID 制御変数によって使用されるトークン) を組み込みません。 &MSGSTR は、&WAIT および LINKPD コマンドとともに使用されます。 制御変数を &WAIT とともに使用する方法の詳細については、157 ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。 LINKPD コマンドの詳細については、178 ページの『LINKPD の結果』を参照してくだ さい。 NetView コマンド・リスト言語 の終り 70 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MSGTOKEN() メッセージに関連したトークンを示す、1 から 10 桁までの 10 進数を戻します。 注: TOKEN 値を使用して、MSGTOKEN を設定することによって WTO をグループ化 してから、WTO コマンドを発行することができます。後で、単一の DOM コマンドを 使用して、MSGTOKEN にトークン値を指定することによってこれらのメッセージを削 除できます。 &MSGTOKEN MSGTSTMP() &MSGTSTMP MSGVAR(n) メッセージのタイム・スタンプを戻します。このフィールドの値は、NetView メッセー ジ・バッファーが作成された時刻です。このフィールドは、hhmmss という形式の 6 文 字のストリングです。ここで各要素は以下のとおりです。 hh 時間 mm 分 ss 秒 注: MSGVAR の使用は、互換性のためにサポートされています。MSGITEM を使用し てください。これは、MSGVAR(n) 関数は現行メッセージ に関するデータを戻さないた めです ( 17 ページの『メッセージの処理』を参照)。現行メッセージ情報を戻すには、 MSGITEM(n) を使用してください。 メッセージのテキストを戻します。 NetView プログラムは、メッセージのテキストを 反映させるために、MSGVAR(1) 関数から MSGVAR(31) 関数までの値を変更します。 注: MSGVAR(1) から MSGVAR(31) は、NetView コマンド・リスト言語変数の &1 か ら &31 と同等です。 それぞれの MSGVAR(n) 関数は、 MSGREAD によって読み取られた最終メッセージの トークンに設定されます。 MSGVAR(1) は、メッセージ ID の後に続くトークン (MSGID() 関数によって使用されるトークン) に設定されます。 MSGVAR(2) は、 MSGVAR(1) の右側にある次のトークンに設定され、同様に最大で 31 個の変数が設定 されます。 MSGVAR(n) は、NetView 自動化では、MSGREAD および LINKPD コマ ンドとともに使用されます。 関数を MSGREAD とともに使用する方法の詳細については、 NetView オンライン・ヘ ルプを参照してください。 LINKPD コマンドの詳細については、178 ページの『LINKPD の結果』を参照してくだ さい。 MSGVAR(n) 関数は、&1 から &31 の NetView コマンド・リスト言語パラメーター変 数が呼び出されるのと同じ方法でコマンド・リストが呼び出されるときに、値が指定さ れます。 MSGTYP() &MSGTYP システム・メッセージ・タイプを、順位のあるビットを表す一連の 3 個のオン (1) お よびオフ (0) の EBCDIC 文字で戻します。 1 つの位置における文字 (1) は、以下の値 に対応します。 1 SESS - IFRAUWF1 (14) に対応します。 2 JOBNAMES - IFRAUWF1 (9) に対応します。 3 STATUS - IFRAUWF1 (10) に対応します。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 71 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 MVSRTAIN() 自動化テーブルでは、メッセージの MVS 保存特性を記述する 3 ビット・フィールド です。 注: NetView が SSI インターフェースを使用している場合は、MVS WQE 制御ブロッ クに定義される 3 つのフラグに相当する 3 つのフラグです。拡張コンソール・モード で実行している場合は、MDB の類似した 3 つのフラグに相当する 3 つのフラグで す。このフラグの正確な意味および使用は、オペレーティング・システムのプロパティ ーです。 &MVSRTAIN NetView コマンド・リスト言語では、&MVSRTAIN はメッセージの MVS 保存特性を 記述する 3 ビット・フィールドです。 NVDELID() &NVDELID PRTY() &PRTY REPLYID() メッセージについての 24 文字の NetView 削除 ID を戻します。NetView の DOM NVDELID コマンドを使用して、NetView プログラム内のすべてのタスクに対する保留 キューからメッセージを除去することができます。これは、MVS DOM 関数と同等の NetView 関数ですが、MVS WTO または WTOR 以外のメッセージに対して使用されま す。 発信元によって設定されたとおりに、メッセージの優先順位を戻します。このフィール ドは、1 桁から 5 桁までの 10 進数です。 NetView プログラムは、メッセージ処理時 にこのフィールドを使用しません。 WTOR に対する応答 ID を戻します。このフィールドには最大 8 文字の長さまで入り ます。 &REPLYID VSE システムからのメッセージの場合、 REPLYID は 6 文字のメッセージ接頭語のう ちの最後の 3 文字です。戻された 3 文字は、送信側システムがその文字を使用してメ ッセージに対する応答 ID を指定している場合のみ、そのメッセージの応答 ID となり ます。 ROUTCDE() &ROUTCDE メッセージに割り当てられた MVS 宛先コード (複数の場合もある) を戻します。この フィールドの値は、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字です。メッセージに割り当てられる ROUTCDE の最大数は 128 です。 注: 1. 先頭の 16 ビットの後に、ROUTCDE で戻される文字数は 1 つ以上のオン (1) を含 む 8 の最小の倍数です。したがって、ストリング全体ではなく、ROUTCDE の特定 のサブストリングについて比較するようにしてください。 例えば、ビット 17 だけがオンになっている場合、16 個のゼロのストリング、1 個 の 1、さらに 7 個のゼロが戻されます (000000000000000010000000)。ビット 17 が オンになっているかをテストする一方式を、73 ページの図 5 に REXX の例で示し ます。 NetView コマンド・リスト言語で作成された、機能上同等なコードを 73 ページの 図 6 に示します。 2. 特定のビットを検査する別の方式は、74 ページの図 7 に示すように、REXX 環境 POS (位置) 関数を使用することです。 3. REXX POS 関数の詳しい使用法については、REXX ライブラリーを参照してくださ い。 72 プログラミング: REXX および NetView コマンド・リスト言語 メッセージ処理 表 7. メッセージ処理情報 (続き) 関数または変数 説明 SESSID() メッセージを送信した TAF (端末アクセス機能) セッションの 1 から 8 文字の ID を 戻します。 &SESSID NetView 自動化の詳細については、103 ページの『第 5 章 自動化リソース管理』を参 照してください。 注: ドメイン ID と同じ SESSID を用いて TAF セッションが開始されている場合、 SESSID は予測できない値に設定され、結果も予測できないものになる可能性がありま す。現行メッセージが PPI 受信側のパイプ・ステージから発信されていた場合、 SESSID は SAF ID を示します。 個々のメッセージのインスタンスを識別する、1 から 10 文字の 10 進数を戻します。 この関数は、ディスプレイから除去するアクション・メッセージを識別するために、 DOM コマンドによって使用することができます。 DOM の詳細については、NetView オンライン・ヘルプを参照してください。 SMSGID() &SMSGID このフィールドには MSGGMID と同じ情報が入りますが、 SMSGID は 10 進数で戻 され、MSGGMID は 16 進値として戻される点が異なります。 メッセージに関連した MVS システム・コンソールの名前を戻します。システム・コン ソール名の長さは、2 から 8 文字までです。 注: コマンド改訂環境では、コマンドが発行されたコンソール名を戻します。 SYSCONID() &SYSCONID 到着したメッセージの発信元の MVS システムの、 1 から 8 文字の ID を戻します。 注: コマンド改訂環境では、コマンドが発行されたコンソール名を戻します。 SYSID() &SYSID WTOR へオペレーター応答を戻します。 WTO.REPLY &WTOREPLY REXX REXX バージョンは関数ではありません。これはローカル変数であるため、終わりに括 弧はありません。 REXX の終り ROUTCDE の例 /* STANDARD COMPARE */ IF ROUTCDE() = ’000000000000000010000000’ THEN SAY ’ROUTCDE BIT 17 IS SET.’ 図 5. ビット 17 をテストする REXX の例 &IF &ROUTCDE = 000000000000000010000000 &THEN &WRITE ROUTCDE BIT 17 IS SET 図 6. ビット 17 をテストする NetView コマンド・リスト言語の例 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 73 コマンド処理 /* POS COMPARE (Using the REXX environment function) */ BIT2CHK = 17 IF POS(’1’,ROUTCDE(),BIT2CHK) = BIT2CHK THEN SAY ’ROUTCDE BIT 17 IS SET’ 図 7. ビット 17 をテストする REXX の POS 関数の使用法 コマンド処理情報関数 74 ページの表 8 は、コマンド改訂環境で発信されるコマンドで使用可能な関数を示 しています。 表 8. コマンド処理情報 関数または変数 説明 RECEDATA() コマンド改訂テーブルの NETVONLY アクションを使用して NetView 環境に転送され たコマンドの発信元についての情報を提供します。詳細については、表 9 を参照してく ださい。 SYSCONID() コマンドが発行されたコンソール名を戻します。 SYSID() コマンドが発行されたコンソール名を戻します。 表 9 は、RECEDATA 関数の使用時に指定可能な引数と、戻される値を示していま す。 表 9. RECEDATA 引数 引数 ヌル 74 同義語 戻されるデータ 引数を入力しないときは、以下の値が戻されます。 値 説明 0 呼び出し元のプロシージャーが NETVONLY アク ションによって駆動されていなかった場合 asid 発信元のアドレス・スペースのアドレス・スペー ス ID を 4 文字の 16 進数で表記したもの プログラミング: REXX および NetView コマンド・リスト言語 コマンド処理 表 9. RECEDATA 引数 (続き) 引数 同義語 戻されるデータ ASTYPE T TYPE アドレス・スペースのタイプ (ジョブ・タイプ)。 1 文字の 値が戻されます。 値 説明 D USS 永続プロシージャー。 アドレス・スペースに、JOB に該当する、開始さ れたプログラムの名前が付いています。ただし、 OpenMVS アドレス・スペース・ブロックが存在 している場合、それは特殊目的 USS 永続プロシ ージャーを示します。 AUTH A J アドレス・スペースは JOB です。 N アドレス・スペースは、オペレーティング・シス テム初期化 (NIP) 処理の間に開始されたシステ ム・アドレス・スペースです。 S アドレス・スペースは開始タスク (STC) です。 T アドレス・スペースはタイム・シェアリング・ユ ーザー (TSO) です。 U アドレス・スペースは、USS でフォークまたは作 成されたプロシージャーです。 * エラー: コマンドを発信したアドレス・スペース がクローズしました。 ? エラー: データが矛盾します (一時的な状態である 可能性があります)。 ! エラー: データが矛盾します。 > エラー: 指定された ASID が、システムで生成さ れた ASID の最大値を超えています。 コンソールの権限。 1 文字の値が戻されます。 値 説明 C コンソール I 入出力 M マスター S システム GROUP G SAF グループ JOBNAME J 1 から 8 文字までの MVS ジョブ名 ID TESTMODE X テーブル・ロード時のテスト・モードの状態。 USER U 値 説明 0 テスト・モードが要求されませんでした 1 テスト・モードが要求されました SAF ユーザー名 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 75 コマンド処理 使用上の注意: 引数を指定して RECEDATA 関数が開始されたときに、開始プロシ ージャーが NETVONLY アクションによって駆動されていなかった 場合は、REXX エラーが生成されます。まず引数なしで RECEDATA 関数を使用して、0 の値がないかどうかを確認してか ら、コマンド改訂環境で任意のアクションを実行することを検討し てください。 REXX 管理サービス単位情報関数 77 ページの表 10 では、管理サービス単位 (MSU) 処理に対する REXX 関数を示 します。MSU には次の情報が含まれます。 v 制御点管理サービス単位 (CP_MSU) v マルチドメイン・サポート・メッセージ単位 (MDS_MU) v ネットワーク管理ベクトル・トランスポート (NMVT) v 保守用統計レコード (RECMS) v 保守用統計様式化レコード (RECFMS) MSU の詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照し てください。 77 ページの表 10 では、以下の用語が使用されています。 総称 MSU サブベクトル 92 を含むすべての MSU。汎用 MSU には、次のものがあり ます。 v サブベクトル 92 を含むアラート v 常にサブベクトル 92 を含む解像度 統計専用 RECMS RECMS レコードの中には、統計データだけを含むものがあります。統計デ ータのみを含む RECMS レコードは、記録モード (RECMS へのバイト 8、1 オフセット) X'81'、X'86'、および X'87' (X'87' の場合は永続エラーで はなく一時エラーを表します) のレコードです。 統計専用 RECFMS RECFMS レコードの中には、統計データだけを含むものがあります。統計 データのみを含む RECFMS レコードは、RECFMS タイプ (RECFMS への バイト 8、1 オフセット) 1、4、および 5 のレコードです。 76 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 関数 説明 HIER (n) MSU に関連した NetView ハードウェア・モニター階層データへのユーザー・アクセス を提供します。n は、特定の名前/タイプの組み合わせの索引番号 (1 から 5) を指定し ます。 注: 1. HIER() (n を指定しない場合) は、BNJ146I メッセージで表示されたものとは少し異 なるリソース階層を戻します。次の例で、名前/タイプの組み合わせを示します。 aaaaaaaa1111bbbbbbbb2222....eeeeeeee5555 文字はリソース名を表し、数字はリソース・タイプを表しています。 ハードウェア・モニターは、1 個から 5 個までの名前/タイプの組み合わせを定義し ます。それぞれの名前は 8 文字長で、それぞれのタイプは 4 文字です。名前とタイ プには、必要に応じてブランクで埋め込みが行われます。 2. HIER (n) は、n に相当する名前/タイプの組み合わせ aaaaaaaa1111 を戻します。n に対応する名前/タイプの組み合わせがない場合は、ヌル値が返されます。 3. HIER(n) は、以下の条件の下ではヌルを戻します。 v コマンド・リストが自動化テーブルで実行されない場合 v 自動化テーブルが MSU によって駆動されなかった場合 v MSU にハードウェア・モニター・リソース階層がない場合 4. 2 次記録が実行される階層レベルのリソース名を判別する場合は、HIER を指定した HMSECREC 関数を使用してください。詳しくは、HMSECREC の説明 (83 ページ) を参照してください。 5. リソース階層内に複合リンクが存在する場合には、HIER() によって戻される情報に はないリソース・レベルが存在する場合があります。複合リンクが存在するときは、 システム図を使用して完全な階層構成を判別しなければなりません。複合リンクが存 在するかどうかを検査するには、HMCPLINK 関数を使用します。HMCPLINK 関数 の詳細については、77 ページの表 10 を参照してください。 6. NetView 組み込み関数 &HIER の詳細については、135 ページの『&HIER』 を参照 してください。 HMASPRID() 1 から 9 文字のアラート送信元プロダクト ID を戻します。この値は、SRFILTER (SRF) コマンドで説明した prodid の値と同一です。ID は次のいずれかになります。 v 1 から 4 文字のハードウェア・プロダクト ID v 1 から 9 文字のソフトウェア・プロダクト ID 末尾のブランクは除去されます。 以下の場合、HMASPRID はヌルを戻します。 v MSU が総称レコードではない。 v ハードウェア・モニターによって MSU が自動化に実行要求されていない。 最大長は 9 文字です。 HMASPRID は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 86 ページの『HMASPRID』 の例を参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 77 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMBLKACT() 3 文字のブロック ID と 2 文字のアクション・コードから成る 5 文字の値を戻しま す。この値は、SRFILTER (SRF) コマンドで説明した code の値と同一です。 MSU が以下のいずれかのタイプであるか、ハードウェア・モニターによって自動化テ ーブルに実行要求されていない場合には、HMBLKACT はヌルを戻します。 v 総称アラート (X'0000') v 解像度 (X'0002') v PD 統計 (X'0025') v リンク構成データ (X'1332') v 統計専用 RECMS v 統計専用 RECFMS 上記以外の場合には、値が戻されます。 HMBLKACT が値を戻す場合の MSU の例には、非総称アラート (X'0000')、統計専用 ではない RECMS、および統計専用ではない RECFMS が含まれています。 最大長は 5 文字です。 HMBLKACT は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 86 ページの『HMBLKACT』 の例を参照してください。 HMCPLINK() 0、1、またはヌルを戻して、以下のように複合リンクが存在するかどうかを示します。 1 複合リンクが存在します。 複合リンクが存在する場合には、HIER 関数によって返されるリソース階層内 にはないリソース・レベルが存在する場合があります。複合リンクが存在する ときは、システム図を使用して完全な階層構成を判別しなければなりません。 詳しくは、HIER の説明 (77 ページ) を参照してください。 最新のイベント (Most Recent Events) などのハードウェア・モニターのパネル では、パネルの最上部にある絵で表したリソース階層にアスタリスク (*) を付 け、パネルの最下部近くのメッセージ行にメッセージ BNJ1538I を表示するこ とで、複合リンクが存在することを示します。 0 複合リンクは存在しません。 ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんで した。 最大長は 1 文字です。 HMCPLINK は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 86 ページの『HMCPLINK』 の例を参照してください。 78 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMEPNAU() HMEPNAU は、NV-UNIQ/LUC アラート転送プロトコルを使用して、MSU がアラート 転送を発信したエントリー・ポイント・ノードの NAU 名を戻します。 HMEPNAU は、ローカル MSU に対してローカルの NAU (ドメイン) 名を戻します。 SNA-MDS/LU 6.2 アラート転送プロトコルを使用したアラート転送の場合、HMEPNAU は、最初に ALERT_NETOP アプリケーションにアラートを転送した MS アプリケーシ ョンが含まれているエントリー・ポイント・ノードの NAU 名を戻します。HMEPNAU は、NAU 名の先頭にアスタリスク (*) を追加して、戻された名前がエントリー・ポイ ント・ノード名ではない可能性があることを示します。例えば、ノード名が NETV01 で、そのノードが中間ノードかエントリー・ポイント・ノードかを HMEPNAU が判別 できない場合には、*NETV01 を戻します。 注: 詳しくは、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。 最大長は 9 文字です。 HMEPNAU は、ハードウェア・モニターによって自動化に実行要求されている MSU にのみ適用されます。その他の MSU に対しては、HMEPNAU はヌルを戻します。 87 ページの『HMEPNAU、HMEPNET および HMFWDSNA』 の例を参照してくださ い。 HMEPNET() HMEPNET は、MSU が発信したエントリー・ポイントの NETID 名を戻します。 SNA-MDS/LU 6.2 アラート転送プロトコルを使用したアラート転送の場合、HMEPNET は最初に ALERT_NETOP アプリケーションにアラートを転送した MS アプリケーショ ンが含まれているエントリー・ポイント・ノードの NETID 名を戻します。HMEPNET は、NETID 名の先頭にアスタリスク (*) を追加して、戻された名前がエントリー・ポ イント・ノード名ではない可能性があることを示します。 HMEPNET はローカル MSU に対してローカル NETID 名を戻します。 ハードウェア・モニターがエントリー・ポイントの NETID 名を判別できない場合は、 HMEPNET はアスタリスク (*) を戻します。 HMEPNET はアスタリスク (*) を NV-UNIQ/LUC アラート転送プロトコルによって転 送されるすべての MSU に対して戻し、ハードウェア・モニターが NETID 名を判別で きないことを示します。 注: 詳しくは、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。 最大長は 9 文字です。 HMEPNET は、ハードウェア・モニターによって自動化に実行要求されている MSU に のみ適用されます。その他の MSU に対しては、HMEPNET はヌルを戻します。 87 ページの『HMEPNAU、HMEPNET および HMFWDSNA』 の例を参照してくださ い。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 79 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMEPNETV() 0、1、またはヌルを戻して、MSU が発信したエントリー・ポイントがリモート・ノー ドの NetView プログラムであったかどうかを示します。この機能は、SNA-MDS/LU 6.2 アラート転送プロトコルを使用して転送された MSU にのみ適用されます。 1 エントリー・ポイントは NetView プログラムでした。 0 エントリー・ポイントは NetView プログラムではありませんでした。 ヌル MSU が SNA-MDS/LU 6.2 アラート転送プロトコルを使用して転送されてい ませんでした。 注: 1. 転送メカニズムの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイ ド」を参照してください。 2. 最大長は 1 文字です。 3. HMEPNETV は、ハードウェア・モニターによって自動化に実行要求されている MSU にのみ適用されます。その他の MSU に対しては、HMEPNETV はヌルを戻し ます。 4. HMEVTYPE() 87 ページの『HMEPNETV』 の例を参照してください。 MSU のイベント・タイプを戻します。イベント・タイプ内の末尾のブランクはすべて 除去されます。以下のイベント・タイプが有効です。 AVAL INST RSLV BYPS INTV RSNT CUST NTFY SCUR DLRC PAFF SNA HMV PERF TEMP HELD PERM USER IMPD PROC UNKN IMR REDL すべてのイベント・タイプの詳細については、NetView のオンライン・ヘルプを参照し てください。 MSU が以下のいずれかのタイプであるか、ハードウェア・モニターによって自動化に 実行要求されていない場合には、HMEVTYPE はヌルを戻します。 v PD 統計 (X'0025') v リンク構成データ (X'1332') v 統計専用 RECMS v 統計専用 RECFMS 最大長は 4 文字です。 HMEVTYPE は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 87 ページの『HMEVTYPE』 の例を参照してください。 80 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMFWDED() 0、1、またはヌルを戻して、MSU が別の NetView ノードから転送されたかどうかを示 します。 1 MSU は NV-UNIQ/LUC アラート転送プロトコルを経由して、別の NetView プログラムから転送されました。 0 MSU は別の NetView プログラムから転送されなかったか、SNA-MDS/LU 6.2 アラート転送プロトコルを使用して転送されました。0 が戻される例を示しま す。 v 通信ネットワーク管理インターフェースを通じて受信したローカル MSU v オペレーティング・システムから受信したローカル MSU v PPI (プログラム間インターフェース) を通じて受信した MSU v SNA-MDS/LU 6.2 アラート転送プロトコルを使用して受信した MSU ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんで した。 LUC 転送方式によってエントリー・ポイントの NetView プログラムからフォーカル・ ポイントの NetView プログラムに転送される RECMS および RECFMS は、受信側の フォーカル・ポイントのハードウェア・モニターによって自動化に対する実行要求が行 われることはありません。これらの RECMS と RECFMS レコードは、送信側エントリ ー・ポイントの NetView プログラムによってのみ自動化が可能です。 転送メカニズムの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を 参照してください。 最大長は 1 文字です。 HMFWDED は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 87 ページの『HMFWDED』 の例を参照してください。 HMFWDSNA() 0 または 1 を戻して、MSU が SNA-MDS/LU 6.2 アラート転送プロトコルを使用して リモート・エントリー・ポイント・ノードから転送されたかどうかを示します。 1 MSU は、SNA-MDS/LU 6.2 アラート転送プロトコルを使用してリモート・エ ントリー・ポイント・ノードから転送されました。 0 MSU は、SNA-MDS/LU 6.2 アラート転送プロトコルを使用してリモート・エ ントリー・ポイント・ノードから転送されませんでした。 ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんで した。 転送メカニズムの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を 参照してください。 最大長は 1 文字です。 HMFWDSNA 関数は、ハードウェア・モニターによって自動化に実行要求されている MSU にのみ適用されます。その他の MSU に対しては、HMFWDSNA 関数はヌルを戻 します。 87 ページの『HMEPNAU、HMEPNET および HMFWDSNA』 の例を参照してくださ い。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 81 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMGENCAU() MSU の汎用原因コードを 1 文字の 16 進数で戻します。汎用原因コードは、MSU を 作成させる全般的な種別と例外条件の両方を示します。汎用原因コードの詳細について は、SNA ライブラリーの基本アラート (X'91') アラート MS サブベクトルの情報を参 照してください。 MSU が以下のいずれかのタイプであるか、ハードウェア・モニターによって自動化テ ーブルに実行要求されていない場合には、HMGENCAU はヌルを戻します。 v 総称アラート (X'0000') v リンク・イベント (X'0001') v 解像度 (X'0002') v PD 統計 (X'0025') v リンク構成データ (X'1332') v 統計専用 RECMS v 統計専用 RECFMS 上記以外の場合には、汎用原因コードが戻されます。 HMGENCAU が値を戻す場合の MSU の例には、非総称アラート (X'0000')、統計専用 ではない RECMS レコード、および統計専用ではない RECFMS レコードが含まれてい ます。 最大長は 16 進文字の 1 文字です。 HMGENCAU は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 88 ページの『HMGENCAU』 の例を参照してください。 HMONMSU() 0 または 1 を戻して、以下のように、MSU がハードウェア・モニターによって自動化 に実行要求されていたかどうかを示します。ここで各要素は以下のとおりです。 1 MSU はハードウェア・モニターによって自動化に実行要求されていました。 0 MSU がハードウェア・モニターによって自動化に実行要求されていなかった (例えば、総称受信側 MS アプリケーションによって自動化に実行要求されて いた) ことを示します。 最大長は 1 文字です。 HMONMSU はすべての MSU に適用されます。 88 ページの『HMONMSU』 の例を参照してください。 82 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMORIGIN() MSU を送信しているリソースの名前を戻します。戻された値から、末尾のブランクは すべて除去されます。 HMORIGIN によって戻されるリソース名は、BNJMBDST で ALT_ALERT ORIGIN が指定 されているときに、ハードウェア・モニターの動的アラート (Alerts Dynamic)、静的ア ラート (Alerts Static)、およびアラートのヒストリー (Alerts History) パネルに表示され る名前と同じです。BNJMBDST に使用されるステートメントについては、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 リソース階層内に複合リンクが存在しない場合には、 HMORIGIN で戻されるリソース 名は HIER 関数で戻されるリソース名の 1 つと一致します。複合リンクが存在する場 合、リソース名は HIER で戻される名前の 1 つではない場合があります。複合リンク が存在するかどうかを判別するには、 HMCPLINK 関数を使用します。詳しくは、 HMCPLINK の説明 (78 ページ) および HIER の説明 (77 ページ) を参照してくださ い。 MSU がハードウェア・モニターによって自動化に実行要求されていない場合には、 HMORGIN はヌルを戻します。 最大長は 8 文字です。 HMORIGIN は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 88 ページの『HMORIGIN』 の例を参照してください。 HMSECREC() 0、1、またはヌルを戻して、以下のように、ハードウェア・モニターが MSU に対して 2 次記録を実行するかどうかを示します。ここで各要素は以下のとおりです。 1 HIER 関数によって戻されたリソース・レベルで MSU に対する 2 次記録が実 行されます。詳しくは、HIER の説明 (77 ページ) を参照してください。 0 MSU に対して 2 次記録は実行されません。 HMSECREC は、PD 統計 (X'0025') およびフレーム・リレー (X'1332') に対しては常に 0 を戻します。そ れは、ハードウェア・モニターがこれらの MSU に対しては 2 次記録を実行 することがないからです。 ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんで した。 最大長は 1 文字です。 HMSECREC は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 89 ページの『HMSECREC』 の例を参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 83 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMSPECAU() 2 文字の 16 進数固有の MSU コンポーネント・コードを戻します。 特定のコンポーネント・コードは、MSU が作成されることになった例外条件に最も密 接に関係するコンポーネント、サブコンポーネント、または論理リソースの総称タイプ を示します。特定のコンポーネント・コードの詳細については、SNA ライブラリー内の Basic Alert (X'91') Alert MS サブベクトルに関する情報を参照してください。これらの コードは、RECMS レコードおよび RECFMS レコードに対して有効であることに注意 してください。 MSU が以下のいずれかのタイプであるか、ハードウェア・モニターによって自動化テ ーブルに実行要求されていない場合には、HMSPECAU はヌルを戻します。 v 総称アラート (X'0000') v リンク・イベント (X'0001') v 解像度 (X'0002') v PD 統計 (X'0025') v リンク構成データ (X'1332') v 統計専用 RECMS v 統計専用 RECFMS 上記以外の場合には、汎用原因コードが戻されます。 HMSPECAU が値を戻す場合の MSU の例には、非総称アラート (X'0000')、統計専用で はない RECMS レコード、および統計専用ではない RECFMS レコードが含まれていま す。 最大長は 16 進文字の 2 文字です。 HMSPECAU は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 89 ページの『HMSPECAU』 の例を参照してください。 84 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 表 10. 管理サービス単位 (MSU) 情報関数 (続き) 関数 説明 HMUSRDAT() MSU のサブベクトル 33 から、1 から 5 文字のユーザー指定のデータを戻します。戻 された値から、末尾のブランクは除去されます。このデータをハードウェア・モニター のフィルター操作で使用できます。 ハードウェア・モニターは、サブベクトル 33 内にある印刷不能データを下線 (_) に変 換し、小文字を大文字に変換します。HMUSRDAT で戻された文字は、ハードウェア・ モニターによって行われた変換を反映しているため、サブベクトル 33 内の文字と同じ ではないことがあります。 HMUSRDAT を使用して、ハードウェア・モニターがサブ ベクトル 33 内のデータを下線または大文字に変換したかどうかを判別することができ ます。変換されたデータとサブベクトル 33 のデータが同一であることがしばしばあり ますが、ハードウェア・モニターのフィルター操作は、サブベクトル 33 のデータに対 してではなく、変換された後のデータに対して行われます。 MSUSEG を使用して、MSU 内のサブベクトル 33 から、未変換のユーザー指定データ を検索することができます。 サブベクトル 33 データの詳細については、GENALERT コマンドの UDAT オプショ ンおよび SRFILTER コマンドの U オプションを参照してください。 MSU の特性が以下の場合、HMUSRDAT はヌルを戻します。 v サブベクトル 33 を含んでいない。サブベクトル 33 は RECMS レコードや RECFMS レコードの中にはないということに注意してください。 SNA アーキテク チャーにしたがって、総称主ベクトルだけがサブベクトル 33 を含むことができま す。ただし、ハードウェア・モニターは、自動化に実行要求されたどの主ベクトル内 のサブベクトル 33 の情報をも受け入れて処理します。 v フレーム・リレー (キー X'1332') である。 v ハードウェア・モニターによって自動化に実行要求されていない。 最大長は 5 文字です。 HMUSRDAT は、ハードウェア・モニターによって自動化に実行要求されているすべて の MSU に適用されます。 89 ページの『HMUSRDAT』 の例を参照してください。 MSUSEG(operands) 管理サービス単位 (MSU) または他の同様に設計されたデータの部分から情報を抽出す るために必要な構文解析機能を提供します。この関数は、NetView 自動化テーブルまた は LU6.2 アプリケーションによって呼び出されるコマンド・リストで使用してくださ い。 MSUSEG の完全な構文およびいくつかの使用例については、 89 ページの『MSUSEG の構文および例』を参照してください。 組み込み関数 &MSUSEG については、 139 ページの『&MSUSEG』 を参照してくださ い。 NPDABA(operands) 関連したハードウェア・モニターの推定原因およびエラーの説明テキストを戻します。 NPDABA 構文の詳細と使用例については、 92 ページの『推定原因の構文および例』を 参照してください。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 85 MSU 情報 ハードウェア・モニター (HMxxxxxx) の例 HMASPRID /* Example A: The following example checks for a generic */ /* hardware monitor MSU. */ IF HMASPRID() ¬= ’’ THEN .... 図 8. HMASPRID の例 A /* Example B: The following example checks for a generic */ /* MSU from a 3745 device. */ IF HMASPRID() = ’3745’ THEN .... 図 9. HMASPRID の例 B HMBLKACT /* Example A: The following example checks for a block id /* and action code that is not null. IF HMBLKACT() ¬= ’’ THEN .... */ */ 図 10. HMBLKACT の例 A /* Example B: The following example checks for a block id /* of ’FFD’ and action code of ’03’. IF HMBLKACT() = ’FFD03’ THEN .... */ */ 図 11. HMBLKACT の例 B /* Example C: The following example checks for a block id /* of ’FFD’. It does not check for a specific action code. IF SUBSTR(HMBLKACT(),1,3) = ’FFD’ THEN .... 図 12. HMBLKACT の例 C HMCPLINK /* Example A: The following example checks for an MSU */ /* with a complex link. */ IF HMCPLINK() = 1 THEN .... 図 13. HMCPLINK の例 A /* Example B: The following example checks for an MSU */ /* that has no complex link. */ IF HMCPLINK() = 0 THEN .... 図 14. HMCPLINK の例 B 86 プログラミング: REXX および NetView コマンド・リスト言語 */ */ MSU 情報 HMEPNAU、HMEPNET および HMFWDSNA /*===================================================================*/ /* Example A: Was the MSU was forwarded from node NETA.CNM01 */ /* over LU 6.2? */ /*===================================================================*/ IF (HMFWDSNA() = ’1’) & , /* MSU forwarded over LU 6.2? */ (HMEPNET() = ’NETA’) & , /* From network NETA? */ (HMEPNAU() = ’CNM01’) THEN ... /* And nau CNM01? Then do ... */ 図 15. HMEPNAU、HMEPNET、および HMFWDSNA の例 HMEPNETV /*===================================================================*/ /* Example A: Was the MSU was forwarded from a remote node */ /* entry point NetView over LU 6.2? */ /*===================================================================*/ IF HMEPNETV() = ’1’ THEN ... 図 16. HMEPNETV の例 HMEVTYPE /* Example A: The following example checks for hardware */ /* monitor MSUs with an event type of PERM. */ IF HMEVTYPE() = ’PERM’ THEN .... 図 17. HMEVTYPE の例 A /* Example B: The following example checks for hardware */ /* monitor MSUs that do not have an event type of null. */ IF HMEVTYPE() ¬= ’’ THEN .... 図 18. HMEVTYPE の例 B HMFWDED /* /* /* IF Example A: The following example checks for hardware */ monitor MSUs forwarded from another NetView program */ using the NV-UNIQ/LUC.. */ HMFWDED() = 1 THEN .... 図 19. HMFWDED の例 A /* /* /* IF Example B: The following example checks for hardware */ monitor MSUs not forwarded from another NetView program */ using the NV-UNIQ/LUC.. */ HMFWDED() = 0 THEN .... 図 20. HMFWDED の例 B 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 87 MSU 情報 HMGENCAU /* Example A: The following example checks for a general */ /* cause code that is not null. */ IF HMGENCAU() ¬= ’’ THEN .... 図 21. HMGENCAU の例 A /* Example B: The following example checks for a general */ /* cause code of ’01’X. */ IF HMGENCAU() = ’01’X THEN .... 図 22. HMGENCAU の例 B HMONMSU 例 A は、ハードウェア・モニターによって実行要求されていた MSU を検査する 一方法を示します。 /* Example A IF HMONMSU() = 1 THEN ... . . . */ 図 23. HMONMSU の例 A 例 B は、ハードウェア・モニターによって実行要求されていなかった MSU を検 査する一方法を示します。 /* Example B IF HMONMSU() = 0 THEN ... . . . */ 図 24. HMONMSU の例 B HMORIGIN /* Example: The following example checks for hardware /* monitor MSUs sent from a resource named GENALERT. IF HMORIGIN() = ’GENALERT’ THEN .... 図 25. HMORIGIN の例 88 プログラミング: REXX および NetView コマンド・リスト言語 */ */ MSU 情報 HMSECREC /* Example: The following example checks for secondary */ /* recording on an MSU and displays the resource hierarchy. */ IF HMSECREC() = 1 THEN DO SAY ’Secondary recording is being done for an MSU at’ SAY ’resource level: ’ HIER() SAY ’The name and type pair displayed last is most likely’ SAY ’involved with the error.’ END 図 26. HMSECREC の例 HMSPECAU /* Example A: The following example checks for a specific /* component code that is not null. IF HMSPECAU() ¬= ’’ THEN .... */ */ 図 27. HMSPECAU の例 A /* Example B: The following example checks for a specific /* component code of ’0001’X. IF HMSPECAU() = ’0001’X THEN .... */ */ 図 28. HMSPECAU の例 B HMUSRDAT /* /* /* IF Example: The following example checks for hardware */ monitor MSUs with user specified data of MYDAT in */ subvector 33. */ HMUSRDAT() = ’MYDAT’ THEN .... 図 29. HMUSRDAT の例 MSUSEG の構文および例 構文 MSUSEG (オペランド) の構文は、次のとおりです。 MSUSEG . (1) id MSUSEG(' H ' (occ) ) 1 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 89 MSU 情報 1 , byte ,length ここで各要素は以下のとおりです。 byte 1 からカウントした、id で指定された最小 ID 内のバイト位置です。位置 1 は、最小 ID のヘッダー内の最初の長さバイトです。ヘッダーは、1 または 2 の長さのバイトの後に 1 または 2 バイトの ID が続いたもので構成されま す。この項目はオプションです。デフォルト値は 1 です。 H NMVT/ 制御点管理サービス単位 (CP-MSU) レベルに対立するものとしての、 次に高いレベルのマルチドメイン・サポート・メッセージ単位 (MDS-MU) から 最初の ID が取得される場合に挿入されます。 H は、大文字でも小文字でもコ ーディングできます。単一引用符をコーディングする場合、H は単一引用符の 内側または外側のいずれにも配置できます。 id GDS、主ベクトル (MV)、サブベクトル、サブフィールド、または副サブフィー ルドの、1 または 2 バイトの 16 進数 ID の 2 または 4 文字表現です。 16 進文字 (0 から 9、A から F、a から f) は大/小文字混合でも構いません。最初 の ID は必須で、その他の ID はオプションです。 length id で指定された最小の ID から戻され、byte 位置から始まるバイト数 (10 進 数) です。この項目はオプションです。デフォルト値は、指定された最小の id の残りと等しく、byte 位置から始まります。 occ 10 進数の 1 からカウントしたオカレンス番号です。アスタリスク (*) を使用 して、検出された最初の検出結果を指定することができます。どのレベルにおい ても、この項目はオプションです。デフォルト値は 1 です。 REXX 構文図に示されている単一引用符は、occ が指定されている場合にのみ 必須です。occ を明示的にコーディングしていない場合、この引用符はオプショ ンです。 . ピリオド (.) は ID の階層を設定します。したがって、ピリオドの右側に指定さ れたベクトル ID は、左側に指定されたベクトルに含まれます。 注: 1. 他の REXX 関数のオペランドと同様に MSUSEG(operands) でも、複数のオペラ ンドを指定する場合は、そのオペランドをコンマで区切る必要があります。連続 した 2 つのコンマは、省略されたオペランドを示します。 2. 位置が検出されない場合、MSUSEG(operands) を含むコマンド・リストが MSU のために自動化テーブル・ステートメントによって実行されていなかった場合、 あるいは、この関数が MSU によって駆動されていなかった場合は、 MSUSEG(operands) の値はヌルになります。 3. byte 位置を指定しないと、戻されるデータには、id で指定された最小 ID の 1 または 2 バイトの ID が後に付いた 1 または 2 バイトの長さのものが含まれ ます。 4. byte 位置がロケーションの終わりの位置の外側にある場合には、ヌル値が戻され ます。 90 プログラミング: REXX および NetView コマンド・リスト言語 MSU 情報 5. 指定された長さが、指定されたロケーションに残っているものより長い場合に は、そのロケーションに残っているものが戻されます。 6. MSUSEG(operands) の使用例を 89 ページの『MSUSEG の構文および例』に示 します。 7. 自動化テーブルの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイ ド」を参照してください。ベクトル定義については、SNA ライブラリーを参照 してください。 LU6.2 および MSU の詳細については、「IBM Tivoli NetView for z/OS アプリケーション・プログラマーズ・ガイド」を参照してください。 8. NetView コマンド・リスト言語 CLIST 内の組み込み関数 &MSUSEG の使用に 関する詳細については、 139 ページの『&MSUSEG』 を参照してください。 例 以下の例で MSUSEG() 関数の使用法を示します。 図 30 では、Alert 主ベクトル内のサブベクトル A0 の 3 番目のバイト (0000) は ’OPEN’ で始まります。 Alert は、サポートされている任意のエンベロープ内に入れ ることができます。 IF MSUSEG(’0000.A0’,3,4) = ’OPEN’ ..... 図 30. MSUSEG() の例 1 図 31 では、Alert のサブベクトル A0 には、’DOWN’ を従えている ’LINE’ が、そ の中に入っています。リテラルは、EBCDIC および 16 進にすることができます。 INTERPRET ’PARSE VALUE "’MSUSEG(’0000.A0’)’" WITH ’LINE’X +4 ’DOWN’’ Y +4 .’ IF X ¬= ’’ & Y ¬= ’’ ..... 図 31. MSUSEG() の例 2 図 32 では、Alert サブベクトル A1 には、重要ではないビットを含めて、第 4 バ イトの先頭ビットから始まるビット '01X01X00XX11XXXX' があります。 IF BITAND(MSUSEG(’0000.A1’,4,2),’DB30’X) = ’4830’X ..... 図 32. MSUSEG() の例 3 図 33 は、MDS-MU を示しています。この MDS-MU では、先頭の 1212 (CP-MSU) に 1323 が入り、 1323 の先頭にはいくつかの 1326 が入り、1323 の 2 番目にはいくつかの 132B が入り、 1323 の 3 番目にはサブベクトル 01 が入って います。 IF MSUSEG(’H1212.1323.1326(2).132B(3).01’) ¬= ’’ ..... 図 33. MSUSEG() の例 4 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 91 MSU 情報 推定原因の構文および例 構文 NPDABA の構文は以下のとおりです。 NPDABA NPDABA('bbbaa') ここで各要素は以下のとおりです。 bbbaa 総称アラート前を定義する 5 文字のストリング。 v bbb はハードウェア・モニターのブロック ID です。 このブロック ID は、レコードに関連した IBM ハードウェアまたはソフト ウェアを識別するために使用されるコードです。 v aa は、関連したハードウェア・モニターのアクション・コードです。 このアクション・コードは、ブロック ID 内の特定のアラート ID です。 注: NPDABA 関数は、関連したハードウェア・モニターの推定原因およびエラーの 説明テキストを戻します (最大長 48 文字)。 例 表 11. NPDABA の例 例 推定原因 NPDABA(’FFF03’) ’ADAPTER FEEDBK CHK:COMMUN CTRLR PGM/COMMUN CTRLR’ NPDA ブロック ID は FFF であ り、関連したアクション・コード は 03 です。 NPDABA(’123456’) ’INCORRECT INPUT’ この入力データは 6 文字で、有 効な長さではありません。 入力データは有効ではありません (有効な 16 進数では ないか、5 文字の長さではありません)。 NPDABA(’12345’) ’NOT AVAILABLE’ ハードウェア・モニターは、このブロック ID (123) と この入力データは 5 文字です が、有効なブロック ID とアクシ アクション・コード (45) の組み合わせを認識しません。 ョン・コードではありません。 92 プログラミング: REXX および NetView コマンド・リスト言語 オペレーター情報 オペレーター情報関数 NetView プログラムにおいては、REXX コマンド・リストまたは Data REXX ファ イルで次のオペレーター情報関数を使用できます。 表 12. オペレーター情報関数 関数または変数 説明 getpw() これは、主に datarexx で使用することを目的としています。この関数は、REXX プロ シージャーが自動化から駆動されるときに使用することもできます。BROWSE コマン ドまたはその他の方法でメンバーが参照されているときは、値を使用できません。 OPID() OPID ('O') と同じオペレーター ID またはタスク ID を戻します。OPID は、1 から 8 文字までの ID です。 &OPID 1 から 8 文字までのオペレーター ID またはタスク ID を戻します。この記述の中 で、x は次のいずれかの値になります。 O 所有者の ID を戻します。通常の OST では OPID() と同じですが、VOST で は所有している OST のオペレーター ID が戻されます。 R 分散自動タスクを制御しているリモート・タスクのオペレーター ID を戻しま す。そのタスクが分散自動タスクでない場合は、ヌル値を戻します。 S 実行されているコマンドを発行したオペレーターのソース ID を戻します。オ ペレーター ID 以外で、次の特殊値が返される可能性があります。 OPID('x') automation 自動化テーブルの処理によって発生したコマンド。 ソースが無視されることを指定したオプション・タスクまたはアセン ブラー・コードで発生したコマンド。 注: NetView プログラムが REXX をこのように呼び出す事例は、現 在のところ存在しません。ユーザーが書いたコード、または他のベン ダーから入手したコードでは、このように呼び出す可能性もありま す。 REXX プログラムが実行されているタスクの ID である宛先 ID を戻します。 (null) T セッション情報関数 NetView においては、REXX コマンド・リストおよび Data REXX ファイルで、次 のセッション情報関数を使用できます。 表 13. セッション情報関数 関数または変数 説明 APPLID() コマンド・リストを実行しているタスクに対するアプリケーション・プログラム ID を 戻します。 APPLID は、NetView プログラムによって割り当てられた 3 文字の 16 進 数の接尾部が追加された、NetView ドメイン ID です。例えば、ドメイン ID が PARIS の場合、APPLID は PARIS001 になります。 NetView プログラムは、定義済み で使用可能な APPLID の使用を試行します。この試行が成功した場合、各 APPLID は 固有の存在になります。定義済みで使用可能な APPLID がない場合は、APPLID が定義 済みで使用可能になるまで、 notInit! の APPLID が使われます。この場合、notInit! 複数のタスクがこのような状況にあるかもしれないので、APPLID は固有の存在である とは保証されません。 &APPLID 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 93 セッション情報 表 13. セッション情報関数 (続き) 関数または変数 説明 ASID() 現行の NetView アドレス・スペース ID を戻します。ASID の値は、1 から 5 桁まで の 10 進数です。 &ASID ATTENDED() 1 または 0 のいずれかの 1 文字の値を戻します。次の値が定義されます。 &ATTENDED 1 タスクが次のタイプのいずれかであることを示します。 v 表示付きの OST v 相当する OST 付きの NNT v AUTOTASK コマンドを使用して割り当てられた関連 MVS コンソール付き の自動タスク v 分散自動タスクです。 0 タスクが次のタイプのいずれかであることを示します。 v AUTOTASK コマンドを使用して割り当てられた関連 MVS コンソールのな い自動タスク v DST または OPT タスクなどの、他のタイプのタスク 注: 1. 関連したオペレーターが AUTOTASK である場合、その AUTOTASK がアクティブ な MVS コンソールに関連していない限り、表示データは表示に対して適格ではあ りません。 2. ATTENDED を DISTAUTO および AUTOTASK 変数とともにすると、タスクの特 性をさらに詳しく判別することができます。例えば、ATTENDED が 1、DISTAUTO が 0 で、AUTOTASK が 1 の場合、タスクは関連 MVS コンソール付きの AUTOTASK です。 AUTCONID() &AUTCONID AUTOTASK() この自動タスクに関連した MVS コンソール ID を戻します。 この関連付けは、 CONSOLE キーワードを指定した AUTOTASK コマンドを使用して行われています。 AUTCONID の値は、この自動タスクの下で実行するために NetView コマンドを入力で きる、MVS コンソールのコンソール名です。 1 または 0 の単一文字の値を戻して、タスクが自動タスクであるかどうかを示します。 有効な値は次のとおりです。 &AUTOTASK 1 自動タスクです。 0 自動タスクではありません。 1 または 0 のいずれかの 1 文字の値を戻します。有効な値は次のとおりです。 CGI() CLOSING() 1 プロシージャーは、NetView Web サーバーによって呼び出されました。 0 プロシージャーは、NetView Web サーバーによって呼び出されませんでした。 CLOSE コマンド後の処理時に 1 の値を戻します。それ以外の場合は、0 の値を戻しま す。 GLOBAL オプションが指定されたパイプ KEEP ステージで、ENDCMD オプションを 使用して実行されるようにスケジュールされたコマンドを識別するには、この関数を使 用してください。 CURCONID() &CURCONID 94 NetView タスクによって取得される MVS コンソール ID を戻します。このコンソール は、GETCONID コマンドを用いて、あるいは MVS コマンドを発行することによって 取得されています。 CURCONID の値は、このタスクが MVS コマンドを入力するため に使用する MVS コンソールのコンソール名です。 プログラミング: REXX および NetView コマンド・リスト言語 セッション情報 表 13. セッション情報関数 (続き) 関数または変数 説明 CURSYS() 1 から 8 文字までの現行システム名を戻します。 &CURSYS DISC() DISTAUTO() タスクが切断されているかどうかを示す 1 または 0 の 1 文字の値を戻します。以下の 値が返される可能性が有ります。 1 自動タスクは切断されました。 0 自動タスクは、切断されていません。 タスクが RMTCMD コマンドを用いて開始された分散自動タスクであるかどうかを示す 1 または 0 の 1 文字の値を戻します。有効な値は次のとおりです。 &DISTAUTO 1 分散自動タスクです。 0 分散自動タスクではありません。 注: これは、TVBDAUT の値に対応します。 DOMAIN() 現行 NetView ドメインの 1 から 5 文字までの名前を戻します。 &DOMAIN DOMAIN('x') NetView ドメインの 1 から 5 文字までの名前を戻します。この記述の中で、x は次の 値です。 R 分散自動タスクを制御しているリモート・タスクのドメイン・ネームを戻しま す。そのタスクが分散自動タスクでない場合は、ヌル値を戻します。 ECVTPSEQ() MVS IHAECVT データ域で検出された z/OS 製品のシーケンス番号です。例えば、 z/OS v1.6 で実行している場合、ECVTPSEQ は 01010600 の値を戻します。 ENVDATA('x') 数値または文字ストリングを戻します。この記述の中で、x は次の値のいずれかになり ます。 C 画面の配色のカウントを戻します。 D 画面の縦の長さ (画面上の行数) を戻します。 W 画面の幅を (画面上の列数) を戻します。 G ENVDATA が呼び出されたときにアクティブだった呼び出しシーケンスまたは プロシージャー・グループ内の REXX、PL/I、および C のプロシージャーを 表す、ブランクで区切られた項目のリストを戻します。 各項目は、スラッシュ (/) で区切られた 2 つの名前から構成されます (command/name のフォーマット)。command は、プロシージャーの呼び出しに 使用するコマンド verb または同義語です。 name は次のいずれかの名前にな ります。 v モジュール名 (プロシージャーが PL/I または C の場合) v DSICLD 内のメンバー名 (プロシージャーが REXX の場合) 複数の項目は、逆順の呼び出しシーケンスを示します。 オペレーターが入力し たコマンドは、リストされている最後の項目です。 MVSLEVEL() 現在実行されている MVS のバージョンを戻します。例えば、MVS/ESA 4.2.2 を実行し ている場合、 MVSLEVEL は SP4.2.2 を戻します。 &MVSLEVEL NETID() &NETID VTAM ネットワーク ID を戻します。このフィールドの最大長は 8 文字です。 NetView プログラムがアクティブのときに VTAM がアクティブになっていない場合、 NETID の値はヌルになります。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 95 セッション情報 表 13. セッション情報関数 (続き) 関数または変数 説明 NETVIEW() &NETVIEW 現在実行されている NetView プログラムのバージョンおよびリリースを戻します。 NETVIEW の値は、NVvr の形式の 4 文字のストリングです。この記述の中で v NetView プログラムのバージョン番号を示します。 r NetView プログラムのリリース番号を示します。 NETVIEW('x') テキスト・ストリングを戻します。この記述の中で、x は次の値になります。 T OPSYSTEM() 正式の NetView 名を含むテキスト・ストリングを戻します。 NetView プログラムがコンパイルされたオペレーティング・システムのタイプを戻しま す。 &OPSYSTEM PANEL() 1 または 0 のいずれかの 1 文字の値を戻します。有効な値は次のとおりです。 1 パネル・コマンドは発行できます。 0 パネル・コマンドは許可されていません。 PARTID() VSE メッセージ用の 6 文字の接頭部のうちの先頭の 2 文字を戻します。戻された 2 文字は、送信側システムがこれらの文字を使用してメッセージ用の区分 ID を指定して いる場合のみ、メッセージ区分 ID となります。 &PARTID STCKGMT() 現在の UTC 平均時間をストア・クロック形式で戻します。このフィールドは、8 バイ トの 16 進値で戻されます。 &STCKGMT SUPPCHAR() &SUPPCHAR ユーザーのシステムに対する抑止文字を戻します。 (抑止文字は、NetView プログラム がコマンドを端末、ハードコピー・ログ、およびネットワーク・ログに書き込むのを防 ぎます。) SUPPCHAR は、ユーザーが CNMSTYLE メンバーに含まれる CNMSTUSR または CxxSTGEN メンバーで定義する単一文字です。これらのメンバーで定義されるデフォル トの抑止文字は、疑問符 (X'6F') です。 CNMSTYLE メンバーに組み込まれた CNMSTUSR メンバーまたは CxxSTGEN メンバ ーに抑止文字を定義しないと、SUPPCHAR はデフォルトの X'3F' になります。 注: X'3F' という SUPPCHAR のデフォルト文字をオペレーター・コンソールで入力す ることはできません。したがって、抑止文字を定義しないと、オペレーターはその文字 を使用できません。 SYSPLEX() &SYSPLEX 96 コマンド・リストを実行している MVS SYSPLEX の 1 から 8 文字の名前を戻しま す。 MVS/ESA バージョン 4 リリース 2.2 以降で使用できます。 注: この関数は、MVS SYSPLEX でコマンド・リストを実行している場合のみ値を戻し ます。 プログラミング: REXX および NetView コマンド・リスト言語 セッション情報 表 13. セッション情報関数 (続き) 関数または変数 説明 TASK() コマンド・リストを実行しているタスクのタイプを示す、 3 文字のストリングを戻しま す。取り得る値は次のとおりです。 PPT 基本 POI タスク OST オペレーター端末タスク NNT NetView 間タスク &TASK Data REXX の場合は、PPT、OST、および NNT に加えて、以下の値も戻される可能性 があります。 DST データ・サービス・タスク HCT ハードコピー・タスク MNT メインタスク OPT オプション・タスク UNK 不明タスク 注: この値は、エラーが生じたことを意味しています。詳しくは、IBM ソフト ウェア・サポートに連絡してください。 TASK を使用すると、コマンド・リストがタスクのタイプをテストして、そのタイプに 応じて処理することができるため、これらのタスクのうちの任意のタスクの下で同じコ マンド・リストを実行することができます。例えば、PPT の下で実行するコマンド・リ ストについてはいくつかの制限が適用されます。 15 ページの『基本 POI タスク (PPT) の制限』を参照してください。 TOWER(string) タワーまたはサブタワーが使用可能になったかどうかを示す 2 進数値か、あるいは使用 可能になったタワーまたはサブタワーの名前のいずれかを戻します。 ストリングがアスタリスク (*) で終わっていないときは、 1 または 0 の単一文字が戻 されます。有効な値は次のとおりです。 1 タワーまたはサブタワーが、使用可能になった。 0 タワーまたはサブタワーが、使用可能にされていない。 例えば、AON タワーおよび SNA サブタワーが使用可能であり、TCP サブタワーが使 用可能でないとき、 SAY TOWER(AON.SNA) は、1 を戻し、 SAY TOWER(’aon.TCP’) は、0 を戻します。 アスタリスク (*) で終わるストリングは、使用可能になったタワーまたはサブタワーの 名前を戻します。アスタリスクは、単独でも、あるいは使用可能になったサブタワーを 判別するためにタワーの名前と一緒にも使用できます。例えば、AON タワーと SNA および TCP サブタワーが使用可能である場合、 SAY TOWER(’*’) は、AON SNA TCP を 戻し、 SAY TOWER(’aon.*’) は、SNA TCP を戻します。 入力ストリングには大/小文字の区別がなく、大/小文字混合ストリングが戻される可能 性があります。タワーとサブタワーの組み合わせは、ピリオド (.) で連結する必要があ ります。タワーおよびサブタワーは、CNMSTYLE メンバーに含まれる CNMSTUSR ま たは CxxSTGEN メンバーで使用可能です。詳しくは、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 TRAP() TRAP コマンドが相関環境の競合のために失敗するかどうかを示すバイナリー値を戻し ます。値は次のとおりです。 1 TRAP コマンドは受け入れられます。 0 TRAP コマンドは、メッセージ DWO373E で失敗します。 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 97 セッション情報 表 13. セッション情報関数 (続き) 関数または変数 説明 TYPE() インストールされている NetView プログラムのレベルを示す、3 文字のストリングを 戻します。取り得る値は次のとおりです。 ENT エンタープライズ・オプション SYS NetView システム・サービス VTAM() VTAM のバージョンおよびリリースを、 VTvr または Vvrm の形式の 4 文字のストリ ングで戻します。この記述の中で v バージョン番号です。 r リリース番号です。 m 修正番号です。 注: VTAM プログラムがアクティブでない場合には、VTAM の値はヌルになります。 &VTAM VTCOMPID() &VTCOMPID 14 文字の VTAM コンポーネント ID を戻します。以下のリストで、VTAM コンポー ネント ID を示します。 MVS/ESA 5685-08501-xxx (VTAM バージョン 3 の場合) z/OS 5695-11701-xxx (VTAM バージョン 4 以降の場合) MVS/XA 5665-28901-xxx VSE/ESA 5666-36301-xxx VM/SP 5664-28001-xxx VM/9370 5684-05201-xxx VM/ESA® 5684-09501-xxx この記述の中で xxx はリリース番号です。 VTAM の今後の更新で、VTAM コンポーネント ID が追加される可能性があります。 VTAM がアクティブでない場合には、VTCOMPID の値はヌルになります。 WEEKDAYN() &WEEKDAYN 次のように、週の曜日 (月曜日から日曜日まで) を示す、1 から 7 までの範囲の数値を 戻します。 1 月曜日 2 火曜日 3 水曜日 4 木曜日 5 金曜日 6 土曜日 7 日曜日 REXX 環境情報関数 NetView プログラムの REXX コマンド・リストで、以下の REXX 環境関数を使用 することができます。 これらの関数の使用理由については、「IBM Tivoli NetView for z/OS チューニン グ・ガイド」を参照してください。 注: 以下の REXX 値の意味の詳細については、NetView オンライン・ヘルプの DEFAULTS コマンドおよび OVERRIDE コマンドを参照してください。これら の関数は、MVS/XA、MVS/ESA および VSE/ESA 以外のオペレーティング・シ ステムに対してはヌル値を戻します。 98 プログラミング: REXX および NetView コマンド・リスト言語 REXX 環境および端末情報 表 14. REXX 環境情報関数 関数または変数 説明 RXDEFENV() DEFAULTS コマンドの REXXENV パラメーターによって設定される、NetView REXX 環境のデフォルト数を戻します。 &RXDEFENV DEFAULTS コマンドの REXXSTOR パラメーターによって設定される、デフォルトの NetView REXX 環境初期ストレージ・サイズを戻します。REXXSTOR がデフォルト値 に設定された場合、または全く設定されていない場合、この値が -1 になる場合があり ます。 RXDEFSTR() &RXDEFSTR このタスク用に初期設定される現在の REXX 環境の数を戻します。RXNUMENV() の 場合、この数は少なくとも 1 となり、現在実行されている REXX 環境を表します。 &RXNUMENV では、この値はゼロ (0) になる場合があります。 RXNUMENV() &RXNUMENV OVERRIDE コマンドの REXXENV パラメーターによって設定される、NetView REXX 環境のオーバーライド数を戻します。REXX 環境の数が指定変更されていない場合、ま たはデフォルト値に設定されている場合には、ヌル値が戻されます。 RXOVRENV() &RXOVRENV DEFAULTS コマンドの REXXSTOR パラメーターによって設定される指定変更用の、 NetView REXX 環境初期ストレージ・サイズを戻します。REXX 初期ストレージ・サ イズが指定変更されていない場合、またはデフォルト値に設定されている場合には、ヌ ル値が戻されます。 RXOVRSTR() &RXOVRSTR 端末情報関数 NetView のコマンド・リストで、次の端末情報関数を使用することができます。 表 15. 端末情報関数 関数または変数 説明 HCOPY() オペレーターによって開始されたハードコピー・ログ・プリンターとして定義された装 置の名前を戻します。このオペレーター用のハードコピー・プリンターとして定義され た装置がないと、HCOPY はヌルになります。 &HCOPY このオペレーター端末に対する論理装置名を戻します。 LU() &LU 時刻および日付変数 NetView コマンド・リスト言語で、以下の時刻と日付制御変数を使用できます。 表 16. 日付および時刻変数 関数または変数 説明 &DATE 現在日付を mm/dd/yy の形式で戻します。ここでは、mm は月、dd は日、および yy は 年です。 &TIME hh:mm の形式でプロセッサー時間を戻します。hh は時間で mm は分です。時刻は、24 時間クロックにしているため、3:00 は 15:00 として示されます。 注: &TIME と &DATE は別々の変数であるため、正確に時刻と日付が一致してい ることを判別するには、余分なコーディングが必要になることがあります。例 えば、最初に &DATE を取得する場合、&TIME を取得する前に深夜 12 時に 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 99 時刻および日付 なる可能性があり、現在時刻に対する日付を誤る可能性があります。&TIME を 最初に取得する場合、 &DATE を取得する前に深夜 12 時になる可能性があ り、現在日付に対する時刻が間違ったものになります。 次の例は、日付と時刻が正しいかどうかを判別する際に使用できる、NetView コマ ンド・リスト言語コードの一部です。 -RETRY &TDATE = &DATE &TTIME = &TIME &IF &TDATE NE &DATE &THEN &GOTO RETRY &WRITE &TDATE &TTIME REXX では、同等でより広範囲の時刻および日付関数を提供しています。詳細につ いては、REXX ライブラリーを参照してください。 ヌルおよびブランクの除去 一部の NetView コマンド・リスト言語制御変数、および文字値をもつ NetView REXX 関数では、末尾のヌルとブランクの除去 (削除) は、NetView プログラムに よって自動的に行われます。制御変数と REXX 関数の中には、末尾文字の除去レベ ルが異なるものがあることに注意してください。 100 プログラミング: REXX および NetView コマンド・リスト言語 ヌルおよびブランクの除去 関数または変数 ACTIONDL()、&ACTIONDL ACTIONMG()、&ACTIONMG APPLID()、&APPLID AREAID()、&AREAID AUTCONID()、&AUTCONID AUTOTOKE()、&AUTOTOKE CURCONID()、&CURCONID CURSYS()、&CURSYS CMDNAME() DCO()、&DCO DOMAIN()、&DOMAIN HCOPY()、&HCOPY HMASPRID() HMEVTYPE() HMORIGIN() HMUSRDAT() IFRAUI3X()、&IFRAUI3X IFRAUSB2()、&IFRAUSB2 IFRAUSDR()、&IFRAUSDR IFRAUSRC()、&IFRAUSRC JOBNAME()、&JOBNAME JOBNUM()、&JOBNUM LU()、&LU MSGCOJBN()、&MSGCOJBN MSGCPROD()、&MSGCPROD MSGCSPLX()、&MSGCSPLX MVSLEVEL()、&MVSLEVEL NVDELID()、&NVDELID OPID()、&OPID SESSID()、&SESSID SYSCONID()、&SYSCONID SYSID()、&SYSID SYSPLEX()、&SYSPLEX 除去 ヌルおよびブランク ヌルおよびブランク なし なし ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク ブランク なし ヌルおよびブランク ブランク ブランク ブランク ブランク ブランク ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク ブランク なし ブランク ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク ヌルおよびブランク なし ブランク ブランク ヌルおよびブランク なし ヌルおよびブランク 第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 101 ヌルおよびブランクの除去 102 プログラミング: REXX および NetView コマンド・リスト言語 第 5 章 自動化リソース管理 本章の目的は、コマンド・リストを使用した、 NetView 自動化の実行を支援するこ とです。 NetView 自動化テーブル・コマンド・リストの定義 自動化テーブルは、どのメッセージ、または MSU を自動化するのかを識別しま す。このテーブルは、DSIPARM のメンバー内にファイルされたステートメントで 構成されます。これらのステートメントは、自動化するメッセージまたは MSU を そのメッセージまたは MSU のほぼすべての属性 (下のリストにあるような) に基 づいて識別します。 v メッセージ番号 v 特定の MSU フィールドの値 v メッセージまたは MSU の発信元 この結果、自動化テーブルはメッセージの表示、ロギング、ルーティング、または その他のほぼすべての処理を変更できます。実行されるアクションの前、あるいは 実行されるアクションに加えて、コマンドまたはコマンド・リストを呼び出して、 メッセージまたは MSU を分析することができます。 自動化テーブルを定義する場合は、DSIPARM のメンバー内に自動化ステートメン トをコーディングしてから、その特定の NetView 自動化テーブルの名前を使用して AUTOTBL コマンドを発行します。 AUTOTBL コマンドは、正規コマンドを発行 できる場所ではどこでも入力できます。また、テーブルは CNMSTYLE メンバーか ら活動化できます。 注: 1. 正規コマンドとは、TYPE=H または TYPE=R で定義されるコマンドまたはコマ ンド・リストです。正規コマンドの詳細については、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 2. AUTOTBL コマンドは DST では実行できません。 NetView 自動化ステートメントの構文の詳細な定義については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。 AUTOTBL コマンドの構 文については、 NetView オンライン・ヘルプを参照してください。 自動化テーブル駆動のコマンド・リストからのメッセージの経路指定 NetView 自動化テーブルからメッセージの送付先を決定するのが困難な場合があり ます。この決定を行うには、コマンド・リストが駆動されるようにし、そこで MSGROUTE コマンドまたは ROUTE ステージを使用して、メッセージをオペレー ターまたはオペレーターのグループに送付するようにしてください。 MSGROUTE コマンドの詳細については、 NetView オンライン・ヘルプを参照して ください。 © Copyright IBM Corp. 1997, 2011 103 上級トピック NetView 自動化のインプリメント このセクションでは、NetView 自動化を実施する際の推奨事項を記述します。詳し くは、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。 メッセージの抑制 一部のメッセージを、オペレーターが受け取らないように抑制することができま す。NetView 自動化によってメッセージを抑制するには、 NetView 自動化メンバー 内に項目を作成します。例えば、IST4001 TERMINATION IN PROGRESS FOR APPLID applnm というメッセージの表示を希望しないとすると、 NetView 自動化ステート メントは、次の例のようになります。 IF MSGID=’IST400I’ THEN DISPLAY(N); コマンド・リストの環境の決定 REXX では、コマンド・リストを実行するタスクまたは条件のタイプが明確でない 場合は、コマンド・リストで TASK() 関数、PANEL 関数、または AUTOTASK 関 数を検査してください。次に、条件付き処理を使用して、別のタスクの下では別の 要領で実行できるように、そのコマンド・リストを十分に柔軟性のあるものにしま す。 NetView コマンド・リスト言語では、コマンド・リストを実行するタスクまたは条 件のタイプが明確でない場合は、コマンド・リストでそのコマンド・リストの先頭 にある &TASK 制御変数または AUTOTASK 関数を検査してください。次に、条件 付き処理を使用して、別のタスクの下では別の要領で実行できるように、そのコマ ンド・リストを十分に柔軟性のあるものにします。条件付き処理の詳細について は、145 ページの『付録 B. NetView コマンド・リスト言語のブランチ』を参照し てください。 自動化コマンド・リストのテスト 自動化コマンド・リストが NetView 自動化テーブルから正しく呼び出され、呼び出 された後に正しく実行されるために、いくつかの方法で自動化コマンド・リストを テストできます。 自動化コマンド・リストの正常動作の検査 REXX の自動化を完全にテストする場合、NetView CLIST を AUTOTABLE に入れ る前にその正常な自動化を検査することをお勧めします。 NetView プログラムで は、ユーザーの REXX プログラムが自動化テーブルから駆動される場合に存在する 現行メッセージをシミュレートできます。シミュレートされたメッセージを作成す るには、LITERAL ステージを使用すれば十分な場合があります。ただし、 LITERAL は自動化に必要なジョブ名または自動化トークンなどのメッセージ属性を 設定できません。これらのメッセージ属性がテストに関係する場合は、計画された アクションの代わりに HOLD(Y) 自動化アクションを一時的にコーディングして、 メッセージの完全なコピーをテスト用に入手できます。 この一時的な自動化が呼び出された後、NCCF 画面で保持されているサブジェク ト・メッセージとともに、 HELDMSG ステージを使用してテスト用の正確なコピ ーを作成できます。このテストを行うには、TS コマンドを発行してトレースを実行 し、次のようなコマンドを発行します。 104 プログラミング: REXX および NetView コマンド・リスト言語 上級トピック PIPE HELDMSG | NETV CMD (HIGH) yourcmd yourarguments 複数の保留メッセージが NCCF 画面にある場合は、LOCATE ステージまたは TAKE ステージを追加しても構いません。 PIPE HELDMSG コマンドが完了する と、yourcmd がパイプライン外で実行され、プロシージャー内の JOBNAME() や PIPE SAFE * などの関数により、パイプラインが提供した現行メッセージから正確 な結果が戻されます。 このコマンドを停止し、TS と pipe コマンドを再発行して繰り返しテストすること ができます。 NetView 自動化テーブル項目の検査 オペレーター端末またはコマンド・リストからメッセージを発行することで、 NetView 自動化テーブルが正しく自動化コマンド・リストを駆動しているか検査す ることができます。NetView オペレーター・コンソールから、コマンド行にメッセ ージ ID とメッセージ・テキストを入力します。 REXX コマンド・リストからは、メッセージ ID とメッセージ・テキストを引用符 で囲んだ SAY 命令を使用します。 NetView コマンド・リスト言語からは、メッセージ ID とメッセージ・テキストを 引用符で囲んだ &WRITE ステートメントを使用します。 ユーザーが作成したメッセージと NetView 自動化テーブル内の項目が一致すると、 テーブルはその項目に対して指定されたアクションを実行します。この処理を通じ て、NetView 自動化テーブルの項目をテストすることができます。この方式は、メ ッセージ ID およびメッセージ・テキストなどの限定情報が、 NetView 自動化テー ブルの項目内で検査される場合にのみ機能します。 STATS=DETAIL オプションを指定して AUTOCNT コマンドを使用すると、自動比較 および一致の数を含む詳細情報が、各自動化テーブル・ステートメントごとに示さ れます。作成したメッセージが自動化されると、そのメッセージが意図した自動化 ステートメントと一致した場合に、比較および一致の数のカウントが増えます。 処理された自動化コマンド・リストのレコードの保持 コマンド・リストでは、NetView MSG コマンドを使用して、ネットワーク・ログに 情報を入れることができます。すべてのコマンド・リストが NetView 自動化テーブ ルから直接実行されるわけではないため、こうした情報の転送が必要になることが あります。NetView PIPE LOGTO ステートメントを使用して、自動化コマンド・リ ストがメッセージをネットワーク・ログに送信するようにさせると、どの自動化コ マンド・リストがどのタスクによっていつ駆動されたかをトラッキングできます。 自動化コマンド・リスト処理のテスト 処理をトレースすることにより、REXX 自動化コマンド・リストをテストするに は、TRACE コマンドを使用します。コマンド・リストが NetView 自動化操作プロ グラム (自動タスク) によって実行されている場合は、その自動タスクが MVS コ ンソールに割り当てられていないと、SAY または TRACE の結果は表示されませ ん。ネットワーク・ログでは、自動タスクがコンソールに割り当てられているかど うかに関係なく、結果が表示されます。 第 5 章 自動化リソース管理 105 上級トピック 処理をトレースして NetView コマンド・リスト言語の自動化コマンド・リストをテ ストするには、&CONTROL ステートメントを使用します。コマンド・リストが NetView 自動化操作プログラム (自動タスク) によって実行されている場合は、その 自動タスクが MVS コンソールに割り当てられていないと、&WRITE、 &BEGWRITE、または &CONTROL の結果は表示されません。ネットワーク・ログ では、自動タスクがコンソールに割り当てられているかどうかに関係なく、結果が 表示されます。 MVS コンソールへの自動タスクの割り当ての詳細については、 NetView のオンライン・ヘルプの AUTOTASK コマンドを参照してください。 ループおよび自動化 コマンド・リストから発行されたメッセージは、防止策をとらない限り、自動化の 影響を受けます。コマンド・リストで発行されたメッセージによって、同じコマン ド・リストが駆動される場合は、ループ状況が発生します。場合によっては、それ らのループに複数のメッセージと複数のタスクが含まれる場合があります。ループ に含まれるオペレーターまたは自動タスクが分かっている場合は、 STOP FORCE コマンドまたは RESET コマンドを使用してループを終了できる場合があります。 極端な場合には、ループを作成している自動化を使用不可にする必要があります。 これについては、AUTOTBL コマンドを参照してください。 表示されたメッセージによってループが生じることを防止するには、以下の 2 つの 方法があります。 v CONSOLE ONLY を使用して、パイプラインから表示する。 v 自動化ステートメントに一致しないようにメッセージを変更する。 ループを回避するもう一つの方法は、属性はそのままにして元のメッセージを表示 することです。これらの属性の 1 つは、既に自動化されています。例を以下に示し ます。 PIPE SAFE * | CONSOLE オペレーター対話に関する考慮事項 非送信請求メッセージの自動化に使用するコマンド・リストでは、オペレーターに データを求めないようにしてください。 例えば、WAIT 命令を使用し、GO コマンドを要求する REXX コマンド・リストは 適切ではありません。 例えば、&PAUSE または &WAIT ステートメントのいずれかを使用し、 GO コマ ンドを要求する NetView コマンド・リスト言語は適切ではありません。 自動化はオペレーターが要求を入力するのと同時に実行されるため、コマンド・リ ストからのメッセージがオペレーター要求にどのように影響するかを検討して、自 動化コマンド・リストによる支障を可能なかぎり少なくするようにしてください。 自動化に共通する問題 NetView 自動化はコマンド機能出口ルーチン (DSIEX02A、DSIEX06、DSIEX11 な ど) が呼び出されてから起動するため、これらのルーチンでメッセージに対して行 われた変更は NetView 自動化に影響を与えます。例えば、DSIEX02A によってメッ セージが削除された場合、Tivoli NetView for z/OS はそのメッセージに対して自動 106 プログラミング: REXX および NetView コマンド・リスト言語 上級トピック 化を呼び出しません。メッセージが 1 次受信先として SYSOP または LOG に割り 当てられた場合、Tivoli NetView for z/OS はそのメッセージに対して自動化を呼び 出しません。NetView 自動化は先行するインスタンスでは行われないため、 NetView 自動化メンバーにおける DISPLAY キーワードは効果がありません。 AUTO=YES とコーディングしてメッセージを抑制するために MVS メッセージ処 理機能を使用し、そのメッセージを使用してコマンド・リストを駆動している場合 には、そのコマンド・リストが駆動されて WTO が出されるとき、その WTO も抑 制されます。 REXX では、WTO を表示するために、MCSFLAG 変数の設定値を変 更する必要があります。コマンド・リストでは、WTO を表示するために、 &MCSFLAG 制御変数の設定値を変更する必要があります。機能または制御変数の 変更方法の例については、 NetView オンライン・ヘルプの PARSEL2R コマンドを 参照してください。 NetView メッセージ改訂テーブルまたは MVS メッセージ処理機能を使用して、表 示不能とマークされたメッセージを自動化する場合、WTO を使用して作成するメッ セージは、デフォルトで、その表示不能特性を継承します。この動作は、MCSFLAG 変数を使用して制御できます。例えば、MCSFLAG = '00000000' のようにコーディ ングします。 メッセージがメッセージ改訂テーブル (MRT) アクションの影響を受けているかど うかを知るには、 MRT 編集命令を使用します (PIPE EDIT のヘルプを参照)。 MRT の影響を受けるメッセージを自動化すると、WTO コマンドを使用して発行す るメッセージは MRT に送信されません。ただし、出力命令として MRT 編集命令 を使用して、この動作を制御することは可能です。 複数行のオペレーター宛 (MLWTO) メッセージを使用して 1 つのコマンド・リス トが駆動され、そのコマンド・リストから WTO が出される場合、MLWTO 行タイ プ変数の設定値によってその WTO が表示される場合と表示されない場合がありま す。WTO の設定値が単一行メッセージである場合には、設定値をブランクに変更し てください。 REXX MLWTO 行タイプ変数は、LINETYPE です。 NetView コマンド・リスト言語 MLWTO 行タイプ変数は、&LINETYPE です。 第 5 章 自動化リソース管理 107 108 プログラミング: REXX および NetView コマンド・リスト言語 付録 A. NetView コマンド・リスト言語の簡単なコマンド・リス トの作成 本章では、NetView コマンド・リスト言語を使用した、Tivoli NetView for z/OS プ ログラム用のコマンド・リストの作成の基礎を説明します。また変数、割り当てス テートメント、および組み込み関数が互いにどのように適合するか、およびコマン ド・リスト内でそれらをどのように結合するかについても説明します。 NetView コマンド・リスト言語に含まれるもの NetView コマンド・リスト言語は、次の 6 タイプのステートメントで構成されてい ます。 v コマンド v コメント v 制御 v 割り当て v ラベル v ヌル コマンド・リスト・ステートメントの内部では、以下の変数および関数を使用する ことができます。 v パラメーター変数 v 制御変数 v ユーザー変数 v グローバル変数 v 組み込み関数 グローバル変数以外は、すべて本章の後半で詳しく説明します。グローバル変数と パラメーター値を渡す方法の説明は、165 ページの『付録 C. NetView コマンド・ リスト言語のグローバル変数』にあります。 NetView コマンド・リスト言語は、反復処理または代替処理 (ループまたは if-then 命令) を実行するアプリケーション・コードを作成する場合に使用します。これら の機能は、以下の制御ステートメントによって実施されます。 v &IF v &GOTO v &EXIT v &WAIT 制御ステートメントについては、145 ページの『付録 B. NetView コマンド・リス ト言語のブランチ』で説明します。 注: コマンド・リストは、他のコマンド・リストの処理に割り込むことができま す。これは CNMCMD 内の CMDDEF ステートメントを使用して行われます。 © Copyright IBM Corp. 1997, 2011 109 NetView コマンド・リスト言語のコマンド・リスト NetView コマンド・リスト言語ステートメントのコーディングの規則 NetView コマンド・リスト言語でも、他の言語の場合と同様に、構文規則に従う必 要があります。 次に示す Tivoli NetView for z/OS のコーディングの規則は、下記 の規則をそれぞれ記述する項に分かれています。 v 一般的コーディング v ステートメントの継続 v 2 バイト文字セット v 抑止文字 一般的コーディングの規則 NetView コマンド・リスト言語でコマンド・リストを作成するときは、次のコーデ ィング規則を使用します。 v コマンド・リストの第 1 行には、CLIST ステートメントをコーディングしま す。CLIST ステートメントはオプションです。 CLIST ステートメントを次のよ うにコーディングします。 – オプションで、ラベルをコーディングします。ラベルは 1 列目から開始する 必要があります。このラベルに分岐することはできません。 Tivoli NetView for z/OS プログラムはこのラベルを無視します。 label CLIST – CLIST という語は、2 桁目以降を先頭にしてコーディングします。CLIST と いう語の前に、少なくとも 1 つのブランクを置かなければなりません。 v CLIST という語と一緒でなければ、最初の行にコマンド・リストの名前をコーデ ィングしないでください。 v 72 桁目は、どのステートメントでもブランクにしておきます。 v 73 から 80 桁目は使用しません。オプションのシーケンス番号用に予約されてい ます。 v ラベル (存在する場合) の後またはキーワードの前には、少なくとも 1 個のブラ ンクをコーディングします。 v 制御ステートメントと第 1 オペランドの間には、少なくとも 1 個のブランクを コーディングします。 v オペランドの間は 1 個以上のブランク、またはブランクのない単一コンマで分離 します。 v ステートメント上には任意の数の先行ブランク、または末尾ブランクをコーディ ングします。 v 小文字は、コメントまたはオペレーターに送られるメッセージの一部だけに使用 できます。それ以外の場合はすべて、英字 A から Z に大文字を使用してくださ い。 v 変数置換後の最大長が 32 000 文字になるようにステートメントをコーディング します。 注: 変数置換の動作の詳細については、114 ページの『変数置換の順序』を参照 してください。 110 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト v コマンド・リスト行の最初の非ブランク文字として、コメント行にはアスタリス ク (*) をコーディングしてください。アスタリスクの後にコメントを置きます。 コメント行は、コマンド・リストの最初の行ではコーディングできません。 v コマンド・リストは、最後のコマンド・リスト・ステートメントを処理するか、 または &EXIT ステートメントに達することによって終了するようにコーディン グします。オペレーターが RESET を入力しても、コマンド・リストが終了しま す。 継続ステートメントの規則 長すぎて 1 行に収まらないステートメントを次の行に継続するときは、継続文字と して正符号 (+) またはハイフン (-) を使用します。継続文字は、継続する行の 72 桁目より前に、最後の非ブランク文字としてコーディングします。 注: 継続されるステートメントの先頭と最後の間には、コメントをコーディングし ないでください。 v 正符号により、その正符号に続く最初の非ブランク文字 (先行するブランクは無 視) からのテキストが、続きのテキストとなります。 次のように正符号を使用すると、 &WRITE THIS STATEMENT IS CODED + AS + THREE LINES これらの行は、次の単一ステートメントになります。 THIS STATEMENT IS CODED AS THREE LINES v ハイフンを使用すると、Tivoli NetView for z/OS はその行のハイフンまでにある すべてのブランク (72 桁目より前の) を保持した上で、その行の終わりまでを、 次の行の先頭から続く文字で順に埋めていきます。ハイフンは、ブランクに置き 換えられます。継続行の先頭から続く文字で行を埋めるとき Tivoli NetView for z/OS は、1 語が出力画面の複数行に分割されないようにします。埋め込みのため に使用される継続行の最後の文字は、ブランクまたはその行の最後の文字でなけ ればなりません。 例えば、80 文字幅の端末装置で表示するために、次の &WRITE ステートメント をコーディングしたとします。 &WRITE STATEMENT CONTINUED WITH THE HYPHEN TO KEEP BLANKS - KEEP の P から、BLANKS の B の間にあるブランクは、すべて保持されます。最 初の行は、出力画面に 64 文字を書き出します (43 文字のテキストに加えて、テ キストの終わりから 72 桁目までの 21 個のブランク)。出力画面で表示に使用で きるのは 68 桁 (80 から 12 文字の接頭部を引く) で、ハイフンによって 2 行目 の最初の 4 文字が 1 行目の最後に置かれることになります。この例では、2 個 のブランクと文字 BL がこれに当たります。ただし、Tivoli NetView for z/OS プ ログラムは出力画面上で 1 語を複数行に分割しないので、メッセージは次のよう に表示されます。 STATEMENT CONTINUED WITH THE HYPHEN TO KEEP BLANKS 付録 A. 簡単なコマンド・リストの作成 111 NetView コマンド・リスト言語のコマンド・リスト 2 バイト文字セット・テキストの規則 2 バイト文字セット (DBCS) では、各シンボルが 1 バイトコードでなく 2 バイト コードで表されます。 v Tivoli NetView for z/OS コマンドおよびコマンドとして使用されるコマンド・リ ストをコーディングするには、A から Z、0 から 9、@、$、および # 文字を使 用します。コマンド・リスト名は非数字文字で始まる必要があります。 v DBCS データ入力はサポートされません。 v すべての DBCS ストリングをシフトアウト (X'0E') 制御文字とシフトイン (X'0F') 制御文字の間に囲みます。各 DBCS ストリングには偶数バイトを入れる ようにしてください。 (2 バイト文字をサポートするエディターおよび端末装置 を使用している場合、これは自動的に行われます。) v ラベル名、変数名、および変数値を DBCS 文字でコーディングすることができま す。変数名とラベル名の長さは、11 バイトまでに制限されます。これにはシフト アウト (X'0E') 制御文字とシフトイン (X'0F') 制御文字が含まれます。 v DBCS のラベルと変数が DBCS 端末装置に表示されるとき、シフトアウト制御 文字とシフトイン制御文字はブランクとして表示されます。 v DBCS テキストは、EBCDIC の正符号 (+) またはハイフン (-) を継続文字として 使用して、複数行に分割することができます。ストリングを分割するには、スト リングをシフトイン制御文字 (X'0F') で終了させ、その後に継続文字を続けま す。次の行は、シフトアウト制御文字 (X'0E') から始めてストリングを再開しま す。 v DBCS テキストを &BEGWRITE ステートメントで作成するときは、 SUB オプ ションが必須です。 v コメントには、シフトアウト (X'0E') とシフトイン (X'0F') の制御文字で囲めば、 DBCS ストリングを含めることができます。 v &WRITE、&CONCAT、および &SUBSTR は、DBCS に有効です。 抑止文字の規則 次の規則は、抑止文字のコーディングに使用されます。 v コマンドの前の最初の非ブランク文字は、抑止文字です。 v ファイルをブラウズまたはリストする場合は、抑止された行も含めて、すべての 行を見ることができます。 v 一般に、NetView CLIST 言語のラベルの前には抑止文字を使用しないでくださ い。抑止文字があると、そのラベルを含むコマンド・リスト行がすでに処理済み の場合を除いて、そのラベルにブランチできなくなります。 113 ページの図 34 では、制御変数 &SUPPCHAR が抑止文字として定義された文字 で置き換えられます。例のコマンド・リストの最後の行は、抑止されます。 112 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト &CONTROL CMD * COMMAND LIST UPDATED 2/5/95 BY OPERATOR CARL START DOMAIN=&1 &WRITE ENTER GO WHEN MESSAGE DSI809I ARRIVES FROM &1 &PAUSE &SUPPCHAR ROUTE &1,OPER1,123456 図 34. 抑止文字の使用例 状況を戻りコードに入れて戻すコマンドを発行するとき、抑止文字を 2 回コーディ ングして、コマンドからの同期出力を抑制することができます。例えば、コマン ド・リストで次のコードを使用する場合、コマンド・リストからの同期出力はオペ レーターに対して表示されません。 &DOUBLESUPP = &CONCAT &SUPPCHAR &SUPPCHAR &DOUBLESUPP SET PF24 IMMED RETRIEVE 戻りコードによって状況が十分に分かっていて、なおかつ同期的に行モードメッセ ージを作成するコマンドのパフォーマンスを上げたい場合は、二重抑止文字を使用 します。二重抑止文字を使用しても、コマンドによってスケジュールされた出力 (例えば、D NET、APPLS) には影響ありません。また、長期実行コマンド (例え ば、NLDM) の出力を確実に減らすわけではありません。 ラベル ラベルは、流れの制御のため、内部資料のため、または制御権を移動するときのタ ーゲット・ステートメントを示すために使用されます。制御権移動については、145 ページの『付録 B. NetView コマンド・リスト言語のブランチ』で説明します。 ラベルは、コメント・ステートメントを除くすべてのコマンド・リスト・ステート メントにコーディングできます。コマンド、制御ステートメント、割り当てステー トメント、およびヌル・ステートメントでラベルをコーディングすることができま す。Tivoli NetView for z/OS がラベルを検出できない場合、処理が停止して、エラ ー・メッセージが発行されます。 ラベルはコマンド・リスト行の最初の非ブランク・ワードでなければなりません。 ラベルは、EBCDIC のハイフン (-) と、その後に続く 1 から 11 個の文字で構成さ れます。A から Z、0 から 9、#、@、および $ が有効な文字です。ラベルの後に コマンド・リスト・ステートメントは、必ずしもコーディングする必要はありませ ん。ただしコーディングする場合は、ラベルとキーワードの間に少なくとも 1 個の ブランクを空けてコマンド・リスト・ステートメントを開始してください。 他のラベルをコーディングすることもできます。すべてのラベルは、1 つのコマン ド・リスト内では固有でなければなりません。 1 つのコマンド・リスト内に 2 つ の同一ラベルがあると、 Tivoli NetView for z/OS はそのコマンド・リストを終了し ます。コマンド・リストのさまざまな部分がどこから始まるかを示すための内部コ メントとして、ラベルをコーディングすることもできます。例えば、ラベルを使用 して特定の処理ルーチンを強調することができます。 次に、ラベルの付いたコマンド・リスト・ステートメントの例を示します。 -MYLABEL VARY NET,INACT,ID=LU1234 -$PROC2 &LEN = &LENGTH &1 -SETUP &USER = 55 -ALLALONE 付録 A. 簡単なコマンド・リストの作成 113 NetView コマンド・リスト言語のコマンド・リスト 注: ラベルを &BEGWRITE で使用すると、メッセージの停止する場所を示します。 ラベルでは変数を使用できませんが、&BEGWRITE、&GOTO、または &WAIT ステートメントではラベル名として変数をコーディングすることができます。 これらのステートメントを制御権の移動に使用する場合については、 145 ペー ジの『付録 B. NetView コマンド・リスト言語のブランチ』で説明します。 変数 コマンド・リスト内のステートメントに異なる値を、オペレーターから受け入れた り、自分で定義したりする場合に変数を使用します。以下の変数を使用して、多く の異なる状況において正しく操作するコマンド・リストを作成することができま す。 v パラメーター v 制御 v ユーザー v グローバル このセクションでは、パラメーター変数、制御変数、およびユーザー変数の使用方 法を説明します。また、NetView PARSEL2R コマンドを使用して、コマンド・リス ト内の変数を解析する方法についても説明します。グローバル変数の説明は、 165 ページの『付録 C. NetView コマンド・リスト言語のグローバル変数』を参照して ください。 変数は、コマンド・リスト内の最初の非ブランク・ワードとしてコーディングしま す。 変数は、EBCDIC のアンパーサンド (&) と、その後に続く 1 から 11 個の文字で 構成されます。A から Z、0 から 9、#、@、および $ が有効な文字です。 変数置換の順序 変数置換は、Tivoli NetView for z/OS プログラムが各ステートメントを右から左に スキャンするときに実行され、各変数の値を次のように置き換えます。 1. 各エレメントを右から左に向かって、アンパーサンド (&) がないかどうかスキ ャンします。 v アンパーサンドが見つかると、アンパーサンドとその右側にあるエレメントは その変数の値に置き換えられます。 v 値が存在しなければ、変数はヌルになります。 v アンパーサンドの右側の先頭文字が数値の場合、変数はパラメーター変数であ ると見なされます。次に、Tivoli NetView for z/OS プログラムは右方をスキ ャンし、そのパラメーター変数の部分で数字が続いていればそれを取ります。 ブランクまたは文字が検出されると、検索は停止します。特殊文字 (非英数字) が見つかった場合、変数名は区切り文字で区切られます。 例えば、&21A は &21 と受け取られ、&21 の値で置き換えられます。そのた め、&21A は、値 A になります。別の例として、エレメントに&A=&XYZ が 含まれている場合には、値 &XYZ が置き換えられ、その後、 &A が &XYZ を置き換えた値で取り替えられます。 114 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト 注: X'50' の値 (EBCDIC 文字セットの中のアンパーサンド) は、 2 バイト文 字セットの中では無視されます。アンパーサンドを使用したい場合は、シ フトイン (X'0F') 制御文字を使用してストリングを終了させてから変数を 入力します。ストリングを再開するときは、シフトアウト (X'0E') 制御文 字を使用してストリングを始めます。 2. 左側の隣の文字からスキャンが再開され、アンパーサンドの検索が続きます。ア ンパーサンドが検出されると、そのアンパーサンドと右方の構文エレメント全体 が、前に置換されたものも含めて変数の名前として認識され、変数値によって置 き換えられます。 注: 置換された値は、アンパーサンドに対してスキャンされません。 エレメントが割り当てステートメントのターゲットであれば、スキャンは 2 番 目の文字で停止して、値に割り当てられる変数名を保存します。例えば、次の例 のステートメントは、ユーザー変数 &A1 の値を 2 に設定します。 &B = 1 &A&B = 2 以下の項目については、変数置換は行われません。 制御キーワード 詳細については、124 ページの『&CONTROL ステートメント』を参照して ください。 &PAUSE ステートメント ユーザーが GO コマンドを入力したときに、変数に値が割り当てられま す。詳細については、129 ページの『&PAUSE 制御ステートメント』を参 照してください。 &IF ステートメント上の &THEN 文節 &IF 文節が真の場合、&THEN 文節からステートメントが作られ、それが独 立にコーディングされたかのように処理されます。詳細については、145 ペ ージの『&IF 制御ステートメント』を参照してください。 メッセージ・シリーズ &BEGWRITE NOSUB の中の任意のステートメント 詳細については、127 ページの『&BEGWRITE 制御ステートメント』を参 照してください。 組み込み関数 詳細については、132 ページの『NetView 組み込み関数』を参照してくださ い。 パラメーター変数 パラメーター変数は定位置変数で、コマンド・リストの実行時に定義されます。パ ラメーター変数は、実行中のコマンド・リストの名前の後にオペランドとして入力 して指定します。パラメーター変数には、次の特性があります。 v コマンド・リスト内で、番号付きの位置 (例えば、&1) によって識別される v 実行時にコマンド・リスト名の後に入力される v コンマ、アポストロフィ、またはブランクで区切られる パラメーター変数を使用してコマンド・リストをコーディングするときは、次のガ イドラインを使用してください。 付録 A. 簡単なコマンド・リストの作成 115 NetView コマンド・リスト言語のコマンド・リスト v 1 つのコマンド・リストには、最高 31 個のパラメーター変数を使用できる。 v 1 つのコマンド・リストで、同じパラメーター変数を複数回使用できる。 v パラメーター変数の値は 238 文字長まで指定できる。 v パラメーター変数には数値か文字値のどちらかを含めることができる。 v 算術式 (加算や減算など) でパラメーター変数を使用するときは、パラメーター変 数に -2147483647 と 2147483647 の間の数値を入れることができる。非算術式 (例えば、割り当てステートメント、&IF ステートメント、&CONCAT、または &SUBSTR ステートメント) で使用した場合、パラメーター変数には符号を含め て最大 238 桁長の値を入れることができます。 注: Tivoli NetView for z/OS が、&WAIT ステートメントでコーディングされたメ ッセージを受信すると、受信したメッセージの情報を反映させるために、制御 変数 (例えば、&MSGORIGIN、&MSGID、&MSGCNT、&MSGSTR) が設定さ れ、パラメーター変数の値 (&1 から &31) が変更されます。 これらの変数については、119 ページの『制御変数』を参照してください。 LINKPD は、同じ制御変数とパラメーター変数を設定します。LINKPD コマンドの 詳細については、178 ページの『LINKPD の結果』を参照してください。 コマンド・リストにパラメーター変数情報を渡す方法 パラメーター変数を使用するコマンド・リストを活動化するとき、オペレーターは コマンド・リスト名とその後に続けてコマンド・リスト内の各パラメーター変数の 値を入力します。次の例は、オペレーターが最大 31 個のパラメーター変数をコマ ンド・リストに渡す形式を示しています。 cmdlistname _____,_____,_____,. . .,_____ &1 &2 &3 &31 コマンド・リスト名の後の最初の値がコマンド・リスト内の &1 を置き換え、次の 値が &2 を置き換え、以下同様に置き換えていきます。例えば、コマンド・リスト 内の 2 番目のパラメーター変数は、そのパラメーターの値を入れる場所に &2 とコ ーディングされます。 リソース LU100 を開始する RESC というコマンド・リストを、次の例に示すよう にコーディングしたとします。 RESC CLIST &CONTROL ERR VARY NET,ACT,ID=LU100 コマンド・リストでパラメーター変数を使用したい場合は、コマンド・リストを変 更して、どのリソースも活動化または非活動化できます。次の例では、パラメータ ー変数によってコマンド・リストがどのように見えるかを示します。 RESC CLIST &CONTROL ERR VARY NET,&1,ID=&2; これによって、オペレーターは RESC ACT,LU100 と入力すれば、リソース LU100 を開始することができます。 116 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト コマンド・リストの実行時に、&1 と &2 は次の定位置パラメーターによって置き 換えられます。 v &1 は ACT で v &2 は LU100 で コマンド・リストは、コマンド・リスト名の後にオペランドが入力された順序にし たがって、入力されたオペランドから &1 と &2 の値をとります。 注: コマンド・リストを使用するオペレーターには、提供するパラメーター変数の 数とどの値を提供するかを知らせなければなりません。 コマンド・リストがメッセージによって活動化される場合、メッセージの各ワード が別々のパラメーター変数になります。詳細については、103 ページの『第 5 章 自動化リソース管理』を参照してください。 コマンド・リストでのパラメーター変数の使用方法 コマンド・リスト内にパラメーター変数を置くために、設定された命令は必要では ありません。次の例は、&1 の前に &2 を使用できることを示しています。 V NET,&2,ID=&1 &1 には最初のオペレーター入力の値が与えられ、 &2 には 2 番目の値が与えられ ます。 コマンド・リスト・ステートメントに 2 つ以上のパラメーター変数がある場合に は、右端の変数がまず変更されます。右から左にスキャンを続行してから、次の変 数が置き換えられます。この方式を使用して、一部のパラメーター変数の意味を変 更することができます。オペレーターが何個のパラメーターを入力したか、または どのパラメーター値が入力されたかをテストする必要がある場合は、制御変数 &PARMCNT と &PARMSTR を使用してください。 119 ページの『制御変数』を 参照してください。 ネストされたコマンド・リストにパラメーター変数を渡す方法 ネストされたコマンド・リストを活動化するコマンド・リスト・ステートメント で、パラメーター変数をコーディングすることができます。これらのパラメーター 変数は、他のパラメーター変数と同じ基本規則に従います。それに加えて、パラメ ーター変数として実際の値か、その他の変数のいずれかを渡すことができます。他 の変数を渡す場合は、これらの変数が、次に活動化されたコマンド・リストに認識 されるようにしてください。 以下の例で、パラメーターの引き渡しを示します。 コマンド・リスト CALLER には、次のような 1 行のコードが含まれています。 CALLEE LINES,TERMS,CDRMS コマンド・リスト CALLEE は、次の変数を使用します。 &1 LINES &2 TERMS &3 CDRMS 付録 A. 簡単なコマンド・リストの作成 117 NetView コマンド・リスト言語のコマンド・リスト コマンド・リスト MAJOR は、MAJOR ALPHA,BETA を入力することによって活 動化され、次のステートメントを含んでいます。 &A = 55 MINOR &A,&1,&2 コマンド・リスト MINOR は、次の変数を使用します。 &1 55 &2 ALPHA &3 BETA コマンド・リスト MINOR は、&A (55) の値を最初のパラメーターとして取り、 MAJOR の最初のパラメーターの値 (ALPHA) を 2 番目のパラメーターとして取 り、MAJOR の 2 番目のパラメーターの値 (BETA) をその 3 番目のパラメーター として取ります。 ネストされたコマンド・リストに引用符付きストリングを含む変数を渡す必要があ る場合は、ネストされたコマンド・リスト呼び出しで、その変数を単一引用符で囲 んでください。次の例では、CLIST1 が CLIST2 を呼び出します。 CLIST1 CLIST &STR = &1 CLIST2 ’&STR’ &EXIT ネストされたコマンド・リスト呼び出しでのパラメーター変数は、前後に引用符を 付けなければなりません。 パラメーター変数内の引用符付きストリングまたは特殊文字の使用 ブランク、アポストロフィ (')、またはコンマ (,) を値の一部に使用する必要がある 場合、単一引用符を使用してその値を特殊文字ストリングにしなければなりませ ん。テキスト・ストリングを、あるパラメーターの値として採用してほしい場合 も、特殊文字ストリングにしなければなりません。 NetView コマンド・リスト言語の引用符付きストリングは、次の要件のいずれか 1 つに合う任意のテキストです。 v 前に区切り文字と単一引用符があり、後に単一引用符と区切り文字、または右端 の非ブランク文字である単一引用符のいずれかがあるテキスト。 v 前に左端の非ブランク文字である単一引用符があり、後に単一引用符と区切り文 字があるテキスト。 v 前に左端の非ブランク文字である単一引用符があり、後に右端の非ブランク文字 である単一引用符があるテキスト。 次のコマンドを入力して、コマンド・リスト名 RESC を活動化するとします。 RESC ACT,’LU200,LOGMODE=S3270’ RESC コマンド・リスト内のパラメーター変数には、次の値が含まれます。 &1 = ACT &2 = LU200,LOGMODE=S3270 118 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト 次のコマンドを入力して、RESC コマンド・リストを活動化したとします。 RESC ACT,LU200,LOGMODE=S3270 この場合のパラメーター変数には、次の値が入ります。 &1 = ACT &2 = LU200 &3 = LOGMODE=S3270 ヌル・パラメーター値 2 つのコンマ (,,) を使用して、後に非ヌル・パラメーターが続いているパラメータ ー変数にヌル値を与えます。最後の非ヌル・パラメーターの後は、&31 までの残り のすべてのパラメーター変数には自動的にヌル値が与えられます。ヌル・パラメー ターは、値が必要ないときに便利です。例えば、次のステートメントを含む CONN というコマンド・リストを作成したとします。 BGNSESS FLSCN,APPLID=&1,SRCLU=&2,LOGMODE=&3,INT=&4,D=&5 すべての値を指定するわけではない場合には、次のようにコマンドを入力します。 CONN TSO,TAF01F00,,,PF12 この例では、&1 は TSO、&2 は TAF01F00、&3 と &4 はヌル、および &5 は PF12 です。TAF01F00 と PF12 の間の余分のコンマは、&3 と &4 の定位置プレー スホルダーを表し、コマンド・リストにそれらがヌルであることを知らせます。コ ンマを 1 つだけ使用した場合、コマンド・リストは PF12 を &3 として採用し、 PF12 を誤って LOGMODE として使用することになります。 コマンド・リスト内にヌル・パラメーター変数があるかどうかテストし、構文エラ ーが起こる可能性を回避するためにデフォルト値を指定してください。 制御変数 以下のセクションでは、NetView コマンド・リスト言語で使用する場合の制御変数 について説明します。 制御変数は、システム情報に基づいて設定されます。制御変数を使用するには、コ マンド・リスト内の変数名を、その情報にアクセスしたい場所に配置します。コマ ンド・リストの実行時に、各制御変数に正しい値が割り当てられます。一部の制御 変数の値を表示するには、 LISTVAR コマンドを使用します。 SPCS コマンドの LINKDATA と LINKTEST で使用される制御変数の詳細について は、176 ページの『LINKDATA および LINKTEST の結果』を参照してください。 注: コマンド・リストは、すでに制御ステートメント、制御変数、または組み込み 関数として定義済みのユーザー変数を作成することができます。ただし、この ようなユーザー変数が作成された場合、そのコマンド・リスト内では、提供さ れた制御ステートメント、制御変数、または組み込み関数を使用できません。 ユーザー変数 ユーザー変数とは、ユーザーがコマンド・リスト内で作成して設定する変数です。 ユーザー変数は割り当てステートメントまたは &PAUSE 制御ステートメントで設 定することができます。 付録 A. 簡単なコマンド・リストの作成 119 NetView コマンド・リスト言語のコマンド・リスト 割り当てステートメントについては、122 ページの『割り当てステートメント』を 参照してください。 &PAUSE 制御ステートメントは、オペレーターがデータ入力できるようにコマン ド・リストを停止し、コマンド・リストが継続するときにユーザー変数の値をオペ レーターから受け取ります。 &PAUSE については、129 ページの『&PAUSE 制御 ステートメント』を参照してください。 ユーザー変数を作成するときは、以下の規則を守ってください。 v 先頭文字は、アンパーサンド (&) でなければなりません。 v アンパーサンドの後の最初の文字は、数値でなく文字またはシンボルでなければ なりません。それ以外の場合には、パラメーター変数として処理されます。 v アンパーサンドの後に、1 個から 11 個までの文字が続かなければなりません。 A から Z、0 から 9、#、@、および $ が有効な文字です。 v ユーザー変数の値は 255 文字長までです。シフトアウト (X'0E') 制御文字とシフ トイン (X'0F') 制御文字の間の 2 バイト文字の最大数は 126 です。 v ユーザー変数には、符号を含めて 255 桁の長さの数値を入れることができます。 ただし、ユーザー変数の値が算術式 (加算や減算など) を使用して取得される場 合、またはユーザー変数が算術式で使用される場合、ユーザー変数には -2147483647 と 2147483647 の間の数値を入れることができます。数値で使用で きる文字は、0 から 9 までです。数値の直前には、その値が正 (+) か負 (-) か を示す文字を付けることができます。 注: コマンド・リストは、すでに制御ステートメント、制御変数、または組み込み 関数として定義済みのユーザー変数を作成することができます。ただし、その コマンド・リスト内では、提供された制御ステートメント、制御変数、または 組み込み関数を使用できなくなります。 120 ページの表 17 は、いくつかのユーザー変数名の例を示しています。 表 17. ユーザー変数名 有効 無効 理由 &A &2A &2 (パラメーター変数) と読み取られる &USERNAME &INVALIDUSERNAME 長すぎる &@23456 &A% % は有効文字ではない 次の例は、パラメーターの設定およびオペレーターとの通信のための割り当てステ ートメント内での、ユーザー変数の操作方法の例を示しています。 &PAUSE VARS &ONE &TWO &SUM = &ONE + &TWO CLEAR &WRITE >>> THE SUM OF &ONE + &TWO IS --->&SUM 120 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト 16 進表記 NetView コマンド・リスト言語では、 16 進データを処理するための 16 進表記機 能が提供されます。 コマンド・リスト変数を使用できる場所ならどこでも (割り当 てステートメント内の受信側の場合を除く)、 16 進表記を使用することができま す。 次の構文は、NetView コマンド・リスト言語の 16 進表記を示しています。 X'n' ここで各要素は以下のとおりです。 n 埋め込まれたブランクをもたない、偶数または奇数の 16 進数字 (0 から 9 ま たは大文字の A から F) です。 n が奇数桁の数字の場合、その数字の接頭部 が 0 になります (例えば、X'2C6' は X'02C6' に変換されます)。n の最大長 は、16 進数字で 255 です。 次に示すのは、16 進表記の使用例です。 &A = X'3B9' &IF &A = X'3B9' &THEN.... コメント コマンド・リスト内にコメントをコーディングしておくと役立ちます。コメントの あるコマンド・リストは、コメントのないものよりも保守および拡張が容易です。 コメントを使用して、次の情報を表示することができます。 v コマンド・リストの作成および更新の日時 v コマンド・リストの作成者 v コマンド・リストの機能 v コマンド・リストの入力と出力 v このコマンド・リストが、他のプログラムまたは他のコマンド・リストに依存し ているかどうか。 コメントを書くには、コマンド・リスト行の最初の非ブランク文字としてアスタリ スク (*) をコーディングします。コマンド・リストのセクションを分離するため に、ハイフンのストリングを使用しないようにしてください。 ヌル・ステートメント ヌル・ステートメントにはすべてブランクが含まれているか、ラベルの後にすべて ブランクが含まれています。ラベルのあるヌル・ステートメントは、フロー制御ス テートメント (条件付き処理) または &BEGWRITE ステートメントのターゲットに することができます。ラベルの使用法の詳細については、 113 ページの『ラベル』 を参照してください。 ヌル・ステートメントを使用して、オペレーターに対するメッセージの形式を整え たり、長いコマンド・リストの読み取りや更新が容易なように分離することができ ます。ヌル・ステートメントは、&BEGWRITE ステートメントで作成されたメッセ ージの一部である場合、オペレーターにブランク行として送られます。コマンド・ 付録 A. 簡単なコマンド・リストの作成 121 NetView コマンド・リスト言語のコマンド・リスト リストを分離するためにヌル・ステートメントを使用した場合、コマンド・リスト の実行時にそのステートメントは無視されます。 割り当てステートメント 割り当てステートメントは変数に値を指定し、コマンド・リスト内で算術演算を行 います。割り当てステートメントの構文は以下のとおりです。 割り当て &variable = expression 図 35. 割り当てステートメント 等号の前後にブランクが存在している必要があります。 コマンド・リストが実行されると、ユーザー変数の値が式の値に設定されます。例 えば、割り当てステートメント &A = 5 は &A を 5 に設定します。割り当てステ ートメント &B = &1 は &B を &1 の値に設定し、&1 はその値を保持します。 式は、以下の項目のいずれかです。 定数 定数は英数字で構成され、他の値で置き換えられることはありません。値は 固定です。例えば、次の割り当てステートメントをコーディングすると、 &VAR = 5 値 5 がユーザー変数 &VAR に割り当てられます。 ブランク、コンマ、アポストロフィ、またはハイフンを含む定数を使用した い場合は、単一引用符を使用します。例えば、次のとおりです。 &NAME = ’JOHN B. DOE’ 定数の長さは 255 文字までです。数字の場合、定数は -2147483647 と 2147483647 の間でなければなりません。数値で使用できる文字は、0 から 9 までです。数値の直前には、その値が正 (+) か負 (-) かを示す文字を付 けることができます。 変数 変数とはパラメーター変数、制御変数、ユーザー変数、またはグローバル変 数のいずれかです。 次の割り当てステートメントがあると、 &PARMVAR = &4 パラメーター変数 &4 の値を、ユーザー変数 &PARMVAR に割り当てま す。 制御変数 &OPID の値をユーザー変数 &USERVAR に割り当てるには、次 のステートメントをコーディングします。 &USERVAR = &OPID 注: 制御ステートメントを変数として使用するのは、その制御ステートメン トが単一引用符で囲まれている場合であっても無効です。例えば、次の 割り当てステートメントは無効です。 122 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト &A = &IF &A = ’&WAIT ERROR’ 算術演算 加算と減算の演算を、割り当てステートメントの中で使用することができま す。この形式は、プラス (+) またはマイナス (-) の符号で分離した 2 つの 数字です。数字に設定される変数を使用することもできます。数値で使用で きる文字は、0 から 9 までです。数値の直前には、その値が正 (+) か負 (-) かを示す文字を付けることができます。 正符号または負符号は、少なくとも 1 つのブランクを両側に入れて数値と 離す必要があります。ただし、それが正または負の数値を表す場合 (-2、-4) を除きます。例えば、4 - 2 と 4 - -2 は両方とも正しいですが、4 -2 は誤 りです。 算術演算の結果は、-2147483647 から 2147483647 までの間でなければなり ません。次の割り当てステートメントは、算術演算で制御変数を使用する方 法を示しています。 &SUM = 38 - &PARMCNT 制御変数 &PARMCNT の値を 38 から引き、得られた値を変数 &SUM に 割り当てます。 先行ゼロのある算術式の場合、結果には先行ゼロは表示されません。例え ば、&A が 01 とみなし、次のステートメントをコーディングすると、 &C = &A + 1 &C の値は、02 でなく 2 になります。 注: 算術演算でエラー条件になるのを避けるには、潜在的ヌル変数の前にゼ ロをコーディングします。 組み込み関数 割り当てステートメントの中で組み込み関数を使用できます。演算の結果 は、ユーザー変数に入れられます。詳細については、 132 ページの 『NetView 組み込み関数』を参照してください。 次の例は、割り当てステートメントの中に組み込み関数をコーディングする 方法を示しています。 &STR2 = &STR1 = &NEWSTR &NEWSTR &SUBSTR &STRING 2 1 &SUBSTR &STRING 1 1 = &CONCAT &STR5 &STR4 = &CONCAT &NEWSTR &STR3 制御ステートメント 制御ステートメントは、Tivoli NetView for z/OS がコマンド・リストの他のステー トメントにどのように作動するかを制御する、固有のコマンド・リスト・ステート メントです。本章の制御ステートメントを直線的コーディングに使用するか、145 ページの『付録 B. NetView コマンド・リスト言語のブランチ』で説明するステー トメントとともに条件付き処理のために使用することができます。 付録 A. 簡単なコマンド・リストの作成 123 NetView コマンド・リスト言語のコマンド・リスト 制御ステートメントを使用して、処理の順序を変更することができます。コマン ド・リスト制御ステートメントを使用して、以下のアクションを行うことができま す。 v コマンド・リストからオペレーターへのメッセージの送信。 v コマンドの実行順序の制御。 v コマンド・リストの継続に必要な情報の入力のオペレーターへの依頼。 v コマンド・リストを継続する前の送信請求メッセージの到着の待機。 各コマンド・リスト制御ステートメントは、 &ワード の形式の制御シンボルで始ま ります。 &IF を使用する場合を除き、1 行にコーディングできる制御ステートメン トは 1 個だけです。 制御ステートメントの説明を読むと、これらの基本ステートメントの一般的な機能 について理解できます。それぞれの制御ステートメントの詳細については、以降の セクションを参照してください。 次の制御ステートメントが説明されています。 &BEGWRITE オペレーターへの 1 つまたは一連のメッセージを作成する。 &CONTROL コマンド・リストの実行中に、オペレーター画面上に表示するコマンド・リス ト・ステートメントを指定する。 &PAUSE オペレーターがコマンド・リストの継続に必要な情報を入力するまで、コマン ド・リストを停止する。 &WRITE 指定されたオペレーター向けのメッセージを作成する。 &CONTROL ステートメント &CONTROL ステートメントを使用すると、コマンド・リストの実行中にオペレー ター端末にどのコマンド・リスト・ステートメントを表示するかを指定することが できます。指定されたコマンド・リスト・ステートメントは、すべての置換を終 え、コマンド・リスト・ステートメントが実行される前に、表示されます。 &CONTROL ALL または &CONTROL CMD による表示を使用して、コマンド・リ ストのデバッグを支援することができます。 &CONTROL は、コマンド・リストの先頭に設定します。 &CONTROL の設定値を コマンド・リスト内で必要に応じて何回でも変更することができます。 &CONTROL は、コマンド・リスト内のその点から次の &CONTROL ステートメン トに達するまでの間有効です。例えば、コマンド・リストにコードの新しいセクシ ョンを追加したばかりの場合、新しいセクションについては全体を表示し、既存の セクションについてはエラーだけを表示することができます。この制御ステートメ ントは、&CONTROL の後にブランクとオペランドを続けてコーディングします。 &CONTROL 制御ステートメントの構文は以下のとおりです。 124 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト &CONTROL ALL &CONTROL CMD ERR ここで各要素は以下のとおりです。 ALL ALL 制御ステートメントは、すべてのコマンド・リスト・ステートメントをオ ペレーター端末上に表示します。各ステートメントは、処理の直前に表示されま す。&CONTROL ALL は、コマンド・リストを最初に作成して、テストしたい ときに適した選択です。コマンド・リストのテスト後は、 &CONTROL CMD 制御ステートメントか &CONTROL ERR 制御ステートメントの方がよい選択で す。このコマンド・リストの処理が完了すると、次のメッセージが表示されま す。 DSI013I COMMAND LIST clistname COMPLETE オペランドなしの &CONTROL 制御ステートメントをコーディングした場合、 または &CONTROL 制御ステートメントをコーディングしなかった場合のデフ ォルトの制御ステートメントは、&CONTROL ALL です。 CMD オペレーター端末にすべてのコマンドを表示します。各コマンドは、実行の直前 に表示されます。他のコマンド・リスト・ステートメント (コメント、制御ステ ートメント、および他のコマンド・リスト言語ステートメントなど) は、エラー がある場合以外は表示されません。このコマンド・リストの処理が完了すると、 DSI013I COMMAND LIST clistname COMPLETE メッセージが表示されます。 ERR エラーのあるステートメント、および非ゼロ戻りコードのコマンドだけを表示し ます。 &CONTROL ERR がコマンド・リストの終わりで有効な場合、 DSI013I メッセージは表示されません。 オペレーターに対する書き込み &WRITE および &BEGWRITE ステートメントはオペレーター端末にメッセージを 送信します。 &WRITE ステートメントは 1 行のメッセージを送信し、 &BEGWRITE ステートメントは複数行のメッセージを送信します。これらのステー トメントは、オペレーターに、コマンド・リストが何をしているかなどの情報を与 えるために使用されます。 メッセージは、&CONTROL の設定値に関係なくオペレーターに送信されます。 &WRITE ステートメント上でコマンドをコーディングすると、テキストはオペレー ターにメッセージとして送信されますが、コマンド・リストのコマンドとしては実 行されません。 &WRITE および &BEGWRITE の使用を、コマンド・リストのコメントと混同しな いでください。コメントは、コマンド・リストの作成者のためのものなので、 付録 A. 簡単なコマンド・リストの作成 125 NetView コマンド・リスト言語のコマンド・リスト &CONTROL ALL が設定されていなければオペレーターに送信されません。 &WRITE ステートメントおよび &BEGWRITE ステートメントはオペレーターにメ ッセージを送信します。 複数のメッセージ行を送信するか、またはフルスクリーンを必要とするテーブルを 表示する場合、 &WRITE ステートメントや &BEGWRITE ステートメントでな く、 NetView VIEW コマンドを使用することができます。 &WRITE 制御ステートメント &WRITE ステートメントは、1 行のテキストをオペレーターに送信します。Tivoli NetView for z/OS は、オペレーターにメッセージを送信する前に、メッセージ・テ キスト上で変数置換を実行します。メッセージ・テキストに置換を行いたくない場 合は、&BEGWRITE を使用します。メッセージ・テキストを含めないと、オペレー ターにブランク行が送信されます。&WRITE ステートメントの構文は以下のとおり です。 &WRITE &WRITE message_text 行の先頭文字の前にブランクを含めたい場合は、 &WRITE の後に非ブランク文字 をコーディングします。 次の行の場合、 &WRITE . THIS LINE WILL START IN COLUMN 8 ピリオドがあるために、この行は次のように印刷されます。 . THIS LINE WILL START IN COLUMN 8 ピリオドがなければ、この行は最初の非ブランク文字が 1 桁目に来るまで左方にシ フトされます。 次の行にはピリオドがありません。 &WRITE THIS LINE WILL SHIFT TO COLUMN 1 このため、次のように印刷されます。 THIS LINE WILL SHIFT TO COLUMN 1 次の例では、&WRITE 制御ステートメントと VTAM コマンドを使用する PATH というコマンド・リストを示します。 PATH CLIST &CONTROL CMD * THIS COMMAND LIST DISPLAYS INFO ON VTAM SWITCHED PATHS &WRITE *** STATUS OF VTAM SWITCHED PATHS FOR &1 *** D NET,PATHS,ID=&1 PATH HD3790N1 を入力してこのコマンド・リストを活動化すると、 127 ページの 図 36 が表示されます。 126 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト *** STATUS OF VTAM SWITCHED PATHS FOR HD3790N1 *** D NET,PATHS,ID=HD3790N1 IST097I DISPLAY ACCEPTED IST148I DIAL OUT PATH INFORMATION FOR PHYSICAL UNIT HD3790N1 IST149I LINE GRP TELEPHONE NUMBER OR LINE NAME PID GID CNT IST168I EGROUP40 4094 001 001 005 AVA AUT IST168I EGROUP50 4094 002 002 001 AVA MAN IST314I END 図 36. PATH コマンド・リスト例の結果 &WRITE ステートメントの中の &1 が HD3790N1 という値で置き換えられてか ら、オペレーターに送信されていることに注意してください。 &CONTROL CMD がコーディングされたので、コマンドも表示されます。表示の他の部分は、VTAM コマンドに対する応答です。 図 37 は複数の &WRITE ステートメントを示しており、これらは 1 行メッセージ をオペレーターに送信するものです。 CLEAR &WRITE >>> THE SUM OF &ONE + &TWO IS --->&SUM &WRITE THE MIRROR IMAGE IS: &NEWSTR &WRITE TOTAL CHARACTERS ENTERED: &LEN &WRITE *** END OF SAMPLE CLIST *** 図 37. 1 行メッセージのオペレーターへの送信 &BEGWRITE 制御ステートメント &BEGWRITE を使用して、一連の行をオペレーター端末へ送信することができま す。また、メッセージを送信する前に変数を置き換えるかどうかを、制御すること もできます。 &BEGWRITE ステートメントは、送信したい最初のオペレーター・メッセージの 1 行上に、そのステートメントだけを 1 行にコーディングします。 &BEGWRITE で ラベルを指定することもできます。ラベルは、メッセージが終了してコマンド・リ スト処理が続行される場所をコマンド・リストに知らせます。ラベルの詳細につい ては、 113 ページの『ラベル』を参照してください。 変数を実際の値に置き換えてからオペレーターに送信したいと、指示することがで きます。選択を指示しないと、変数は置き換えられません。 &BEGWRITE ステートメントの構文は以下のとおりです。 &BEGWRITE NOSUB &BEGWRITE SUB -label 付録 A. 簡単なコマンド・リストの作成 127 NetView コマンド・リスト言語のコマンド・リスト ここで各要素は以下のとおりです。 -label これは、後に続く行をオペレーターに対して表示することを指定します。ステー トメントでラベルをコーディングする場合、このラベルはコマンド・リスト内の メッセージ・テキスト行の終わりの後に続くステートメントになければなりませ ん。 &BEGWRITE とラベルのあるステートメントの間にあるコマンド・リスト 行は、オペレーターに送信されます。ラベルのあるコマンド・リスト・ステート メントは、オペレーターに送信されません。これは、次のコマンド・リスト・ス テートメントとして処理されます。ラベルを見つけることができない場合、コマ ンド・リスト・ステートメントの他の部分はコメントとしてオペレーターに送信 され、コマンド・リストは終了します。&BEGWRITE にラベルがない場合、 &BEGWRITE の後の最初のコマンド・リスト・ステートメントだけがオペレー ターに送信されます。 &BEGWRITE で、ラベル用の変数をコーディングすることができます。変数を 有効な値で置き換えてください。 NOSUB オペレーターへのメッセージは、何の変数置換もなく印刷してあるとおりに正確 に作成してください。言い換えれば、&1 は &1 のままで送信され、 &1 の値 では送信されません。このオペランドは、メッセージの中のコマンド・リスト変 数について作成するときに使用してください。NOSUB はブランクを除去しませ ん。テキストを、入力されたとおり正確に表示します。&BEGWRITE をオペラ ンドなしでコーディングすると、NOSUB と見なされます。 SUB Tivoli NetView for z/OS は、オペレーターにメッセージを送信する前に、メッ セージ・テキスト上で置換を実行します。変数置換の管理方法の詳細について は、 114 ページの『変数置換の順序』を参照してください。 メッセージ行の先頭文字の前にブランクがある場合、その行は最初の非ブランク 文字が 1 桁目に来るまで左方にシフトされます。オペレーター画面にそのブラ ンクを送信したい場合は、非ブランク文字を 1 桁目にコーディングしてくださ い。&BEGWRITE を使用して 2 バイト文字セット (DBCS) 文字を含むメッセ ージを作成している場合は、SUB オプションを使用する必要があります。上記 のコーディング規則は、&WRITE と同じです。 図 38 は、変数置換を行う &BEGWRITE ステートメントの例です。 &BEGWRITE SUB -ENDTEXT . >>> HELLO &OP. >>> YOU CAN INITIATE CROSS-DOMAIN SESSIONS WITH &ID. . . NOW FOR SOME CHARACTER MANIPULATION . ENTER ’GO’ FOLLOWED BY A FIVE CHARACTER STRING. . THE CLIST WILL PRINT OUT THE MIRROR IMAGE TO YOU. . -ENDTEXT 図 38. 変数置換を行う &BEGWRITE 事例によっては、変数置換が不要な場合もあります。次の例では、&BEGWRITE ス テートメントはオペレーターに ENDIT コマンド・リストの使用方法を示します。 128 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト &CONTROL ERR &BEGWRITE NOSUB -OVER TO END FULL SCREEN SESSIONS, TYPE "ENDIT &1,&2,&3" REPLACE &1,&2,&3 WITH THE APPLID NAMES OF THE FLSCN SESSIONS TO BE ENDED -OVER ENDIT コマンド・リストは、ENDIT と入力して呼び出します。図 39 は、ENDIT が使用されたときにオペレーターに対して表示されるメッセージを示しています。 TO END FULL SCREEN SESSIONS, TYPE "ENDIT &1,&2,&3" REPLACE &1,&2,&3 WITH THE APPLID NAMES OF THE FLSCN SESSIONS TO BE ENDED 図 39. ENDIT コマンド・リスト例の結果 &1、&2、および &3 は、オペレーターにメッセージが送信されるときに、その値 によって置き換えられないことに注意してください。 &PAUSE 制御ステートメント &PAUSE 制御ステートメントを他のコマンドとともに使用すると、オペレーターに 質問し、入力された応答を処理するコマンド・リストをコーディングすることがで きます。&BEGWRITE と &WRITE 制御ステートメントは、オペレーターに命令を 送信するために使用します。例えば、オペレーターに NetView GO コマンドとそれ に続けてユーザー変数の値 (単数または複数) を入力するように命令する、コマン ド・リストをコーディングすることができます。次に、&PAUSE ステートメントを コーディングすると、コマンド・リストが一時的に停止します。コマンド・リスト は、オペレーターが GO コマンドを入力して処理を継続するか、または RESET コ マンドを入力してコマンド・リストを終了するまで停止します。 &PAUSE コマン ドをコーディングすると、コマンド・リストが GO コマンドの後に続くオペランド を処理し、それらをユーザー変数にすることができます。詳しくは、119 ページの 『ユーザー変数』を参照してください。 注: 1. &PAUSE を、自動化タスク・コマンド・リストまたは PPT の下で実行するコマ ンド・リストで使用することは無効です。 2. VIEW コマンドは、GO コマンドを使用せずにオペレーター入力を取得します。 &PAUSE ステートメントの構文は以下のとおりです。 付録 A. 簡単なコマンド・リストの作成 129 NetView コマンド・リスト言語のコマンド・リスト &PAUSE NOINPUT &PAUSE VARS variable STRING variable ここで各要素は以下のとおりです。 NOINPUT オペレーターが、GO コマンドか RESET コマンドを入力するまで休止します。 GO コマンドでは、オペランドは指定できません。オペレーターがオペランドを 入力すると、エラー・メッセージが戻されます。デフォルト値は、NOINPUT で す。 STRING variable オペレーターが、ストリング付きまたはストリングなしの GO コマンドか、 RESET コマンドを入力するまで休止します。前の &WRITE ステートメントま たは &BEGWRITE ステートメントは、オペレーターに GO コマンドでオペラ ンドを入力するように通知します。オペランドのストリング全体が、1 つのユー ザー変数と見なされます。次に、変数をコマンド・リストで使用できるようにな ります。 VARS variable オペレーターが、正しい数のオペランド付きまたはオペランドなしの GO コマ ンドか、 RESET コマンドを入力するまで休止します。前の &WRITE ステート メントまたは &BEGWRITE ステートメントは、オペレーターに GO コマンド でオペランドを入力するように通知します。各オペランドは、&PAUSE VARS ステートメントでコーディングされたユーザー変数と見なされます。次に、これ らの変数をコマンド・リストで使用できるようになります。 コマンド・リストが &PAUSE 制御ステートメントを解釈するとき、P という文字 がパネルの右上に表示され、コマンド・リストが休止状態であることをオペレータ ーに警告します。休止状態とは、コマンド・リストが一時停止し、端末からの入力 を待っていることを意味します。 注: 休止状態にあるコマンド・リストが NNT セッションによって呼び出された場 合、 P インディケーターは OST パネルに表示されません。 &PAUSE での NetView コマンドの使用 オペレーターは、休止の間に NetView コマンドの GO、 RESET、STACK、および UNSTACK を入力することができます。 STACK および UNSTACK は、&PAUSE の間、コマンド・リスト処理を中断し、 後で再開する場合に使用します。 STACK が出されると、オペレーターは任意のネ ットワーク・コマンドを入力することができます。 注: &PAUSE が STACK コマンドで中断状態になっている間、 P はパネルの右上 隅から除去されています。 P は UNSTACK が出された後で再表示されます。 130 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のコマンド・リスト UNSTACK が出された後で、オペレーターは GO (オペランドあり、またはな し) を入力してコマンド・リストを継続するか、または RESET コマンドを入力 してコマンド・リストを終了します。 RESET は、任意のネストされたコマン ド・リストも終了します。 GO コマンドのオペランドは、定位置オペランドです。これは、第 1 オペランドが 最初のユーザー変数になり、第 2 オペランドが 2 番目のユーザー変数になる (以 下同様) ということを意味します。オペランドは、ブランクかコンマのいずれかに よって分離します。ブランクかコンマを 1 つの変数の一部に使用したい場合は、 &PAUSE STRING を使用するか、そのオペランドを単一引用符で囲みます。 ユーザー変数は、必要とされているオペランドごとにコーディングしてください。 オペレーターが GO コマンドで、コマンド・リストに必要とされている以上のオペ ランドを入力すると、余分のオペランドは無視されます。オペレーターが、必要と されているよりも少ないオペランドを入力すると、残りの変数はヌルに設定されま す。オペレーターは、2 個のコンマを並べてコーディングすることにより、 1 つの オペランドをスキップすることもできます。 オペレーター入力のための休止に先立って、入力すべき情報を示すメッセージを出 すようにしてください。この情報の送信には、&WRITE ステートメントまたは &BEGWRITE ステートメントを使用します。 注: オペレーターは、任意の NetView コンポーネントからユーザーのコマンド・リ ストを呼び出すことができます。コマンド・リストをコマンド機能以外のコン ポーネントから実行する場合、コマンド・リストで NCCF を使用して、オペレ ーターにコマンド機能パネルとコマンド・パネル入力域を表示します。(これは メッセージを発行する前に行います。) コマンド・リストがコマンド機能内で実 行中の場合、 NCCF コマンドは効果がありません。 NetView コマンドの詳細 については、オンライン・ヘルプを参照してください。 &PAUSE の使用例 次の例には、オペレーターから情報を請求する方法を示すコマンド・リストの一部 分が含まれています。 &BEGWRITE SUB -ENDTEXT . ENTER ’GO’ FOLLOWED BY YOUR LAST NAME, . FIRST NAME, AND MIDDLE INITIAL. -ENDTEXT * GET THE INPUT FROM THE USER &PAUSE VARS &LAST &FIRST &MI この例は、オペレーターの姓、名、およびミドルネームのイニシャルの入力をオペ レーターに求めるメッセージを作成します。コマンド・リストは、オペレーターが GO コマンドか RESET コマンドを入力するまで休止しています。現行コマンド・ リストの処理を継続する場合、オペレーターは GO コマンドの後にコマンド・リス トに必要なストリングを付けて入力します。 オペレーターが次のコマンドを入力した場合 GO SMITH JOHN A 付録 A. 簡単なコマンド・リストの作成 131 NetView コマンド・リスト言語のコマンド・リスト &LAST の値は SMITH になり、&FIRST の値は JOHN になり、&MI の値は A に なります。この後、これらの変数はコマンド・リストの他のステートメントで使用 できます。 NetView 組み込み関数 組み込み関数は、事前定義された演算を実行します。これは割り当てステートメン トか、&IF 制御ステートメントのいずれかで使用されます。(&IF 制御ステートメン トについては、145 ページの『&IF 制御ステートメント』を参照してください。) 割り当てステートメントでは、ユーザー変数の値が組み込み関数の演算の結果に設 定されます。2 つの NetView 組み込み関数 (&HIER および &MSUSEG) には、 NetView REXX のみのコマンド・リストで使用する REXX 形式の関数 HIER() お よび MSUSEG() があります。 組み込み関数を同じ名前の変数と混同しないでください。 (全 NetView コマンド・ リスト言語変数について、 45 ページの『第 4 章 NetView REXX コマンド・リス トおよび Data REXX ファイルの REXX 命令』で説明しています。)これらのコマ ンドは見かけ上は似ていますが、同じではありません。関数 HIER() と MSUSEG() を除き、組み込み関数も NetViewコマンド・リスト言語変数もアンパーサンド (&) で始まります。以下のリストで、差異を説明します。 v 変数は、コマンド・リストの実行時にその値によって置き換えられます。変数は 値の単なるプレースホルダーです。 v 組み込み関数は、決して値で置き換えられません。組み込み関数は、プレースホ ルダーでなく、アクション・インディケーターです。 使用可能な組み込み関数は、次のとおりです。 v &BITAND v &BITOR v &BITXOR v &CONCAT v &HIER v &LENGTH v &MSUSEG v &NCCFID v &NCCFSTAT v &SUBSTR このセクションの例では、割り当てステートメントに組み込み関数を使用します。 &IF 制御ステートメントに組み込み関数を使用した例は、 145 ページの『&IF 制 御ステートメント』を参照してください。 &IF 制御ステートメントでは、組み込み関数の結果は、比較された式の片方または 両方に使用されます。例えば、&LENGTH 組み込み関数を、 2 つの変数の長さの比 較に使用することができます。 &BITAND &BITAND 関数は、2 つの入力ビットを 1 ビットずつ互いに論理的に AND 結合し たもので構成されたストリングを戻します。結果の長さは、2 つのストリングのう 132 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 ちの長い方の長さになります。 2 つのストリングのうちで短い方が尽きたときに AND 演算が終了した場合、長い方のストリングの未処理部分は、結果の一部に付加 されます。両方のストリングの値がヌルの場合、結果はヌル・ストリングになりま す。 &BITAND 関数の構文は以下のとおりです。 &BITAND &BITAND string1 string2 ここで各要素は以下のとおりです。 string1 定数またはコマンド・リスト変数のいずれかです。 string2 定数またはコマンド・リスト変数のいずれかです。 &BITAND 演算の 2 例を示します。 &BITAND X’73’ X’27’ は、X’23’ になります。 &BITAND X’13’ X’5555’ は、X’1155’ になります。 使用上の注意: 1. string2 がヌルの場合、結果は未変更の string1 になります。 2. 3 つ以上のストリングを指定すると、メッセージ DSI186I が発行されてコマン ド・リストは終了します。このことは、これに相当する REXX 関数とも矛盾し ません。 3. string1 を指定しないと、メッセージ DSI187I が発行されてコマンド・リストは 終了します。このことは、これに相当する REXX 関数とも矛盾しません。 &BITOR &BITOR 関数は、2 つの入力ビットを 1 ビットずつ互いに論理的に OR 結合した もので構成されたストリングを戻します。結果の長さは、2 つのストリングのうち の長い方の長さになります。 2 つのストリングのうちで短い方が尽きたときに OR 演算が終了した場合、長い方のストリングの未処理部分は、結果の一部に付加され ます。両方のストリングの値がヌルの場合、結果はヌル・ストリングになります。 &BITOR 関数の構文は以下のとおりです。 &BITOR &BITOR string1 string2 ここで各要素は以下のとおりです。 付録 A. 簡単なコマンド・リストの作成 133 組み込み関数 string1 定数またはコマンド・リスト変数のいずれかです。 string2 定数またはコマンド・リスト変数のいずれかです。 &BITOR 演算の 2 例を示します。 &BITOR X’15’ X’24’ は、X’35’ になります。 &BITOR X’15’ X’2456’ は、X’3556’ になります。 使用上の注意: 1. string2 がヌルの場合、結果は未変更の string1 になります。 2. 2 つ以上のストリングを指定すると、メッセージ DSI186I が発行されてコマン ド・リストは終了します。このことは、これに相当する REXX 関数とも矛盾し ません。 3. string1 を指定しないと、メッセージ DSI187I が発行されてコマンド・リストは 終了します。このことは、これに相当する REXX 関数とも矛盾しません。 &BITXOR &BITXOR 関数は、2 つの入力ビットを 1 ビットずつ互いに論理的に排他的 OR 結合したもので構成されたストリングを戻します。結果の長さは、2 つのストリン グのうちの長い方の長さになります。 2 つのストリングのうちで短い方が尽きたと きに XOR 演算が終了した場合、長い方のストリングの未処理部分は、結果の一部 に付加されます。両方のストリングの値がヌルの場合、結果はヌル・ストリングに なります。 &BITXOR 関数の構文は以下のとおりです。 &BITXOR &BITXOR string1 string2 ここで各要素は以下のとおりです。 string1 定数またはコマンド・リスト変数のいずれかです。 string2 定数またはコマンド・リスト変数のいずれかです。 &BITXOR 演算の 2 例を示します。 &BITXOR X’12’ X’22’ は、X’30’ になります。 &BITXOR X’1211’ X’22’ は、X’3011’ になります。 使用上の注意: 1. string2 がヌルの場合、結果は未変更の string1 になります。 134 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 2. 2 つ以上のストリングを指定すると、メッセージ DSI186I が発行されてコマン ド・リストは終了します。このことは、これに相当する REXX 関数とも矛盾し ません。 3. string1 を指定しないと、メッセージ DSI187I が発行されてコマンド・リストは 終了します。このことは、これに相当する REXX 関数とも矛盾しません。 &CONCAT &CONCAT 関数は 2 つの変数、2 つの定数、または変数と定数を連結して新しい 値を構成します。&CONCAT 組み込み関数の構文は以下のとおりです。 &CONCAT &CONCAT variable constant variable constant 2 つの項目を結合するときは、作成される値が最大 255 文字を超えないことを確認 してください。上位の値が切り捨てられてしまいます。結合される両方の項目の値 がヌルの場合、結果はヌルになります。 例えば、次のようなステートメントがあるとします。 &PREFIX = SN/ &ID = 5497 &SERIAL = &CONCAT &PREFIX &ID 処理の後に、ユーザー変数は次のように設定されます。 &PREFIX SN/ &ID 5497 &SERIAL SN/5497 注: &CONCAT を使用して 2 つの 2 バイト文字セット (DBCS) ストリングを連結 すると、隣接するシフトイン (SI) 文字とシフトアウト (SO) 文字が除去されま す。 &HIER &HIER 関数は、MSU に関連した NetView ハードウェア・モニター階層データへ のユーザー・アクセスを提供します。 &HIER の構文は以下のとおりです。 HIER &HIER n ここで各要素は以下のとおりです。 n 特定の名前/タイプの組み合わせの索引番号 (1 から 5) を指定します。 付録 A. 簡単なコマンド・リストの作成 135 組み込み関数 注: 1. &HIER で n を指定しないと、BNJ146I メッセージで見つかるものとは少し異な るリソース階層が戻されます。名前/タイプの組み合わせは、次のようになってい ます。 aaaaaaaa1111bbbbbbbb2222....eeeeeeee5555 文字はリソース名を表し、数字はリソース・タイプを表しています。 ハードウェア・モニターは、1 個から 5 個までの名前/タイプの組み合わせを定 義します。それぞれの名前は 8 文字長で、それぞれのタイプは 4 文字です。名 前とタイプには、必要に応じてブランクで埋め込みが行われます。 2. &HIER で n を指定すると、n に対応する aaaaaaaa1111 などの名前/タイプの 組み合わせを戻します。n に対応する名前/タイプの組み合わせがない場合は、ヌ ル値が戻されます。 3. &HIER は、以下の条件のもとでヌル値を戻します。 v コマンド・リストが自動化テーブルで実行されない場合 v 自動化テーブルが MSU によって駆動されなかった場合 v MSU にハードウェア・モニター・リソース階層がない場合 4. 137 ページの図 40 に示された、テンプレートを解析する NetView コマンド・ リスト言語の例を使用して、リソース階層内にリソースが存在するかどうかをテ ストすることができます。 5. リソース階層内に複合リンクが存在する場合、&HIER 関数によって戻される情 報には表示されないリソース・レベルが存在する可能性があります。複合リンク が存在するときは、システム図を使用して完全な階層構成を判別しなければなり ません。 136 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 * * Set up variables for search * &RESNAME = AAAA &RESLN = &LENGTH &RESNAME &SOURCE = &HIER &SOURCLN = &LENGTH &SOURCE * * Check for existence of Hierarchy * &IF &SOURCLN = 0 &THEN &GOTO -NOTFOUND * * Parse out desired resource name with PARSEL2R * PARSEL2R SOURCE FIRSTSEG /&RESNAME/ LASTSEG * * If the last segment is non null, we found the resource name * imbedded in the hierarchy. * &IF &LASTSEG = ’’ &THEN &GOTO -CKLAST &GOTO -FOUNDMSG * * Check last segment of the hierarchy for desired resource name. * (If the desired resource name is the last entry in the hierarchy, * PARSEL2R will not detect it. We need to make a special check for * the last entry.) * -CKLAST * * Trim any trailing blanks * -TRIMBLANK &LASTCHAR = &SUBSTR &SOURCE &SOURCLN 1 &IF &LASTCHAR ¬= ’ ’ &THEN &GOTO -OUTTRIM &SOURCLN = &SOURCLN - 1 &IF &SOURCLN > 0 &THEN &GOTO -TRIMBLANK -OUTTRIM * 図 40. テンプレートを解析する &HIER の例 (1/2) 付録 A. 簡単なコマンド・リストの作成 137 組み込み関数 &IF &SOURCLN < &RESLN &THEN &GOTO -NOTFOUND &INDEX = &SOURCLN - &RESLN &INDEX = &INDEX + 1 &LASTENT = &SUBSTR &SOURCE &INDEX &RESLN &IF &LASTENT = &RESNAME &THEN &GOTO -FOUNDMSG &GOTO -NOTFOUND * * Issue found message * -FOUNDMSG &WRITE THE RESOURCE &RESNAME EXISTS IN THE HIERARCHY &GOTO -LAST * * Issue not found message * -NOTFOUND &WRITE THE RESOURCE &RESNAME DOES NOT EXIST IN THE HIERARCHY * * Exit * -LAST &EXIT 図 40. テンプレートを解析する &HIER の例 (2/2) &LENGTH &LENGTH 関数は、変数または定数の長さを戻します。&LENGTH の構文は以下の とおりです。 &LENGTH &LENGTH variable constant 変数値または定数の長さが戻されます。変数がヌルであるか、または定数がヌル・ ストリングである場合、戻される値は 0 です。 以下の例は、&LENGTH の使用方法を示しています。 SAMP LU2525 と入力する ことによって、SAMP を呼び出したとします。ハードコピー・プリンター名 (&HCOPY) 制御変数は、HC55 とします。 SAMP CLIST &HCLENGTH = &LENGTH &HCOPY &RESLEN = &LENGTH &1 処理の後に、変数は次のように設定されます。 &HCOPY HC55 &HCLENGTH 4 &1 LU25257 &RESLEN 6 ユーザー変数 &HCLENGTH は、ハードコピー装置名の長さに設定されています。 ハードコピー装置は HC55 です。HC55 は 4 文字であるため、&HCLENGTH は 4 138 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 になります。&RESLEN は、最初のパラメーター変数の長さになります。最初のパ ラメーター変数は LU2525 なので、&RESLEN は 6 になります。 &MSUSEG &MSUSEG 関数は、管理サービス単位 (MSU) または他の同様に設計されたデータ の部分から情報を抽出するために必要な構文解析機能を提供します。この関数は、 NetView 自動化テーブルまたは LU6.2 アプリケーションによって呼び出されるコマ ンド・リストで使用します。 &MSUSEG 関数の構文は以下のとおりです。 &MSUSEG . (1) id &MSUSEG H (occ) 1 , byte ,length ここで各要素は以下のとおりです。 byte 1 からカウントした、id で指定された最小 ID 内のバイト位置です。位置 1 は、最小 ID のヘッダー内の最初の長さバイトです。ヘッダーは、1 または 2 の長さのバイトの後に 1 または 2 バイトの ID が続いたもので構成されま す。この項目はオプションです。デフォルト値は 1 です。 H NMVT/ 制御点管理サービス単位 (CP-MSU) レベルに対立するものとしての、 次に高いレベルのマルチドメイン・サポート・メッセージ単位 (MDS-MU) から 最初の ID が取得される場合に挿入されます。H は、大文字でも小文字でもコ ーディングできます。引用符をコーディングする場合、H は単一引用符の内側 または外側のいずれにも配置できます。 id GDS、主ベクトル (MV)、サブベクトル、サブフィールド、または副サブフィー ルドの、1 または 2 バイトの 16 進数の ID の 2 または 4 文字表現です。 16 進文字 (0 から 9、A から F、a から f) は大/小文字混合でも構いません。 最初の ID は必須で、その他の ID はオプションです。 length id で指定された最小の ID から戻され、byte 位置から始まるバイト数 (10 進 数) です。この項目はオプションです。デフォルト値は、指定された最小の id の残りと等しく、byte 位置から始まります。 occ 1 からカウントされるオカレンス番号。アスタリスク (*) を使用して、検出さ れた最初の検出結果を指定することができます。どのレベルにおいても、この項 目はオプションです。デフォルト値は 1 です。 . ピリオドは ID の階層を設定します。したがって、ピリオドの右側に指定され たベクトル ID は、左側に指定されたベクトルに含まれます。 付録 A. 簡単なコマンド・リストの作成 139 組み込み関数 オペランド間の区切り文字としてブランクを使用できますが、ブランクにはプレー スホルダーとしての機能はありません。例えば、byte の変数をコーディングした場 合、変数の値がヌルでブランクを区切り文字として使用すると、length は byte のオ ペランドと見なされます。 位置が見つからない場合、または &MSUSEG 関数を含むコマンド・リストが MSU のために自動化テーブル・ステートメントで実行されなかった場合、または関数が MSU によって駆動されなかった場合、&MSUSEG 関数の値はヌルになります。 byte 位置を指定しないと、戻されるデータには、id で指定された最小 ID の 1 ま たは 2 バイトの ID が後に付いた 1 または 2 バイトの長さのものが含まれます。 byte 位置がロケーションの終わりの位置の外側にある場合には、ヌル値が戻されま す。 指定された長さが、指定されたロケーションに残っているものより長い場合には、 そのロケーションに残っているものが戻されます。 自動化テーブルの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイ ド」を参照してください。ベクトル定義については、SNA ライブラリーを参照して ください。 LU6.2 および MSU の詳細については、「IBM Tivoli NetView for z/OS アプリケーション・プログラマーズ・ガイド」を参照してください。 &NCCFID &NCCFID 関数は、クロスドメイン・セッションの確立が可能なドメインの NetView ドメイン ID を戻します。クロスドメイン・セッションの確立が可能なド メインは、オペレーター・プロファイルの DOMAINS ステートメントによって定義 されます。ただし、ご使用のプロファイルが AUTH CTL=GLOBAL を指定している 場合は、CNMSTYLE メンバーに含まれる CNMSTUSR または CxxSTGEN の RRD ステートメントによって指定されたドメインと、クロスドメイン・セッションを確 立できます。オペレーター・プロファイルで DOMAINS または CTL=GLOBAL の いずれも指定されていない場合、この関数の使用時にエラー・メッセージを受信し ます。 DOMAINS および RRD ステートメントの詳細については、「IBM Tivoli NetView for z/OS アドミニストレーション・リファレンス」を参照してください。 NCCFID の構文は以下のとおりです。 &NCCFID &NCCFID number ここで各要素は以下のとおりです。 number 数値または数値になる変数のいずれかです。許される最大の数は、&NCCFCNT (このオペレーターが開始できるクロスドメイン・セッションの総数を示す制御 変数) の値です。 140 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 コマンド・リストは &NCCFID を使用して、クロスドメイン・セッションを自動的 に開始または停止することができます。 以下の例は、&NCCFID の使用方法を示しています。 &DOM1 &DOM2 &DOM3 START START START = &NCCFID 1 = &NCCFID 2 = &NCCFID 3 DOMAIN=&DOM1 DOMAIN=&DOM2 DOMAIN=&DOM3 ご使用のオペレーター・プロファイルが、クロスドメイン・セッションを確立でき る 3 つのドメインを定義しているとします。 1 ALPHA 2 BETA 3 GAMMA 処理の後に、ユーザー変数は次のように設定されます。 &DOM1 ALPHA &DOM2 BETA &DOM3 GAMMA 次に、3 つのドメインが START コマンドによって開始されます。 この例では、オペレーターは、3 つのドメインを開始できることを知っていなけれ ばなりません。 &IF 制御ステートメントを使用して &NCCFCNT をテストし、ド メインの数を検出してからそれらを開始することもできます。 &NCCFSTAT &NCCFSTAT 関数は、指定されたドメインとのアクティブなクロスドメイン・セッ ションがあるかどうかを示す値を戻します。&NCCFSTAT の構文は以下のとおりで す。 &NCCFSTAT &NCCFSTAT domain ここで各要素は以下のとおりです。 domain ドメイン・ネームまたはドメイン・ネームになる変数のいずれかです。 関数呼び出しは、オペレーターがそのドメインとのアクティブなクロスドメイン・ セッションを保持している場合、文字の ACT で置き換えられます。関数呼び出し は、オペレーターがそのドメインとのアクティブなクロスドメイン・セッションを 保持していない場合、文字の INACT で置き換えられます。 例えば、ドメインの状況を検査するコマンド・リストを作成し、アクティブでなけ ればそのドメインを開始することができます。次の例では、STARTEM NCCFA を 入力することによって、STARTEM コマンド・リストを活動化したものとします。 付録 A. 簡単なコマンド・リストの作成 141 組み込み関数 STARTEM CLIST &CONTROL ERR &STATUS = &NCCFSTAT &1 &IF &STATUS = INACT &THEN START DOMAIN=&1 &IF &STATUS = ACT &THEN &WRITE DOMAIN &1 IS ALREADY ACTIVE 処理の後に、変数は次のように設定されます。 &1 NCCFA &STATUS ACT | INACT パラメーター変数 &1 は NCCFA に設定され、ドメイン NCCFA の状況の検査が 行われます。NCCFA とのアクティブなクロスドメイン・セッションを保持してい る場合、&STATUS は ACT に設定されます。保持していない場合は、&STATUS は INACT に設定されます。&IF ステートメントは、&STATUS が ACT か INACT に設定されているかどうかをテストします。(詳細については、145 ページ の『&IF 制御ステートメント』を参照してください。) NCCFA が非アクティブの場合、コマンド・リストが開始します。NCCFA がアクテ ィブの場合、次のメッセージが表示されます。 DOMAIN NCCFA IS ALREADY ACTIVE &SUBSTR &SUBSTR 関数は、start の位置から始めて length 文字を解析することによって、 入力変数の指定された部分を戻します。&SUBSTR の構文は以下のとおりです。 &SUBSTR &SUBSTR variable start length ここで各要素は以下のとおりです。 length 指定された start の位置から始めて、解析する文字数です。length が指定されな い場合、解析は start から変数の終わりまでになります。 start variable 内の解析操作の開始位置です。 variable 解析する変数です。 例えば、次のようなステートメントがあるとします。 &HOLD = ACF/VTAM &FIRST = &SUBSTR &HOLD 1 3 &SECOND = &SUBSTR &HOLD 5 4 &THIRD = &SUBSTR &HOLD 6 処理の後に、ユーザー変数は次のように設定されます。 &HOLD ACF/VTAM &FIRST ACF &SECOND VTAM 142 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 &THIRD TAM 前記の例の先頭行は、変数 &HOLD の値を ACF/VTAM に設定します。次の行で は、&SUBSTR は &HOLD の先頭文字 (文字 A) から始め、右側に 3 文字移動 (文字 F へ) します。文字 ACF が、変数 &FIRST の値になります。次の行では、 &SUBSTR は &HOLD の 5 番目の文字 (文字 V) から始めて 4 文字の長さだけ (文字 M へ) 進みます。文字 VTAM が、変数 &SECOND に入れられます。最後の 行では、&SUBSTR は &HOLD の 6 番目の文字 (文字 T) から始めますが、長さ は指定しません。したがって、&THIRD は TAM (&HOLD の文字 T から変数の最 後 (M) までの値) になります。開始位置は、次のように判別されます。 1 2 3 4 5 6 7 8 A C F / V T A M 注: 最初の開始位置は 1、2 番目は 2、などとなります。ゼロは、有効な位置では ありません。最大の変数値は 255 文字なので、開始位置を 255 より大きくす るのは無効です。 長さを指定しなければならないわけではありません。長さが指定されていなけれ ば、開始位置から始まって、右側の残りの部分のストリングがサブストリングにな ります。サブストリングにはブランクが埋め込まれません。指定された長さが長す ぎると、長さが指定されなかったものと見なされ、開始位置から始まるストリング 全体が使用されます。長さが 0 の場合、または開始位置が変数長を超えている場 合、 &SUBSTR の結果はヌルになります。 図 41 は、&APPLID 制御変数のサブストリングを使用してコマンド・リストを実行 しているドメインの名前を判別する方法を示しています。 GETDOMID CLIST &CONTROL ERR * DETERMINE THE LENGTH OF THE APPL ID &LENAPPL = &LENGTH &APPLID * SUBTRACT 3 TO GET THE LENGTH OF THE DOMAIN ID &LENAPPL = &LENAPPL - 3 * START AT COLUMN 1 OF NEW LENAPPL FOR LENGTH OF DOMAIN ID * THE VALUE OF &DOMAIN WILL BE THE DOMAIN ID &DOMAIN = &SUBSTR &APPLID 1 &LENAPPL * &DOMAIN NOW CONTAINS THE DOMAIN ID 図 41. &APPLID を使用してドメイン・ネームを判別する方法 2 バイト文字をローマ字 (A から Z、a から z) とともに使用している場合、 &SUBSTR 関数は変数を次のように調整します。 開始バイト = シフトアウト文字 調整しない 開始バイト = シフトイン文字 ブランクで置換 開始バイト = 2 バイトの先頭の半分 ブランクとシフトアウト文字で置換 開始バイト = 2 バイトの後の半分 シフトアウト文字で置換 付録 A. 簡単なコマンド・リストの作成 143 組み込み関数 最終バイト = シフトアウト文字 ブランクで置換 最終バイト = シフトイン文字 調整しない 最終バイト = 2 バイトの先頭の半分 シフトイン文字で置換 最終バイト = 2 バイトの後の半分 シフトイン文字とブランクで置換 次の例では、2 バイト文字とラテン文字のストリングで使用された、&SUBSTR ス テートメントを示します。 &DBCS = ’AB<D1D2D3>EFG’ ここで各要素は以下のとおりです。 v A、B、E、F、G は、ラテン文字です。 v < (X'0E') は、シフトアウト制御文字を表します。 v > (X'0F') は、シフトイン制御文字です。 v D1、D2、D3 は、2 バイト文字です。 この値を使用すると、&SUBSTR は次のように働きます。 &FIRST= &SUBSTR &DBCS 1 3 = ’AB<’ (interim string) = ’AB ’ (recovery string) &SECOND = &SUBSTR &DBCS 3 5 = ’<D1D2’ (interim string) = ’<D1> ’ (recovery string) &THIRD = = = = &SUBSTR ’D1D2D’ ’ <D2D’ ’ <D2>’ &DBCS 4 5 (interim string) (interim string) (recovery string) 注: DBCS 区切り文字は 1 バイト長で、DBCS コードは 2 バイト長です。 144 プログラミング: REXX および NetView コマンド・リスト言語 付録 B. NetView コマンド・リスト言語のブランチ 本章では、 NetView コマンド・リスト言語の条件付きブランチ・ステートメントお よび無条件ブランチ・ステートメントについて説明します。 v &IF ステートメントは、論理的比較または算術的比較に基づいて条件付きブラン チを行います。 &IF ステートメントの中のテストまたは比較の結果によって、ど ちらの選択肢を選択するかが決まります。条件付き処理ステートメントを使用す ることによって、 if-then 構造およびループ構造のコーディングに柔軟性をもたせ ることができます。 v &GOTO ステートメントは、無条件ブランチを行います。 v &EXIT ステートメントは、コマンド・リスト内の論理的出口点のコーディングに 使用します。 v &WAIT ステートメントは処理を延期して、イベントの完了を待機します。 &IF 制御ステートメント &IF 制御ステートメントは条件をテストし、テストの結果に基づいて処理を実行し ます。条件は、2 つの式と論理演算子または算術演算子で構成されています。 条件が真であれば、&THEN 文節が処理されます。条件が偽であれば、&IF 制御ス テートメントに続くステートメントから処理が継続されます。&IF 制御ステートメ ントの構文は以下のとおりです。 &IF&THEN &IF expression_1 = EQ ¬= NE < LT > GT <= LE >= GE ¬> NG ¬< NL expression_2 &THEN statement ここで各要素は以下のとおりです。 = または EQ 等しい © Copyright IBM Corp. 1997, 2011 145 NetView コマンド・リスト言語のブランチ expression_1 割り当てステートメントで使用可能な任意の式。定数、変数、算術演算、または 組み込み関数が入ります。詳細については、122 ページの『割り当てステートメ ント』を参照してください。 expression_2 比較の第 2 の項。expression_1 と同じ規則に従います。 > または GT より大きい >= または GE より大きいもしくは等しい < または LT より小さい <= または LE より小さいもしくは等しい ¬= または NE 等しくない ¬> または NG より大きくない ¬< または NL より小さくない 注: 記号コードか、 2 文字の文字コードのどちらかを使用します。両方とも同 じ意味です。 &THEN 比較を、条件が真であった場合に実行するコマンド・リスト・ステートメントか ら分離します。 &THEN は、すべての &IF ステートメントでコーディングし なければなりません。 注: アンパーサンド (&) を THEN でコーディングすると、その語を制御ステー トメントの部分として認識します。 statement 比較が真であった場合に実行する、コマンド・リスト・ステートメントです。真 でない場合は、無視されます。ステートメントは、任意の NetView コマンド・ リスト言語ステートメントとすることができます。 比較式でコーディングされた変数は、比較を検査する前にその値で置き換えられま す。スペースを入れないで単一引用符を 2 つ続けて ('')、変数がヌルかどうかをテ ストすることができます。例えば、&1 = '' という比較は、&1 がヌルのときは真に なります。 次に比較の例を示します。 5 = &A &1 = ’ 2 + 2 NE &ANSWER &PARMCNT LE 5 146 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ 算術式で使用される変数がヌルと等しい可能性がある場合は、次の構文を使用して ください。 7 > 3 + 0&1 この例では、&1 がヌルなので、0&1 はゼロ (0) と評価されます。そのため、式 3 + 0 は 7 と比較されます。もし &1 が 9 であるならば、式 3 + 09 が 7 と比較 されることになります。 次の 5 つの例では、&IF 制御ステートメントを使用します。 &IF &APPLID = NCCFA001 &THEN &USERVAR = 10 &IF &NCCFID = NCCFA &THEN &GOTO -PROC2 &IF &1 = LU200 &THEN VARY NET,ACT,ID=&1 &IF &SUBSTR &DATE 1 5 = ’01/01’ &THEN &WRITE HAPPY HOLIDAY &IF &A = X'41' &THEN &GOTO -PROC1 &GOTO 制御ステートメント &GOTO ステートメントはコマンド・リストの他の部分に無条件に制御権を移動し ます。 &GOTO を使用すると、ステートメントの再実行やコマンド・リストの前方 のステートメントへのジャンプが可能になります。ステートメント・ラベルによっ てターゲットまたは宛先ステートメントを識別します。 &IF と &GOTO を両方使 用すると、各種の条件をテストし、その結果に応じてコマンド・リストのさまざま な部分に進むことができます。&GOTO 制御ステートメントの構文は以下のとおり です。 &GOTO &GOTO -label ここで各要素は以下のとおりです。 -label 処理が継続する、このコマンド・リスト内のターゲット・ステートメントを識別 します。 NetView プログラムは、&GOTO ステートメントを解釈するとき、コマンド・リス トにこの同じラベルで始まるステートメントがないかどうか検索します。NetView プログラムは、そのステートメントに制御権を移動して、コマンド・リスト処理を 継続します。ラベルで識別されるステートメントは、 &GOTO ステートメントの前 でも後でも構いません。 NetView プログラムが &GOTO ステートメントを処理する前に変数をある値で置き 換えれば、その変数をラベルにコーディングすることができます。ラベルの詳細に ついては、 113 ページの『ラベル』を参照してください。 付録 B. NetView コマンド・リスト言語のブランチ 147 NetView コマンド・リスト言語のブランチ &EXIT 制御ステートメント コマンド・リストが &EXIT 制御ステートメントに達すると、コマンド・リストの 処理が終了します。 &EXIT を &IF とともに使用すると、コマンド・リストを検査して、エラーが発生 すれば終了させることができます。 &EXIT を &GOTO とともに使用すれば、コマ ンド・リストの流れを制御することができます。&EXIT 制御ステートメントの構文 は以下のとおりです。 &EXIT &EXIT number ここで各要素は以下のとおりです。 number エラー戻りコード。これは -1、0、または 2147483647 までの任意の正の数で す。ネストされたコマンド・リストで、エラーを起こす可能性がある問題をデバ ッグするために、&EXIT で戻りコードをコーディングしておきます。 &EXIT 制御ステートメントで設定された戻りコードは、 &RETCODE 制御変数に 置かれます。呼び出しコマンド・リストは &RETCODE をテストし、戻りコードに 基づいてアクションをとることができます。&RETCODE の詳細については、 50 ペ ージの『コマンド・リスト情報』を参照してください。 正の数には、ユーザーが意味を定義することができます。 &EXIT ステートメント で非ゼロ戻りコードをコーディングした場合、 &CONTROL ERR が有効であれ ば、その非ゼロ戻りコードを生成したコマンド・リスト・コマンドがパネル上にエ コーされます。 コマンド・リストが -1 を戻した場合、そのコマンド・リスト、およびネストされ たチェーン内のすべてのコマンド・リストが終了します。 &EXIT に戻りコードを コーディングしない場合、または最後の行を処理したときにコマンド・リストが終 了し、かつ &EXIT ステートメントが存在しない場合、ゼロの戻りコードが設定さ れます。 149 ページの図 42 は、ENDSESS コマンドを使用してすべての端末アクセス機能セ ッションを停止する、STOPTAF というコマンド・リストの例を示しています。コ マンド・リストは、エラーの有無を検査します。コマンド・リストを開始するに は、STOPTAF または STOPTAF ALL を入力します。コマンド・リストの内容また は入力の内容を忘れてしまった場合は、STOPTAF ? を使用して、ヘルプを表示して ください。 148 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ STOPTAF CLIST &CONTROL ERR * IF USER ENTERS STOPTAF ?, GO TO HELP SECTION &IF &1 EQ ? &THEN &GOTO -HELP * IF NO PARAMETERS, GO TO COMMAND &IF &1 EQ '' &THEN &GOTO -CMD * IF PARAMETER IS ALL, GO TO COMMAND. ELSE PRINT ERROR MSG &IF &1 NE ALL &THEN &GOTO -ERROR -CMD ENDSESS OPCTL,ALL ENDSESS FLSCN,ALL &EXIT -ERROR &WRITE YOU ENTERED: STOPTAF &PARMSTR WHICH IS NOT CORRECT -HELP &BEGWRITE -END ENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS -END &EXIT 4 図 42. TAF セッションを停止する CLIST の例 STOPTAF または STOPTAF ALL と入力すると、 2 つの ENDSESS コマンドの結 果だけが表示されます。 STOPTAF FLSCN と入力すると、次のメッセージが表示されます。 YOU ENTERED: STOPTAF FLSCN WHICH IS NOT CORRECT ENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS STOPTAF ? と入力すると、次のメッセージが表示されます。 ENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS &WAIT 制御ステートメント コマンド・リストが特定のイベントやメッセージを待機するようにしたい場合があ ります。&WAIT 制御ステートメントを使用すれば、どのイベントがコマンド・リ ストの処理を再開させるかを定義することができます。コマンド・リストは、1 か ら 10 文字のメッセージ ID をもつ任意のメッセージを待機することができます。 注: 1. 基本 POI タスク (PPT) の下で操作中、または COS (共通操作サービス) コマン ドの使用中は、&WAIT を使用できません。 PPT の下での &WAIT の使用の詳 細については、15 ページの『基本 POI タスク (PPT) の制限』を参照してくだ さい。&WAIT を共通操作サービス・コマンドとともに使用することについての 補足情報は、175 ページの『付録 D. 共通操作サービス・コマンド』を参照して ください。 2. NetView パイプライン (PIPE コマンドによって呼び出される) は、メッセージ 処理の自動化に関して機能が拡張され、また複雑さは軽減しています。PIPE コ マンドは &WAIT 制御ステートメントの代わりとなるものです。 NetView パイ プラインについては、「IBM Tivoli NetView for z/OS プログラミング: パイプ」 を参照してください。 &WAIT を自動化タスク・コマンド・リスト内で使用する場合は、必ず適切なタイ ムアウト値を指定してください。タイムアウト・イベントのコーディングについて の指示は、152 ページの『event=-label の組み合わせ』を参照してください。 付録 B. NetView コマンド・リスト言語のブランチ 149 NetView コマンド・リスト言語のブランチ トラップされたメッセージが待ち条件を満たす場合は、待機コマンド・プロシージ ャーの処理が再開されます。トラップされるメッセージを抑止しない場合は、この 待機コマンド・プロシージャーはメッセージ・フローの処理を継続します。ただ し、メッセージを抑止すると、NetView プログラムはそのメッセージに削除のマー クを付けます。この場合、自動化テーブル処理は行われず、NetView プログラムは そのメッセージを表示しないか、ログに記録しません。 &WAIT は、コマンド・リスト内で以下のアクションを実行します。 v NetView プログラムがオペレーター端末タスク (OST) に特定のメッセージがない かどうかモニターし、そのメッセージが着信したときはアクションを行うように します。例えば、コマンド・リストはリソースを活動化する、 VTAM コマンド を発行します。 VTAM が、リソースはアクティブであると知らせるメッセージ を送信すると、 &WAIT はリソースの活動化の成功に基づいて特定のアクション を開始します。 v 指定された期間にメッセージが到着しないと、特定のアクションを開始します。 例えば、ユーザーのシステムで、活動化メッセージが 5 分以内に到着しない場合 は、リソースの状態を表示します。 したがって、次のアプリケーションで &WAIT を使用することができます。 v コマンド・リストが、IMS/VS などのアプリケーション・プログラムまたは他の NetView ドメインとのセッションを開始する。&WAIT によって、NetView プロ グラムは OST をモニターしてセッションの開始を示すメッセージを探します。 これは &WAIT 条件を満たします。 &WAIT 条件が満たされると、コマンド・ リストは処理を再開してログオンや他の情報を送信します。 v コマンド・リストは、VTAM からの状況情報に関する要求を出してから、この情 報を処理またはフォーマットし直して、NetView オペレーターに送信する。 &WAIT と &PAUSE とでは、作用が異なります。&PAUSE では、コマンド・リス トはオペレーターが GO コマンドを入力するまで次の処理には進みません。 GO コマンドのオペランドをコマンド・リストで使用するからです。ただし、&WAIT は特定のイベント (単数または複数) が発生するまでコマンド・リストを待機させる ので、コマンド・リストの再開に GO を使用するのはそのイベントが絶対に発生し ないときだけです。コマンド・リストが待ち状態のとき、NetView プログラムは GO コマンドのオペランドを無視します。RESET、STACK、および UNSTACK は、 &WAIT と &PAUSE では同じように機能します。 &WAIT 制御ステートメントのコーディング &WAIT ステートメントのコーディング方法は、何通りかあります。このセクショ ンでは基本形式を説明します。 159 ページの『&WAIT ステートメントのカスタマ イズ』では、&WAIT のカスタマイズ方法について説明します。 コマンド・リストによる &WAIT 制御ステートメントの処理の開始時には、メッセ ージを受信したか、または ENTER キーが押されたために画面が更新された場合に は、 NetView はパネルの右上隅に W の文字を表示します。この W は、オペレータ ーにコマンド・リスト処理が待ち状態であることを知らせます。待ち状態とは、コ マンド・リストがその処理を停止し、特定のメッセージまたはメッセージのグルー プを待っていることを意味します。特定のメッセージが到着すると、制御変数とパ ラメーター変数がそれぞれの現行値に設定されます。&WAIT 制御ステートメント 150 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ の構文は以下のとおりです。 &WAIT &WAIT event=-label 'command' ここで各要素は以下のとおりです。 'command' NetView プログラムから発行できる、任意のコマンドまたはコマンド・リスト です。このコマンドはオプションです。通常、コマンド・リストが待っている、 メッセージを発行するコマンドです。例えば、コマンド・リストが正常なセッシ ョン開始を待機するようにしたい場合、BGNSESS コマンド全体を単一引用符の 間にコーディングします。event=-label の組み合わせの前に、必ずコマンド・リ ストの継続文字をコーディングしてください。コマンドは、コマンド・リスト内 でそのコマンドに到達するとすぐに実行されます。 NetView タイマー・コマンド、AT、EVERY、または AFTER のいずれかを &WAIT ステートメント内でコーディングできます。スケジュールされたコマン ドがコマンド・リストの場合、現行コマンド・リストが完了するか STACK コ マンドが入力されるまで実行できません。 event=-label event=-label の組み合わせです。この組み合わせは、&WAIT ステートメントに 255 文字の限度まで、必要なだけコーディングすることができます。イベントと は、普通はコマンド・リストが待っているメッセージです。イベントは、メッセ ージが到着するまでの待ち状態を終了させるトリガーとすることができます。 &WAIT ステートメントによって、NetView プログラムはオペレーターに送信さ れたすべてのメッセージをスキャンします。コーディングされたイベントの 1 つと一致するメッセージがあると、コマンド・リストは指定されたラベルの行に 移動して、そのラベル付きステートメントから処理を継続します。 &WAIT を 満たすことができるイベントのタイプの詳細については、 152 ページの 『event=-label の組み合わせ』を参照してください。 NetView プログラムが待機しているメッセージを受信すると、そのメッセージはす べての NetView メッセージの場合と同様に、オペレーター端末に表示されます。た だし、メッセージがコマンド・リストから発信された &WAIT の条件を満たす場 合、メッセージ・タイプは C のままであり、そうでない場合は、メッセージ・タイ プは W になります。オペレーターにはこのメッセージが見えないようにしたい場合 は、159 ページの『&WAIT ステートメントのカスタマイズ』を参照してくださ い。 検査される唯一のメッセージは、オペレーター画面用のものです。 DSIEX02A 出口 ルーチン (オペレーターへの出力) をコーディングする場合、 &WAIT 制御ステー トメントがマッチングのためのメッセージを設定しない場合があります。例えば、 DSIEX02A 出口ルーチンがメッセージを削除すると、 &WAIT 制御ステートメント はメッセージを入手できないのでマッチングは行われません。オペレーターがメッ 付録 B. NetView コマンド・リスト言語のブランチ 151 NetView コマンド・リスト言語のブランチ セージを受信しないので、待機コマンド・リストも受信できません。したがって、 NetView コンソールに表示されるメッセージだけを待ってください。 &WAIT コマンド制御ステートメントをコーディングするとき、DSI210I メッセー ジおよび *NN イベントに event=-label の組み合わせをコーディングすることが重 要です。 DSI210I メッセージは、コマンド・リスト内で見つかったコマンドがこの オペレーターには許可されていない場合に戻され、*NN イベントはオペレーターの 介入を無限に待機するのを避けるものです。ラベルに続くステートメントは、オペ レーターにエラーを通知し、コマンド・リストを終了させる必要があります。 W は待ち状態を意味しており、表示される場合は、この初めの &WAIT コマンドの 処理中はずっとパネルの右上隅にあります。 W は、NetView がまだメッセージを待 機中であることを示します。このコマンドまたはコマンド・リストが処理を完了す る前に、オペレーターが GO を入力すると、その GO は DSI016I NOT IN PAUSE OR WAIT STATUS というメッセージによってリジェクトされます。コマンドまたはコ マンド・リストが完了すると、GO は受け入れられます。 RESET は、待ち状態に あるコマンド・リストを終了します。STACK コマンドを入力した場合、W はパネル の右上隅に表示されなくなります。 event=-label の組み合わせは複数個コーディングできますが、最初のメッセージまた はイベントの内の 1 つと一致する他の条件によって、コマンド・リストはそれ以後 のメッセージの待機を停止してしまいます。 1 つの &WAIT ステートメントで複 数のメッセージを処理したい場合は、これを変更することができます。159 ページ の『&WAIT ステートメントのカスタマイズ』を参照してください。 event=-label の組み合わせ &WAIT ステートメントの event=-label の組み合わせによって、 4 タイプのイベン トの中の 1 つが起きたときに、ラベルのあるステートメントに制御権を渡すことが できます。このラベルは、113 ページの『ラベル』で説明した標準ラベルです。 &WAIT ステートメントでコーディングされるラベルは変数でも構いませんが、パ ラメーター変数は使用できません。 event=-label の組み合わせを指定することによって、 &WAIT ステートメント上の ラベルに制御権を渡すことができます。以下のイベントを使用できます。 v token v *ERROR v *nn v *ENDWAIT 以下のリストで、前述のイベントを説明します。 token 152 このイベントは、NetView プログラムが token と一致するメッセージを受 信すると発生します。token 変数は、1 から 10 文字にすることができ、コ マンド・リストが待機しているメッセージ (単数または複数) の最初のトー クンを識別します。オプションで、コマンド・リストが待機しているメッセ ージのドメインを識別することができます。ドメイン ID を指定する場合、 トークンの前に置いて、ピリオドでトークンと分離します (domainid.token)。アスタリスク (*) を使用して、部分ドメイン ID またはト プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ ークンの指定であることを示すこともできます。ドメイン ID を指定しない 場合、コマンド・リストが待機するメッセージはどのドメインでも構いませ ん。 以下の例で、コマンド・リストが待機するメッセージの発信元を指定する方 法のいくつかを示します。 domainid.token このイベントは、ドメイン ID が 1 文字から 5 文字までの domainid と一致し、最初のトークンが token と一致する任意のメッ セージを NetView プログラムが受信すると発生します。 dom*.token このイベントは、ドメイン ID が dom* で指定された部分ドメイン ID と一致し、最初のトークンが token と一致する任意のメッセー ジを NetView プログラムが受信すると発生します。例えば、 NCCF*.DSI463I は、ID が NCCF で始まる (NCCFA または NCCFB など) 任意のドメインから DSI463I メッセージを受信した ときにイベントが発生することを意味します。 *.token このイベントは、最初のトークンが token と一致する任意のメッセ ージを NetView プログラムが受信すると発生します。どのドメイ ンのメッセージでも構いません。 token このイベントは、最初のトークンが token と一致する任意のメッセ ージを NetView プログラムが受信すると発生します。どのドメイ ンのメッセージでも構いません。 tok* このイベントは、最初のトークンが tok* で指定される部分トーク ンと一致する任意のメッセージを NetView プログラムが受信する と発生します。例えば、DSI* は、最初のトークンが DSI で始まる 任意のメッセージ (DSI463I や DSI386I など) を NetView プログ ラムが受信した時にイベントが発生することを意味します。 * このイベントは、任意のメッセージまたは他の出力を NetView プ ログラムが受信すると発生します。例えば、コマンド・リストに &CONTROL ALL とコーディングすると、コマンド・リストのすべ ての行がパネル上でエコーされます。これらのエコーは * 条件を満 たし、コマンド・リスト内のコードによっては、ループやその他の 望ましくない結果を引き起こす可能性があります。したがって、 *=-label 条件は注意して使用してください。 コンマ、ピリオド、アスタリスクなどの特殊文字、あるいは大部分の非数字 および非英字の文字を含むトークンを指定する場合は、DOMAIN.TOKEN 形式を使用してください。NetView プログラムではトークンを指定するとき に、単一引用符 (')、コンマ (,)、またはブランクを使用できません。これら の文字は、NetView のデフォルトの区切り文字として予約されているためで す。トークンにアンパーサンド (&) が含まれている場合、アンパーサンド を残りのトークンと連結するために、 &CONCAT を使用しなければなりま せん。 154 ページの図 43 は、特殊文字を含むトークンのコーディングの例を示し ています。 付録 B. NetView コマンド・リスト言語のブランチ 153 NetView コマンド・リスト言語のブランチ &WAIT DOMAIN1.*HASP=-MSG1 &WAIT DOMAIN1.=HASP=-MSG1 &X = &CONCAT & HASP &WAIT DOMAIN1.&X=-MSG1 図 43. 特殊文字のあるトークンのコーディングの例 複数行オペレーター向け書き込み (MLWTO) などの複数行メッセージは、 1 つのメッセージとして処理されます。したがって、複数行メッセージで は、最初のメッセージのメッセージ ID だけが &WAIT に使用可能なの で、 &WAIT ステートメントは、そのメッセージ ID だけで満たされるこ とになります。複数行メッセージの他の行のアクセスには、GETMSIZE、 GETMTYPE、GETMLINE、GETMPRES、および GETMTFLG を使用しま す。複数行メッセージに関する詳細と、複数行メッセージでの &WAIT の 使用例については、NetView オンライン・ヘルプ内のこれらのコマンドを参 照してください。 注: 1. token イベントを使用しているとき、 &WAIT ステートメントによって 発行されたコマンドと関係ないメッセージがイベントと一致し、&WAIT ステートメントのオプションによっては、抑止される可能性がありま す。ただし、ドメイン ID またはトークンを指定するときに、 * または *.* を SUPPRESS とともに使用する場合は注意してください。コマン ド・リストが中断状態で、&WAIT ステートメントの SUPPRESS オプシ ョンが有効な場合、タスクが受信するメッセージは、いずれもコマン ド・リストの再開前に抑制されてしまいます。 2. NetView-NetView タスク (NNT)、PPT、OST、および自動タスクは、任 意のコマンド (アセンブラー・コマンドまたは HLL、 REXX または NetView コマンド・リスト言語のコマンド・プロシージャー) を実行し ているタスクの低優先順位キューに待機した任意のコマンド、またはメ ッセージを処理しないので、待機タスクの高優先順位または通常優先順 位のキューに待機されたメッセージだけが、待ち条件を満たすかどうか 検査されます。 3. 通常は、assign...copy= の処理を介したタスクに対してキューに入れられ たメッセージは、未解決の &WAIT を満たすことができます。ただし、 メッセージに DISPLAY(N) を指定したメッセージ自動化テーブル項目が ある場合、メッセージは、 assign...copy= 処理で待機しているタスクに 送信されません。 assign...copy= 処理には表示メッセージが必要です が、 DISPLAY(N) は表示なしと指定しているので、これによって処理が 止められます。メッセージが先に進まないために、&WAIT 条件を満た すことができません。 メッセージの流れの詳細については、「IBM Tivoli NetView for z/OS 自 動操作ガイド」を参照してください。 *ERROR このイベントは、&WAIT ステートメントで指定されたコマンドが非ゼロ戻 りコードを戻すと発生します。 *ERROR を指定しないと、NetView プログ ラムは、コマンドがエラーで終了した場合も、このコマンドに関連したメッ セージを待ち続けます。NetView プログラムがコマンドの正常終了メッセー ジを待っている場合、このコマンド・リストを実行しているオペレーター 154 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ は、他の人が GO か RESET を発行するまで持ち越されます。 *ERROR が満たされた場合、メッセージ制御変数は次のように設定されます。 &MSGID *ERROR &MSGORIGIN コマンド・リストが実行しているドメイン の名前 &MSGSTR ヌル &MSGCNT 0 注: コマンドが非ゼロ戻りコードを戻す前に、コマンドと関連したメッセー ジを受信する場合があります。このようなメッセージが event=-label の 組み合わせでコーディングされていると、イベントが発生した最初のス テートメントに制御権が渡されてしまいます。 例えば、&WAIT コマンドの名前を MSGID=-label の組み合わせでコーディ ングし、なおかつ *ERROR=-label の組み合わせもコーディングする場合、 NetView プログラムは、最初にイベントが発生する、MSGID=-label の組み 合わせを認識します。 *nn このイベントは、nn 秒後に発生します。他にイベントが発生しなければ、 &WAIT は終了して、ラベル付きステートメントに制御権が移ります。 1 秒から 32767 秒 (9 時間 6 分 7 秒) までの値をコーディングできます。 *nn をコーディングせず、&WAIT のイベントが何も満たされない場合、 &WAIT は、オペレーターが GO または RESET コマンドを入力するまで 継続します。 *ENDWAIT このイベントは、オペレーターまたはコマンド・リストが GO コマンドを 発行すると発生します。 *ENDWAIT=-label をコーディングしないと、 GO コマンドは &WAIT コマンドに続くステートメントで処理を継続します。 エラー条件 エラー条件が発生した場合、NetView プログラムは、コマンド・リストの別の部分 に進んで適切なアクションを実行可能にする必要があります。発生し得るエラーの タイプを考慮し、*ERROR、*nn、および *ENDWAIT の各イベントをコーディング してそれに対処します。 Message=-Label の組み合わせのコーディング MSGID=-label の組み合わせは、コーディングの順序が重要です。 NetView プログ ラムは、この組み合わせをコーディングされた順に、左から右に向けてスキャンし ます。 例えば、次のステートメントをコーディングしたとします。 &WAIT IST*=-ALL,IST123I=-SPECIAL NetView プログラムは IST123I を受信すると、ラベル -SPECIAL でなく -ALL に 進みます。 IST123I を IST* の前に、コーディングしてください。 1 つの &WAIT 制御ステートメントに、 255 文字までの範囲で必要なだけのイベ ントをコーディングすることができます。イベントの組み合わせが 1 行以上になる 場合は、継続文字の使用を忘れないでください。メッセージ ID とドメイン ID 付録 B. NetView コマンド・リスト言語のブランチ 155 NetView コマンド・リスト言語のブランチ は、処理する順序にコーディングします。 NetView プログラムは、一致するものが 見つかるまでリストを左から右に向けてスキャンします。 &WAIT の終了 &WAIT ステートメントは、次のいずれかの方法で終了することができます。 v オペレーターが GO コマンドを入力する。 &WAIT ステートメントに *ENDWAIT が指定されていなければ、次のステートメントから処理が継続しま す。*ENDWAIT が指定されていれば、処理はラベルによって示されたステートメ ントから継続します。 v オペレーターが RESET コマンドを入力する。コマンド・リストと、そのすべて のネストされたコマンド・リストが終了します。 v &WAIT ステートメントで、*ERROR をコーディングする。 &WAIT ステートメ ントで指定されたコマンドがエラーで終了した場合、コマンド・リストはラベル で示されたステートメントから処理を継続します。この状態で *ERROR をコー ディングしないと、&WAIT は、オペレーターが GO か RESET を入力するまで 終了しません。 v &WAIT ステートメントで、*nn をコーディングする。 nn 秒以内に別のイベン トが起こらなければ、コマンド・リストはラベルによって指定されたステートメ ントから処理を継続します。 v event=-label の組み合わせと一致するメッセージの受信。コマンド・リストは、ラ ベルによって示されたステートメントから処理を継続します。 NetView コマンドでの &WAIT の使用 NetView コマンド・リスト言語で作成されたコマンド・リストが休止状態か待ち状 態のとき、入力されたオペレーター・コマンドが据え置かれる場合があります。コ マンドが据え置かれるかどうかは、NetView の DEFAULTS、OVERRIDE、および CMD コマンドにより決まります。 GO、STACK、UNSTACK、および RESET の各コマンドは、次のように待ち状態の コマンド・リストの処理に影響します。 GO 待機を終了します。 *ENDWAIT がコーディングされている場合、処理はラベル付きステートメ ントから継続します。 STACK コマンド・リスト処理を延期して、据え置かれている任意のコマンドを処理 させます。コマンド・リストが中断状態になっている間に、任意のコマンド またはコマンド・リストを通常処理するために入力することができます。 &WAIT は延期されず、イベントが発生してもまだ一致したままです。 &WAIT を使用するコマンド・リストは、メッセージを発生時には処理せ ず、コマンド・リストが再び制御権を与えられた後で処理します。 W は NetView パネルの右上隅に表示されていません。 GO コマンドは、コマン ド・リストが処理を再開するまでリジェクトされます。 UNSTACK コマンド・リスト処理を再開します。 &WAIT は、コマンド・リストが延 期されている間に一致したイベントの処理を再開します。 156 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ RESET 待ち状態にあるコマンド・リスト、およびネストによってそのコマンド・リ ストと関係しているすべてのコマンド・リストを終了します。 注: &WAIT 制御ステートメントに対する応答で受信された MLWTO メッセージを 処理するときは、 GETMLINE、GETMSIZE、および GETMTYPE コマンドを使 用します。これらのコマンドおよび GO、STACK、UNSTACK、および RESET の各コマンドについては、 NetView オンライン・ヘルプを参照してください。 &WAIT で使用される制御変数とパラメーター変数 NetView プログラムは、制御変数の値を設定します。次に示す変数は、&WAIT 制 御ステートメントでコーディングされたメッセージの受信に基づいています。 &ACTIONDL &ACTIONMG &AREAID &ATTNID (VSE のみ) &AUTOTOKE &DESC &HDRMTYPE &IFRAUGMT &IFRAUIND &IFRAUIN3 &IFRAUI3X &IFRAUSB2 &IFRAUSC2 &IFRAUSDR &IFRAUSRB &IFRAUSRC &IFRAUTA1 &IFRAUWF1 &JOBNAME &JOBNUM &KEY &LINETYPE &MCSFLAG &MSGASID &MSGAUTH &MSGCATTR &MSGCMISC &MSGCMLVL &MSGCMSGT &MSGCNT &MSGCOJBN &MSGCPROD &MSGCSPLX &MSGCSYID &MSGDOMFL &MSGGBGPA &MSGGDATE &MSGGFGPA &MSGGMFLG &MSGGMID &MSGGSEQ &MSGGSYID &MSGGTIME &MSGID &MSGORIGN &MSGSRCNM &MSGSTR &MSGTOKEN &MSGTSTMP &MSGTYP &MVSRTAIN() &NVDELID &PARTID (VSE のみ) &PRTY &REPLYID &ROUTCDE &SESSID &SMSGID &SYSCONID &SYSID &1 から &31 NetView プログラムは、メッセージのテキストを反映させるために、&1 から &31 までのパラメーター変数の値を変更します。各パラメーター変数は、メッセージの トークンに設定されます。トークンは、コンマ、アポストロフィ、またはブランク によって区切られます。 &1 は、メッセージ ID に続く最初のトークン (&MSGID 制御変数が使用するトークン) に設定されます。 &2 は、&1 の右隣のトークンに 設定され、以下同様に最大 31 個の変数まで繰り返されます。 詳細については、59 ページの『メッセージ処理情報関数』を参照してください。 以下の例で、ドメイン DOM01 からのメッセージ DSI008I SPAN1 NOT ACTIVE が &WAIT ステートメントによって代行受信されたときに、変数がどのように設定さ れるかの例を示します。 &MSGORIGIN DOM01 &MSGID DSI008I &MSGSTR SPAN1 NOT ACTIVE 付録 B. NetView コマンド・リスト言語のブランチ 157 NetView コマンド・リスト言語のブランチ &MSGCNT &1 &2 &3 &4 から &31 3 SPAN1 NOT ACTIVE NULL 注: 1. NetView プログラムが複数行メッセージを受信する場合、制御変数とパラメータ ー変数はメッセージの最初の非ブランク行に従って設定されます。複数行メッセ ージについては、NetView オンライン・ヘルプの GETM コマンドを参照してく ださい。 2. コマンド・リストの実行時に &1 から &31 までに値を指定する場合、&WAIT 制御ステートメントを呼び出す前に、ユーザー変数にパラメーター変数を保存し てください。この手続きによって、&WAIT で値が変更された場合も元の値を使 用することができます。 3. &WAIT 制御ステートメントを発行した後で、別の &WAIT 制御ステートメント を呼び出す前に、ユーザー変数に制御変数を保存してください。この手続きによ って、別の &WAIT で値が変更された場合も値を使用することができます。 4. &WAIT CONTWAIT を使用する場合は、&WAIT が終了する前に、制御変数 &MSGID を使用するときは注意してください。&MSGID が &WRITE または &BEGWRITE の最初の文字ストリングである場合、出力が抑制されるかまたは コマンド・リストがループする場合があります。&WAIT SUPPRESS オプション が有効な場合、テキストの最初の文字ストリングに &MSGID のある &WRITE または &BEGWRITE は、アクティブな &WAIT の MSGID=-label オペランド と一致します。したがって、&WRITE または &BEGWRITE のテキストは、オ ペレーター画面に送信されません。MSGID=-label と一致した後で &WAIT CONTINUE ステートメントがあった場合、コマンド・リストまたは &WAIT を 終了するステートメントがなければ、コマンド・リストはループします。 ネストされたコマンド・リスト内の &WAIT の使用 &WAIT ステートメントの中のコマンドは、コマンド・リストにすることもできま す。ネストされたコマンド・リストに、&WAIT ステートメントを含めることもで きます。ネストされたコマンド・リストで &WAIT を使用するときは、次の考慮事 項に注意してください。 v 待機コマンド・リストのために到着するメッセージは、ネストされたコマンド・ リストが処理を終了するまでエンキューされています。 v &WAIT ステートメントで、待機コマンド・リストとネストされたコマンド・リ ストに同じメッセージ番号を指定すると、そのメッセージはネストされたコマン ド・リスト内の &WAIT を満たします。 ネストされたコマンド・リストが、メッセージが &WAIT を満たす前に終了する と、そのメッセージは待機コマンド・リストのキューに入れられます。&WAIT または待機コマンド・リストが終了されなければ、メッセージ・キューは増え続 け、NetView プログラムがストレージを使い切ってしまう可能性があります。 158 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ &WAIT ステートメントのカスタマイズ 前の項では、&WAIT コマンドの最も簡単な形式を説明しましたが、その場合、最 初に受信した待機を満たすメッセージがオペレーターの端末に表示され、コマン ド・リストの処理が継続します。 このセクションでは、&WAIT ステートメントをより柔軟にカスタマイズする方法 を説明します。 &WAIT ステートメントをカスタマイズするには、次の構文を使用します。 &WAIT DISPLAY ENDWAIT &WAIT SUPPRESS CONTWAIT または &WAIT &WAIT CONTINUE ここで各要素は以下のとおりです。 DISPLAY コマンド・リストが待機しているメッセージが NetView プログラムに着信した ら、オペレーターの端末に表示することを指定します。DISPLAY はデフォルト 値です。 SUPPRESS &WAIT ステートメントを満たす任意のメッセージを表示、ログ、あるいは自動 化しないことを指定します。 CONTWAIT 次の &WAIT event=-label ステートメントが、待機が終了するまで追加イベン トを待機していることを指定しています。CONTWAIT によって、1 つの &WAIT ステートメントで、複数のイベントを処理することができます。このオ ペランドは、LIST コマンドなどの 1 つのコマンドから複数のメッセージを検 索したい場合に便利です。 ENDWAIT 次に処理する event=-label の組み合わせの処理を設定します。ENDWAIT はデ フォルト値で、&WAIT を満たす最初のイベントの後で待機が終了することを指 定します。ENDWAIT を指定すると、すでに処理中の待機は終了させません が、オペレーターが GO コマンドを使用して待機を終了させることはできま す。RESET コマンド (待機を終了させる) も、コマンド・リストを終了させま す。 CONTINUE コマンド・リストに、元の &WAIT ステートメントを満たす次のイベントのた めに続けて待機するよう指示します。CONTINUE は、&WAIT CONTWAIT が &WAIT event=-label より前に指定されているときだけ使用されます。イベント 付録 B. NetView コマンド・リスト言語のブランチ 159 NetView コマンド・リスト言語のブランチ 処理の終了後も待機を継続したい場合は、&WAIT CONTINUE とコーディング します。このことは、元の &WAIT ステートメントへのブランチと似ていま す。 注: 1. DISPLAY も SUPPRESS も指定しない場合は、ENDWAIT か CONTWAIT を指 定しなければなりません。 2. ENDWAIT か CONTWAIT が指定されており、SUPPRESS が指定されていない 場合に限って、DISPLAY がデフォルト値になります。有効なオプションの組み 合わせについては、表 18 を参照してください。 3. DISPLAY オプションと SUPPRESS オプションは、コマンド・リスト内のどの 点においても変更可能です。メッセージをいったん抑制してしまうと、メッセー ジの表示を再開するには、別の &WAIT ステートメントに DISPLAY オペラン ドを指定して、コーディングしなければなりません。 4. &WAIT SUPPRESS は DISPLAY をオーバーライドします。これは、コマン ド・リストにメッセージが与えられており、エコーを出さないためです。 5. SUPPRESS が有効な間は、ユーザーはメッセージが受信されているかどうか分か りません。したがって、オペレーターが GO コマンドか RESET コマンドを発 行して &WAIT を終了するときに、メッセージがすべて処理されているとはか ぎりません。 6. ENDWAIT も CONTWAIT も指定しない場合、DISPLAY か SUPPRESS のどち らかを指定しなければなりません。 7. DISPLAY か SUPPRESS が指定されており、CONTWAIT が指定されていない 場合に限って、ENDWAIT がデフォルト値になります。有効なオプションの組み 合わせについては、160 ページの表 18 を参照してください。 8. ENDWAIT オプションと CONTWAIT オプションは、コマンド・リスト内のど の点においても変更可能です。 CONTWAIT が開始すると、デフォルト値に戻 るには、もう一度 ENDWAIT オペランド付きの &WAIT ステートメントをコー ディングしなければなりません。 表 18. &WAIT のカスタマイズ・オプション・マトリックス: S = 指定オペランド v = 呼び出されるデフォルト DISPLAY SUPPRESS S ENDWAIT CONTWAIT S S S S S S S S v S v S v S v 注: 少なくとも 1 個のオプションを指定しなければなりません。オプションを指定しない と、デフォルト値が呼び出されません。 160 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ この形式のオペランドはオプションで、どの順序でコーディングしても構いませ ん。ただし、&WAIT event=-label ステートメントには、これらのオペランドはコー ディングできません。&WAIT ステートメントは、コマンド・リストを待ち状態に はせず、代わりにコマンド・リストが、次の &WAIT event=-label 制御ステートメ ントの処理方法を指示するだけです。 このステートメントを SUPPRESS、CONTWAIT、または CONTINUE を使用して更 新すると、新しい設定値は、現在処理中の &WAIT を含むコマンド・リスト内の、 他の &WAIT ステートメントについても有効になります。初期設定値を復元するに は、適切なオペランドの &WAIT ステートメントをもう 1 回コーディングしなけ ればなりません。ネストされたコマンド・リストを活動化する場合、そのネストさ れたコマンド・リストのための &WAIT ステートメントをコーディングしない限 り、そのコマンド・リストについてはデフォルト設定値が有効になります。 CONTWAIT が有効な場合の &WAIT の終了 156 ページの『&WAIT の終了』では、コマンド・リストが 1 つだけのイベントを 待機している場合の、待機の終了方法について説明しました。コマンド・リストが 複数のイベントの一致を待機している場合、待機を終了させるには、次の方法のう ちの 1 つを使用します。 v 端末で GO コマンドを入力する。 &WAIT CONTINUE が最後の &WAIT ステートメントであった場合、&WAIT CONTINUE ステートメントに続く、次のコマンド・リスト・ステートメントから 処理が継続されます。*ENDWAIT イベントがコーディングされると、処理はラベ ル・ステートメントから継続されます。event=-label で一致状態がなかった場合、 処理は &WAIT ステートメントに続く行から継続されます。 v &WAIT ENDWAIT ステートメントに続くコマンド・リスト・ステートメント内 に、GO コマンドをコーディングする。 *ENDWAIT イベントがコーディングされると、処理はラベル・ステートメントか ら継続されます。event=-label で一致状態がなかった場合、処理は GO コマンド に続く行から継続されます。 v *ERROR を、&WAIT ステートメントのイベントとしてコーディングする。 &WAIT ステートメントで指定されたコマンドがエラーで終了した場合、コマン ド・リストはラベルで示されたステートメントから処理を継続します。&WAIT は、エラーが起こらなければ終了しません。ただし、コマンド・リストでエラー が発生し、*ERROR をコーディングしていなければ、割り込みが起こらず待機が 終了しない場合があります。 v &WAIT ステートメントで、*nn をコーディングする。 nn 秒以内にそのイベントが起こらなければ、コマンド・リストはラベルによって 指定されたステートメントから処理を継続します。 v &WAIT ステートメントで、*ENDWAIT をコーディングする。 オペレーターが GO コマンドを入力すると、コマンド・リストはラベルで指定さ れたステートメントから処理を継続します。 v ラベルの後に、&EXIT をコーディングする。 付録 B. NetView コマンド・リスト言語のブランチ 161 NetView コマンド・リスト言語のブランチ コマンド・リストは、終了します。 v RESET コマンドを入力する。 コマンド・リストは、それを開始したコマンド・リストも含めて終了します。 &WAIT CONTWAIT は、NetView メッセージをキューするので、このようなキュ ーされたメッセージを受信するには、&WAIT CONTINUE も合わせてコーディング してください。SUPPRESS 付きの &WAIT CONTWAIT をコーディングして待機を 終了すると、一部のメッセージが失われることがあります。 &WAIT のコーディングに関する提案 最高のパフォーマンスを得るには、&WAIT [ENDWAIT | CONTWAIT] オプション を、次のように使用します。 1. &WAIT event=-label ステートメントのオプションを、 CONTWAIT、SUPPRESS、またはそれらのデフォルト値を指定した &WAIT を コーディングすることによって設定します。 2. &WAIT event=-label ステートメントを使用することによって、&WAIT 状態に 入ります。 v &WAIT event=-label ステートメントの前に &WAIT ENDWAIT を指定する場 合、または &WAIT ENDWAIT がデフォルトで有効な場合、最初に一致する イベントによって待機が終了し、コマンド・リスト処理が継続します。156 ペ ージの『&WAIT の終了』を参照してください。 v &WAIT CONTWAIT を指定した場合、イベントを 161 ページの 『CONTWAIT が有効な場合の &WAIT の終了』に示すように指定しなけれ ば、最初にこのイベントを受信したときも &WAIT は終了しません。コマン ド・リストは、イベント用に指定されたラベルに進んで処理を継続します。 コマンド・リストのこのようなセクションを完了させるには、次のアクション のうちいずれか 1 つを行います。 – &WAIT CONTINUE をコーディングして待機を継続する。 – &WAIT ENDWAIT と、その後に &WAIT CONTINUE をコーディングし て、次のイベントがこの待機の最終イベントであることを指定する。 – &WAIT ENDWAIT ステートメントと GO コマンドを、コマンド・リスト にコーディングして待機を終了する。 – &EXIT をコーディングして、コマンド・リストを終了する。 &WAIT を使用したサンプル 163 ページの図 44 は、1 つのメッセージを待機する &WAIT の使用を示していま す。コマンド・リストは ACTONE という名前で、論理装置を活動化する VTAM コマンドを発行します。コマンド・リストは、活動化コマンドに応答するメッセー ジをトラップし、メッセージをフォーマットし直して、オペレーター画面上に表示 します。 162 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のブランチ &CONTROL ERR * ACTONE COMMAND LIST * THIS COMMAND LIST ISSUES A VTAM "V NET,ACT" COMMAND, TRAPS ITS * MESSAGES AND REFORMATS THEM. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * IF THERE IS NO INPUT PARAMETER, ASK FOR ONE &IF &1 = '' &THEN &GOTO -BADIN * SAVE THE INPUT PARAMETER &LU = &1 * END THE WAIT WITH THE FIRST MESSAGE AND DO NOT DISPLAY THE * INPUT MESSAGE ON THE SCREEN &WAIT ENDWAIT SUPPRESS * ISSUE WAIT WITH THE COMMAND &WAIT ’V NET,ACT,ID=&LU’,IST093I=-REFORM,*ERROR=-FAIL,+ IST105I=-FAIL,*ENDWAIT=-GOIN -REFORM * REFORMAT MESSAGE IST093I (SUCCESSFUL) AND WRITE TO THE SCREEN * &1 IN THE FOLLOWING LINE IS NOT THE ORIGINAL &1 &ACTIV = &1 &WRITE VTAM MESSAGE IST093I WAS RECEIVED -REFORM &WRITE &ACTIV IS NOW ACTIVE &GOTO -ENDALL -FAIL * REFORMAT MESSAGE IST105I (UNSUCCESSFUL) AND WRITE TO THE SCREEN &WRITE &LU COULD NOT BE ACTIVATED &GOTO -ENDALL -GOIN * IF "GO" ISSUED, INDICATE THAT MESSAGES HAVE NOT BEEN RECEIVED &WRITE "GO" INPUT COMMAND LIST ACTONE -- &LU IS NOT ACTIVE NOW &GOTO -ENDALL -BADIN &WRITE RE-CALL COMMAND LIST ACTONE WITH PARAMETER OF LU TO BE ACTIVATED -ENDALL &WRITE COMMAND LIST ACTONE COMPLETE &EXIT 図 44. 1 メッセージの &WAIT を発行するコマンド・リスト ACTONE コマンド・リストは、次のメッセージのうちの 1 つを待機します。 IST093I IST105I modename ACTIVE modename NODE NOW INACTIVE ACTONE とオペランド NODE1 を入力することによって、コマンド・リストを活 動化します。オペランドは、活動化する論理装置の名前です。このオペランドは、 パラメーター変数 &1 の値を指定します。成功を示すメッセージ (IST093I) か、失 敗を示すメッセージ (IST105I) を受信すると、ENDWAIT が指定されたため待機が 終了します。処理は指定されたラベル (IST093I の場合は -REFORM、IST105I の場 合は -FAIL) から処理を継続します。SUPPRESS が指定されたため、待機させられ たメッセージは表示されませんが、他のメッセージはいずれも表示されます。 NODE1 の活動化が成功すると、 164 ページの図 45 に示されたメッセージ・テキス トがオペレーター端末に表示されます。 付録 B. NetView コマンド・リスト言語のブランチ 163 ACTONE NODE1 IST097I VARY ACCEPTED VTAM MESSAGE IST093I WAS RECEIVED NODE1 IS NOW ACTIVE COMMAND LIST ACTONE COMPLETE 図 45. ACTONE NODE1 のメッセージ・テキスト 164 プログラミング: REXX および NetView コマンド・リスト言語 付録 C. NetView コマンド・リスト言語のグローバル変数 本章では、NetView コマンド・リスト言語におけるグローバル変数の使用法につい て説明します。グローバル変数を使用すると、別のオペレーターによる値の定義、 参照、および更新が可能になります。更新のために、あるコマンド・リストに値が 渡されると、その更新された値を、他のコマンド・リストが参照できます。例え ば、コマンド・リスト CLISTA がタスク・グローバル変数の &VAR1 に値を割り 当て、次に、ネストされたコマンド・リストの CLISTB を活動化することが可能で す。ネストされたコマンド・リストの CLISTB は、CLISTA によって &VAR1 に 割り当てられた値を検査し、その値を更新し、さらに CLISTA に制御を戻すことが できます。これで、元のコマンド・リストの CLISTA は、CLISTB によって &VAR1 に割り当てられた値にアクセスすることになります。 グローバル変数の 2 つのタイプは、タスク・グローバル変数と共通グローバル変数 です。 タスク・グローバル変数は、特定のタスクの下で実行されているコマンド・リスト が定義、参照、および更新できる変数です。タスク・グローバル変数が参照できる のは、その変数が定義されたタスクの下で実行されているコマンド・リストのみで す。 共通 グローバル変数は、コマンド・リスト処理をサポートするすべての NetView タスクの下で実行されているコマンド・リストが参照できる、ユーザー変数の定義 を可能にします。 NetView プログラムは、グローバル変数にアクセスするために、次の 2 つの方式を 用意しています。 v &TGLOBAL、&CGLOBAL、および GLOBALV DEF を使用して、グローバル変 数を直接参照することができます。 v GLOBALV GET コマンドおよび PUT コマンドを使用して、グローバル変数の値 のコピーおよび置換を行うことができます。 GLOBALV コマンドの詳細については、NetView オンライン・ヘルプを参照してく ださい。 注: 1. &TGLOBAL、&CGLOBAL、あるいは GLOBALV DEF を、 GLOBALV GET または PUT コマンドと混合する場合は注意が必要です。両方の方式を用いて、 1 つの NetView コマンド・リスト言語のコマンド・リスト内で、同じ名前のグ ローバル変数にアクセスすることはお勧めできません。 直接設定は、その後のコピーまたは置換がどのように実行されるかに影響しま す。 GLOBALV GET および PUT は、1 つの辞書から他の辞書に値をコピーし ます。 &TGLOBAL と &CGLOBAL、および GLOBALV DEFT または DEFC を使用すると、グローバル変数が参照でき、コマンド・リスト内でそのステート © Copyright IBM Corp. 1997, 2011 165 NetView コマンド・リスト言語のグローバル変数 メント以降、直接グローバル変数を設定することができます。各コマンドは機能 を提供しますが、単一の NetView コマンド・リスト内ではどちらか一方のみを 使用してください。 2. グローバル変数を作成する際、その変数の長さは 1 から 11 文字までが可能で す。A から Z、0 から 9、#、@、および $ が有効な文字です。 3. グローバル変数の値は 255 文字長までです。シフトアウト (X'0E') 制御文字と シフトイン (X'0F') 制御文字の間の 2 バイト文字の最大数は 126 です。 4. グローバル変数には、-2147483647 から 2147483647 までの数値を指定すること ができます。この限界外の数値は、文字ストリングとして取り扱われます。 &TGLOBAL および &CGLOBAL の使用法 &TGLOBAL および &CGLOBAL 制御ステートメントを使用すると、複数のグロー バル変数を指定することができます。変数名は、コンマまたはブランクで区切る必 要があります。 変数置換を実行する場合を除いて、定義ステートメントでは、グローバル変数名と ともに & をコーディングしないでください。アンパーサンド (&) が付く変数は置 換されます。グローバル変数を使用するときは (グローバル変数の定義時は除く)、 ユーザー変数に対する場合と同じように、変数名に & を付ける必要があります。 グローバル変数を間接的に参照する場合は、2 つの & が必要です。変数の間接参照 に関する詳細については、 117 ページの『コマンド・リストでのパラメーター変数 の使用方法』 および 114 ページの『変数置換の順序』を参照してください。 &TGLOBAL タスク・グローバル変数は、同じタスクの下で実行するコマンド・リストによって のみ参照することが可能です。 &TGLOBAL 制御ステートメントを使用して、任意の変数をタスク・グローバル変 数として定義します。 &TGLOBAL 制御ステートメントの構文は次のとおりです。 &TGLOBAL &TGLOBAL variable このステートメントは、列記された変数をタスク・グローバル変数として定義しま す。このステートメントによって定義された変数の値は、同じタスクの下で実行さ れている別のコマンド・リストによって割り当てられた最新のものになります。値 が何も割り当てられていない場合、その値は未定義またはヌルとなり、その値を検 索しようとするとヌル値が戻されることになります。値が参照される前に、各コマ ンド・リストの &TGLOBAL ステートメントを使用しないと、その変数のデフォル ト値はローカル・ユーザー変数となります。 以下は、&TGLOBAL 制御ステートメントの使用例です。 166 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のグローバル変数 &NAME = JOHN &TGLOBAL ABC,&NAME 最初の行は、JOHN という値に設定されたローカル・ユーザー変数で構成されてい ます。 2 行目は、以下のように 2 つのタスク・グローバル変数を定義していま す。 v ABC は、タスク・グローバル変数 &ABC になります。 &ABC の値は、定義さ れなかったためヌルです。 v &JOHN の値は、定義されていないためヌルです。これは、変数の間接参照の一 例です。 タスク・グローバル変数と、ユーザー変数および共通グローバル変数との相互作用 については、 170 ページの『&TGLOBAL および &CGLOBAL 使用時の変数のエ クステント』を参照してください。 &TGLOBAL ステートメントで複数の変数名を指定する場合は、変数名をコンマま たはブランクで区切る必要があります。 以下のタスク・グローバル変数の使用法の推奨に注意してください。 v PROFILE IC は、タスク・グローバル変数を設定して、別のタイプのオペレータ ー向けの別のメッセージ抑止レベルやメッセージ圧縮を指示することができま す。さまざまなメッセージによって駆動されるコマンド・リストは、これらの変 数をテストして、特定のオペレーターにとって必要な情報を判別することができ ます。 v どのコマンド・リストも、同じオペレーター・タスクの下で実行されている別の コマンド・リストに対して、任意の数のパラメーターを設定して初期化すること ができます。タスク・グローバル変数はネストされたコマンド・リストから情報 を戻すことができるため、これによって、ネストされたコマンド・リストの通信 が改善されます。 &CGLOBAL &CGLOBAL 制御ステートメントを使用して、任意の変数を共通グローバル変数と して定義します。&CGLOBAL 制御ステートメントの構文は、次のとおりです。 &CGLOBAL &CGLOBAL variable このステートメントは、列記された変数を共通グローバル変数として定義します。 このステートメントによって定義された変数の値は、他のコマンド・リストによっ て割り当てられた最新のものになります。値が何も割り当てられていない場合、そ の値は未定義またはヌルとなり、その値を検索しようとするとヌル値が戻されるこ とになります。変数が参照される前に、各コマンド・リストの &CGLOBAL ステー トメントを使用しないと、その変数のデフォルト値はローカル・ユーザー変数とな ります。 付録 C. NetView コマンド・リスト言語のグローバル変数 167 NetView コマンド・リスト言語のグローバル変数 &CGLOBAL 制御ステートメントの使用例を、以下に示します。 &NAME = JOHN &CGLOBAL ABC,&NAME 最初の行は、JOHN という値に設定されたローカル・ユーザー変数で構成されてい ます。 2 番目の行は、2 つの共通グローバル変数を次のように定義しています。 v ABC は、共通グローバル変数 &ABC になります。 &ABC の値は、定義されて いないためヌルです。 v &NAME は、共通グローバル変数 &JOHN になります。 &NAME は JOHN と いう値をもっているため、この行の &NAME は JOHN に置き換えられます。こ れは、共通グローバル変数 &JOHN を定義します。 &JOHN の値は、定義されて いないためヌルです。 同一のグローバル変数にアクセスしている異なったタスクの下で複数のコマンド・ リストを実行している場合は、その変数が設定された最新の値が、その変数を変更 する任意のコマンド・リストにより設定される値になります。例えば、あるコマン ド・リストが共通グローバル変数にアクセスし、その後、そのコマンド・リストが その変数を更新する前に、別のタスクの下で実行している別のコマンド・リストが その変数にアクセスするとします。両方のコマンド・リストがその変数を更新する 場合、変数は最後に更新を行ったコマンド・リストによって与えられた値をとりま す。 共通グローバル変数が、同時に別のコマンド・リストによって更新されるのを防止 するために、その変数を更新するすべてのコマンド・リストを同じタスクの下で実 行させることができます。共通グローバル変数の、ユーザー変数およびタスク・グ ローバル変数との対話に関する詳細については、170 ページの『&TGLOBAL およ び &CGLOBAL 使用時の変数のエクステント』を参照してください。 &CGLOBAL ステートメントで複数の変数名を指定する場合は、変数名をコンマま たはブランクで区切る必要があります。 NetView 製品で提供されるコマンド・リスト UPDCGLOB および SETCGLOB を使 用して、共通グローバル変数を更新および設定できます。詳細については、 NetView オンライン・ヘルプを参照してください。 共通グローバル変数を使用すると、オペレーターのログオン、ログオフに関係な く、ネットワークに関する正確な情報を保守することができます。 また、共通グローバル変数を使用して、非送信請求アクセス方式メッセージの累積 情報を保持することができます。例えば、障害のあるリソースの通知を使用して、 そのリソースをリカバリーすることができます。グローバル変数を用いると再試行 の回数を記録し、ループを防止することができます。 168 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のグローバル変数 &TGLOBAL を使用したタスク・グローバル変数の更新方法 以下の 2 つの例でコマンド・リストを示します。1 番目のコマンド・リスト CLIST1 は、ネストされたコマンド・リスト UPDT1 を呼び出します。 CLIST1 と UPDT1 の両コマンド・リストは、タスク・グローバル変数の定義、参照、および更 新の方法を示しています。 * THIS STATEMENT DEFINES SYSVAR1 AS A TASK GLOBAL VARIABLE. &TGLOBAL SYSVAR1 * THIS ASSIGNMENT STATEMENT GIVES THE TASK GLOBAL * VARIABLE, "SYSVAR1", A VALUE OF 5. &SYSVAR1 = 5 * THIS STATEMENT CALLS A NESTED COMMAND LIST NAMED UPDT1. * SYSVAR1 IS A PARAMETER THAT IS PASSED TO COMMAND LIST UPDT1. UPDT1 SYSVAR1 * THIS STATEMENT WILL WRITE VALUE OF SYSVAR1. &WRITE SYSVAR1 = &SYSVAR1 &EXIT 図 46. タスク・グローバル変数の定義、更新、および参照を行う CLIST1 コマンド・リスト 図 46 の CLIST1 は、タスク・グローバル変数 SYSVAR1 を定義します。割り当て ステートメント &SYSVAR1 = 5 を使用して値が割り当てられるまでは、タスク・ グローバル変数 SYSVAR1 の値はヌル値を戻します。CLIST1 は、UPDT1 の名前 をもつネストされたコマンド・リストを活動化します。 * THIS STATEMENT DEFINES &1 AS A TASK GLOBAL VARIABLE. * &1 IS SET TO THE VALUE OF THE POSITIONAL PARAMETER * SYSVAR1, WHICH ON THE FIRST PASS IN THIS CASE IS 5. &TGLOBAL &1 * THIS STATEMENT TESTS FOR A NULL VALUE AND INITIALIZES * THE TASK GLOBAL VARIABLE PASSED AS &1 TO A VALUE OF * 0 IF THE VALUE RETURNED WAS NULL. * THE TASK GLOBAL VARIABLE PASSED AS &1 IS REFERENCED * AS &&1. THE VALUE OF &&1 IS EQUAL TO THE VALUE OF SYSVAR1, * WHICH WAS PASSED TO COMMAND LIST UPDATE FROM CLIST1. &IF &&1 EQ '' &THEN &&1 = 0 * THIS STATEMENT UPDATES THE TASK GLOBAL VARIABLE, &&1, * BY AN INCREMENT OF 1. * THIS UPDATED VALUE OF &&1 PASSED BACK TO CLIST1 * AS TASK VARIABLE &SYSVAR1. &&1 = &&1 + 1 &EXIT 図 47. タスク・グローバル変数を更新する UPDT1 コマンド・リスト 169 ページの図 47 の UPDT1 は、タスク・グローバル変数 &1 に保管されている 値を再定義します。タスク・グローバル変数 &1 は、CLIST1 に呼び出されたとき UPDT1 に渡された最初の (かつ唯一の) 変数である SYSVAR1 から、元の値を入手 します。NetView プログラムは、変数を右から左にスキャンするため、&&1 の &1 の部分が最初に評価され、&1 の値は SYSVAR1 と同じ値になります。タスク・グ ローバル変数の値は、&SYSVAR1 として参照されます。 &SYSVAR1 の初期値は 5 で、&SYSVAR1 はその後 &&1 = &&1 + 1 ステートメントを (NetView プログ ラムによって評価された後は、&SYSVAR1 = &SYSVAR1 + 1) を使用して 1 ずつ 増えていきます。 付録 C. NetView コマンド・リスト言語のグローバル変数 169 NetView コマンド・リスト言語のグローバル変数 更新された値は、CLIST1 内でタスク・グローバル変数 &SYSVAR1 として使用で きます。&WRITE SYSVAR1 = &SYSVAR1 ステートメントは、&SYSVAR1 タス ク・グローバル変数の更新済みの値を表示します。 &TGLOBAL および &CGLOBAL 使用時の変数のエクステント ローカル変数と同じ名前でグローバル変数を定義すると、そのローカル変数の値は 失われます。そのため、グローバル変数はそのローカル変数の値を受け取りませ ん。値が割り当てられるまで、グローバル変数の値はヌルになります。 タスク・グローバル変数が定義された後で、コマンド・リストが共通グローバル変 数を定義し、しかもタスク・グローバル変数と同じ名前である場合、そのタスク・ グローバル変数の値は未変更のままです。ただし、&TGLOBAL を使用してそのタ スク・グローバル変数の値を再定義しない限り、もはやこのコマンド・リストがそ の変数の値にアクセスすることはできません。 共通グローバル変数が、別の共通グローバル変数と同じ名前を使用して定義された 後で、コマンド・リストがタスク・グローバル変数を定義すると、その共通グロー バル変数の値は変更されないままになります。ただし、&CGLOBAL を使用してそ の共通グローバル変数の値を再定義しない限り、もはやこのコマンド・リストがそ の変数の値にアクセスすることはできません。 GLOBVAR1 (171 ページの図 48) は、個々のコマンド・リストおよび別のタスクの 下で実行されているコマンド・リスト内のユーザー変数、タスク・グローバル変 数、および共通グローバル変数のエクステントを示したものです。このコマンド・ リストは、以下の変数操作の例を示します。 v ユーザー変数への値の割り当て v タスク・グローバル変数の定義 v 共通グローバル変数の定義 v 共通グローバル変数に対する値の設定 v 共通グローバル変数からタスク・グローバル変数への変更 以下の例では、グローバル変数が入ったコマンド・リストが示されています。以下 の例では、変数の値は括弧で囲んで示しています。 170 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のグローバル変数 &CONTROL ERR *** CLIST NAME: GLOBVAR1 *** ASSIGN VALUES TO SEVERAL USER VARIABLES AND PRINT THEIR VALUES ****************************************************************** &OPER = OPER1 &VTLV = VT33 &DOM1 = CNM01002 CLEAR &BEGWRITE SUB -ENDLOCAL FROM GLOBVAR1: AFTER LOCAL VARIABLES ASSIGNED VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL OPER &OPER (OPER1) LOCAL VTLV &VTLV (VT33) LOCAL DOM1 &DOM1 (CNM01002) -ENDLOCAL * *** DEFINE TASK GLOBAL VARIABLES ******************************** &TGLOBAL OPER VTLV CNT &BEGWRITE SUB -ENDTG1 FROM GLOBVAR1: AFTER TGLOBAL VARIABLES DEFINED VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL DOM1 &DOM1 (CNM01002) TASK OPER &OPER (NULL) TASK VTLV &VTLV (NULL) TASK CNT &CNT (NULL) NOTE THAT THE VALUES ASSIGNED TO OPER AND VTLV HAVE BEEN LOST AS THEY ARE NO LONGER LOCAL VARIABLES AND THE TASK GLOBAL VARIABLES HAVE NOT BEEN ASSIGNED YET. -ENDTG1 図 48. グローバル変数のエクステントを表す GLOBVAR1 の例 (1/3) 付録 C. NetView コマンド・リスト言語のグローバル変数 171 NetView コマンド・リスト言語のグローバル変数 * *** ASSIGN VALUES TO THE TASK GLOBAL VARIABLES ********************************************** &OPER = OPER2 &VTLV = VT33 &CNT = 3 &BEGWRITE SUB -ENDTG2 FROM GLOBVAR1: AFTER VALUES ASSIGNED TO TGLOBAL VARIABLES VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL DOM1 &DOM1 (CNM01002) TASK OPER &OPER (OPER2) TASK VTLV &VTLV (VT33) TASK CNT &CNT (3) -ENDTG2 * *** DEFINE COMMON GLOBAL VARIABLES ********************************** &CGLOBAL OPER VTLV VAL &BEGWRITE SUB -ENDTG3 FROM GLOBVAR1: AFTER CGLOBAL VARIABLES DEFINED VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL DOM1 &DOM1 (CNM01002) TASK CNT &CNT (3) COMMON OPER &OPER (NULL) COMMON VTLV &VTLV (NULL) COMMON VAL &VAL (NULL) NOTE THAT THE VALUES ASSIGNED TO TASK GLOBAL VARIABLES OPER AND VTLV HAVE BEEN REPLACED BY COMMON GLOBAL VARIABLES OPER AND VTLV. THESE ARE NULL AS NO VALUE HAS BEEN ASSIGNED TO THEM YET. -ENDTG3 図 48. グローバル変数のエクステントを表す GLOBVAR1 の例 (2/3) 172 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語のグローバル変数 * *** ASSIGN VALUES TO COMMON GLOBAL VARIABLES ******************************************** &OPER = OPER3 &VTLV = VT32 &VAL = HEX &BEGWRITE SUB -ENDTG4 FROM GLOBVAR1: AFTER CGLOBAL VARIABLES ASSIGNED VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL DOM1 &DOM1 (CNM01002) TASK CNT &CNT (3) COMMON OPER &OPER (OPER3) COMMON VTLV &VTLV (VT32) COMMON VAL &VAL (HEX) -ENDTG3 *** CHANGE ONE COMMON GLOBAL VARIABLE BACK TO A TASK GLOBAL VARIABLE ******************************************************************** &TGLOBAL OPER &BEGWRITE SUB -ENDTG5 FROM GLOBVAR1: AFTER FINAL TGLOBAL STATEMENT VARIABLE VARIABLE VARIABLE TYPE NAME VALUE ======== ======== ======== LOCAL DOM1 &DOM1 (CNM01002) TASK CNT &CNT (3) TASK OPER &OPER (OPER2) COMMON VTLV &VTLV (VT32) COMMON VAL &VAL (HEX) NOTE THAT THE OPER NOW HAS THE VALUE OF THE TASK GLOBAL VARIABLE OPER AGAIN AS THE MOST RECENT DECLARATION STATEMENT DEFINED IT AS TASK GLOBAL. -ENDTG5 図 48. グローバル変数のエクステントを表す GLOBVAR1 の例 (3/3) GLOBALV コマンド GLOBALV コマンドは、 NetView コマンド・リスト言語のコマンド・リストで、 グローバル変数の定義、配置、および獲得を行うために使用します。また、 GLOBALV コマンドは、グローバル変数を VSAM データベースに保管します。 NetView プログラムが停止して再始動した場合に、保管されていたグローバル変数 を復元したり、または保管されていたグローバル変数を外部ストレージから消去 (除去) することができます。グローバル変数では、言語に関係なく複数のコマン ド・プロシージャーを使用できるので、共通の変数の集合を共用することができま す。 GLOBALV コマンドの詳細については、NetView オンライン・ヘルプを参照してく ださい。 付録 C. NetView コマンド・リスト言語のグローバル変数 173 174 プログラミング: REXX および NetView コマンド・リスト言語 付録 D. 共通操作サービス・コマンド 本章では、共通操作サービス (COS) コマンドの使用法について説明します。 共通操作サービス 共通操作サービスとは、NetView/PC など、共通操作の NetView 制御をサポート し、機能を強化するコマンドの集合です。COS アプリケーションは、フロントエン ドの回線交換機および回線多重化装置などの非システム・ネットワーク体系の装置 を管理します。 COS アプリケーションにコマンドを送信して、これらの装置につ いての問題判別を行うことができます。 COS によって使用されるベクトル・フォーマットの詳細については、「NetView/PC: アプリケーション・プログラミング」を参照してください。 問題判別には、NetView/PC とともに以下の 4 つの NetView COS コマンドが使用 されます。 LINKTEST COS が指定されたリンクまたはリンク・セグメントをテストするよう要求 します。 LINKDATA COS が指定されたリンクまたはリンク・セグメントについての装置データ を戻すよう要求します。 LINKPD 指定されたリンクまたはリンク・セグメントについて、 COS からの問題判 別分析を要求します。 RUNCMD COS アプリケーション・コマンドを NetView プログラムから COS アプリ ケーションに送信します。 LINKTEST、LINKDATA、LINKPD および RUNCMD コマンドの構文については、 NetView オンライン・ヘルプを参照してください。 COS コマンドは、処理時にコマンド・リストを中断する長時間実行コマンドです。 COS コマンドが完了すると、コマンド・リストが再開します。コマンド・リストが 中断されている間、そのコマンド・リストを実行しているタスクの優先順位の低い キューで待機している他のコマンドは、コマンド・リストが完了するまで処理され ません。これによって、優先順位の低いキュー上のコマンドを順序どおりに実行す ることができます。 NetView コマンド・リスト言語の &WAIT 制御ステートメント、または REXX の TRAP と WAIT 関数を、COS コマンドとともに使用することはできません。COS コマンドから生成されたメッセージをトラップするには、自動化テーブル主導型コ マンド・リストを使用してください。ただし以下のメッセージを除きます。 v LINKPD メッセージ © Copyright IBM Corp. 1997, 2011 175 上級トピック – – – – – DSI533I DSI534I DSI535I DSI536I DSI582I これらの 5 つのメッセージは、制御またはパラメーター変数の形式で使用するこ とができる値に設定されます。LINKPD の結果の詳細については、178 ページの 『LINKPD の結果』を参照してください。 v CLISTVAR キーワードを指定した RUNCMD への応答。CLISTVAR キーワード を使用すると、その応答は変数に保管されます。RUNCMD の結果の詳細につい ては、178 ページの『RUNCMD の結果』を参照してください。 共通操作サービスの戻りコード コマンドが完了すると、REXX で作成されたコマンド・リストの場合は RC に、ま たは NetView コマンド・リスト言語で作成されたコマンド・リストの場合は &RETCODE に、次の値のいずれかが含まれます。 コード 説明 0 コマンドは正常終了しました。 4 コマンドは失敗しました。RUNCMD で CLISTVAR が指定されていたのに 応答が返されなかったか、タスクがそのコマンドを発行することを許可され ていなかったかのいずれかです。 16 CANCMD によってコマンドが取り消されました。 24 コマンド・リストのデータの一部が切り捨てられました。 28 CLISTVAR キーワードを指定した RUNCMD に対して、 COS アプリケー ションが 132 を超える応答を戻しました。 32 NetView 定数モジュール内の COS コマンド・タイムアウト値によって指定 されている時間内に、COS アプリケーションが応答しませんでした。 LINKDATA および LINKTEST の結果 コマンド・リスト内の LINKDATA および LINKTEST を使用して、COS (例えば、 NetView/PC) を管理することができます。これらのコマンドの形式については、 NetView のオンライン・ヘルプを参照してください。 REXX コマンド・リストの場合は、アンパーサンド記号を付けない変数名を使用し ます。NetView コマンド・リスト言語のコマンド・リストの場合は、アンパーサン ド記号を付けた変数名を使用します。 注: LINKTEST および LINKDATA の場合、パス番号は 01 です。 LINKDATA および LINKTEST 変数 コマンド・リストでは、以下の LINKDATA および LINKTEST 変数名を使用でき ます。 176 プログラミング: REXX および NetView コマンド・リスト言語 上級トピック DSIPATHCNT または &DSIPATHCNT 戻されるパスの数を指定します。LINK コマンドの場合は、常に 01 です。 後続の変数名の中の pp の値は、パスのカウントを元に与えられます。 DSIppRC または &DSIppRC パス pp 用のリソースの数を指定します。後続の変数名の中の rr の値は、 リソースのカウントを元に与えられます。 DSIpprrEC または &DSIpprrEC パス pp のリソース rr の項目数を指定します。後続の変数名の中の ee の 値は、この項目のカウントを元に与えられます。 DSIpprrRN または &DSIpprrRN パス pp のリソース rr の名前を指定します。 DSIpprrRT または &DSIpprrRT パス pp のリソース rr のタイプを指定します。 DSIpprreeDN または &DSIpprreeDN パス pp のリソース rr に対するデータ項目 ee の名前を指定します。 DSIpprreeDT または &DSIpprreeDT パス pp のリソース rr に対するデータ項目 ee のタイプを指定します。取 り得る値は次のとおりです。 v BIT STRING v CHARACTER v DECIMAL v HEXADECIMAL DSIpprreeDV または &DSIpprreeDV パス pp のリソース rr に対するデータ項目 ee の値を指定します。 変数名の中のイタリック体の文字は、以下の値に置き換えられます。 pp パス番号 (01) rr リソース番号 (01-99) ee 入力番号 (01-99) LINKTEST のその他の変数 さらに、LINKTEST は以下の変数も使用します。 DSIREQUEST または &DSIREQUEST 要求するテストの数を指定します。 DSIACTUAL または &DSIACTUAL 処理されるテストの実際の数を指定します。 DSITESTTYPE または &DSITESTTYPE 報告されるテスト・データのタイプを指定します。取り得る値は次のとおり です。 v BACKGROUND v REQUESTED DSIRESULT または &DSIRESULT テスト処理のすべての結果の指定。取り得る値は次のとおりです。 v PASSED 付録 D. 共通操作サービス・コマンド 177 上級トピック v FAILED v INDETERMINATE LINKPD の結果 LINKPD コマンドからの結果は、「NetView/PC など、COS によって制御されるリ ソースのリカバリーを自動化するためにコマンド・リストで使用できる」という旨 のメッセージで戻されます。 LINK 結果は、MSGCNT()、MSGID()、MSGORIGN()、MSGSTR()、MSGTYP()、お よび MSGVAR(1) から MSGVAR(31) までの関数によってアクセスされます。 REXX 関数の MSGORIGN()、MSGID()、MSGCNT()、MSGSTR()、および MSGTYP() の詳細については、59 ページの『メッセージ処理情報関数』を参照して ください。 MSGVAR(1) から MSGVAR(31) の詳細については、43 ページの 『MSGREAD によって設定される関数』を参照してください。 LINKPD の結果は、&MSGCNT、&MSGID、&MSGORIGIN、&MSGSTR、 &MSGTYP の各制御変数、および &1 から &31 までのパラメーター変数によりア クセスできます。 NetView コマンド・リスト言語の制御変数 &MSGCNT、&MSGID、 &MSGORIGIN、&MSGSTR、および &MSGTYP の詳細については、59 ページの 『メッセージ処理情報関数』を参照してください。NetView コマンド・リスト言語 で書かれているコマンド・リストで使用するパラメーター変数の詳細については、 115 ページの『パラメーター変数』を参照してください。 RUNCMD の結果 CLISTVAR キーワードを指定せずに RUNCMD を使用すると、RUNCMD を実行し た COS アプリケーションからの応答は、ネットワーク・オペレーター端末に送信 され、戻りコードがセットされます。戻りコードの説明については、 176 ページの 『共通操作サービスの戻りコード』を参照してください。 REXX では、戻りコードは、RC 変数に戻されます。 NetView コマンド・リスト言語では、戻りコードは &RETCODE 変数に戻されま す。 CLISTVAR キーワードを指定して RUNCMD を使用すると、このコマンドの結果は 次のようになります。 v 戻りコードがセットされます (RC または &RETCODE)。戻りコードの説明は、 176 ページの『共通操作サービスの戻りコード』を参照してください。 v 戻りコード 0、24、または 28 でコマンドが完了すると、後続の変数がセットさ れます。 注: REXX コマンド・リストの場合は、アンパーサンド記号を付けない変数名を 使用します。 NetView コマンド・リスト言語のコマンド・リストの場合は、 アンパーサンド記号を付けた変数名を使用します。 178 プログラミング: REXX および NetView コマンド・リスト言語 上級トピック DSIRUNCNT または &DSIRUNCNT COS アプリケーションから戻される応答の番号が入ります。変数には 001 から 998 までの範囲の値が入ります。 DSIRUNxxx または &DSIRUNxxx COS アプリケーションからの別の応答が入ります。応答には 001 から 998 までの番号が付けられます。 注: COS からの応答は、文字データでなければならず、 255 文字を超え ることはできません。 PIPE コマンドで CLISTVAR=YES を指定して RUNCMD を使用すると、メッセー ジ BNH074I を受け取ります。このことは、PIPE コマンドが NetView コマンド・ リストから発行された場合でも起こります。PIPE コマンドでは、CLISTVAR=NO (デフォルト値) を必ず使用してください。 パイプラインでの RUNCMD の使用 CLISTVAR=YES を使用する代わりに、RUNCMD をパイプラインで実行します。パ イプラインの使用には以下の利点があります。 v RUNCMD の複数の呼び出しを並行して実行できます。 v タイムアウト値に対して直接制御できます。 v 変数を設定する前に、パイプライン内のデータをフィルター操作することができ ます。 v 変数の名前を選択することができます。 REXX 型の語幹名を使用できます。 例えば、以下に示す REXX コードのセグメントを使用して、サービス・ポイントに 対するコマンドを設定した場合、 RCMD.1 = RCMD.2 = RCMD.3 = . . . RCMD.100 RCMD.0 = ’RUNCMD SP=NT000001,APPL=APPLNAME,QUERY ABC’ ’RUNCMD SP=NT000002,APPL=APPLNAME,QUERY ABC’ ’RUNCMD SP=NT000003,APPL=APPLNAME,QUERY ABC’ = ’RUNCMD SP=NT000100,APPL=APPLNAME,QUERY ABC’ 100 下記のコマンドを使用して、100 個のコマンドのすべてを、要求をスケジュールし 得る可能な限りの速さで、結果を待たずに実行することができます。その後、 NetView プログラムは最大で 120 秒間 (メッセージ間) 結果を待ち、メッセージを ステム RESULT に入れます。 ’PIPE STEM RCMD. | NETVIEW | CORRWAIT 120 | STEM RESULT.’ このコマンドは、最終結果の後は 120 秒間待たないということに注意してください (100 のコマンドすべてが完了したものと見なされます)。 NetView プログラムは、 処理されたコマンドをカウントし、各コマンドに最後の応答がいつ到着したかを記 録します。ステム RESULT. 内の結果が、ステム RCMD. 内のコマンドと同じ順序で ある必要はありません。これは、サービス・ポイントの中には他のものより応答が 速いものがあるためです。RESULT. に保管される行数は、 RESULT.0 に入っていま す。 NetView パイプラインの使用に関する詳細については、「IBM Tivoli NetView for z/OS プログラミング: パイプ」を参照してください。 付録 D. 共通操作サービス・コマンド 179 180 プログラミング: REXX および NetView コマンド・リスト言語 付録 E. REXX と NetView コマンド・リスト言語の比較 この付録では、REXX と NetView コマンド・リスト言語との簡単な比較を行って います。 REXX 命令と NetView コマンド・リスト言語制御ステートメントとの比較 表 19 は、NetView コマンド・リスト言語で使用される各制御ステートメントを示 し、それと同等の REXX 命令を記載しています。このテーブルは、NetView コマ ンド・リスト言語の制御ステートメントの名前に基づいたアルファベット順に並べ られています。 テーブルの最後の列は、対応する REXX 命令が REXX によって提供される標準命 令であるか、 NetView プログラムによって提供される命令であるかを示します。 NetView プログラムによって提供される命令は、Tivoli NetView for z/OS プログラ ムでのみ使用できます。これらの命令は、REXX インタープリターではサポートさ れておらず、非 NetView 環境で実行される REXX EXEC で使用することはできま せん。 表 19. REXX 命令と NetView コマンド・リスト言語制御ステートメントとの比較 REXX 命令 記載ページ NetView 制御 ステートメント 記載ページ REXX 命令の提供元 なし 該当なし &BEGWRITE 127 該当なし CGLOBAL(name) 59 &CGLOBAL 167 NetView TRACE 37 &CONTROL 124 REXX EXIT 148 &EXIT 148 REXX SIGNAL 38 &GOTO 147 REXX IF 145 &IF 145 REXX PARSE EXTERNAL 30 &PAUSE 129 REXX PARSE PULL 30 &PAUSE 129 REXX TGLOBAL(name) 59 &TGLOBAL 166 NetView TRAP * &WAIT 149 NetView WAIT * &WAIT 149 NetView MSGREAD * &WAIT 149 NetView FLUSHQ * &WAIT 149 NetView SAY 31 &WRITE 126 REXX *「IBM Tivoli NetView for z/OS Command Reference Volume 2 (O-Z)」を参照してくださ い。 © Copyright IBM Corp. 1997, 2011 181 REXX と NetView コマンド・リスト言語の比較 REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 表 20 は、NetView コマンド・リスト言語で使用される各種の制御変数および関 数、および同等の REXX 関数を示しています。 関数は、NetView プログラムによって提供されている場合は NetView プログラムで のみ使用でき、SAA REXX ではサポートされません。 表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 182 REXX 関数または変数 記載 ページ NetView 制御変数 REXX 関数の 提供元 ACTIONDL() 60 &ACTIONDL NetView ACTIONMG() 60 &ACTIONMG NetView APPLID() 93 &APPLID NetView AREAID() 60 &AREAID NetView ASID() 94 &ASID NetView ATTENDED() 94 &ATTENDED NetView ATTNID() 60 &ATTNID NetView AUTCONID() 94 &AUTCONID NetView AUTHCHK(...) 50 なし NetView AUTHCHKX(...) 52 なし NetView AUTOTASK() 94 &AUTOTASK NetView AUTOTOKE() 60 &AUTOTOKE NetView BITAND(...) 132 &BITAND REXX BITOR(...) 133 &BITOR REXX BITXOR(...) 134 &BITXOR REXX CGI() 94 なし NetView CGLOBAL(name) 59, 167 &CGLOBAL NetView CMDNAME() 54 なし NetView CODE2TXT(...) 46 なし NetView || 135 &CONCAT REXX CURCONID() 94 &CURCONID NetView CURSYS() 95 &CURSYS NetView DATE() 99 &DATE REXX DESC() 60 &DESC NetView DISC() 95 &DISC NetView DISTAUTO() 95 &DISTAUTO NetView DOMAIN() 95 &DOMAIN NetView DOMAIN('x') 95 なし NetView ECVTPSEQ() 95 &ECVTPSEQ NetView ENVDATA('x') 95 なし NetView EVENT() 61 なし NetView FNDMBR(...) 57 なし NetView プログラミング: REXX および NetView コマンド・リスト言語 REXX と NetView コマンド・リスト言語の比較 表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き) REXX 関数または変数 記載 ページ NetView 制御変数 REXX 関数の 提供元 HCOPY() 99 &HCOPY NetView HDRMTYPE() 61 &HDRMTYPE NetView HIER(n) 77, 135 &HIER NetView HMASPRID() 77 なし NetView HMBLKACT() 78 なし NetView HMCPLINK() 78 なし NetView HMEPNAU() 79 なし NetView HMEPNET() 79 なし NetView HMEPNETV() 80 なし NetView HMEVTYPE() 80 なし NetView HMFWDED() 81 なし NetView HMFWDSNA() 81 なし NetView HMGENCAU() 82 なし NetView HMONMSU() 82 なし NetView HMORIGIN() 83 なし NetView HMSECREC() 83 なし NetView HMSPECAU() 84 なし NetView HMUSRDAT() 85 なし NetView IFRAUGMT() 61 &IFRAUGMT NetView IFRAUIND() 62 &IFRAUIND NetView IFRAUIN3() 62 &IFRAUIN3 NetView IFRAUI3X() 62 &IFRAUI3X NetView IFRAUSDR() 63 &IFRAUSDR NetView IFRAUSRB() 63 &IFRAUSRB NetView IFRAUSB2() 62 &IFRAUSB2 NetView IFRAUSRC() 63 &IFRAUSRC NetView IFRAUSC2() 63 &IFRAUSC2 NetView IFRAUTA1() 63 &IFRAUTA1 NetView IFRAUWF1() 64 &IFRAUWF1 NetView JOBNAME() 64 &JOBNAME NetView JOBNUM() 64 &JOBNUM NetView KEY() 64 &KEY NetView LENGTH(...) 138 &LENGTH REXX LINETYPE() 64 &LINETYPE NetView LU() 99 &LU NetView MCSFLAG() 65 &MCSFLAG NetView MSGASID() 65 &MSGASID NetView MSGAUTH() 65 &MSGAUTH NetView MSGCATTR() 65 &MSGCATTR NetView 付録 E. REXX と NetView コマンド・リスト言語の比較 183 REXX と NetView コマンド・リスト言語の比較 表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き) 184 REXX 関数または変数 記載 ページ NetView 制御変数 REXX 関数の 提供元 MSGCMISC() 65 &MSGCMISC NetView MSGCMLVL() 66 &MSGCMLVL NetView MSGCMSGT() 66 &MSGCMSGT NetView MSGCNT() 66 &MSGCNT NetView MSGCOJBN() 66 &MSGCOJBN NetView MSGCPROD() 66 &MSGCPROD NetView MSGCSPLX() 66 &MSGCSPLX NetView MSGCSYID() 66 &MSGCSYID NetView MSGDOMFL() 67 &MSGDOMFL NetView MSGGBGPA() 67 &MSGGBGPA NetView MSGGDATE() 67 &MSGGDATE NetView MSGGFGPA() 67 &MSGGFGPA NetView MSGGMFLG() 68 &MSGGMFLG NetView MSGGMID() 68 &MSGGMID NetView MSGGSEQ() 68 &MSGGSEQ NetView MSGGSYID() 68 &MSGGSYID NetView MSGGTIME() 68 &MSGGTIME NetView MSGID() 68 &MSGID NetView MSGITEM() 69 なし NetView MSGORIGN() 69 &MSGORIGIN NetView MSGSRCNM() 70 &MSGSRCNM NetView MSGSTR() 70 &MSGSTR NetView MSGTOKEN() 71 &MSGTOKEN NetView MSGTSTMP() 71 &MSGTSTMP NetView MSGTYP() 71 &MSGTYP NetView MSGVAR() 71 なし NetView MSGVAR(number) 71 &1 から &31 NetView MSUSEG(...) 85, 139 &MSUSEG NetView MVSLEVEL() 95 &MVSLEVEL NetView NVCNT() 55 &NCCFCNT NetView NVDELID() 72 &NVDELID NetView NVID(n) 56 &NCCFID NetView NVSTAT(name) 56 &NCCFSTAT NetView NETID() 95 &NETID NetView NETVIEW() 96 &NETVIEW NetView NETVIEW('x') 96 なし NetView OPID() 93 &OPID NetView OPID('x') 93 なし NetView OPSYSTEM() 96 &OPSYSTEM NetView プログラミング: REXX および NetView コマンド・リスト言語 REXX と NetView コマンド・リスト言語の比較 表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き) REXX 関数または変数 記載 ページ NetView 制御変数 REXX 関数の 提供元 PANEL() 96 なし NetView PARMCNT() 54 &PARMCNT NetView ARG(1) 54 &PARMSTR REXX PARTID() 96 &PARTID NetView PRTY() 72 &PRTY NetView REPLYID() 72 &REPLYID NetView RC 55 &RETCODE REXX ROUTCDE() 72 &ROUTCDE NetView RXDEFENV() 99 &RXDEFENV NetView RXDEFSTR() 99 &RXDEFSTR NetView RXNUMENV() 99 &RXNUMENV NetView RXOVRENV() 99 &RXOVRENV NetView RXOVRSTR() 99 &RXOVRSTR NetView SESSID() 73 &SESSID NetView SMSGID() 73 &SMSGID NetView STCKGMT() 96 &STCKGMT NetView SUBSTR(...) 142 &SUBSTR REXX SUBSYM(...) 48 なし NetView SUPPCHAR() 96 &SUPPCHAR NetView SYSCONID() 73 &SYSCONID NetView SYSID() 73 &SYSID NetView SYSPLEX() 96 &SYSPLEX NetView TASK() 97 &TASK NetView TGLOBAL(name) 59, 166 &TGLOBAL NetView TIME() 99 &TIME REXX TOWER(...) 97 なし NetView TRAP() 97 なし NetView TYPE() 98 なし NetView VTAM() 98 &VTAM NetView VTCOMPID() 98 &VTCOMPID NetView WEEKDAYN() 98 &WEEKDAYN NetView WTO.REPLY 73 &WTOREPLY NetView 付録 E. REXX と NetView コマンド・リスト言語の比較 185 コマンド・リストのコマンド コマンド・リストで使用されるコマンド 「IBM Tivoli NetView for z/OS Command Reference Volume 1 (A-N)」と「IBM Tivoli NetView for z/OS Command Reference Volume 2 (O-Z)」で説明されている以下の NetView コマンドは、コマンド・リストで使用するためのものです。以下のコマン ドのうち FLUSHQ、MSGREAD、TRAP、および WAIT を除いたコマンドは、 REXX または NetView コマンド・リスト言語で書かれたコマンド・リストで使用 できます。 v DOM v FLUSHQ v GETMPRES v GETMSIZE v GETMTFLG v GETMTYPE v GLOBALV v MSGREAD v MSGROUTE v PARSEL2R v SDOMAIN (QUIET オプションを指定したもの) v TRAP v WAIT v WTO v WTOR 注: FLUSHQ、MSGREAD、TRAP、および WAIT の各コマンドは、REXX コマン ド・リストでのみ使用できます。 REXX コマンド・リストでコマンドを使用する場合は、変数置換を行わないコマン ドの部分を単一引用符で囲みます。 186 プログラミング: REXX および NetView コマンド・リスト言語 付録 F. コマンド・リストの例の索引 この付録には、本書に記載されている REXX および NetView コマンド・リストの 例についての参照テーブルを記載してあります。テーブル内の項目はアルファベッ ト順にリストされています。 このテーブルでは、コマンド・リスト例の名前、その関数の要旨、および本書内で のその例の記載個所を示してあります。 REXX コマンド・リストの例 表 21 は、本書で示されている REXX コマンド・リストの例をリストしたもので す。 表 21. REXX コマンド・リスト例の解説 コマンド・ リスト例 説明 参照個所 ACTAPPLS このコマンド・リストは、アクティブ・アプリケーションを 表示します。 191 ページの図 49 ACTLU このコマンド・リストは、VTAM ノードを活動化します。 193 ページの図 50 CHKOPNUM 194 ページの図 このコマンド・リストは、基本的な REXX 関数および NetView 特有の関数をコマンド・リストでどのように使用で 51 きるかを示します。 CHKOPNUM は、REXX PARSE 命令、 および NetView の MSGTRAP、WAIT、MSGREAD および GLOBALV コマンドの使用法を図示します。 CHKRSTAT 196 ページの図 このコマンド・リストは、もっと複雑な REXX 関数および NetView 特有の関数をコマンド・リストでどのように使用で 52 きるかを示します。 CHKRSTAT は、REXX INTERPRET 命 令と、 NetView WAIT および GETMLINE コマンドの使用 法を図示します。 CNMS1101 このコマンド・リストは、PPI 通信およびフルスクリーン自 動化の例です。 197 ページの 『CNMS1101』 CNME1080 これは、共通グローバル変数を再入可能な方法で更新する例 です。 209 ページの 『CNME1080』 CNMESRVAR これは、単一改訂変数を更新する例です。 210 ページの 『CNMSRVAR の例』 CNMSRVMC これは、コマンド改訂の NETVONLY アクションの例です。 213 ページの 『CNMSRVMC の例』 © Copyright IBM Corp. 1997, 2011 187 REXX 例の索引 表 21. REXX コマンド・リスト例の解説 (続き) コマンド・ リスト例 説明 参照個所 DSPRSTAT オペレーター端末タスク (OST) のオペレーターによって、こ 216 ページの図 のコマンド・リストを使用すると、特定の 1 つのリソースに 57 対して CHKRSTAT コマンド・リストを複数回実行した結果 を表示することができます。 CHKRSTAT コマンド・リスト によって検査される間隔に基づいて、リソースがどのくらい の頻度でアクティブになるかを判別する必要がある場合に、 援助機能として DSPRSTAT を使用してください。 GETCG GETCG コマンド・リストは、共通グローバル変数の値を獲 得して、それを要求元タスクに表示します。 217 ページの図 58 GREETING このコマンド・リストは、DATE コマンドを使用した待機お よびトラッピングの例を示します。 217 ページの図 59 LISTVAR このコマンド・リストの機能説明については、 NetView のオ 218 ページの図 ンライン・ヘルプを参照してください。 60 PRINT このコマンド・リストは、データ・セットのメンバーをシス テム印刷ファイルに印刷します。 220 ページの図 61 TYPE このコマンド・リストは、それを発行したユーザーの端末に データ・セットのメンバーを一度に 1 行表示します。 221 ページの図 62 TYPEIT このコマンド・リストは、それを発行したユーザーの端末に データ・セットのメンバーを一度に 1 行表示します。 223 ページの図 63 NetView コマンド・リスト言語の例 表 22 は、本書に記載されている、 NetView コマンド・リスト言語の例をリストし たものです。 表 22. NetView コマンド・リスト例の参照 コマンド・ リスト例 説明 参照個所 ACTONE 163 ページの図 このコマンド・リストは、 VTAM コマンドを発行して論理 44 装置 (LU) を活動化します。 ACTONE コマンド・リスト は、1 つのメッセージを待つための &WAIT の使用法を示し ます。 CLIST1 CLIST1 コマンド・リストは、ネストされたコマンド・リス ト UPDT1 を含んでいます。 CLIST1 と UPDT1 は、タス ク・グローバル変数の定義、参照、および更新の方法を示し ます。 169 ページの図 46 GLOBVAR1 GLOBVAR1 コマンド・リストは、個々のコマンド・リスト 内のユーザー変数、タスク・グローバル変数、および共通グ ローバル変数の有効範囲を図示します。 171 ページの図 48 PATH このコマンド・リストは、&WRITE 制御ステートメントおよ 126 ページの び VTAM コマンドを使用します。 『&WRITE 制御 ステートメン ト』 188 プログラミング: REXX および NetView コマンド・リスト言語 NetView コマンド・リスト言語例の索引 表 22. NetView コマンド・リスト例の参照 (続き) コマンド・ リスト例 UPDT1 説明 参照個所 CLIST1 コマンド・リストは、ネストされたコマンド・リス ト UPDT1 を含んでいます。 CLIST1 と UPDT1 は、タス ク・グローバル変数の定義、参照、および更新の方法を示し ます。 169 ページの図 47 付録 F. コマンド・リストの例の索引 189 NetView コマンド・リスト言語例の索引 190 プログラミング: REXX および NetView コマンド・リスト言語 付録 G. NetView のための REXX コマンド・リストの例 ここには、NetView プログラム用に書かれた REXX コマンド・リストの例を収録 してあります。これらの例は、NetView 環境で実行している REXX コマンド・リ ストで、 NetView によって提供されている命令および関数と、 REXX の標準的な 命令および関数とをどのようにして一緒に使用できるかを示しています。 ACTAPPLS の例 /* *******************************************************************/ /* */ /* ACTAPPLS - REXX VERSION */ /* */ /* DISPLAY ONLY THE ACTIVE APPLS */ /* */ /* *******************************************************************/ TRACE E SAY ’ACTIVE APPLICATIONS:’ /* Write the header */ SAY ’====================’ ’TRAP SUPPRESS MESSAGES IST350I IST097I’ /* Wait on the display */ ’D NET,APPLS’ ’WAIT 60 SECONDS FOR MESSAGES’ DO WHILE EVENT() = ’M’ SELECT /* SELECT on all events */ WHEN EVENT() = ’M’ THEN DO ’MSGREAD’ SELECT /* SELECT on message */ WHEN MSGID()=’IST350I’ THEN CALL FIRST OTHERWISE CALL ALLELSE END /* END - SELECT */ ’WAIT CONTINUE’ END /* EVENT() = M do loop */ OTHERWISE DO ’TRAP NO MESSAGES’ ’FLUSHQ’ END END /* END - SELECT */ END /* END - DO WHILE */ /* /* ALL NON-INFORMATIONAL MESSAGES GO HERE /* ALLELSE: RETURN /* /* THE MULTILINE WTO WITH THE APPL INFORMATION COMES HERE /* */ */ */ */ */ */ 図 49. ACTAPPLS の例 (1/2) © Copyright IBM Corp. 1997, 2011 191 REXX コマンド・リスト FIRST: ’GETMSIZE NUMLINES’ I = 0 TOTALACT = 0 DO WHILE NUMLINES ¬= I /* /* /* /* Determine the number of lines */ Initialize line number counter*/ Initialize total active appls */ DO for all lines */ NUMACT = 0 /* Number of active appls found on this line */ I = I + 1 /* Bump the line counter */ ’GETMLINE LINE’ VALUE(I) /* How many lines in the MLWTO? */ /* PARSE OUT THE LINE, A1 A2 A3 ARE APPL NAMES, S1 S2 S3 ARE STATUS */ PARSE VAR LINE MSG A.1 S.1 A.2 S.2 A.3 S.3 . DO CURR = 1 TO 3 IF S.CURR ¬= ’’ THEN /* Do we have a status? DO IF S.CURR = ’ACTIV’ THEN /* Is the current APPL active? NUMACT = NUMACT + 1 /* Bump the number active count ELSE DO S.CURR = ’’ /* APPL not active, so blank out A.CURR = ’ END END ELSE A.CURR = ’’ /* Not an APPL END /* END - DO CURR IF NUMACT ¬= 0 & (A.1 ¬= ’’ | A.2 ¬= ’’ | A.3 ¬= ’’) THEN SAY STRIP(A.1 A.2 A.3,’L’) TOTALACT = TOTALACT + NUMACT /* Bump the total active counter END /* END - DO WHILE SAY ’ ’ /* Blank line SAY ’NUMBER OF APPLICATIONS ACTIVE: ’TOTALACT EXIT 図 49. ACTAPPLS の例 (2/2) 192 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ */ */ */ REXX コマンド・リスト ACTLU の例 /* ACTLU COMMAND LIST - REXX VERSION */ /* FUNCTION : TO ACTIVATE A VTAM NODE. */ /* INPUT : 1 PARAMETER, THE NAME OF THE NODE. */ /**********************************************************************/ IF MSGVAR(1) = ’’ THEN /* NO FIRST PARAMETER ? */ DO /* THEN ISSUE REQUEST */ SAY ’PLEASE ENTER "GO NODENAME"’,/* REQUEST NODENAME FROM USER */ ’OR "GO STOP" TO CONTINUE’ /* OR, ALLOW USER TO STOP CLIST */ PARSE PULL NODE /* NODE = NODENAME OR STOP */ END /* THEN ISSUE REQUEST */ ELSE /* FIRST PARAMETER EXISTS */ NODE = MSGVAR(1) /* ASSUME IT IS A NODE NAME */ /* IF NODE=’STOP’ CLIST ENDS */ IF NODE¬=’STOP’ THEN /* DID USER CHOOSE TO STOP ? */ DO /* PROCESS NODENAME */ ’TRAP AND SUPPRESS ONLY MESSAGES IST* ’ /* TRAP ALL VTAM MSGS */ ’V NET,ACT,ID=’NODE /* ISSUE VTAM ACTIVATE FOR NODE */ IF RC=0 THEN /* VALID NODE NAME ? */ DO /* YES, RETURN CODE = 0 */ ’WAIT 30 SECONDS FOR MESSAGES’ /* WAIT FOR 30 SECONDS */ IF EVENT()=’M’ THEN /* OUT OF WAIT - IS THERE A MSG? */ DO /* PROCESS TRAPPED MESSAGE */ ’MSGREAD’ /* READ IN 1ST MESSAGE */ DO WHILE (RC=0) /* IF RC¬=0 THEN NO MORE MSGS */ SELECT /* DETERMINE WHICH MESSAGE HIT */ WHEN (MSGID() = ’IST061I’) /* NODE NOT FOUND */ THEN SAY ’==> LU UNKNOWN ’, /* INFORM USER */ ’TO YOUR VTAM <==’ WHEN (MSGID() = ’IST093I’) /* NODE NOW ACTIVE */ THEN SAY ’==> TERMINAL ’, /* INFORM USER */ MSGVAR(1)’ NOW ’, MSGVAR(2) ’<==’ OTHERWISE /* IGNORE THE VTAM MESSAGE */ ’WAIT CONTINUE’ /* CONTINUE WAITING */ END /* OF SELECT FOR IST061I/IST093I */ ’MSGREAD’ /* READ IN THE NEXT MESSAGE */ END /* DO WHILE RC=0, LOOP BACK */ END /* PROCESS TRAPPED MESSAGE DO */ /* OUT OF DO WHILE, CHECK FOR ERROR OR TIME-OUT EVENTS */ SELECT /* CHECK RESULT OF THE WAIT */ WHEN (EVENT()=’E’) THEN /* ERROR ENCOUNTERED ? */ SAY ’ERROR PROCESSING ’, /* INFORM USER */ ’ACTIVATE COMMAND’ WHEN (EVENT()=’T’) THEN /* WAIT TIME-OUT ENCOUNTERED? */ SAY ’NO RESPONSE TO ’, /* INFORM USER */ ’ACTLU CLIST FOR ’NODE OTHERWISE /* NO-OP */ END /* OF SELECT FOR ERROR/TIME-OUT */ END /* IF RC=0 (VALID NODENAME) */ END /* IF NODE¬=’STOP’ PROCESSING */ EXIT 図 50. ACTLU の例 CHKOPNUM の例 194 ページの図 51 は、PARSE 命令を使用するコマンド・リストの例です。 付録 G. NetView のための REXX コマンド・リストの例 193 REXX コマンド・リスト /**********************************************************************/ /* */ /* THE FOLLOWING REXX COMMAND LIST IS A FAIRLY SIMPLE EXAMPLE */ /* OF HOW SOME OF THE BASIC REXX FUNCTIONS AND NETVIEW-SPECIFIC */ /* FUNCTIONS CAN BE USED IN A COMMAND LIST. IT ILLUSTRATES THE USAGE*/ /* OF SUCH THINGS AS THE REXX ’PARSE’ INSTRUCTION, AND THE NETVIEW */ /* SUPPLIED ’MSGTRAP’, ’WAIT’, ’MSGREAD’, AND ’GLOBALV’ COMMANDS. */ /* */ /**********************************************************************/ /* */ /* COMMAND LIST NAME: CHKOPNUM */ /* */ /* THIS COMMAND LIST CAN BE USED PERIODICALLY TO CHECK THE */ /* NUMBER OF OPERATORS CURRENTLY LOGGED ON, AND WILL KEEP THE */ /* INFORMATION IN COMMON GLOBAL VARIABLES. THE INFORMATION */ /* COLLECTED CAN LATER BE RETRIEVED BY USING THE ’DISPLAY’ */ /* OPTION. */ /* */ /* INPUT: */ /* ’’ - WILL CHECK THE NUMBER OF OPERATORS LOGGED ON */ /* AND UPDATE APPROPRIATE COMMON GLOBAL VARIABLES */ /* ’DISPLAY’ - WILL ANALYZE THE VALUE IN THE COMMON GLOBAL */ /* VARIABLES AND DISPLAY THE RESULTS */ /* ANY OTHER */ /* INPUT - WILL DEFAULT TO ’’ */ /* */ /* USAGE EXAMPLE: */ /* 1. EXECUTE THE FOLLOWING TO CAUSE THE NUMBER OF */ /* OPERATORS TO BE CHECKED AT A CERTAIN TIME (COULD BE */ /* ANY TIME PERIOD); */ /* -> ’AT 08:00:00,CHKOPNUM’ */ /* 2. AT ANY TIME, EXECUTE THE FOLLOWING COMMAND TO DISPLAY */ /* THE RESULTS OF THE PREVIOUS EXECUTIONS: */ /* -> ’CHKOPNUM DISPLAY’ */ /* RESULTS WILL BE DISPLAYED ON YOUR TERMINAL */ /* */ /* CHANGE CODE DATE DESCRIPTION */ /* ----------- -------- ------------------------------------------ */ /* */ /**********************************************************************/ 図 51. CHKOPNUM の例 (1/2) 194 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト SIGNAL ON ERROR PARSE ARG OPTION ’GLOBALV GETC CHKOPTIMES, CHKOPNUM, CHKOPMAX’ IF OPTION = ’DISPLAY’ THEN DO; IF CHKOPTIMES = ’’ THEN SAY ’NUMBER OF OPERATORS HAS NEVER BEEN CHECKED’ ELSE DO; SAY ’NUMBER OF OPERATORS HAS BEEN CHECKED ’CHKOPTIMES’ TIMES’ SAY ’AVERAGE NUMBER OF OPERATORS LOGGED ON IS: ’CHKOPNUM/CHKOPTIMES SAY ’MAXIMUM NUMBER OF OPERATORS LOGGED ON IS: ’CHKOPMAX END; EXIT 0; END; CUROPNUM = 0 ’TRAP AND SUPPRESS MESSAGES OPERATOR:,END’ ’LIST STATUS=OPS’ DO UNTIL MSGID()=’END’ ’WAIT FOR MESSAGES’ ’MSGREAD’ IF MSGID() = ’OPERATOR:’ THEN CUROPNUM = CUROPNUM +1 ELSE NOP END IF CHKOPTIMES = ’’ THEN CHKOPTIMES = 1 ELSE CHKOPTIMES = CHKOPTIMES + 1 IF CHKOPNUM = ’’ THEN CHKOPNUM = CUROPNUM ELSE CHKOPNUM = CHKOPNUM + CUROPNUM IF CHKOPMAX = ’’ THEN CHKOPMAX = CUROPNUM ELSE IF CHKOPMAX < CUROPNUM THEN CHKOPMAX = CUROPNUM ’GLOBALV PUTC CHKOPTIMES, CHKOPNUM, CHKOPMAX’ EXIT 0; ERROR: SAY ’ERROR OCCURRED. EXIT -1; RETURN CODE = ’ RC 図 51. CHKOPNUM の例 (2/2) CHKRSTAT の例 196 ページの図 52 は、INTERPRET 命令を使用するコマンド・リストの例です。 付録 G. NetView のための REXX コマンド・リストの例 195 REXX コマンド・リスト /**********************************************************************/ /* */ /* THE FOLLOWING REXX COMMAND LIST IS MORE COMPLEX THAN CHKOPNUM. */ /* IT ILLUSTRATES USAGE OF SUCH THINGS AS THE REXX ’INTERPRET’ */ /* INSTRUCTION, AND THE NETVIEW ’WAIT’ (FOR MESSAGES AND TIME), */ /* AND THE ’GETMLINE’ COMMAND (FOR MULTILINE MESSAGES) */ /* */ /**********************************************************************/ /* */ /* COMMAND LIST NAME: CHKRSTAT */ /* */ /* THIS COMMAND LIST CHECKS WHETHER A SPECIFIED RESOURCE */ /* IS ACTIVE, AND INCREMENTS A COMMON GLOBAL VARIABLE THAT */ /* REFLECTS THE NUMBER OF TIMES IT WAS IN THAT STATE. THIS */ /* COMMAND LIST SHOULD BE SCHEDULED TO RUN UNDER AN AUTOTASK */ /* AT REGULAR INTERVALS. */ /* */ /* INPUT PARAMETERS: */ /* RESNAME - NAME OF RESOURCE TO CHECK STATUS OF */ /* */ /* CHANGE CODE DATE DESCRIPTION */ /* ----------- -------- ------------------------------------------ */ /* */ /**********************************************************************/ SIGNAL ON ERROR /* SIGNAL IF ERROR OCCURS */ PARSE UPPER ARG RESNAME /* GET INPUT, IF ANY */ /* IF NO RESOURCE NAME GIVEN, DISPLAY ERROR MESSAGE AND EXIT IF RESNAME = ’’ THEN DO; SAY ’RESOURCE NAME MUST BE PROVIDED’ EXIT 99 END /* SET UP TRAP FOR POSSIBLE RESPONSES TO ’D NET,ID=’ COMMAND, ISSUE /* COMMAND, AND WAIT FOR MESSAGE TO ARRIVE ’TRAP AND SUPPRESS MESSAGES IST097I IST075I IST453I’ ’D NET,ID=’RESNAME ’WAIT 60 SECONDS FOR MESSAGES’ /* IF MESSAGE DID NOT ARRIVE, THEN GIVE ERROR MESSAGE AND EXIT IF EVENT() ¬= ’M’ THEN DO SAY ’ NO RESPONSE FROM VTAM - RESOURCE COUNT NOT UPDATED ’ EXIT 99 END /* READ MESSAGE. IF IT IS IST097I, ISSUE WAIT AGAIN, AND THE NEXT /* MESSAGE READ SHOULD BE IST075I, WHICH HAS THE STATUS INFO 図 52. CHKRSTAT の例 (1/2) 196 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ REXX コマンド・リスト ’MSGREAD’ IF MSGID() = ’IST097I’ THEN DO; ’WAIT CONTINUE’ ’MSGREAD’ /* IF THE MESSAGE IS NOT IST075I, DO NOTHING, AND THE STATUS WILL */ /* DEFAULT TO INACTIVE. IF IT IS IST075I, GET THE 2ND LINE OF THE */ /* MULTI-LINE MESSAGE AND GET THE CURRENT STATE FROM THAT LINE */ IF MSGID() = ’IST075I’ THEN DO ’GETMLINE STATLINE ’ 2 /* IF STRING CONTAINS IST486I THEN PARSE OUT RESOURCE STATUS */ IF INDEX(STATLINE,’IST486I’) >0 THEN PARSE VALUE STATLINE WITH MSGTXT1 ’STATUS=’ RESSTATE . END END /* IF THE CURRENT STATE IS ACTIVE OR ACTIVE W/SESSION, THEN GET /* INCREMENT AND UPDATE THE COMMON GLOBAL VARIABLE WITH THE NAME /* ’RESOURCE NAME’ CONCATENATED WITH ’@A’. NOTE THAT SINCE THE /* GLOBALV COMMAND REQUIRES THE VARIABLE NAME, A VARIABLE HAS /* TO BE SET TO THE VARIABLE NAME, SINCE IT IS DYNAMICALLY /* CONSTRUCTED. THE REXX INTERPRET INSTRUCTION MUST ALSO BE USED /* TO PERFORM OPERATIONS ON THE DYNAMICALLY CONSTRUCTED VARIABLE IF RESSTATE = ’ACTIV’ | RESSTATE = ’ACT/S’ THEN DO VARNAME = RESNAME\’@A’ ’GLOBALV GETC ’VARNAME INTERPRET ’ACT# =’VARNAME IF DATATYPE(ACT#) ¬= ’NUM’ THEN ACT# = 1 /* IF NONNUMERIC ELSE ACT# = ACT# + 1 INTERPRET VARNAME’=ACT#’ ’GLOBALV PUTC ’VARNAME END /* IF THE CURRENT STATE IS NOT ACTIVE OR ACTIVE W/SESSION, THEN GET /* INCREMENT AND UPDATE THE COMMON GLOBAL VARIABLE WITH THE NAME /* ’RESOURCE NAME’ CONCATENATED WITH ’@NA’. NOTE THAT SINCE THE /* GLOBALV COMMAND REQUIRES THE VARIABLE NAME, A VARIABLE HAS /* TO BE SET TO THE VARIABLE NAME, SINCE IT IS DYNAMICALLY /* CONSTRUCTED. THE REXX INTERPRET INSTRUCTION MUST ALSO BE USED /* TO PERFORM OPERATIONS ON THE DYNAMICALLY CONSTRUCTED VARIABLE ELSE DO VARNAME = RESNAME\’@NA’ ’GLOBALV GETC ’VARNAME INTERPRET ’NACT# =’VARNAME IF DATATYPE(NACT#) ¬= ’NUM’ THEN NACT# = 1 /* IF NONNUMERIC ELSE NACT# = NACT# + 1 INTERPRET VARNAME’=NACT#’ ’GLOBALV PUTC ’VARNAME END EXIT 0; ERROR: SAY ’ERROR OCCURRED. RETURN CODE IS ’ RC EXIT -1; /* END COMMAND LIST FOR ERROR */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ 図 52. CHKRSTAT の例 (2/2) CNMS1101 198 ページの図 53 は、PPI 通信およびフルスクリーン自動化の例です。 付録 G. NetView のための REXX コマンド・リストの例 197 REXX コマンド・リスト /**********************************************************************/ /* Licensed Materials - Property of IBM */ /* 5697-ENV (C) Copyright IBM Corp. 1997, 2007 */ /* All rights reserved. */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* NAME(PIPESAMP) SAMPLE(CNMS1101) RELATED-TO(PIPE) */ /* -------------------------------------------------------------------*/ /* ---------------- The Purpose of this Sample -----------------*/ /* This is a compilation of "examples" given in the Customization: */ /* Pipelines book and elsewhere, related to NetView Pipelines. The */ /* sample is intended only to save you the effort of typing in */ /* examples in order to try them. */ /* */ /* You can run these example directly from CNMS1101, if desired, by */ /* doing this: */ /* 1 Copy CNMS1100 into the concatenation under DSICLD */ /* 2 Invoke it with one or more numbers to indicate the example(s) */ /* you wish to run. */ /* */ /**********************************************************************/ SIGNAL ON HALT sep = ’08’X; endc = ’09’X; delim = ’0A’X /* It is often helpful to use non-printable characters for the */ /* various delimters in our pipeline specifications. This */ /* reduces the chance that some character in the data will */ /* cause a conflict. */ /* Examples included are... ex.1 = "A LIST ’’ with a twist." ex.2 = "Retrieve Alert History." ex.3 = "MAPCL ’automated’ display." ex.4 = "D A,L with columnar data separated." ex.5 = "NetView tasks output remapped." ex.6 = "Picking thru the data with PICK." ex.7 = "PPI ’responder’ - use with ’requestor’..." ex.8 = "PPI ’requestor’ - use with ’responder’ above." ex.9 = " Preceding two functions can work together when run on" ex.10 = " different NetViews running in the same host. " ex.11 = "Allocate a new sequential file and write to it. " ex.12 = "Interrupt and terminate a previous instance of CNMS1101. " ex.13 = "Format and send an alert to NPDA." ex.14 = "Display dynamically updated VIEW of RESOURCE data." ex.15 = "Display persistant VIEW of RESOURCE data, auto update." ex.0 = 15 >>---------------------*/ 図 53. CNMS1101 の例 (1/11) 198 プログラミング: REXX および NetView コマンド・リスト言語 */ REXX コマンド・リスト arg functions IF functions = ’’ THEN DO; address netvasis, ’PIPE (NAME FUNLIST END ¥)’, ’| STEM EX.’, ’| CM: NLOC 1.1 / /’, ’| COUNT EACHLINE’, ’| COLOR WHITE’, ’| EDIT LINECOUNT 1 1.* NEXTWORD’, ’| T: FANINANY’, ’| A: COLLECT’, ’| CONSOLE ONLY’, ’¥ LITERAL /Functions supported are.../’, ’| COLOR PINK’, ’| A:’, ’¥ CM:’, ’| COLOR BLUE’, ’| T:’ END; ELSE DO parse var functions step funcArgs SELECT WHEN (¬datatype(step,’W’)) THEN say ’Function codes must be numeric’ WHEN (step=1) THEN CALL PATLIST funcArgs WHEN (step=2) THEN CALL ShowALH funcArgs WHEN (step=3) THEN CALL MAPCL funcArgs WHEN (step=4) THEN CALL DALspread funcArgs WHEN (step=5) THEN CALL TasksOut funcArgs WHEN (step=6) THEN CALL PickData funcArgs WHEN (step=7) THEN CALL Responder funcArgs WHEN (step=8) THEN CALL Requestor funcArgs WHEN (step=9) THEN CALL NewFile funcArgs WHEN (step=10) THEN CALL EndMe funcArgs WHEN (step=11) THEN CALL MakeAlert funcArgs WHEN (step=12) THEN CALL resDyn funcArgs WHEN (step=13) THEN CALL presDyn funcArgs OTHERWISE say ’Function number’ step ’out of range.’ END END EXIT 図 53. CNMS1101 の例 (2/11) 付録 G. NetView のための REXX コマンド・リストの例 199 REXX コマンド・リスト /*---------------------<<< red white and blue > /* This one is not found in the book. See if you can predict what it /* does before you run it... PATLIST: ’PIPE (NAME PATLIST END ¥)’, ’| NETV LIST ’’’’’, /* what a way to type LIST ’’! ’| COLLECT MAX 3’, /* make three line groups ... ’|A: SEPARATE SEQUENCE’, /* separate to many output streams ’| COLOR RED’, ’|B: FANINANY’, /* bringing the stream back together ’| CONS ONLY’, , /* ------------------ end of simple pipeline 1 -------’¥A:’, /* secondary output of separate... ’| COLOR WHITE’, ’|B:’, /* and send it back upstream , /* ------------------ end of simple pipeline 2 -------’¥A:’, /* tertiary output of separate... ’| COLOR BLUE’, ’|B:’ /* and sent it upstream, too RETURN 0 ShowALH: PROCEDURE ’ATTACH NPDA’ ’PIPE ’| ’| ’| ’| ’| ’| ’+ ’| /*----- (NAME AHIST1 END +)’, VET NEXT ROWS’, CORRWAIT MOE 60’, NLOCATE 1.7 /BNH150I/’, CONSOLE’, A: LOCATE 1.7 /DWO369I/’, VAR timeout’, A:’, VAR npdamsg’ */ */ */ */ */ */ */ */ */ */ */ */ Retrieve Alert History -----*/ /* Output, including messages will be */ /* saved for future VET call */ /* Start a pipe */ /* give update when it arrives, as image*/ /* Wait 60 sec for first NPDA screen */ /* I KNOW what first screen looks like */ /* show badness */ /* Separate timeout message (MOE) */ /* save timeout message */ /* other message? */ /* ...save first for test */ If symbol(’timeout’) = ’VAR’ THEN /* timeout? Signal TIMEOUT /* handle unexpected error If symbol(’npdamsg’) = ’VAR’ THEN /* some NPDA error RETURN 20 /* messages from NPDA already shown /*----------------- Down to business -----------------------*/ /* Type a ’ALH’ (Alerts History) in the command area and push enter. ’VET /ALH/’ /* Sending the ’ALH’ and an enter key. /* Unlike the example in the book, the following saves the alert history /* data in a SAFE, so that it can be COLLECTed before being shown. 図 53. CNMS1101 の例 (3/11) 200 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ */ */ REXX コマンド・リスト Do UNTIL(thispage = lastpage | RC¬=0) ’PIPE (NAME AHISTLP END =)’, /* start a big pipe */ ’| VET NEXT ROWS’, /* give update when it arrives, as image*/ ’| CORRWAIT MOE 60’, /* Wait 60 sec for rnd trip to DST... */ ’| SC: LOCATE 1.7 /BNH150I/’,/* expected screen with data.. */ ’| SEPARATE’, /* handle lines individually... */ ’| PG: DROP 4’, /* drop header area... */ ’| DROP LAST 1’, /* command line */ ’| MSG: DROP LAST 3’, /* message area, hopefully blank */ ’| STRIP TRAILING’, /* shorten line ending in blank, so we */ ’| LOCATE 1 //’, /* can toss out blank lines */ ’| SAFE CNMS1101 APPEND’, /* save data for report to user */ ’| TAKE 1’, /* AND use ONE new data line to trigger */ ’| NETV VET /FORWARD/’, /* ...new data, then go to next screen */ ’= MSG:’, /* Immed message area from NPDA */ ’| LOCATE 2.3 /BNJ/’, /* any error message in immed area */ ’| CONSOLE’, /* REPORT it, too. */ ’| VAR npdamsg’, /* save for test */ ’= SC:’, /* message instead ?? This is bad. */ ’| A: LOCATE 1.7 /DWO369/’, /* Separate timeout message (MOE) */ ’| VAR timeout’, /* save timeout message */ ’= A:’, /* other message ? ?? This is bad. */ ’| CONSOLE’, /* show badness */ ’| VAR npdamsg’, /* ...save first for test */ ’= PG:’, /* get header area */ ’| DROP 2’, /* drop BNH150 and NPDA head-date line */ ’| VAR pagedata’ /* ...save pagedata for test */ If symbol(’timeout’) = ’VAR’ THEN /* timeout? is possible? */ Signal TIMEOUT /* handle unexpected error */ Parse var pagedata . ’PAGE’ thispage . lastpage /* parse out page nos. */ End /* */ ’VET /END/’ ’PIPE SAFE CNMS1101|COLLECT|CONS’ ’PIPE VET |CORRWAIT 10|HOLE’ ’DETACH’ /* In the context of CNMS1101, automatic DETACH is not approp. RETURN 0 */ 図 53. CNMS1101 の例 (4/11) 付録 G. NetView のための REXX コマンド・リストの例 201 REXX コマンド・リスト MAPCL: PROCEDURE /* Change the display of MAPCL... /* ----------------------------------------------------------------------/* Originally designed to run from automation of CNM429I, output of the /* MAPCL command, this version will invoke MAPCL. If you desire to run /* this code from the automation of CNM429, chaage the "NETV MAPCL" to /* "SAFE *" The purpose is to insert "Y" or "N" into the DP /* (drop pending) column according to whether the column is blank. /* Message attributes are preserved. /*------------<<< The color is just for fun. >>>------------*/ ’PIPE (NAME CNM429 END >)’, ’| NETVIEW MAPCL’, /* from automation, use "SAFE *" ’| TOP: SEPARATE DATA’, /* Send three label lines to "TOP" ’| BOTM: TOSTR NOINCL 1.8 /--------/’, /* Send totals lines to "BOTM" ’| COLOR GREEN’, ’| PLN: LOCATE 61.2 / /’, /* blank here means ’not pending’ ’| EDIT 1.* 1 /N/ 62’, /* copy all, then insert "N" ’| ALL: FANINANY’, ’| COLLECT’, ’| CONSOLE ONLY’, , /*================= end of main pipeline ’> TOP:’, ’| COLOR WHITE’, ’| ALL:’, , /*================= end of label processing ’> BOTM:’, ’| COLOR BLUE’, ’| ALL:’, , /*================= end of totals line procsng ’> PLN:’, ’| EDIT 1.* 1’, /* Copy over all of the input text ’/Y/ 62’, /* Insert "Y" where asterisk was ’| ALL:’ /* and send it back upstream RETURN 0 DALspread: /* Output of D A,L is spread out /* There are three (?) groups of lines: /* 1. Control and label lines, we preserve these -- check out /* the function "SEPATATE DATA". /* 2. Job status data lines. These have TWO jobs per line; we’d /* like to see ONE job per line. Here we use CHOP to split /* then apart; could be done with EDIT, too. /* 3. TSO user status lines. Not differentiated from type 2, they /* get a bit mangled. More should be done... 図 53. CNMS1101 の例 (5/11) 202 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ REXX コマンド・リスト ’PIPE (NAME DAL END ¥)’, /* ’| CORRCMD MVS D A,L’, /* corrcmd adds then needed wait ’|A: SEPARATE DATA’, /* short non-data lines to "white" below ’|C: CHOP 35’, /* throw "out" data after column 35 ’| COLOR BLUE’, /* left part of data becomes blue ’|Z: FANINANY’, /* parts of data coming back. Try FANIN ’|LABELS: COLLECT’, /* reassemble into MLWTO ’| CONS ONLY’, /* , /* ------------- end of simple pipeline 1 ---------’¥C:’, /* One, last right half may have nothing. ’| STRIP TRAILING’, /* This combo strips it, tests for any’| LOCATE 1 //’, /* thing left? ...so we don’t get a blank ’| COLOR TUR’, /* line. ’|Z:’, /* , /* ------------- end of simple pipeline 2 ---------’¥ A:’, /* ctl & labels come here from SEP DATA ’| COLOR WHITE’, /* then we color them and send them back ’| LABELS:’ /* collect above RETURN 0 TasksOut: /* Reformat LIST STATUS=TASKS */ /* A demonstration of how to add multiple label lines to a multi/* line message. We also refomat the tabular data to remove /* extraneous verbiage. The output lines of LIST STATUS=TASKS /* look like this: (scale added below) /* TYPE: PPT TASKID: NTV7EPPT RESOURCE: NTV7EPPT STATUS: ACTIVE /* |...+....1....+....2....+....3....+....4....+....5....+....6.... */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ address NETVASIS, ’PIPE (NAME TASKLIST END ¥)’,/* */ ’| NETV LIST STATUS=TASKS’, /* issuing the synchronous command */ ’| DROP LAST 1’, /* throw out "END OF ..." */ ’| COLOR GREEN’, /* nice color for the data lines */ ’| EDIT WORD 2 1’, /* getting "type" value; it’s first */ ’19.8 8’, /* at char 19, taskid begins; put in col 8*/ ’38.8 19’, /* at char 38, find resource; move to 19 */ ’55.* 35’, /* at char 55, find status; move to col 35*/ ’| LABS: COLLECT’, /* everything gets collected here */ ’|CONS ONLY’, , /* ------------- end of simple pipeline 1 ---------- */ , /* It’s a little weird, but the stuff below here */ , /* is absorbed by COLLECT before the data lines */ , /* we worked on above. */ ’¥ FAN: FANIN’, /* stuff from below brought together here,*/ ’| LABS:’, /* IN ORDER, and then sent upstream */ , /* ---------- end of VERY simple pipeline 2 -------- */ ’¥ LIT !Status of NetView Tasks!’, /* first label line is */ ’| COLOR YEL’, /* made yellow and passed up */ ’| FAN:’, /* to FANIN’s first input! */ "¥ LIT !Task Task’s Taskname or Current!", /* second label */ ’| COLOR PINK’, /* is pink and goes to FANIN’s*/ ’| FAN:’, /* second output, etc. */ "¥ LIT !type ID Resource Status!", ’| COLOR PINK’, ’| FAN:’ /* Notice how the colored label lines remain fixed to the top */ /* both on the NCCF screen and in WINDOW. */ RETURN RC 図 53. CNMS1101 の例 (6/11) 付録 G. NetView のための REXX コマンド・リストの例 203 REXX コマンド・リスト PickData: PROCEDURE /* use PICK to segregate the data ’PIPE (NAME LOWUSERX)’, ’| NETVIEW MAPCL’, ’| SEPARATE’, ’| DROP 3’, ’| DROP LAST 2’, ’| PICK 14.5 < / 6/’, ’| CONSOLE ONLY’ /* /* /* /* /* /* obtain display of all REXX in storage handle lines individually header lines trailer line and totals compare 5 chars from data with "6" display result */ */ */ */ */ */ */ /* Luckily, blanks are "less than" number in EBCIDC order. So the */ /* comparison works when the number in the data line is more than */ /* one digit long. */ RETURN 0 Responder: /* /* /* /* /* /* /* /* /* /* /* /* /* PROCEDURE PPI "responder": When a request is and end, color is is designed to be EXPOSE step This program waits (forever) for a request. received, new lines are added to the begining added and the result sent back. "Responder" used with the "requestor", below. "Forever", in this context, means "never timeout". The wait can end in several ways, including having an operator issue RESET or a remote operator issue STOP FORCE. This sample provides for an option to end this wait by command. Since PPI is being used as a receiver, commands queued at low priority or by automation will be executed promptly, despite the "WAIT *". The "end me" option uses UNIQUE to end a previous instance of CNMS1101. */ */ */ */ */ */ */ */ */ */ */ */ */ address NETVASIS, ’PIPE (NAME PPIW1101 END ;)’, ’|A: PPI PPIS1101’, /* PPI as receiver, RC -> A: */ ’| WAIT *’, /* wait "forever" */ ’| COUNT EACHMSG’, /* counting requests */ ’| COLOR RED REV’, /* */ ’| EDIT "TC" LINETYPE /Your’’s is request/ 1’, ’MSGCOUNT NW’, ’WL’, /* build "stuff" onto his */ ’"TL" LINETYPE’, /* request to make our */ ’/label line / 1’, /* response */ ’WL’, ’1.* 1’, ’| EDIT COPY * /last line/ NW’, /* more "stuff" */ ’| COLLECT MAX 1’, /* fixup line types, ?? */ ’|B: PPI (NV) *’, /* rtrn answer to sender, NV */ ’| EDIT /Response sent to/ 1 ’, /* report what we did */ ’IFRAUSDR NW’, 図 53. CNMS1101 の例 (7/11) 204 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト ’| ’; ’| ’| ’| CONS’, A:’, NLOCATE 1.11 /+0000000000/’, COLOR WHI’, EDIT /Error code from receive:/ 1’, ’1.* NW’, ’| CONS’, ’;B:’, ’| NLOCATE 1.11 /+0000000000/’, ’| COLOR YEL’, ’| EDIT /Error code from send:/ 1’, ’1.* NW’, ’| CONS’, ’; LIT /CNMS1101 7 ready to respond to requests./’, ’| CONS’ RETURN 0 Requestor: PROCEDURE /* Send a request to ’responder’ coded /* above. */ */ address NETVASIS, ’PIPE (NAME PPIQ1101 END ;)’, ’| A: PPI PPIS1101 /req command from’ opid() ’ at’ domain() ’/’, ’| WAIT 52’, ’| CONS’, ’; A:’, ’| NLOCATE 1.11 /+0000000000/’, ’| COLOR PIN’, ’| EDIT /Error code from request:/ 1’, ’1.* NW’, ’| CONS’ RETURN 0 NewFile: PROCEDURE /* Allocate a new file and write to it. */ fiName = "’USER1.SEQTEST’" "ALLOC DATASET("fiName") FILE(OUTFILE)", "RECFM(V) CATALOG NEW", "BLKSIZE(260) LRECL(256) DSORG(PS) VOLUME(yourname)" IF rc <> 0 THEN SAY ’ALLOCATE ERROR CODE = ’rc ELSE DO ’FREE FI(OUTFILE)’ "PIPE (END ;) LIT /data line/ | > "fiName" | CONS ONLY" END RETURN 0 EndMe: PROCEDURE ’UNIQUE’ RETURN 0 図 53. CNMS1101 の例 (8/11) 付録 G. NetView のための REXX コマンド・リストの例 205 REXX コマンド・リスト MakeAlert: PROCEDURE /* Make an alert and send it to NPDA. */ altxt = ’41038D0000000000’X /* NMVT header */ altxt = altxt||’005E0000’X /* Major vector len & key */ altxt = altxt||’0B92000001330104059737’X /* Add subvectors... */ altxt = altxt||’1010000D110E0A0040F2F3F4F5F6F7F8’X altxt = altxt||’2A95120117111712171317141715171617171718’X altxt = altxt||’16811014101510161017101810191020102110221023’X altxt = altxt||’1103030109C7C5D5C14BF34040C3D6D4C3’X altxt = altxt||’04931001’X ’pipe (end ;) var altxt|a:ppi *alert|hole;a:|cons’ RETURN 0 /* -------------- Dynamic Resource Display (option 12) -------------- */ /* A demonstration of using VIEW and TRAP to dynamically update a */ /* full screen display. We use the SPILL option of pipe’s KEEP */ /* (new for V5) to create a message after the specified refresh */ /* interval. This message is TRAPped, causing VIEW to return */ /* control to this procedure WITHOUT removing the displayed panel. */ /* The ’RESUME’, below is a REINVOCATION of the original VIEW!!! */ /* */ /* Note that the first call to "fillVars" passes an extra little */ /* bit of pipe to the subroutine. The purpose is to get the first */ /* word of the second data line (STC name) for the panel. */ /* */ /* ------------------------------------------------------------------ */ resdyn: interval = 10 /* refresh at 10 second intervals privMsgID = ’CNMRESDYN’ /* special purpose "msgid" for trapping getSTC = ’% STC:|DROP 1|TAKE 1|EDIT W1|VAR JBN’ Call fillVars getSTC /* set local variables with data from RESOURCE ’TRAP AND SUPPRESS MESSAGES’ privMsgID /* TRAP our special message ’PIPE VAR privMsgID | KEEP RESDYN’ interval ’SPILL’ /* make msg later ’VIEW RESDYN CNMSRESP EXTEND’ DO WHILE (rc = 2) /* RC indicates "message trapped"? ’MSGREAD’ /* just getting msg off trap queue */ CALL fillVars ’PIPE VAR privMsgID | KEEP RESDYN’ interval ’SPILL’ /* make msg later ’RESUME’ /* Invoke VIEW, previously suspended /* NOTE: RC, at this point, is RC from VIEW, which was resumed. END ’pipe hole | keep resdyn’ /* empty safe created above */ return /* ----------- Obtain data for RESDYN display (option 12) ----------/* Notice that the stem variable "out." is in our local variable /* dictionary. VIEW could always read these value; new for V5R1, /* we will have an opportunity to update them while VIEW is active. /* --------------------------------------------------------------- 図 53. CNMS1101 の例 (9/11) 206 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ */ */ */ */ */ */ */ */ REXX コマンド・リスト fillVars: ARG xtraStg /* use extra first time only */ ’PIPE (NAME RESDYN END %)’, ’| NETVIEW RESOURCE’, ’| SEPARATE DATA’, /* No use for DSI386I title line */ ’| STC: FANOUT’, /* MAYBE need extra copies */ ’| EDIT SKIPTO /=/ 2.* STRIPL 1 ’, ’| COLOR WHITE’, ’| $STEM OUT.’, xtraStg TM = date() time() $TM = ’CB HR’ return /* -------------- Dynamic Resource Display (option 13) -------------- :: This is superficially like the previous like the previous sample (excuse our lack of imagination), but shows useful (and, we think, EASIER) ways of getting asynchronous information to update a VIEW panel. We continue to use RESOURCE, making it asynchronous by running it at a VOST (hence the ATTACH) and making it repeat by using the time-out code from a PIPE WAIT to redrive the command found in the secondary stream. See definition of TimdResc below -- this command could be used from the NCCF command line, if desired, but use ACTION=DISPLAY with your ATTACH in that case. The output of TimdResc is captured by the PERSIST and delivered to our trap queue. The presence of a message there makes VIEW give control back to this REXX so that the message can be processed (RC=2 from VIEW for this). We use the "termination text" option on PERSIST - TRAP to determine when we must exit; VIEW always sets EVENT() to M when it returns for a message. We will get the tText when the PERSIST ends either from time-out or because of STOP PERSIST, STOP VOST, etc. Notice that this sample does not pre-populate the VIEW variables with values as in resdyn (12) above. Instead, a LITERAL value in the TimdResc command causes a message to be returned to us promptly. The first instance of VIEW initializes, then returns control here and we populate the values from the first "asynchronous" response. 図 53. CNMS1101 の例 (10/11) 付録 G. NetView のための REXX コマンド・リストの例 207 REXX コマンド・リスト :: -------------- Dynamic Resource Display (option 13) -------------presDyn: address netvasis /* don’t fold tText in pipe below interval = 10 /* refresh at 10 second intervals TimdResc =, /* create the async command "PIPE (NAME TimdResc END % STAGESEP &)", "& A: WAIT" interval, /* time-out with R-code every 10 secs "& HOLE", /* just here to burn primary stream "% A:", /* time-out code (msg) comes here "& LITERAL /first msg/", /* hurry! need a msg quickly "& NETV RESOURCE", /* issue RES cmd each time a msg comes "& CONSOLE" */ tText = "---End---" /* text of LAST message from trapping suppchar() ||, /* do not echo attached cmd "PIPE (NAME AttTiRs)", "| NETV ATTACH (MONO,ACTION=CORR)", /* correlate msgs from cmd TimdResc, /* command to make data every 10 secs "| PERSIST 1440 TRAP" tText /* No wait->ALL msgs to the trap queue */ */ ’VIEW RESDYN CNMSRESP EXTEND’ DO WHILE (rc = 2) /* RC indicates "message trapped"? ’MSGREAD’ /* get one msg off trap queue -> current SELECT; WHEN msgID()=’DSI386I’ THEN /* this is expected,... do; CALL preFillVars /* Update local variables from msg data ’RESUME’ /* Invoke VIEW, previously suspended end; WHEN msgID() = tText THEN /* persist ended... t/o or stop’d RC = 0 /* to exit loop OTHERWISE /* Unexpected msg. what failed? ’PIPE SAFE * | LIT /pResDyn ends.../|LOGTO *’ /* also set RC END; /* NOTE: RC, after RESUME, is RC from VIEW, which was resumed. END */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ return /* ----------- Obtain data for pRESDYN display (option 13) ---------- */ /* Notice that the stem variable "out." is in our local variable */ /* dictionary. VIEW could always read these values; new for V5R1, */ /* we will have an opportunity to update them while VIEW is active. */ /* --------------------------------------------------------------- */ preFillVars: ’PIPE (NAME PRESDYN END %)’, ’| SAFE *’, ’| SEPARATE DATA’, /* No use for DSI386I title line */ ’| STC: FANOUT’, /* MAYBE need extra copies */ ’| EDIT SKIPTO /=/ 2.* STRIPL 1 ’, ’| COLOR WHITE’, ’| $STEM OUT.’ TM = date() time() $TM = ’CB HR’ return HALT: IF symbol(’step’) = ’VAR’ THEN say ’CNMS1101 function’ step ’ends.’ ’pipe hole | keep resdyn’ /* empty safe created by resdyn (12) */ EXIT -5 図 53. CNMS1101 の例 (11/11) 208 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト CNME1080 図 54 は、共通グローバル変数を再入可能な方法で更新する例です。 /*REXX*---------------------------------------------------------------*/ /* Licensed Materials - Property of IBM */ /* 5697-ENV © Copyright IBM Corp. 2009 */ /* All rights reserved. */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /*--------------------------------------------------------------------*/ /* -----------> Sample NETVONLY action command. This command gets control as a result of a Command Revision action: NETVONLY=CNMSRVMC It is designed to respond to a pseduo-command "V NetView,LOGON" issued from a regular MVS console. Or to a START command for a special procedure that should not be run during normal working hours. To see what triggers this command, read sample CNMSCRT1. Customers can code any number of different REXX procedures to be invoked by the NETVONLY action. This sample is only a model. Use any REXX function here, but the message based functions that return meaningful data are only sysconid() and sysid(). Use the recedata() function to obtain information about the origin of the command. <---------- */ ADDRESS NETVASIS /* important! prevent abuse by checking for proper environment */ callerASID = RECEDATA() /* Obtain ASID of cmd issuer */ IF callerASID = 0 THEN /* no RECE data? Then call must */ SIGNAL BadEnvr /* not be from NETVONLY action. */ /* The "command" that triggered NETVONLY is our arg... */ fullCmd = arg(1) parse arg verb Parm1 ’,’ theRest /* We handle two verbs: ’S’ or ’START’ and ’V’ or ’VARY’. Consider writting two procedures for simplicity. Both verbs come here ONLY when other conditions in the revision table are satisfied. See CNMSCRT1. */ SELECT WHEN (LEFT(verb,1) = ’S’) THEN /* It was a START cmd */ CALL startTooBig WHEN (LEFT(verb,1) = ’V’) THEN /* VARY cmd with NetView arg */ CALL getNVassoc OTHERWISE /* Should Not Occur unless CNMSCRT1 changed. */ do; msg = ’RECE command CNMSRVMC driven by system command "’ ||, arg(1) || ’". Please review CRT.’ ’pipe VAR msg | ROUTE AUTRCVR’ /* We purposely do not REISSUE here. Operator will get CNM017E */ end; END exit 0 図 54. CNME1080 の例 (1/2) 付録 G. NetView のための REXX コマンド・リストの例 209 REXX コマンド・リスト /* Ask the operator to confirm. Wait for response to the WTOR. Note: Waiting for the response here DOES NOT block other NETVONLY actions from proceeding. Note: if confirmed, this procedure issues the exact same command that caused this NETVONLY action. This will not start a loop and the reissued command will appear to have originated in the same environment as the original command (username & console). ---------- */ startTooBig: WTO.TEXT = ’TLH916W Procedure’ PARM1 ’is intensive.’, ’Answer "Y" to continue’ ’WTOR’ IF WTO.REPLY = ’Y’ THEN ’REISSUE MVS’ fullCmd ELSE do; WTO.TEXT = ’TLH917I start’ PARM1 ’canceled.’ ’WTO’ ’REISSUE SUPPRESS’ end; RETURN /* from startTooBig */ getNVassoc: username = RECEDATA(’U’) SELECT WHEN (username = ’*BYPASS*’) THEN ’WTO TLH006E Please logon to your system console’ WHEN (sysconid() = ’INSTREAM’ | sysconid() = ’INTERNAL’) THEN ’WTO TLH026E Console’ sysconid() ’cannot associate with NetView.’ OTHERWISE do ’AUTOTASK OPID=’ || username || ’CONSOLE=’ || sysconid() IF rc = 0 THEN ’MSG’ username ’association with NetView,’ domain()’, successful.’ ELSE ’WTO TLH662E Association with NetView failed:’ RC end END ’REISSUE SUPPRESS’ RETURN /* from getNVassoc */ BadEnvr: ’MESSAGE DSI290 CNMSRVMC’ opid() exit 12 図 54. CNME1080 の例 (2/2) CNMSRVAR の例 211 ページの図 55 は、単一改訂変数を更新する例です。 210 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト /*********************************************************************/ /* Licensed Materials - Property of IBM */ /* 5697-ENV © Copyright IBM Corp. 2009 */ /* All rights reserved. */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /*********************************************************************/ /* ---> This sample shows how to manipulate the "revision variable" table that exists in the NetView SSI and is loaded or queried using the SETRVAR command. This sample, invoked as a command, will accept a value of one variable. If the variable currently has a value, the new value will be substituted, without altering the other, existing variables. If the variable is new, it will be added. Remember that a null value (zero length) is the same (for revision variables) as not defined. Therefore this sample can be used to delete one variable. Syntax: CNMSRVAR varname /new value/ Where varname is any alphanumeric string, 1 to 12 characters /new value/ is a delimited string, 0 to 16 characters (use any delimiter, not only slash). Alternatively, user may specify the new value as hex string, for example CNMSRVAR myvar ’94A840A58193A485’X Remember - only the variable named is affected. Other variables are not changed. <--- */ SIGNAL ON FAILURE /* Report any serious error SIGNAL ON NOVALUE /* Report serious error SIGNAL ON HALT /* Report reset condition ADDRESS NETVASIS */ */ */ parse arg varname other /* */ IF varname = ’’ THEN /* varname required; value may be null */ SIGNAL NOARG /* The PARSE VAR below extracts a value from a delimited string OR from the ’ ’X sequence that identifies hex */ 図 55. CNMSRVAR の例 (1/3) 付録 G. NetView のための REXX コマンド・リストの例 211 REXX コマンド・リスト IF other = ’’ THEN /* no value? */ parse value ’ ’ WITH wantHex theValue /* nulls for delete action */ ELSE /* value is delim string or hex */ do; other = strip(other,’L’) /* for easier parsing */ parse var other delim +1 theValue (delim) wantHex theRest IF delim = ’7D’X & translate(wantHex) = ’X’ THEN /* hex! wantHex = ’’ /* absorb only valid value for this ELSE /* SETRVAR reads only hex from current message, so.. theValue = c2x(theValue) /* we submit hex only to SETRAVAR end; IF wantHex <> ’’ THEN /* not "X", so... what? SIGNAL BADKEY */ */ */ */ */ /* ---> */ We will feed the SETRVAR command the results of a SETRVAR QUERY. If that message is not altered then it simply reloads the table with the same values. (SETRVAR ignores label lines on input.) However, this pipe will alter the message by deleting the line with our input variable name and then inserting a new one with the new value. When called for "current message," SETRVAR reads only the hex part of each line and it expects that hex to begin in position 33, as it does in the output of SETRVAR QUERY. <--- */ varname = translate(varname) NewLine = left(varname,32) || theValue /* upper case to match msg */ /* mimic line of setrvar qry*/ ’PIPE (NAME CNMSRVAR END &)’, ’| NETV SETRVAR QUERY’, ’| WAIT 10’, ’| NLOCATE 1.S /DSI231I/’, /* no table? we don’t care ’| x: LOCATE 1.S /BNH332I/’, /* only other valid response ’| SEPARATE’, ’| NLOCATE 1.S /’left(varname,12)’/’, /* 12 = max name length ’| in: FANIN’, /* remainging lines, plus one new ’| collect’, /* important: drive SETRVAR only once ’| NETV SETRVAR *’, /* load table from current message ’| WAIT 10’, /* even here,it’s asynchronous ’| CONSOLE’, /* show any error message ’& VAR NewLine’, /* read in substitute line ’| in:’, /* and pass up to FANIN ’& x:’, /* other msg? SSI down? rtr down? ’| CONSOLE’, /* show error ’| PIPEND 28’ /* end pipe with error 図 55. CNMSRVAR の例 (2/3) 212 プログラミング: REXX および NetView コマンド・リスト言語 */ */ */ */ */ */ */ */ */ */ */ */ */ REXX コマンド・リスト /* The next bit is optional. IF RC = 0 THEN ’SETRVAR QUERY’ Let operator know that it all worked. */ /* pipe & commands work? */ /* reassure oper */ /* Sample output from SETRVAR QUERY. Deleting a data line and substituting another causes the revision variable table to be loaded with one variable different. SETRVAR sets new values from the hex portion of the line. BNH332I For NETV there are 2 revision variables. BNH325I Table loaded by TOM at 09/09/08 19:00:33 MYFIRST Lovely thing! D396A58593A840A3888995875A SOLEMVAR keep Trucking? 9285859740E399A483928995876F | | 1 33 */ exit RC noARG: /* TEXT OPERAND MISSING OR INVALID */ ’MESSAGE DSI004I’ EXIT 8 BADKEY: ’MESSAGE DSI486I’ wantHex FAILURE: ’MESSAGE CNM996E’ cmdname() EXIT sigl NOVALUE: ’MESSAGE BNH355E’ sigl ’CNMSRVAR 4’ cmdname() CONDITION(D) EXIT 4 HALT: /* EXIT -5 /* */ 図 55. CNMSRVAR の例 (3/3) CNMSRVMC の例 214 ページの図 56 は、コマンド改訂の NETVONLY アクションの例です。 付録 G. NetView のための REXX コマンド・リストの例 213 REXX コマンド・リスト /*REXX*---------------------------------------------------------------*/ /* Licensed Materials - Property of IBM */ /* 5697-ENV © Copyright IBM Corp. 2009 */ /* All rights reserved. */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /*--------------------------------------------------------------------*/ /* -----------> Sample NETVONLY action command. This command gets control as a result of a Command Revision action: NETVONLY=CNMSRVMC It is designed to respond to a pseduo-command "V NetView,LOGON" issued from a regular MVS console. Or to a START command for a special procedure that should not be run during normal working hours. To see what triggers this command, read sample CNMSCRT1. Customers can code any number of different REXX procedures to be invoked by the NETVONLY action. This sample is only a model. Use any REXX function here, but the message based functions that return meaningful data are only sysconid() and sysid(). Use the recedata() function to obtain information about the origin of the command. <---------- */ ADDRESS NETVASIS /* important! prevent abuse by checking for proper environment */ callerASID = RECEDATA() /* Obtain ASID of cmd issuer */ IF callerASID = 0 THEN /* no RECE data? Then call must */ SIGNAL BadEnvr /* not be from NETVONLY action. */ /* The "command" that triggered NETVONLY is our arg... */ fullCmd = arg(1) parse arg verb Parm1 ’,’ theRest /* We handle two verbs: ’S’ or ’START’ and ’V’ or ’VARY’. Consider writting two procedures for simplicity. Both verbs come here ONLY when other conditions in the revision table are satisfied. See CNMSCRT1. */ SELECT WHEN (LEFT(verb,1) = ’S’) THEN /* It was a START cmd */ CALL startTooBig WHEN (LEFT(verb,1) = ’V’) THEN /* VARY cmd with NetView arg */ CALL getNVassoc OTHERWISE /* Should Not Occur unless CNMSCRT1 changed. */ do; msg = ’RECE command CNMSRVMC driven by system command "’ ||, arg(1) || ’". Please review CRT.’ ’pipe VAR msg | ROUTE AUTRCVR’ /* We purposely do not REISSUE here. Operator will get CNM017E */ end; END exit 0 図 56. CNMSRVMC の例 (1/3) 214 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト /* Ask the operator to confirm. Wait for response to the WTOR. Note: Waiting for the response here DOES NOT block other NETVONLY actions from proceeding. Note: if confirmed, this procedure issues the exact same command that caused this NETVONLY action. This will not start a loop and the reissued command will appear to have originated in the same environment as the original command (username & console). ---------- */ startTooBig: WTO.TEXT = ’TLH916W Procedure’ PARM1 ’is intensive.’, ’Answer "Y" to continue’ ’WTOR’ IF WTO.REPLY = ’Y’ THEN ’REISSUE MVS’ fullCmd ELSE do; WTO.TEXT = ’TLH917I start’ PARM1 ’canceled.’ ’WTO’ ’REISSUE SUPPRESS’ end; RETURN /* from startTooBig */ 図 56. CNMSRVMC の例 (2/3) getNVassoc: username = RECEDATA(’U’) SELECT WHEN (username = ’*BYPASS*’) THEN ’WTO TLH006E Please logon to your system console’ WHEN (sysconid() = ’INSTREAM’ | sysconid() = ’INTERNAL’) THEN ’WTO TLH026E Console’ sysconid() ’cannot associate with NetView.’ OTHERWISE do ’AUTOTASK OPID=’ || username || ’CONSOLE=’ || sysconid() IF rc = 0 THEN ’MSG’ username ’association with NetView,’ domain()’, successful.’ ELSE ’WTO TLH662E Association with NetView failed:’ RC end END ’REISSUE SUPPRESS’ RETURN /* from getNVassoc */ BadEnvr: ’MESSAGE DSI290 CNMSRVMC’ opid() exit 12 図 56. CNMSRVMC の例 (3/3) DSPRSTAT の例 216 ページの図 57 は、 196 ページの図 52 と同じタイプの関数を使用するコマン ド・リストの例です。 付録 G. NetView のための REXX コマンド・リストの例 215 REXX コマンド・リスト /**********************************************************************/ /* */ /* THE FOLLOWING REXX COMMAND LIST GOES ALONG WITH THE PREVIOUS */ /* EXAMPLE (CHKRSTAT), AND SHOWS MANY OF THE SAME TYPE OF FUNCTIONS */ /* AS THE PREVIOUS EXAMPLE. */ /* */ /* THIS COMMAND LIST COULD BE USED BY ANY OST OPERATOR TO DISPLAY */ /* THE RESULTS OF SEVERAL EXECUTIONS OF THE CHKRSTAT COMMAND LIST */ /* FOR A SPECIFIC RESOURCE. IT COULD BE USED AS AN AID IN */ /* DETERMINING HOW OFTEN A RESOURCE IS ACTIVE, BASED ON THE INTERVALS*/ /* IN WHICH IT WAS CHECKED BY THE CHKRSTAT COMMAND LIST */ /* */ /**********************************************************************/ /* */ /* COMMAND LIST NAME: DSPRSTAT */ /* */ /* THIS COMMAND LIST CAN BE USED TO DISPLAY HOW OFTEN A RESOURCE */ /* WAS ACTIVE VS. NOT ACTIVE, AS RECORDED BY THE CHKRSTAT COMMAND */ /* LIST */ /* */ /* INPUT PARAMETERS: NONE */ /* */ /* CHANGE CODE DATE DESCRIPTION */ /* ----------- -------- ------------------------------------------ */ /* */ /**********************************************************************/ PARSE UPPER ARG RESNAME /* GET INPUT, IF ANY */ /* IF NO RESOURCE NAME GIVEN, DISPLAY ERROR MESSAGE AND EXIT IF RESNAME = ’’ THEN DO; SAY ’RESOURCE NAME MUST BE PROVIDED’ EXIT 99 END VARNAMEA = RESNAME\’@A’ /* SET THE VAR NAME ACT VARNAMENA = RESNAME\’@NA’ /* SET THE VAR NAME NACT ’GLOBALV GETC ’VARNAMEA /* GET THE ACTIVE INFO ’GLOBALV GETC ’VARNAMENA /* GET THE INACTIVE INFO INTERPRET ’RACT = ’VARNAMEA /* PUT ACTIVE # IN VAR INTERPRET ’RINACT = ’VARNAMENA /* PUT INACTIVE # IN VAR /* DISPLAY THE STATISTICS FOF THE RESOURCE SPECIFIED IF RACT = ’’ & RINACT = ’’ THEN SAY ’NO STATISTICS HAVE BEEN COLLECTED FOR RESOURCE: ’RESNAME */ */ */ */ */ */ */ */ /* DISPLAY THE STATISTICS FOR THE RESOURCE SPECIFIED */ ELSE DO IF DATATYPE(RACT) ¬= ’NUM’ THEN RACT = 0 /* IF NOT NUMERIC */ IF DATATYPE(RINACT) ¬= ’NUM’ THEN RINACT = 0 /* IF NOT NUMERIC*/ SAY ’RESOURCE ’RESNAME’ STATISTICS:’ SAY ’ NUMBER OF TIMES RESOURCE WAS ACTIVE : ’RACT SAY ’ NUMBER OF TIMES RESOURCE WAS INACTIVE: ’RINACT PERCENTACT = RACT/(RACT+RINACT)*100\’%’ /* DETERMINE PERCENT */ SAY ’ PERCENTAGE OF TIMES RESOURCE WAS ACTIVE: ’PERCENTACT END EXIT 0 図 57. DSPRSTAT の例 GETCG の例 216 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト /****************************************************************/ /* GETCG COMMAND LIST - REXX VERSION */ /* */ /* GETCG COMMAND LIST GETS THE VALUE OF A COMMON GLOBAL */ /* VARIABLE AND DISPLAYS IT TO THE REQUESTING TASK */ /****************************************************************/ TRACE E ’GLOBALV GETC’ MSGVAR(1) ’MESSAGE 309I GETCG COMMON GLOBAL VARIABLE’ MSGVAR(1) , ’HAS VALUE ’ VALUE(MSGVAR(1)) EXIT 図 58. GETCG の例 GREETING の例 /**********************************************************************/ /* */ /* GREETING - SHOW SIMPLE EXAMPLE OF WAITING AND TRAPPING */ /* USING THE DATE COMMAND */ /* */ /* NOTE: WHEN DATE IS ENTERED, THE FOLLOWING IS RETURNED: */ /* */ /* CNM359I DATE : TIME = HH:MM DATE = MM/DD/YY */ /**********************************************************************/ ’TRAP AND SUPPRESS ONLY MESSAGES CNM359I ’ /* TRAP DATE MESSAGE */ ’DATE’ /* ISSUE COMMAND */ ’WAIT 10 SECONDS FOR MESSAGES’ /* WAIT FOR ANSWER */ SELECT /* RESULT IS BACK, PROCESS IT... */ WHEN (EVENT()=’M’) THEN /* DID WE GET A MESSAGE? */ DO /* YES... */ ’MSGREAD’ /* ... READ IT IN */ HOUR=SUBSTR(MSGVAR(5),1,2) /* ... PARSE OUT THE HOUR */ SELECT /* GIVE APPROPRIATE GREETING... */ WHEN (HOUR<12) THEN /* ...BEFORE NOON? */ SAY ’GOOD MORNING’ WHEN (HOUR<18) THEN /* ...BEFORE SIX? */ SAY ’GOOD AFTERNOON’ OTHERWISE /* ...MUST BE NIGHT */ SAY ’GOOD EVENING’ END /* OF SELECT */ END /* OF DO */ WHEN (EVENT()=’E’) THEN /* DID WE GET AN ERROR? */ SAY ’ERROR OCCURRED WAITING FOR DATE COMMAND RESPONSE’ WHEN (EVENT()=’T’) THEN /* DID WE GET A TIME-OUT? */ SAY ’NO MESSAGE RETURNED FROM DATE COMMAND’ OTHERWISE END /* OF SELECT */ EXIT 図 59. GREETING の例 LISTVAR の例 付録 G. NetView のための REXX コマンド・リストの例 217 REXX コマンド・リスト /* Use NetView HELP for more information about this clist. ************************************************************************ * Licensed Materials - Property of IBM * * 5697-ENV © Copyright IBM Corp. 1997, 2007 * * All rights reserved. * * * * US Government Users Restricted Rights - Use, duplication or * * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. * ************************************************************************ * * * NAME(LISTVAR) SAMPLE(CNME1006) RELATED-TO() * * * * CNME1006 Change Activity: * * ID=Reference,Ver,Date,Developer: Description * * -----------------------------------------------------* * * ***********************************************************************/ IF arg(1) ¬= ’’ THEN SIGNAL ERROR address NETVASIS mySys = left(opsystem(),3) /* get e.g. "MVS" call say353 ’OPSYSTEM’ opsystem() SELECT; WHEN (mySys = ’VSE’) THEN call say353 ’CURPART’ curpart() WHEN (mySys = ’MVS’) THEN DO; call say353 ’MVSLEVEL’ mvsLevel() call say353 ’ECVTPSEQ’ ecvtpseq() call say353 ’CURSYS’ curSys() END; WHEN (mySys = ’VM/’) THEN NOP OTHERWISE ’MESSAGE DWO053I’ END; call say353 ’VTAMLVL’ vtam() call say353 ’VTCOMPID’ vtcompid() call say353 ’NetView’ NETVIEW(’T’) call say353 ’NETID’ netid() call say353 ’DOMAIN’ domain() call say353 ’APPLID’ applid() call say353 ’OPID’ opid() call say353 ’LU’ lu() call say353 ’TASK’ task() call say353 ’NCCFCNT’ nvcnt() call say353 ’HCOPY’ hcopy() /* call say353 ’TYPE’ type() there is call say353 ’IPV6ENV’ ipv6env() 図 60. LISTVAR の例 (1/2) 218 プログラミング: REXX および NetView コマンド・リスト言語 /* Partition ID * */ /* MVS level */ /* ECVTPSEQ value*/ /* System name */ /* VTAM version only one type */ */ REXX コマンド・リスト towerList = tower(’*’) ’PIPE var towerList | edit word 1.*|var TowerList’ CALL say353 ’TOWERS’ towerList /* Display MVS console name (or ID) if in use. IF mysys = ’MVS’ THEN do call say353 ’CURCONID’ curconid() IF autotask() THEN call say353 ’AUTCONID’ autconid() end */ IF VTAM() = ’’ THEN ’MESSAGE CNM386I LISTVAR’ EXIT 0 /*------------------<<< Format a CNM353 Message >>>------------------*/ /* Format a MESSAGE CNM353 with extra spaces to make the values */ /* line up in the same column. Using 30, at present; it could */ /* get bigger if longer named values are needed. */ /* */ /*------------------<<< Format a CNM353 Message >>>------------------*/ SAY353: parse arg name value ’MESSAGE CNM353 LISTVAR’ "’"left(name,8)"’" "’"value"’" return /* CNM353I LISTVAR : OPSYSTEM = MVS/ESA *********************************************************************/ ERROR: ’MESSAGE CNM306E,LISTVAR,’ arg(1) exit 4 図 60. LISTVAR の例 (2/2) PRINT の例 220 ページの図 61 は、データ・セットを印刷するために使用するコマンド・リスト の例です。 付録 G. NetView のための REXX コマンド・リストの例 219 REXX コマンド・リスト /**********************************************************************/ /* PRINT COMMAND LIST */ /* -----------------*/ /* */ /* FUNCTION: THIS COMMAND LIST PRINTS MEMBERS OF A DATA SET TO A */ /* SYSTEM PRINT FILE. */ /* */ /* INPUT PARMS: DATASETNAME = FULLY QUALIFIED DATA SET NAME */ /* (INCLUDING MEMBER NAME) TO DISPLAY AT THE TERMINAL. */ /* */ /* OUTPUT: A SYSTEM PRINT FILE. */ /**********************************************************************/ SIGNAL ON ERROR /* SIGNAL IF ERROR OCCURS*/ ARG DATASETNAME /* PARSE CLIST INPUT */ IF DATASETNAME=’’ | PARMCNT() > 1 THEN /* NO CLIST INPUT ? */ DO /* NAME NOT SPECIFIED */ SAY ’INCORRECT SYNTAX USED.’ /* ISSUE ERROR MSG */ SAY ’CORRECT SYNTAX IS : ’ /* ISSUE HELP MSG */ SAY ’ PRINT DATASET.NAME(MEMBER) ’ /* ISSUE HELP MSG */ RC=24 /* SET RETURN CODE */ END /* NAME NOT SPECIFIED */ ELSE /* CORRECT NAME/SYNTAX */ DO /* NAME WAS SPECIFIED */ ’TRAP DISPLAY ONLY MESSAGES *’ /* TRAP/SUPPRESS MSGS */ ’ALLOCATE SYSOUT(A) FREE RECFM(FB) ’, /* ALLOC/CONNECT SYSTEM */ ’LRECL(80) BLKSIZE(4000)’ /* ... PRINTER FOR USAGE */ ’WAIT FOR MESSAGES’ /* WAIT FOR RESULTS */ ’MSGREAD’ /* READ A MESSAGE IN */ IF (MSGID()¬=’CNM272I’) THEN /* IS MSG CNM272I ? */ DO /* ¬ CNM272I MSG */ SAY MSGID() MSGSTR() /* DISPLAY MESSAGE */ END /* ¬ CNM272I MSG */ ELSE /* MSG IS CNM272I */ DO /* PROCESS 1ST CNM272I */ DDNAMEO = MSGVAR(1) /* SAVE OUTPUT DDNAME */ ’TRAP AND DISPLAY ONLY MESSAGES *’ /* TRAP/SUPPRESS MSGS */ ’ALLOCATE DA(’DATASETNAME’) SHR FREE’/* ALLOC/CONNECT FILE */ ’WAIT FOR MESSAGES’ /* WAIT FOR MESSAGES */ ’MSGREAD’ /* READ A MESSAGE IN */ ’TRAP NO MESSAGES’ /* DISABLE TRAP MSGS */ IF (MSGID()¬=’CNM272I’) THEN /* IS MSG CNM272I ? */ DO /* ¬ CNM272I MSG*/ SAY MSGID() MSGSTR() /* DISPLAY MESSAGE */ END /* ¬ CNM272I MSG*/ ELSE /* MSG IS CNM272I */ DO /* PROCESS 2ND CNM272I */ DDNAMEI = MSGVAR(1) /* SAVE INPUT DDNAME */ ADDRESS MVS ’EXECIO 1 DISKR ’DDNAMEI /* READ 1ST LINE */ DO WHILE RC=0 /* WHILE RC = 0 */ ADDRESS MVS ’EXECIO 1 DISKW ’DDNAMEO /* WRITE LINE OUT */ ADDRESS MVS ’EXECIO 1 DISKR ’DDNAMEI /* READ NEXT LINE */ END /* WHILE RC = 0 */ /* PUT OUT COMPLETE MSG */ ’MESSAGE 309I PRINT CLIST IS NOW FINISHED’ END /* PROCESS 2ND CNM272I */ END /* PROCESS 1ST CNM272I */ END /* NAME WAS SPECIFIED */ RETURN ERROR: SAY ’ERROR OCCURRED. EXIT -1; /* RETURN TO CALLER/EXIT */ RETURN CODE IS ’ RC /* END COMMAND LIST FOR ERROR*/ 図 61. PRINT の例 220 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト TYPE の例 図 62 は、データ・セットのメンバーを表示する場合に使用するコマンド・リストの 例です。 /**********************************************************************/ /* TYPE COMMAND LIST */ /* ----------------*/ /* */ /* FUNCTION: THIS COMMAND LIST DISPLAYS MEMBERS OF A DATA SET AT THE */ /* (INVOKING) USER’S NETVIEW TERMINAL ONE LINE AT A TIME. */ /* */ /* INPUT PARMS: DATASETNAME = FULLY QUALIFIED DATA SET NAME */ /* (INCLUDING MEMBER NAME) TO DISPLAY AT THE TERMINAL. */ /* */ /* OUTPUT: LINE = EACH LINE WITHIN THE MEMBER SPECIFIED BY THE USER. */ /**********************************************************************/ SIGNAL ON ERROR /* SIGNAL IF ERROR OCCURS*/ ARG DATASETNAME /* PARSE CLIST INPUT */ IF DATASETNAME=’’ | PARMCNT() > 1 THEN /* NO CLIST INPUT ? */ DO /* NAME NOT SPECIFIED */ SAY ’INCORRECT SYNTAX USED.’ /* ISSUE ERROR MSG */ SAY ’CORRECT SYNTAX IS : ’ /* ISSUE HELP MSG */ SAY ’ TYPE DATASET.NAME(MEMBER) ’ /* ISSUE HELP MSG */ RC=24 /* SET RETURN CODE */ END /* NAME NOT SPECIFIED */ ELSE /* CORRECT NAME/SYNTAX */ DO /* NAME WAS SPECIFIED */ ’TRAP AND SUPPRESS ONLY MESSAGES *’ /* TRAP/SUPPRESS MSGS */ ’ALLOCATE DA(’DATASETNAME’) SHR FREE’ /* ALLOC/CONNECT FILE */ ’WAIT FOR MESSAGES’ /* WAIT FOR MESSAGES */ ’MSGREAD’ /* READ A MESSAGE IN */ ’TRAP NO MESSAGES’ /* DISABLE TRAP MSGS */ IF (MSGID()¬=’CNM272I’) THEN /* IS MSG CNM272I ? */ DO /* ¬ CNM272I MSG */ SAY MSGID() MSGSTR() /* DISPLAY MESSAGE */ END /* ¬ CNM272I MSG */ ELSE /* MSG IS CNM272I */ DO /* PROCESS CNM272I MSG */ DDNAME = MSGVAR(1) /* SAVE DYNAMIC DDNAME */ ADDRESS MVS ’EXECIO 1 DISKR ’DDNAME /* PUT 1ST LINE ON STACK */ DO WHILE RC=0 /* WHILE RC = 0 */ PULL RECORD /* PULL LINE FROM STACK */ SAY SUBSTR(RECORD,1,68) /* DISPLAY LINE TO USER */ /* PUT NEXT LINE ON STACK*/ ADDRESS MVS ’EXECIO 1 DISKR ’DDNAME END /* WHILE RC = 0 */ /* PUT OUT COMPLETE MSG */ ’MESSAGE 309I TYPE CLIST IS NOW FINISHED’ END /* PROCESS CNM272I MSG */ END /* NAME WAS SPECIFIED */ RETURN /* RETURN TO CALLER/EXIT */ ERROR: SAY ’ERROR OCCURRED. RETURN CODE IS ’ RC EXIT -1; /* END COMMAND LIST FOR ERROR*/ 図 62. TYPE の例 付録 G. NetView のための REXX コマンド・リストの例 221 REXX コマンド・リスト TYPEIT の例 223 ページの図 63 は、 221 ページの図 62 の例と本質的には同じことがらを実行し ますが、エラーの場合にはデータ・セットをクローズするコマンド・リストの例で す。 222 プログラミング: REXX および NetView コマンド・リスト言語 REXX コマンド・リスト /**********************************************************************/ /* TYPE COMMAND LIST */ /* ----------------*/ /* */ /* FUNCTION: THIS COMMAND LIST DISPLAYS MEMBERS OF A DATA SET AT THE */ /* (INVOKING) USER’S NETVIEW TERMINAL ONE LINE AT A TIME. */ /* */ /* INPUT PARMS: DATASETNAME = FULLY QUALIFIED DATA SET NAME */ /* (INCLUDING MEMBER NAME) TO DISPLAY AT THE TERMINAL. */ /* */ /* OUTPUT: LINE = EACH LINE WITHIN THE MEMBER SPECIFIED BY THE USER. */ /**********************************************************************/ signal on error rc = 0 parse arg datasetname ’(’ member ’)’ extra if datasetname = ’’ | parmcnt() > 1 | member = ’’ | extra ¬= ’’ then do say ’Incorrect syntax used.’ say ’Correct syntax is : ’ say ’ TYPE dataset.name(member) ’ rc = 24 end else do ’trap and suppress only messages CNM272I’ signal on halt ’allocate da(’datasetname’(’member’)) shr’ ’wait 5 seconds for messages’ ’msgread’ if msgid() = ’CNM272I’ then do ddname = msgvar(1) if fndmbr(ddname,member) ¬= 0 then do say ’Member’ member ’does not exist.’ rc = 4 end else do address mvs ’execio * diskr’ ddname ’(finis’ do while queued() ¬= 0 pull record say substr(record,1,68) end signal off halt ’free file(’ddname’)’ ’trap no messages’ ’message 309I ’’TYPEIT’’,’’clist is now finished.’’’ end end end return rc halt: ’free file(’ddname’)’ ’trap no messages’ return -5 error: say ’Error occurred. Return code is’ rc return -1 図 63. TYPEIT の例 付録 G. NetView のための REXX コマンド・リストの例 223 REXX コマンド・リスト UPDCGLOB の例 図 64 は、共通グローバル変数を再入可能な方法で更新する例です。 /*REXX*---------------------------------------------------------------*/ /* Licensed Materials - Property of IBM */ /* 5697-ENV © Copyright IBM Corp. 2009 */ /* All rights reserved. */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /*--------------------------------------------------------------------*/ /* -----------> Sample NETVONLY action command. This command gets control as a result of a Command Revision action: NETVONLY=CNMSRVMC It is designed to respond to a pseduo-command "V NetView,LOGON" issued from a regular MVS console. Or to a START command for a special procedure that should not be run during normal working hours. To see what triggers this command, read sample CNMSCRT1. Customers can code any number of different REXX procedures to be invoked by the NETVONLY action. This sample is only a model. Use any REXX function here, but the message based functions that return meaningful data are only sysconid() and sysid(). Use the recedata() function to obtain information about the origin of the command. <---------- */ ADDRESS NETVASIS /* important! prevent abuse by checking for proper environment */ callerASID = RECEDATA() /* Obtain ASID of cmd issuer */ IF callerASID = 0 THEN /* no RECE data? Then call must */ SIGNAL BadEnvr /* not be from NETVONLY action. */ /* The "command" that triggered NETVONLY is our arg... */ fullCmd = arg(1) parse arg verb Parm1 ’,’ theRest /* We handle two verbs: ’S’ or ’START’ and ’V’ or ’VARY’. Consider writting two procedures for simplicity. Both verbs come here ONLY when other conditions in the revision table are satisfied. See CNMSCRT1. */ SELECT WHEN (LEFT(verb,1) = ’S’) THEN /* It was a START cmd */ CALL startTooBig WHEN (LEFT(verb,1) = ’V’) THEN /* VARY cmd with NetView arg */ CALL getNVassoc OTHERWISE /* Should Not Occur unless CNMSCRT1 changed. */ do; msg = ’RECE command CNMSRVMC driven by system command "’ ||, arg(1) || ’". Please review CRT.’ ’pipe VAR msg | ROUTE AUTRCVR’ /* We purposely do not REISSUE here. Operator will get CNM017E */ end; END 図 64. UPDCGLOB の例 (1/2) 224 プログラミング: REXX および NetView コマンド・リスト言語 exit 0 /* Ask the operator to confirm. Wait for response to the WTOR. Note: Waiting for the response here DOES NOT block other NETVONLY actions from proceeding. Note: if confirmed, this procedure issues the exact same command that caused this NETVONLY action. This will not start a loop and the reissued command will appear to have originated in the same environment as the original command (username & console). ---------- */ startTooBig: WTO.TEXT = ’TLH916W Procedure’ PARM1 ’is intensive.’, ’Answer "Y" to continue’ ’WTOR’ IF WTO.REPLY = ’Y’ THEN ’REISSUE MVS’ fullCmd ELSE do; WTO.TEXT = ’TLH917I start’ PARM1 ’canceled.’ ’WTO’ ’REISSUE SUPPRESS’ end; RETURN /* from startTooBig */ getNVassoc: username = RECEDATA(’U’) SELECT WHEN (username = ’*BYPASS*’) THEN ’WTO TLH006E Please logon to your system console’ WHEN (sysconid() = ’INSTREAM’ | sysconid() = ’INTERNAL’) THEN ’WTO TLH026E Console’ sysconid() ’cannot associate with NetView.’ OTHERWISE do ’AUTOTASK OPID=’ || username || ’CONSOLE=’ || sysconid() IF rc = 0 THEN ’MSG’ username ’association with NetView,’ domain()’, successful.’ ELSE ’WTO TLH662E Association with NetView failed:’ RC end END ’REISSUE SUPPRESS’ RETURN /* from getNVassoc */ BadEnvr: ’MESSAGE DSI290 CNMSRVMC’ opid() exit 12 図 64. UPDCGLOB の例 (2/2) 付録 G. NetView のための REXX コマンド・リストの例 225 226 プログラミング: REXX および NetView コマンド・リスト言語 特記事項 本書は米国 IBM が提供する製品およびサービスについて作成したものです。 本書に記載の製品、サービス、または機能が日本においては提供されていない場合 があります。日本で利用可能な製品、サービス、および機能については、日本 IBM の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービス に言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能 であることを意味するものではありません。これらに代えて、IBM の知的所有権を 侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用す ることができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの 評価および検証は、お客様の責任で行っていただきます。 IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を 保有している場合があります。本書の提供は、お客様にこれらの特許権について実 施権を許諾することを意味するものではありません。実施権についてのお問い合わ せは、書面にて下記宛先にお送りください。 〒242-8502 神奈川県大和市下鶴間1623番14号 日本アイ・ビー・エム株式会社 法務・知的財産 知的財産権ライセンス渉外 以下の保証は、国または地域の法律に沿わない場合は、適用されません。 IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状 態で提供し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を 含むすべての明示もしくは黙示の保証責任を負わないものとします。 国または地域によっては、法律の強行規定により、保証責任の制限が禁じられる場 合、強行規定の制限を受けるものとします。 この情報には、技術的に不適切な記述や誤植を含む場合があります。本書は定期的 に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随 時、この文書に記載されている製品またはプログラムに対して、改良または変更を 行うことがあります。 本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のた め記載しただけであり、決してそれらの Web サイトを推奨するものではありませ ん。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありませ ん。それらの Web サイトは、お客様の責任でご使用ください。 IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うこと のない、自ら適切と信ずる方法で、使用もしくは配布することができるものとしま す。 © Copyright IBM Corp. 1997, 2011 227 本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとその他のプロ グラム (本プログラムを含む) との間での情報交換、および (ii) 交換された情報の 相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする 方は、下記に連絡してください。 IBM Corporation 2Z4A/101 11400 Burnet Road Austin, TX 78758 U.S.A. 本プログラムに関する上記の情報は、適切な使用条件の下で使用することができま すが、有償の場合もあります。 本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、 IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれ と同等の条項に基づいて、IBM より提供されます。 IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公 に利用可能なソースから入手したものです。 IBM は、それらの製品のテストは行 っておりません。したがって、他社製品に関する実行性、互換性、またはその他の 要求については確証できません。 IBM 以外の製品の性能に関する質問は、それら の製品の供給者にお願いします。 著作権使用許諾: 本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を 例示するサンプル・アプリケーション・プログラムがソース言語で掲載されていま す。お客様は、サンプル・プログラムが書かれているオペレーティング・プラット フォームのアプリケーション・プログラミング・インターフェースに準拠したアプ リケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式 においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することが できます。このサンプル・プログラムは、あらゆる条件下における完全なテストを 経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、 利便性もしくは機能性があることをほのめかしたり、保証することはできません。 お客様は、IBM のアプリケーション・プログラミング・インターフェースに準拠し たアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかな る形式においても、 IBM に対価を支払うことなくこれを複製し、改変し、配布す ることができます。 それぞれの複製物、サンプル・プログラムのいかなる部分、またはすべての派生的 創作物にも、次のように、著作権表示を入れていただく必要があります。 © (お客様の会社名) (西暦年). このコードの一部は、IBM Corp. のサンプル・プロ グラムから取られています。 © Copyright IBM Corp. _年を入れる_. All rights reserved. 228 プログラミング: REXX および NetView コマンド・リスト言語 プログラミング・インターフェース 本書には、プログラムを作成するユーザーが Tivoli NetView for z/OS のサービスを 使用するためのプログラミング・インターフェースが記述されています。 商標 IBM、IBM ロゴ、および ibm.com は、世界の多くの国で登録された International Business Machines Corp. の商標です。他の製品名およびサービス名等は、それぞれ IBM または各社の商標である場合があります。現時点での IBM の商標リストにつ いては、http://www.ibm.com/legal/copytrade.shtml をご覧ください。 Adobe は、Adobe Systems Incorporated の米国およびその他の国における商標です。 Java およびすべての Java 関連の商標およびロゴは Oracle やその関連会社の米国お よびその他の国における商標または登録商標です。 Linux は、Linus Torvalds の米国およびその他の国における商標です。 Microsoft および Windows は、Microsoft Corporation の米国およびその他の国にお ける商標です。 UNIX は、The Open Group の米国およびその他の国における登録商標です。 特記事項 229 230 プログラミング: REXX および NetView コマンド・リスト言語 索引 日本語, 数字, 英字, 特殊文字の順に配列されてい ます。なお, 濁音と半濁音は清音と同等に扱われて います。 関数 組み込み NetView コマンド・リスト言語 REXX 132 19 REXX [ア行] アクセシビリティー 制約事項 xvi アセンブラー・コマンド・プロセッサー、REXX コマンド・リ ストのネスト 36 引用符、REXX コマンド・リストまたは Data REXX ファイル 27 ACTIONMG() REXX 39 AUTHCHKX() 52 AUTHCHK() 50 CONTINUE、&WAIT 制御ステートメント 159 CONTWAIT、&WAIT 制御ステートメント 159 DISPLAY AUTOTASK() 94 AUTOTOKE() 60 CGI() 94 159 ENDWAIT、&WAIT 制御ステートメント 155, 159 ERROR、&WAIT 制御ステートメント 154 ERR、&CONTROL 制御ステートメント 125 NOINPUT、&PAUSE 制御ステートメント 130 NOSUB、&BEGWRITE 制御ステートメント 128 STRING、&PAUSE 制御ステートメント 130 SUB、&BEGWRITE 制御ステートメント 128 SUPPCHAR 96 SUPPRESS &WAIT 制御ステートメント 159 VARS、&PAUSE 制御ステートメント 130 オペレーター コマンド、コマンド・リストの実行 8 情報 NetView コマンド・リスト言語制御変数 93 REXX 関数 93 送信、メッセージの 125 入力、REXX コマンド・リスト 30 ログオン、コマンド・リスト 7 オンライン資料 アクセス xvi © Copyright IBM Corp. 1997, 2011 CGLOBAL() 59 CLOSING() 94 CMDNAME() 54 CODE2TXT() 46 CURCONID() 94 CURSYS() 95 DESC() 60 [カ行] 解析 REXX コマンド・リスト 37 活動化、コマンド・リストの 2 環境、REXX によってアドレッシングされた、変更 環境変数の表記 xix 94 ATTNID() 60 AUTBYPAS 50 AUTCONID() 94 オペランド ALL、&CONTROL 制御ステートメント 125 CMD、&CONTROL 制御ステートメント 125 &WAIT 制御ステートメント 60 94 ATTENDED() 155 182 APPLID() 93 AREAID() 60 ASID() エラー、処理 NetView コマンド・リスト言語 32 比較、NetView コマンド・リスト言語制御変数 ACTIONDL() 60 33 DISC() 95 DISTAUTO() 95 DOMAIN() 95 ECVTPSEQ() 95 ENVDATA() 95 EVENT() 61 FNDMBR() 57 getpw() 93 HCOPY() 99 HDRMTYPE() 61 HIER(n) 77 HMEPNAU 79 HMEPNET 79 HMEPNETV 80 HMFWDSNA 81 IFRAUGMT() 61 IFRAUI3X() 62 IFRAUIN3() 62 IFRAUIND() 62 IFRAUSB2() 62 IFRAUSC2() 63 IFRAUSDR() 63 IFRAUSRB() 63 231 関数 (続き) REXX (続き) 関数 (続き) REXX (続き) IFRAUSRC() 63 IFRAUTA1() 63 OPSYSTEM() PANEL() 96 IFRAUWF1() PARMCNT() IPV6ENV() 64 54 PARTID() 54 96 IPXLATE() 49 JOBNAME() 64 PRTY() 72 recedata() 74 JOBNUM() 64 REPLYID() 32 ROUTCDE() 72 RXDEFENV() 99 KEY() 64 LINESIZE() LINETYPE() LU() 64 72 RXDEFSTR() 99 99 RXNUMENV() 99 MCSFLAG() 65 MSGASID() 65 RXOVRENV() 99 RXOVRSTR() 99 MSGAUTH() SESSID() 65 73 MSGCATTR() 65 MSGCMISC() 65 SMSGID() 73 STCKGMT() 96 MSGCMLVL() STORAGE() 66 32 MSGCMSGT() 66 MSGCNT() 66 MSGCOJBN() 66 SUBSYM() 48 SUPPCHAR() 96 SYSCONID() 73, 74 MSGCPROD() 66 MSGCSPLX() 66 SYSID() 73, 74 SYSPLEX() 96 MSGCSYID() 66 MSGDOMFL() 67 TASK() 97 TGLOBAL() MSGGBGPA() 67 MSGGDATE() 67 MSGGFGPA() 67 TOWER() 97 TRAP 97 TYPE() 98 MSGGMFLG() 68 MSGGMID() 68 VTAM() 98 VTCOMPID() MSGGSEQ() 68 MSGGSYID() 68 MSGGTIME() 68 MSGID() 68 MSGITEM(n) 69 MSGORIGN() 69 MSGREAD 43 MSGSRCNM() 70 MSGSTR() 70 MSGTOKEN() 71 MSGTSTMP() 71 MSGTYP() 71 MSGVAR(n) 71 MSUSEG() 85 MVSLEVEL 95 MVSRTAIN() 72 NETID() 95 NETVIEW() 96 NPDABA() 85 NVCNT() 55 NVDELID() 72 NVID(n) 56 NVMASTER() 56 NVSTAT() 56 OPID() 93 232 96 59 98 WEEKDAYN() 98 WTOREPLY 73 関数、データ・セット情報 57 関数パッケージ、REXX、作成 32 管理サービス単位 (MSU) 関数 HIER() 77 MSUSEG() 85 NetView コマンド・リスト言語 132, 135, 139 NPDABA() 85 REXX 135, 139 &HIER 135 &MSUSEG 139 管理サービス単位情報関数 76 規則 書体 xviii キューイング、長期実行コマンドの 14 休止、REXX コマンド・リストの 30 共通グローバル変数 NetView コマンド・リスト言語 167 共通操作サービス (COS) コマンド 175 組み込み関数 NetView コマンド・リスト言語 定義 132 割り当てステートメント 123 &BITAND 132 プログラミング: REXX および NetView コマンド・リスト言語 組み込み関数 (続き) コマンド (続き) NetView コマンド・リスト言語 (続き) &BITOR 133 &BITXOR 134 &CONCAT &HIER 135 EVERY 56, 140 8 8 9 EXECIO 34 FREE 34 &NCCFSTAT 56, 141 &SUBSTR 142 GO 19 組み込み関数、&HIER 103 CMD 14 DEFAULTS &LENGTH 138 &MSUSEG 139 REXX 6 AUTOTBL CHRON 135 &NCCFID AT 8 AUTODROP 156 MSGROUTE 103 OVERRIDE 8 135 グローバル変数 共通 RESET RETURN 156 12 NetView コマンド・リスト言語 167 STACK タスク NetView コマンド・リスト言語 166 TRACE END (TE) 38 TRACE START (TS) 37 グローバル変数情報関数 59 UNSTACK 156 VIEW 14 VTAM 12 継続ステートメント 111 研修 Tivoli 技術研修を参照 xvi コマンド改訂テーブル コマンド・リスト 研修、Tivoli 技術 xvi コーディングの規則 NetView コマンド・リスト言語 継続ステートメント 111 構文 110 抑止文字の規則 112 2 バイト文字テキスト 156 112 REXX コーディング、非 REXX コマンド、REXX コマンド・ リスト 27 構文 27 非 REXX コマンド表示の抑制 29 レコード・サイズ 27 コード・ポイント、変換 46 コマンド オペレーター コマンド・リストの実行 8 AFTER 8 AT 8 CHRON 8 EVERY 9 共通操作サービス LINKDATA 176 LINKPD 178 LINKTEST 176 RUNCMD 178 システム 12 状況モニター、コマンド・リストの使用 12 セッション・モニター、コマンド・リストの使用 12 ネットワーク 12 ハードウェア・モニター、コマンド・リストの使用 12 フルスクリーン 14 AFTER 8 ALLOCATE 34 開始、例 概要 1 74 2 活動化 2 駆動されるメッセージ 経路指定、メッセージ 103 103 更新 3 コマンド・リストのコンパイル 20 作成 3 作成、データ・セットの、MVS 3 システム・コマンド、使用 12 実行 7 使用 1 使用されるコマンド 186 長期実行コマンド、使用 13 定義 1 ネストされた 9 ネットワーク制御プログラムの活動化 2 ネットワーク・コマンド、使用 12 表示、処理時の制御 16 命名 3 ロード、主ストレージへの 5 PPT 下での制限 15 コマンド・リスト言語、NetView 1 コマンド・リスト情報 NetView コマンド・リスト言語制御変数 50 REXX 関数 50 コマンド・リストの実行 オペレーター・コマンド 8 オペレーター・ログオン 7 指定された時刻 8 別のコマンド・リスト 9 ユーザー作成コマンド・プロシージャー 12 NetView 開始 7 索引 233 コマンド・リストの実行 (続き) 資料 NetView がメッセージを受け取る コメント NetView コマンド・リスト言語 REXX アクセス、オンライン 注文 xvi 8 NetView for z/OS 121 定義 [サ行] 関数パッケージ、作成 コマンド・リスト 32 37 &WAIT 149 &WRITE 126 制御変数、NetView コマンド・リスト言語 19 制約事項 30 トレース 37 非 REXX コマンドのコーディング 非 REXX コマンドの抑制 例 191 EXECIO コマンドの使用 SAY 命令、使用 27 定義 119 MSGITEM(n) 29 29 34 TSO/E 環境 35 コマンド・リストおよび Data REXX ファイル コーディングの規則 27 31 コマンド・リストまたは Data REXX ファイル 制約事項 32 末尾ブランク 27 レコード・サイズ 27 CALL 命令、使用 31 LINESIZE 関数、使用 32 STORAGE 関数、使用 32 はじめに 19 比較、NetView コマンド・リスト言語 181 作成、コマンド・リストの 3 算術演算、割り当てステートメント 123 時間間隔、コマンド・リストの実行 8 式 NetView コマンド・リスト言語 122 REXX 19 システム・コマンド、使用 12 自動化 ループ 106 自動化、メッセージの 103 自動化タスク 16 状況モニター・コマンド、コマンド・リスト 12 情報関数、MSU 76 初期化、コマンド・リストの実行 7 除去、ヌルおよびブランク 100 書体の規則 xviii 234 124 148 &PAUSE 129 &TGLOBAL 166 30 環境関数 98, 99 環境の変更 33 戻りコード 38 SAY 命令、使用 167 &CONTROL &GOTO 147 &IF 145 36 コンパイル &CGLOBAL &EXIT アセンブラー、C、PL/I コマンド・プロシージャーのネ エラー、リカバリー 39 オペレーター入力、休止 123 比較、REXX 命令 181 &BEGWRITE 127 再構造化拡張実行プログラム (REXX) 言語 解析 xi 深夜 12 時 99 制御ステートメント、NetView コマンド・リスト言語 19 スト xvi プログラミング: REXX および NetView コマンド・リスト言語 69 REXX 関数の比較 182 &1 から &31 157 &ACTIONDL 60 &ACTIONMG 60 &APPLID 93 &AREAID 60 &ASID 94 &ATTENDED 94 &ATTNID 60 &AUTCONID 94 &AUTOTASK 94 &AUTOTOKE 60 &CURCONID 94 &CURSYS 95 &DATE 99 &DESC 60 &DISTAUTO 95 &DOMAIN 95 &HCOPY 99 &HDRMTYPE 61 &IFRAUGMT 61 &IFRAUI3X 62 &IFRAUIN3 62 &IFRAUIND 62 &IFRAUSB2 62 &IFRAUSC2 63 &IFRAUSDR 63 &IFRAUSRB 63 &IFRAUSRC 63 &IFRAUTA1 63 &IFRAUWF1 64 &JOBNAME 64 &JOBNUM 64 &KEY 64 &LINETYPE 64 制御変数、NetView コマンド・リスト言語 (続き) 制御変数、NetView コマンド・リスト言語 (続き) &LU 99 &MCSFLAG 65 &TASK 97 &TIME 99 &MSGASID 65 &VTAM &MSGAUTH 65 &MSGCATTR 65 &MSGCMISC 65 &MSGCMLVL 66 &MSGCMSGT 66 &MSGCNT 66 &MSGCOJBN 66 98 &VTCOMPID 98 &WAIT の使用 157 &WEEKDAYN 98 &WTOREPLY 73 セッション 情報 NetView コマンド・リスト言語制御変数 93 &MSGCPROD 66 &MSGCSPLX 66 REXX 関数 93 モニター・プログラム・コマンド、コマンド・リスト &MSGCSYID TAF の例 66 &MSGDOMFL 67 &MSGGBGPA 67 &MSGGDATE 67 &MSGGFGPA 67 &MSGGMFLG 68 &MSGGMID 68 &MSGGSEQ 68 &MSGGSYID 68 &MSGGTIME 68 &MSGID 68 &MSGORIGIN 69 [タ行] タスク・グローバル変数 参照、定義、更新を行うコマンド・リストの例 NetView コマンド・リスト言語 端末情報 NetView コマンド・リスト言語制御変数 REXX 関数 99 長期実行コマンド 13 キューイング 169 166 99 14 &MSGSRCNM 70 &MSGSTR 70 &MSGTOKEN 71 データ・セット、情報関数 57 データ・セット、MVS 3 データ・セット情報関数 57 &MSGTSTMP 71 &MSGTYP 71 データ・セットの割り振り、Tivoli NetView for z/OS 34 データ・セットの割り振り解除、Tivoli NetView for z/OS 定数、割り当てステートメント 122 &MVSLEVEL 95 &MVSRTAIN 72 &NCCFCNT 55 &NETID 95 &NETVIEW 96 &NVDELID 72 &OPID 93 &OPSYSTEM 96 &PARMCNT 54 &PARMSTR 54 &PARTID 96 &PRTY 72 &REPLYID 72 &RETCODE 55 &RXDEFENV 99 &RXDEFSTR 99 &RXNUMENV 99 &RXOVRENV 99 &RXOVRSTR 99 &SESSID 73 &SMSGID 73 &STCKGMT 96 &SUPPCHAR 96 &SYSCONID 73 &SYSID 73 &SYSPLEX 96 12 2 ディレクトリー名の表記 34 xix トークン、メッセージ NetView コマンド・リスト言語 152 ドメイン情報、REXX 関数 55 トレース、REXX コマンド・リスト 37 [ナ行] ヌルの除去 100 ヌル・ステートメント 121 ネストされたコマンド・リスト 定義 9 テスト 10 NetView コマンド・リスト言語、&WAIT の使用 158 REXX アセンブラー、C、PL/I コマンド・プロシージャー 36 MSGREAD の使用 43 TRAP の使用 42 WAIT の使用 43 ネットワーク制御プログラムを活動化するコマンド・リスト 2 ネットワーク・コマンド、使用 12 索引 235 [ハ行] 命令、REXX (続き) ハードウェア・モニター・コマンド、使用 パス名の表記 パネルの表示 ADDRESS 33 CALL 31 12 xix 14 PARSE SAY パラメーター変数、NetView コマンド・リスト言語 引用符付きストリング、使用 特殊文字、使用 特性 115 ヌル 118 メッセージ 応答の自動化 117 157 181 103 103 59 送信、オペレーター 125 待機、コマンド・リスト xix NetView コマンド・リスト言語 xix 複数行メッセージ、使用 ブック 資料を参照 xi メッセージ検索ツール、LookAt メッセージ自動化 コマンド・リスト 154 実行 定義 ブランクの除去 100 フルスクリーン・コマンドの使用 文節、REXX 19 変換、コード・ポイントの 159 複数行、働き 154 =-label の組み合わせのコーディング パス名 xix 表示、制御 16 表示、パネルの 14 46 編集、コマンド・リストを更新する機能の 変数 3 オペレーター情報 NetView コマンド・リスト言語 93 REXX 93 コマンド・リスト情報 NetView コマンド・リスト言語 50 REXX 50 セッション情報 NetView コマンド・リスト言語 93 REXX 93 端末情報 REXX 99 置換の順序 114 ユーザー 119 変数の表記 xix [マ行] マニュアル 資料を参照 xi 命令、REXX 制約事項 30 定義 19 比較、NetView コマンド・リスト言語制御ステートメント 181 104 戻りコード COS 176 NetView コマンド・リスト言語 REXX 151, 155 xv 8 103 テスト 実施 104 14 変換関数 コード - テキスト関数 (CODE2TXT) 46 変換テーブル、コードからテキストへ 46 236 37 経路指定、コマンド・リスト 処理情報 REXX 関数 比較、NetView コマンド・リスト言語と REXX 書体 37 TRACE START 119 表記 環境変数 SIGNAL 39 TRACE END 118 ネストされたコマンド・リストの使用 渡す、コマンド・リスト 116 &WAIT の使用 30 27, 31 55 38 [ヤ行] ユーザー作成コマンド・プロシージャー、コマンド・リストの 活動化 12 ユーザー変数 119 ユーザー・グループ NetView、Yahoo での xviii Tivoli xvi 有効範囲検査 変数、NetView コマンド・リスト言語 170 抑止文字 112 抑制 非 REXX コマンド、REXX コマンド・リスト 29 メッセージ 104 呼び出し、別のコマンド・リストの 9 [ラ行] ラベル NetView コマンド・リスト言語 REXX 19 ループ 106 例 開始コマンド・リスト 2 プログラミング: REXX および NetView コマンド・リスト言語 113 例 (続き) ACTIONDL NetView コマンド・リスト言語制御変数 コマンド・リスト タスク・グローバル変数の参照、定義、および更新 コマンド・リスト、使用 &WAIT REXX 関数 ACTAPPLS REXX 191 REXX 216 REXX 193 ADDRESS 命令 ALLOCATE、Tivoli NetView for z/OS コマンド ALL、&CONTROL のオペランド 125 173 NetView コマンド・リスト言語制御変数 REXX 関数 93 93 AREAID 217 NetView コマンド・リスト言語制御変数 REXX 関数 60 MSUSEG 91 NPDABA 92 WTO コマンド ASID REXX コマンド・リスト、NetView CHKOPNUM 193 CHKRSTAT 195 60 60 CNME1080 209 CNMS1101 197 NetView コマンド・リスト言語制御変数 94 REXX 関数 94 AT コマンド、コマンド・リストのスケジューリング CNMSRVAR 210 CNMSRVMC 213 ATTENDED NetView コマンド・リスト言語制御変数 DSPRSTAT 215 PRINT 219 TYPE 221 REXX 関数 ATTNID REXX 関数 AUTCONID 111 REXX 27 ロード、コマンド・リストの、ストレージへの 5 ログオン、オペレーター、コマンド・リストを自動的に実行 7 [ワ行] 割り当て ステートメント、NetView コマンド・リスト言語 文節、REXX 19 122 [数字] 16 進表記 (NetView コマンド・リスト言語) 121 2 バイト文字セット文字 (DBCS) コーディングの規則、NetView コマンド・リスト言語 PPT、コマンド・リスト 16 &CONCAT の使用 135 &SUBSTR の使用 143 112 8 94 94 NetView コマンド・リスト言語制御変数 REXX 関数 60 AUTBYPAS TYPEIT 222 UPDCGLOB 224 レコード・サイズ NetView コマンド・リスト言語 8 34 APPLID 217 LISTVAR REXX 33 AFTER コマンド、コマンド・リストのスケジューリング GLOBVAR1 GREETING REXX 60 60 ACTLU の例 ACTLU 193 60 60 ACTIONMG NetView コマンド・リスト言語制御変数 163 REXX GETCG REXX 関数 169 60 50 NetView コマンド・リスト言語制御変数 94 REXX 関数 94 AUTHCHK REXX 関数 50 AUTHCHKX REXX 関数 52 AUTODROP コマンド、REXX 6 AUTOTASK NetView コマンド・リスト言語制御変数 94 OST の制約事項 16 REXX 関数 94 AUTOTBL コマンド 103 AUTOTOKE NetView コマンド・リスト言語制御変数 60 REXX 関数 60 AUTOWRAP の設定 14 B BEGWRITE 制御ステートメント 127 A ACTAPPLS の例 REXX 191 索引 237 C DISC C コマンド・プロシージャー、REXX コマンド・リストのネス ト 36 CALL 命令、使用 REXX 関数 NetView コマンド・リスト言語制御変数 REXX 関数 95 CHKOPNUM、コマンド・リストの例 193 CHKRSTAT、コマンド・リストの例 195 DOUBLESUPP 文字 CHRON コマンド、コマンド・リストのスケジューリング CLOSING REXX 関数 8 95 113 DROPCL 6 DSPRSTAT、コマンド・リストの例 215 127 E 94 CMD コマンド 14 &CONTROL のオペランド CMDNAME ECVTPSEQ REXX 関数 95 ENDWAIT、&WAIT のオペランド ENVDATA 125 REXX 関数 54 CMDSYN ステートメント 3 CNME1080、コマンド・リストの例 CNMSRVMC、コマンド・リストの例 command 処理情報 REXX 関数 74 CONCAT 組み込み関数 209 EVENT REXX 関数 61 event=-label の組み合わせ、&WAIT 制御ステートメント 155 213 EVERY コマンド、コマンド・リストのスケジューリング EXECIO コマンド、REXX コマンド・リスト 34 EXIT 制御ステートメント 148 135 CONTINUE、&WAIT のオペランド 159 CONTROL 制御ステートメント 124 CONTWAIT、&WAIT のオペランド 159 COS 戻りコード 176 CURCONID NetView コマンド・リスト言語制御変数 REXX 関数 94 CURSYS NetView コマンド・リスト言語制御変数 REXX 関数 95 F 94 FNDMBR、REXX 関数 57 FREE、Tivoli NetView for z/OS コマンド 95 G GETCG の例 REXX 216 getpw REXX 関数 93 GLOBALV 命令 NetView コマンド・リスト言語 GLOBVAR1 の例 173 GO コマンド 156 GOTO 制御ステートメント 147 GREETING の例 REXX 217 D Data REXX 21 処理 25 ホスト・コマンド環境 34 /*%DATA ディレクティブ 25 /*%LOGIC ディレクティブ 26 DATA (%DATA) ディレクティブ 25 DATE 制御変数 99 DBCS 112 DEFAULTS コマンド 8 DESC NetView コマンド・リスト言語制御変数 REXX 関数 60 WTO、WTOR コマンド 60 155, 159 REXX 関数 95 ERROR、&WAIT のオペランド 154 ERR、&CONTROL のオペランド 125 CNMS1101、コマンド・リストの例 197 CNMSRVAR、コマンド・リストの例 210 238 95 95 DOMAIN 167 59 CLEAR コマンド 159 DISTAUTO NetView コマンド・リスト言語制御変数 94 CGLOBAL 制御ステートメント REXX 関数 95 &WAIT のオペランド 31 CGI REXX 関数 REXX 関数 DISPLAY 60 34 173 H HCOPY NetView コマンド・リスト言語制御変数 プログラミング: REXX および NetView コマンド・リスト言語 99 151, 9 HCOPY (続き) REXX 関数 HDRMTYPE J 99 JOBNAME NetView コマンド・リスト言語制御変数 REXX 関数 61 HIER 関数 NetView コマンド・リスト言語 REXX NetView コマンド・リスト言語制御変数 REXX 関数 64 61 JOBNUM NetView コマンド・リスト言語制御変数 135 REXX 関数 77 HMEPNAU 関数 79 HMEPNET 関数 79 HMEPNETV 関数 80 K HMFWDSNA 関数 81 KEY I 145 IFRAUGMT NetView コマンド・リスト言語制御変数 REXX 関数 61 LENGTH 組み込み関数 LINESIZE 関数 32 138 62 LINETYPE NetView コマンド・リスト言語制御変数 NetView コマンド・リスト言語制御変数 REXX 関数 62 IFRAUIND 62 REXX 関数 64 LINKDATA コマンド 176 LINKPD コマンド 178 NetView コマンド・リスト言語制御変数 REXX 関数 62 IFRAUSB2 62 LISTVAR の例 REXX 217 LOADCL 6 NetView コマンド・リスト言語制御変数 62 LOGIC (%LOGIC) ディレクティブ 26 LookAt メッセージ検索ツール xv LU IFRAUIN3 REXX 関数 62 IFRAUSC2 NetView コマンド・リスト言語制御変数 REXX 関数 63 IFRAUSDR NetView コマンド・リスト言語制御変数 REXX 関数 63 IFRAUSRB NetView コマンド・リスト言語制御変数 REXX 関数 63 IFRAUSRC NetView コマンド・リスト言語制御変数 REXX 関数 63 IFRAUTA1 NetView コマンド・リスト言語制御変数 REXX 関数 63 IFRAUWF1 NetView コマンド・リスト言語制御変数 REXX 関数 64 IP アドレス処理 49 IPV6ENV REXX 関数 54 64 L 61 IFRAUI3X NetView コマンド・リスト言語制御変数 REXX 関数 62 64 64 NetView コマンド・リスト言語制御変数 REXX 関数 64 IF 制御ステートメント 64 LINKTEST コマンド 176 NetView コマンド・リスト言語制御変数 63 63 63 63 63 64 REXX 関数 64 99 99 M MAPCL 6 MCSFLAG NetView コマンド・リスト言語制御変数 65 REXX 関数 65 MEMSTORE 5 MEMSTOUT 5 MSGASID NetView コマンド・リスト言語制御変数 65 REXX 関数 65 MSGAUTH NetView コマンド・リスト言語制御変数 65 REXX 関数 65 MSGCATTR NetView コマンド・リスト言語制御変数 65 REXX 関数 65 MSGCMISC NetView コマンド・リスト言語制御変数 65 REXX 関数 65 索引 239 MSGROUTE コマンド MSGCMLVL NetView コマンド・リスト言語制御変数 REXX 関数 66 NetView コマンド・リスト言語制御変数 REXX 関数 70 MSGCMSGT NetView コマンド・リスト言語制御変数 REXX 関数 MSGCNT REXX 関数 66 66 66 71 REXX 関数 71 MSGTSTMP NetView コマンド・リスト言語制御変数 71 NetView コマンド・リスト言語制御変数 REXX 関数 MSGDOMFL NetView コマンド・リスト言語制御変数 REXX 関数 MSGGBGPA MSGVAR、REXX 関数 71 MSU (管理サービス単位) 関数 NetView コマンド・リスト言語 (組み込み関数) 66 REXX 135 MSU 情報関数 76 67 NetView コマンド・リスト言語制御変数 REXX 関数 67 MSGGDATE 67 NetView コマンド・リスト言語制御変数 REXX 関数 67 67 132 MSUSEG 関数 85, 139 REXX 使用法の例 89 MVS コマンド 12 データ・セットの作成 3 MVSLEVEL NetView コマンド・リスト言語制御変数 95 REXX 関数 95 MVSRTAIN NetView コマンド・リスト言語制御変数 72 REXX 関数 67 REXX 関数 67 MSGGMFLG NetView コマンド・リスト言語制御変数 68 REXX 関数 68 MSGGMID NetView コマンド・リスト言語制御変数 68 REXX 関数 68 MSGGSEQ NetView コマンド・リスト言語制御変数 68 REXX 関数 68 MSGGSYID NetView コマンド・リスト言語制御変数 68 REXX 関数 68 MSGGTIME NetView コマンド・リスト言語制御変数 68 REXX 関数 68 MSGID REXX 関数 68 MSGITEM、NetView コマンド・リスト言語制御変数 69 MSGITEM、REXX 関数 69 MSGORIGIN、NetView コマンド・リスト言語制御変数 69 MSGORIGN、REXX 関数 69 MSGREAD 関数の設定 43 240 71 71 66 67 MSGGFGPA NetView コマンド・リスト言語制御変数 71 MSGTYP MSGCSPLX MSGCSYID NetView コマンド・リスト言語制御変数 REXX 関数 66 70 70 NetView コマンド・リスト言語制御変数 66 NetView コマンド・リスト言語制御変数 REXX 関数 66 70 MSGTOKEN REXX 関数 NetView コマンド・リスト言語制御変数 REXX 関数 66, 68 66 NetView コマンド・リスト言語制御変数 REXX 関数 MSGCPROD MSGSTR NetView コマンド・リスト言語制御変数 66 66 NetView コマンド・リスト言語制御ステートメント REXX 関数 MSGCOJBN 103 MSGSRCNM 66 72 N NCCFCNT NetView コマンド・リスト言語制御変数 NCCFID 組み込み関数 56, 140 NCCFSTAT 組み込み関数 56, 141 NETVIEW NetView コマンド・リスト言語制御変数 96 REXX 関数 96 NetView コマンド &PAUSE の使用 130 &WAIT の使用 156 NetView コマンド・リスト言語 関数、組み込み 123 機能 109 コーディングの規則 110 コメント 121 ヌル・ステートメント 121 比較、REXX 181 変数 114 ラベル 113 NOINPUT、&PAUSE のオペランド 130 NOSUB、&BEGWRITE のオペランド 128 プログラミング: REXX および NetView コマンド・リスト言語 55 NPDABA 関数 ROUTCDE (続き) 85 REXX 使用法の例 NVCNT 関数 55 REXX 関数 72 RUNCMD コマンド 92 NVDELID NetView コマンド・リスト言語制御変数 NetView コマンド・リスト言語制御変数 72 REXX 関数 72 NVID 関数 56 REXX 関数 RXDEFSTR NVMASTER 関数 56 NVSTAT 関数 99 99 NetView コマンド・リスト言語制御変数 REXX 関数 RXNUMENV 56 REXX 関数 RXOVRENV OPID NetView コマンド・リスト言語制御変数 REXX 関数 93 REXX 関数 99 99 NetView コマンド・リスト言語制御変数 93 99 99 NetView コマンド・リスト言語制御変数 O 99 99 RXOVRSTR OPSYSTEM NetView コマンド・リスト言語制御変数 REXX 関数 96 OST、自動タスク、制約事項 OVERRIDE コマンド NetView コマンド・リスト言語制御変数 REXX 関数 99 96 S SAY 命令、使用 SECURITY 27, 31 コマンド・リスト内でのネットワーク・コマンドの使用 制御アクセス、コマンド・リスト 4 96 PARMCNT NetView コマンド・リスト言語制御変数 REXX 関数 54 PARMSTR 制御変数 PARSE 命令 30 99 16 8 P PANEL REXX 関数 178 RXDEFENV 54 NetView コマンド・リスト言語制御変数 REXX 関数 73 SIGNAL 命令 39 54 PARTID NetView コマンド・リスト言語制御変数 96 REXX 関数 96 PAUSE 制御ステートメント、NetView コマンドを使用する 129, 130 PL/I コマンド・プロシージャー、REXX コマンドのネスト 36 PPT の制限 15 PRINT、コマンド・リストの例 219 PROFILE ステートメント 7 PRTY NetView コマンド・リスト言語制御変数 72 REXX 関数 72 R RECEDATA() REXX 関数 74 REPLYID NetView コマンド・リスト言語制御変数 REXX 関数 72 RESET コマンド 156 RETCODE 制御変数 55 RETURN コマンド、REXX の制限 12 ROUTCDE NetView コマンド・リスト言語制御変数 NetView 開始時のコマンド・リストの実行 SESSID 72 12 7 73 SMSGID NetView コマンド・リスト言語制御変数 73 REXX 関数 73 STACK コマンド 156 STCKGMT NetView コマンド・リスト言語制御変数 96 REXX 関数 96 STORAGE 関数 32 STRING、&PAUSE のオペランド 130 SUBSTR 組み込み関数 142 SUBSYM、REXX 関数 48 SUB、&BEGWRITE のオペランド 128 SUPPCHAR 96, 112 SUPPCHAR 制御変数 96 SUPPRESS &WAIT のオペランド 159 SYSCONID NetView コマンド・リスト言語制御変数 73 REXX 関数 73, 74 SYSID NetView コマンド・リスト言語制御変数 73 REXX 関数 73, 74 SYSPLEX NetView コマンド・リスト言語制御変数 96 REXX 関数 96 72 索引 241 WAIT (続き) T NetView コマンド・リスト言語制御ステートメント (続き) コーディングに関する提案 162 サンプルの使用 162 TAF セッションの例 TASK 2 終了 NetView コマンド・リスト言語制御変数 REXX 関数 TE コマンド TGLOBAL 97 97 158 REXX 命令 制御ステートメント 166 REXX 関数 59 THEN 文節、&IF 制御ステートメント ネストされた REXX コマンド・リスト WEEKDAYN 146 NetView コマンド・リスト言語制御変数 99 REXX 関数 Tivoli 126 xvi Tivoli ソフトウェア・インフォメーション・センター TOWER REXX 関数 97 TRACE END コマンド 98 98 WRITE 制御ステートメント WTOREPLY 73 研修、技術 xvi ユーザー・グループ Y 37 [特殊文字] REXX コマンド・リスト TS コマンド 37 TSO/E EXECIO コマンド TSO/E 環境 35 xvi Yahoo のユーザー・グループ、NetView 38 TRACE START コマンド TRAP REXX 関数 97 &1 - &31 パラメーター変数 &ACTIONDL 制御変数 60 42 TYPE、コマンド・リストの例 157 &ACTIONMG 制御変数 60 &APPLID 制御変数 93 34 TYPE REXX 関数 98 TYPEIT、コマンド・リストの例 &AREAID 制御変数 60 &ASID 制御変数 94 &ATTENDED 制御変数 94 &ATTNID 制御変数 60 &AUTCONID 制御変数 94 222 221 U UNSTACK コマンド 156 UPDCGLOB、コマンド・リストの例 224 V VARS、&PAUSE のオペランド 130 VIEW コマンド 14 VTAM コマンド 12 NetView コマンド・リスト言語制御変数 REXX 関数 98 VTCOMPID NetView コマンド・リスト言語制御変数 REXX 関数 98 98 98 W WAIT NetView コマンド・リスト言語制御ステートメント 一般 149 カスタマイズ 159 242 157 ネストされたコマンド・リストの使用 NetView コマンドの使用 156 38 TIME 制御変数 156, 161 制御変数とパラメーター変数 &AUTOTASK 制御変数 94 &AUTOTOKE 制御変数 60 &BEGWRITE 制御ステートメント 127 &BITAND 組み込み関数 132 &BITOR 組み込み関数 133 &BITXOR 組み込み関数 134 &CGLOBAL 制御ステートメント 167 &CONCAT 組み込み関数 135 &CONTROL 制御ステートメント 124 &CURCONID 制御変数 94 &CURSYS 制御変数 95 &DATE 制御変数 99 &DESC 制御変数 60 &DISTAUTO 制御変数 95 &DOMAIN 制御変数 95 &EXIT 制御ステートメント 148 &GOTO 制御ステートメント 147 &HCOPY 制御変数 99 &HDRMTYPE 制御変数 61 &IF 制御ステートメント 145 &IFRAUGMT 制御変数 61 &IFRAUI3X 制御変数 62 &IFRAUIN3 制御変数 62 &IFRAUIND 制御変数 62 プログラミング: REXX および NetView コマンド・リスト言語 xviii 43 &IFRAUSB2 制御変数 &PRTY 制御変数 72 &REPLYID 制御変数 72 62 &IFRAUSC2 制御変数 63 &IFRAUSDR 制御変数 63 &RETCODE 制御変数 55 &IFRAUSRB 制御変数 63 &RXDEFENV 制御変数 99 &IFRAUSRC 制御変数 63 &RXDEFSTR 制御変数 99 &IFRAUTA1 制御変数 63 &IFRAUWF1 制御変数 64 &JOBNAME 制御変数 &JOBNUM 制御変数 &KEY 制御変数 64 64 64 &RXNUMENV 制御変数 &SMSGID 制御変数 &LENGTH 組み込み関数 138 99 &RXOVRENV 制御変数 99 &RXOVRSTR 制御変数 99 &SESSID 制御変数 73 73 &STCKGMT 制御変数 96 64 &SUBSTR 組み込み関数 &MCSFLAG 制御変数 65 &SUPPCHAR 制御変数 96 &SYSCONID 制御変数 73 &MSGASID 制御変数 65 &SYSID 制御変数 &LINETYPE 制御変数 &LU 制御変数 99 &MSGAUTH 制御変数 65 142 73 &SYSPLEX 制御変数 96 &MSGCATTR 制御変数 65 &MSGCMISC 制御変数 65 &TASK 制御変数 97 &TGLOBAL 制御ステートメント &MSGCMLVL 制御変数 66 &MSGCMSGT 制御変数 66 &MSGCNT 制御変数 66 &THEN 文節、&IF 制御ステートメント &MSGCOJBN 制御変数 66 &MSGCPROD 制御変数 66 &MSGCSPLX 制御変数 66 &MSGCSYID 制御変数 66 &MSGDOMFL 制御変数 67 &MSGGBGPA 制御変数 67 &MSGGDATE 制御変数 67 &MSGGFGPA 制御変数 67 &MSGGMFLG 制御変数 68 &TIME 制御変数 99 &VTAM 制御変数 98 &VTCOMPID 制御変数 166 146 98 &WAIT 制御ステートメント 149 &WEEKDAYN 制御変数 98 &WRITE 制御ステートメント 126 &WTOREPLY 制御変数 73 /*%DATA ディレクティブ 25 /*%LOGIC ディレクティブ 26 %INCLUDE 21 &MSGGMID 制御変数 68 &MSGGSEQ 制御変数 68 &MSGGSYID 制御変数 68 &MSGGTIME 制御変数 68 &MSGID 制御変数 68 &MSGITEM 制御変数 69 &MSGORIGIN 制御変数 69 &MSGSRCNM 制御変数 70 &MSGSTR 制御変数 70 &MSGTOKEN 制御変数 71 &MSGTSTMP 制御変数 71 &MSGTYP 制御変数 71 &MSUSEG 組み込み関数 139 &MVSLEVEL 制御変数 95 &MVSRTAIN 変数 72 &NCCFCNT 制御変数 55 &NCCFID 組み込み関数 56, 140 &NCCFSTAT 組み込み関数 56, 141 &NETVIEW 制御変数 96 &NVDELID 制御変数 72 &OPID 制御変数 93 &OPSYSTEM 制御変数 96 &PARMCNT 制御変数 54 &PARMSTR 制御変数 54 &PARTID 制御変数 96 &PAUSE 制御ステートメント 129 索引 243 244 プログラミング: REXX および NetView コマンド・リスト言語 プログラム番号: 5697-NV6 Printed in Japan SA88-4395-00