256
IBM Tivoli NetView for z/OS バージョン 6 リリース 2 プログラミング: REXX および NetView コマンド・リスト言語 SA88-4395-01 (英文原典:SC27-2861-02)

プログラミング: REXX および NetView コマンド・ …...IBM Tivoli NetView for z/OS バージョン6 リリース2 プログラミング: REXX および NetView コマンド・リスト言語

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

IBM Tivoli NetView for z/OSバージョン 6 リリース 2

プログラミング: REXX およびNetView コマンド・リスト言語

SA88-4395-01(英文原典:SC27-2861-02)

���

IBM Tivoli NetView for z/OSバージョン 6 リリース 2

プログラミング: REXX およびNetView コマンド・リスト言語

SA88-4395-01(英文原典:SC27-2861-02)

���

お願い本書および本書で紹介する製品をご使用になる前に、 215ページの『特記事項』に記載されている情報をお読みください。

本書は、IBM Tivoli NetView for z/OS (製品番号 5697-NV6) の バージョン 6 リリース 2 および新しい版で明記されていない限り、以降のすべてのリリースおよびモディフィケーションに適用されます。

お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

 

原典: SC27-2861-02

IBM Tivoli NetView for z/OS

Version 6 Release 2

Programming: REXX and the NetView

Command List Language

発行: 日本アイ・ビー・エム株式会社

担当: トランスレーション・サービス・センター

第1刷 2014.2

© Copyright IBM Corporation 1997, 2013.

目次

図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

本書について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix対象読者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

IBM Tivoli NetView for z/OS ライブラリー . . . . . . . . . . . . . . . . . . . . . . . . ix関連資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiオンライン用語集へのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiNetView for z/OS オンライン・ヘルプの使用 . . . . . . . . . . . . . . . . . . . . . . . xiiiマニュアルへのオンライン・アクセス . . . . . . . . . . . . . . . . . . . . . . . . . xiiiマニュアルのご注文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

アクセシビリティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiiService Management Connect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivTivoli 技術研修 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivTivoli ユーザー・グループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivダウンロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivサポート情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv本書で使用される規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv書体の規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvオペレーティング・システム依存の変数とパス . . . . . . . . . . . . . . . . . . . . . . xvi構文図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi

第 1 章 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1コマンド・リスト使用の利点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1共通の開始コマンド・リストの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2ネットワーク制御プログラムの活動化の例 . . . . . . . . . . . . . . . . . . . . . . . . 2

コマンド・リストの作成方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3コマンド・リストへのアクセスの制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4ストレージへのコマンド・リストのロード . . . . . . . . . . . . . . . . . . . . . . . . . 5コマンド・リストの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

NetView 開始時のコマンド・リストの実行 . . . . . . . . . . . . . . . . . . . . . . . . 7ログオン時のコマンド・リストの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . 7メッセージまたは MSU を受け取った後のコマンド・リストの実行 . . . . . . . . . . . . . . . . 8端末からのコマンド・リストの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . 8指定された時刻または時間間隔でのコマンド・リストの実行 . . . . . . . . . . . . . . . . . . 8別のコマンド・リストからのコマンド・リストの実行 . . . . . . . . . . . . . . . . . . . . . 9ユーザー作成コマンド・プロセッサーからのコマンド・リストの実行 . . . . . . . . . . . . . . . 12

コマンド・リスト内のネットワーク・コマンドの使用 . . . . . . . . . . . . . . . . . . . . . 12コマンド・リスト内でのシステム・コマンドの使用 . . . . . . . . . . . . . . . . . . . . . 12コマンド・リスト内での長期実行コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . 13Tivoli NetView for z/OS パイプラインの使用 . . . . . . . . . . . . . . . . . . . . . . . 14VIEW コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14フルスクリーン・コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14基本 POI タスク (PPT) の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15AUTOTASK OST の制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

コマンド・リスト出力の制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16メッセージの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

第 2 章 REXX 言語の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19REXX 言語の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

© Copyright IBM Corp. 1997, 2013 iii

REXX コマンド・リストのコンパイルと実行 . . . . . . . . . . . . . . . . . . . . . . . . 20解釈される REXX での %INCLUDE の使用 . . . . . . . . . . . . . . . . . . . . . . . . 21Data REXX の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Data REXX ファイルの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22追加情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Data REXX ディレクティブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25/*%DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25/*%LOGIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

REXX コマンド・リストおよび Data REXX ファイルのコーディング規則 . . . . . . . . . . . . . . 27レコード・サイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27引用符の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27非 REXX コマンドの表示の抑制 . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Tivoli NetView for z/OS の REXX 命令に関する制約事項 . . . . . . . . . . . . . . . . . . . . 30オペレーター入力のための休止 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30SAY 命令の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31CALL 命令の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

REXX 関数に関する NetView の制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . 32REXX 関数パッケージの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32REXX コマンド・リストでアドレッシングされた環境の変更 . . . . . . . . . . . . . . . . . . . 33Data REXX ホスト・コマンド環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34EXECIO コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34MVS および VTAM コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34NetView ALLOCATE コマンドと FREE コマンドの使用 . . . . . . . . . . . . . . . . . . . . 34REXX コマンド・リストの使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35アセンブラー、C、または PL/I からの REXX のネスト . . . . . . . . . . . . . . . . . . . . 36REXX コマンド・リスト内の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37REXX コマンド・リストのトレース . . . . . . . . . . . . . . . . . . . . . . . . . . . 37REXX コマンド・リスト内の戻りコード. . . . . . . . . . . . . . . . . . . . . . . . . . 38REXX コマンド・リスト内のエラーからのリカバリー . . . . . . . . . . . . . . . . . . . . . 39

第 3 章 NetView 環境で実行されるコマンド・リストの REXX 命令 . . . . . . . . . . 41ネストされた REXX コマンド・リストでの TRAP の使用 . . . . . . . . . . . . . . . . . . . 42ネストされたコマンド・リスト内の WAIT の使用 . . . . . . . . . . . . . . . . . . . . . . 43ネストされたコマンド・リスト内の MSGREAD の使用. . . . . . . . . . . . . . . . . . . . . 43MSGREAD によって設定される関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 . . 45変換関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46IP アドレス処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49コマンド・リスト情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50クロスドメイン情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55データ・セット情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56グローバル変数情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58メッセージ処理情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58メッセージ処理情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59ROUTCDE の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

コマンド処理情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73REXX 管理サービス単位情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75ハードウェア・モニター (HMxxxxxx) の例 . . . . . . . . . . . . . . . . . . . . . . . . 85MSUSEG の構文および例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88推定原因の構文および例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

オペレーター情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92セッション情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93REXX 環境情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98端末情報関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99時刻および日付変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

iv プログラミング: REXX および NetView コマンド・リスト言語

ヌルおよびブランクの除去 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

第 5 章 自動化リソース管理 . . . . . . . . . . . . . . . . . . . . . . . . . . 101NetView 自動化テーブル・コマンド・リストの定義 . . . . . . . . . . . . . . . . . . . . . 101自動化テーブル駆動のコマンド・リストからのメッセージの経路指定 . . . . . . . . . . . . . . . . 101NetView 自動化のインプリメント . . . . . . . . . . . . . . . . . . . . . . . . . . . 102メッセージの抑制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102コマンド・リストの環境の決定 . . . . . . . . . . . . . . . . . . . . . . . . . . . 102自動化コマンド・リストのテスト . . . . . . . . . . . . . . . . . . . . . . . . . . . 102ループおよび自動化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104オペレーター対話に関する考慮事項 . . . . . . . . . . . . . . . . . . . . . . . . . . 104自動化に共通する問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

付録 A. NetView コマンド・リスト言語の簡単なコマンド・リストの作成 . . . . . . . . 107NetView コマンド・リスト言語に含まれるもの . . . . . . . . . . . . . . . . . . . . . . . 107NetView コマンド・リスト言語ステートメントのコーディングの規則 . . . . . . . . . . . . . . . 108一般的コーディングの規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108継続ステートメントの規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092 バイト文字セット・テキストの規則 . . . . . . . . . . . . . . . . . . . . . . . . . 110抑止文字の規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

ラベル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112変数置換の順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112パラメーター変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113コマンド・リストにパラメーター変数情報を渡す方法 . . . . . . . . . . . . . . . . . . . . 114コマンド・リストでのパラメーター変数の使用方法 . . . . . . . . . . . . . . . . . . . . . 115ネストされたコマンド・リストにパラメーター変数を渡す方法 . . . . . . . . . . . . . . . . . 115パラメーター変数内の引用符付きストリングまたは特殊文字の使用 . . . . . . . . . . . . . . . 116ヌル・パラメーター値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117制御変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117ユーザー変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

16 進表記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118コメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119ヌル・ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119割り当てステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

&CONTROL ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122オペレーターに対する書き込み . . . . . . . . . . . . . . . . . . . . . . . . . . . 123&PAUSE での NetView コマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . 128&PAUSE の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

NetView 組み込み関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130&BITAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131&BITOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131&BITXOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132&CONCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133&HIER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133&LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136&MSUSEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136&NCCFID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138&NCCFSTAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139&SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

付録 B. NetView コマンド・リスト言語のブランチ . . . . . . . . . . . . . . . . . 143&IF 制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143&GOTO 制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145&EXIT 制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

目次 v

&WAIT 制御ステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147&WAIT 制御ステートメントのコーディング . . . . . . . . . . . . . . . . . . . . . . . 148&WAIT の終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154NetView コマンドでの &WAIT の使用 . . . . . . . . . . . . . . . . . . . . . . . . . 154&WAIT で使用される制御変数とパラメーター変数 . . . . . . . . . . . . . . . . . . . . . 155ネストされたコマンド・リスト内の &WAIT の使用 . . . . . . . . . . . . . . . . . . . . 156&WAIT ステートメントのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . 157CONTWAIT が有効な場合の &WAIT の終了 . . . . . . . . . . . . . . . . . . . . . . . 159&WAIT のコーディングに関する提案 . . . . . . . . . . . . . . . . . . . . . . . . . 160&WAIT を使用したサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

付録 C. NetView コマンド・リスト言語のグローバル変数 . . . . . . . . . . . . . . 163&TGLOBAL および &CGLOBAL の使用法 . . . . . . . . . . . . . . . . . . . . . . . . 164

&TGLOBAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164&CGLOBAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

&TGLOBAL を使用したタスク・グローバル変数の更新方法 . . . . . . . . . . . . . . . . . . . 167&TGLOBAL および &CGLOBAL 使用時の変数のエクステント . . . . . . . . . . . . . . . . . 168GLOBALV コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

付録 D. REXX と NetView コマンド・リスト言語の比較 . . . . . . . . . . . . . . 171REXX 命令と NetView コマンド・リスト言語制御ステートメントとの比較 . . . . . . . . . . . . . 171REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 . . . . . . . . . . . . . 172コマンド・リストで使用されるコマンド . . . . . . . . . . . . . . . . . . . . . . . . . 183

付録 E. コマンド・リストの例の索引 . . . . . . . . . . . . . . . . . . . . . . . 185REXX コマンド・リストの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185NetView コマンド・リスト言語の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

付録 F. NetView のための REXX コマンド・リストの例 . . . . . . . . . . . . . . 189ACTAPPLS の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189ACTLU の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190CHKOPNUM の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191CHKRSTAT の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192CNMS1101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194CNME1080 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202CNMSRVAR の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205CNMSRVMC の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207DSPRSTAT の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208GETCG の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209GREETING の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209LISTVAR の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210PRINT の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211TYPE の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212TYPEIT の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

特記事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215プログラミング・インターフェース . . . . . . . . . . . . . . . . . . . . . . . . . . . 217商標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217プライバシー・ポリシーに関する考慮事項 . . . . . . . . . . . . . . . . . . . . . . . . . 217

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

vi プログラミング: REXX および NetView コマンド・リスト言語

||||||||||||||||||||||||||||||

1. STARTUP1 コマンド・リスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22. NCP 活動化の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33. DSICLD ステートメントによるデータ・セット連結の例 . . . . . . . . . . . . . . . . . . . 34. ネストされたコマンド・リスト . . . . . . . . . . . . . . . . . . . . . . . . . . . 105. ビット 17 をテストする REXX の例 . . . . . . . . . . . . . . . . . . . . . . . . . 736. ビット 17 をテストする NetView コマンド・リスト言語の例 . . . . . . . . . . . . . . . . . 737. ビット 17 をテストする REXX の POS 関数の使用法 . . . . . . . . . . . . . . . . . . . 738. HMASPRID の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859. HMASPRID の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

10. HMBLKACT の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8511. HMBLKACT の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8512. HMBLKACT の例 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8513. HMCPLINK の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8514. HMCPLINK の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8515. HMEPNAU、HMEPNET、および HMFWDSNA の例 . . . . . . . . . . . . . . . . . . . . 8616. HMEPNETV の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8617. HMEVTYPE の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8618. HMEVTYPE の例 B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8619. HMFWDED の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8620. HMFWDED の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8621. HMGENCAU の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8722. HMGENCAU の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8723. HMONMSU の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8724. HMONMSU の例 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8725. HMORIGIN の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8726. HMSECREC の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8827. HMSPECAU の例 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8828. HMSPECAU の例 B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8829. HMUSRDAT の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8830. MSUSEG() の例 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9031. MSUSEG() の例 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9032. MSUSEG() の例 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9033. MSUSEG() の例 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9034. 抑止文字の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11135. 割り当てステートメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12036. PATH コマンド・リスト例の結果 . . . . . . . . . . . . . . . . . . . . . . . . . . 12537. 1 行メッセージのオペレーターへの送信 . . . . . . . . . . . . . . . . . . . . . . . 12538. 変数置換を行う &BEGWRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . 12639. ENDIT コマンド・リスト例の結果 . . . . . . . . . . . . . . . . . . . . . . . . . 12740. テンプレートを解析する &HIER の例 . . . . . . . . . . . . . . . . . . . . . . . . 13541. &APPLID を使用してドメイン・ネームを判別する方法 . . . . . . . . . . . . . . . . . . 14142. TAF セッションを停止する CLIST の例 . . . . . . . . . . . . . . . . . . . . . . . 14743. 特殊文字のあるトークンのコーディングの例 . . . . . . . . . . . . . . . . . . . . . . 15244. 1 メッセージの &WAIT を発行するコマンド・リスト . . . . . . . . . . . . . . . . . . . 16145. ACTONE NODE1 のメッセージ・テキスト . . . . . . . . . . . . . . . . . . . . . . 16246. タスク・グローバル変数の定義、更新、および参照を行う CLIST1 コマンド・リスト . . . . . . . . 16747. タスク・グローバル変数を更新する UPDT1 コマンド・リスト . . . . . . . . . . . . . . . . 16748. グローバル変数のエクステントを表す GLOBVAR1 の例 . . . . . . . . . . . . . . . . . . 169

© Copyright IBM Corp. 1997, 2013 vii

viii プログラミング: 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 「コマンド・リファレンス 第 1 巻 (A - N)」(SA88-5442) および「コマンド・リファレンス 第 2 巻 (O - Z)」(SA88-5444) では、ネットワークとシステム操作およびコマンド・リストとコマンド・プロシージャーで使用することができるNetView コマンドについて記述しています。

v 「カスタマイズ・ガイド」(SA88-4388) では、NetView 製品をカスタマイズする方法が記述されており、関連情報のソースを参照できるようになっています。

© Copyright IBM Corp. 1997, 2013 ix

v 「Data Model Reference」(SC27-2850) では、Graphic Monitor Facility ホスト・サブシステム (GMFHS)、SNA トポロジー・マネージャー、およびマルチシステム・マネージャーのデータ・モデルについての情報を記載しています。

v 「インストール: 追加コンポーネントの構成」(GA88-4389) では、NetView の基本機能だけでなく追加機能を構成する方法について記述しています。

v 「インストール: グラフィカル・コンポーネントの構成」(GA88-4390) では、NetView グラフィックス・コンポーネントをインストールおよび構成する方法について記述しています。

v 「インストール: GDPS Active/Active Continuous Availability Solution の構成」(SA88-5450) では、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 「メッセージおよびコード 第 1 巻 (AAU-DSI)」(GA88-5445) および「メッセージおよびコード 第 2 巻 (DUI-IHS)」(GA88-5446) では、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 を使用する方法を含む) について記述しています。

v 「セキュリティー・リファレンス」(SA88-4397) では、NetView 環境の許可検査を実装する方法について記述しています。

x プログラミング: REXX および NetView コマンド・リスト言語

v 「SNA トポロジー・マネージャー インプリメンテーション・ガイド」(SA88-4398) では、サブエリアを管理するのに使用する NetView SNA トポロジー・マネージャー、拡張対等通信ネットワーキング (APPN)、および TN3270 リソースの計画および実装について記述しています。

v 「トラブルシューティング・ガイド」(GA88-5449) では、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 V6R2 Online Library」(LCD7-4913) には、NetView

for z/OS ライブラリーにある資料が含まれています。資料は、PDF フォーマットおよび HTML フォーマットで入手可能です。

関連資料REXX の詳細については、TSO/E REXX ライブラリーを参照してください。

追加の製品情報は、NetView for z/OS Web サイト (http://www.ibm.com/software/

tivoli/products/netview-zos/) 上で検索できます。

本書について xi

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 z/OS バージョン 6 リリース 2

v Tivoli NetView for z/OS バージョン 6 リリース 1

v Tivoli NetView for z/OS バージョン 5 リリース 4

v Tivoli NetView for z/OS バージョン 5 リリース 3

v Tivoli NetView for OS/390® バージョン 1 リリース 4

v サポートされなくなった NetView リリース

CNMCMDCNMCMD メンバーと、%INCLUDE ステートメントを使用してその中に組み込まれるメンバーの場合

CNMSTYLECNMSTYLE メンバーと、%INCLUDE ステートメントを使用してその中に組み込まれるメンバーの場合

DSIOPFDSIOPF メンバーと、%INCLUDE ステートメントを使用してその中に組み込まれるメンバーの場合

PARMLIBSYS1.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

xii プログラミング: REXX および NetView コマンド・リスト言語

特に断りのない限り、トピックでプログラムに言及する場合は、そのプログラムの最新のバージョンとリリースを指します。トピックでバージョンのみが示されている場合は、そのバージョンのすべてのリリースを指します。

トピックでパーソナル・コンピューターまたはワークステーションの使用に言及する場合は、プログラマブル・ワークステーションであればいずれも使用できます。

NetView for z/OS オンライン・ヘルプの使用インストール済み環境と構成に応じて、以下の種類の NetView for z/OS メインフレーム・オンライン・ヘルプが用意されています。v 一般ヘルプおよびコンポーネント情報v コマンド・ヘルプv メッセージ・ヘルプv センス・コード情報v 推奨処置

マニュアルへのオンライン・アクセス資料 DVD「IBM Tivoli NetView for z/OS V6R2 Online Library」には、製品ライブラリーにある資料が含まれています。資料は、PDF フォーマットおよび HTML フォーマットで入手可能です。ドキュメンテーションの利用方法については、DVD 上のREADME ファイルを参照してください。

IBM では、この製品の他すべての Tivoli 製品に関する資料が使用可能になった時点および更新された時点で、Tivoli Documentation Central の Web サイト(https://www.ibm.com/developerworks/mydeveloperworks/wikis/home/wiki/Tivoli

%20Documentation%20Central) に掲載しています。

注: PDF 文書をレターサイズ以外の用紙に印刷する場合は、Adobe Reader のメニューから「ファイル」>「印刷」を選択して表示されたウィンドウでオプションを設定し、レターサイズのページをご使用の用紙に印刷できるようにしてください。

マニュアルのご注文日本 IBM 発行のマニュアルはインターネット経由でもご購入いただけます。詳しくは http://www.ibm.com/jp/manuals/ の「マニュアル・出版物情報」をご覧ください。(URL は、変更になる場合があります)

アクセシビリティアクセシビリティー機能は、運動障害または視覚障害など身体に障害を持つユーザーがソフトウェア製品を快適に使用できるようサポートします。製品では標準のショートカット・キーとアクセラレーター・キーが使用されており、これらはオペレーティング・システムによって文書化されます。詳しくは、ご使用のオペレーティング・システムが提供する資料を参照してください。

詳しくは、「ユーザーズ・ガイド: NetView」の付録『アクセシビリティー』を参照してください。

本書について xiii

Service Management Connectサービス・マネジメント専門家と情報交換、学習、および共有を行います。これらの専門家は製品サポート技術のエキスパートであり、さまざまな見通しや専門知識を提供します。

Service Management Connect (http://www.ibm.com/developerworks/servicemanagement/

z/) にアクセスします。 Service Management Connect は以下の方法で利用できます。

v Tivoli 製品の他のユーザーと IBM 開発者の間の公開された進行中の取り組みである透過的開発に参加する。初期設計、スプリント・デモ、製品ロードマップ、プレリリース・コードにアクセスすることができます。

v 専門家と 1 対 1 でつながり、Tivoli および NetView コミュニティーに関して共同作業およびネットワーキングを行う。

v ブログを読んで、他の人の専門知識や経験を参考にする。

v WiKi やフォーラムを使用して、より広範囲にわたるユーザー・ コミュニティーと共同作業を行う。

Tivoli 技術研修以下は英語のみの対応となります。Tivoli 技術研修の情報については、以下の IBM

Tivoli Education Web サイト ( http://www.ibm.com/software/tivoli/education) を参照してください。

Tivoli ユーザー・グループTivoli ユーザー・グループは、独立した、ユーザーにより運営されたメンバーシップ組織であり、Tivoli ユーザーに対して、Tivoli Software ソリューションをインプリメントする際にユーザーを支援する情報を提供します。このユーザー・グループを介して、メンバーは情報を共有することができ、また、他の Tivoli ユーザーの知識や経験を習得することができます。

Tivoli ユーザー・グループには、http://www.tivoli-ug.org からアクセスします。

ダウンロードクライアントとエージェント、NetView 製品のデモンストレーション、およびいくつかの無償の NetView アプリケーションは、以下の NetView for z/OS サポートWeb サイトからダウンロードできます。

http://www.ibm.com/software/sysmgmt/products/support/IBMTivoliNetViewforzOS.html

「サポート・ショートカット」ペインで、「Tivoli NetView for z/OS」を展開し、「Fixes (downloads)」をクリックして、ダウンロードを検索または選択できるページに移動します。

これらのアプリケーションは、以下のタスクで使用できます。

xiv プログラミング: REXX および NetView コマンド・リスト言語

v カスタマイズ・パラメーターと初期化ステートメントを前のリリースからCNMSTUSR メンバーに、およびコマンド定義を前のリリースから CNMCMDU

メンバーにマイグレーションする

v 自動化テーブルの統計情報を取得し、その統計を自動化テーブルのリストとマージする

v ジョブ入力サブシステム (JES) ジョブの状況を表示するか、指定された JES ジョブを取り消す

v プログラム間インターフェース (PPI) を使用して NetView プログラムにアラートを送信する

v PPI を使用した、MVS コマンドの送信および受信

v タイム・シェアリング・オプション (TSO) コマンドを送信し、応答を受信する

サポート情報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 AssistantIBM Support Assistant は、 IBM ソフトウェア製品に関する疑問および問題の解決に役立つ無償のローカル・ソフトウェア保守サービス・ワークベンチです。Support Assistant により、問題判別のためのサポート関連の情報および保守サービス・ツールに迅速にアクセスできます。Support Assistant ソフトウェアをインストールするには、http://www.ibm.com/software/support/isa/

にアクセスします。

トラブルシューティング情報NetView for z/OS 製品の問題解決について詳しくは、「IBM Tivoli NetView

for z/OS トラブルシューティング・ガイド」を参照してください。 NetView

for z/OS 製品の追加サポートは、Yahoo の NetView ユーザー・グループ(http://groups.yahoo.com/group/NetView/) で得られます。このサポートの対象は NetView for z/OS ユーザーに限定されており、登録する必要があります。このフォーラムは、質問に答え、ガイダンスを与える NetView 開発者がモニターしています。コードに関する問題が見つかると、解決策を得るため正式な問題管理レコード (PMR) を開くよう求められます。

本書で使用される規則このセクションでは、本書で使用される規則について説明します。

書体の規則本書では、以下のような書体の規則を使用しています。

太字

本書について xv

v 太字にしないと、周囲のテキストと見分けがつけにくい小文字のコマンドおよび大/小文字混合のコマンド

v インターフェース・コントロール (チェック・ボックス、プッシュボタン、ラジオ・ボタン、スピン・ボタン、フィールド、フォルダー、アイコン、リスト・ボックス、リスト・ボックス内の項目、複数列のリスト、コンテナー、メニュー選択、メニュー名、タブ、プロパティー・シート)、ラベル (「ヒント:」、および「オペレーティング・システムの考慮事項:」など)

v 本文中のキーワードおよびパラメーター

イタリック

v 引用 (例: 資料、ディスケット、および CD のタイトル)

v テキスト内で定義されている語 (例: 非交換回線は、Point-to-Point 回線と呼ばれます)

v 語および文字の強調 (語の例:「制限節を導くには語 that を使用します」文字の例:「LUN アドレスは、文字 L で始める必要があります」)

v テキスト中の新規用語 (定義リスト内を除く): ビュー は、データが入っているワークスペース内のフレームです。

v 指定する必要がある変数および値: ... ここで、myname が表すものは...

モノスペース

v 例およびコード例

v 周囲のテキストと見分けがつけにくいファイル名、プログラミングのキーワード、およびその他のエレメント

v ユーザー宛てのメッセージ・テキストおよびプロンプト

v ユーザーが入力する必要のあるテキスト

v 引数またはコマンド・オプションの値

オペレーティング・システム依存の変数とパスワークステーション・コンポーネントの場合、本書では、環境変数およびディレクトリー表記に UNIX の規則を使用しています。

Windows コマンド行を使用する場合、環境変数では $変数 を %変数% に置き換え、ディレクトリーのパスではスラッシュ (/) をそれぞれ円記号 (¥) に置き換えます。環境変数の名前は、Windows 環境と UNIX 環境とで常に同じとは限りません。例えば、Windows 環境の %TEMP% と UNIX 環境で同等なのは、$TMPDIR

です。

注: Windows システムで bash シェルを使用している場合は、UNIX の表記規則を使用できます。

構文図構文図には、以下の構文エレメントが示されます。水平線 (メインパス) に従い、左から右、上から下に向かって構文図を見てください。v xviiページの『シンボル』v xviiページの『パラメーター』v xviiページの『句読点と括弧』

xvi プログラミング: REXX および NetView コマンド・リスト言語

v xviiiページの『省略形』

構文の例については、 xviiiページの『構文例』を参照してください。

シンボル構文図では、以下のシンボルを使用しています。

�� コマンド構文の先頭をマークします。

� コマンド構文が続くことを示します。

| コマンド構文の断片または一部の開始および終わりをマークします。

�� コマンド構文の終わりをマークします。

パラメーター構文図では、以下のタイプのパラメーターを使用しています。

必須 必須パラメーターはメインパス上に表示します。

オプションオプション・パラメーターはメインパスの下に表示します。

デフォルト値デフォルト・パラメーターはメインパスの上に表示します。パラメーターの説明では、デフォルト・パラメーターに下線が付けられています。

構文図では、強調表示、大括弧、または中括弧を使用していません。構文図において、主構文線に対する要素の相対位置は、要素が必須なのか、オプションなのか、またはデフォルト値なのかを示します。

コマンドを発行するときには、コンマなど別の区切り文字が構文内で指定されていない限り、パラメーター間にスペースが必要です。

パラメーターは、キーワードまたは変数に分類されます。キーワードは大文字で表記されます。ユーザーが指定する名前または値を表す変数は小文字で表記され、斜体で表示されるか、NetView ヘルプでは異なる色で表示されます。

以下の例では、USER コマンドがキーワード、user_id パラメーターが必須の変数、そして password パラメーターがオプションの変数です。

�� USER user_idpassword

��

句読点と括弧コロン、セミコロン、コンマ、負符号 (-)、および一重と二重の両方の引用符など、構文図で示されているすべての句読点を含める必要があります。

オペランドに複数の値がある場合、一般にそれらの値は、括弧で囲んでコンマで区切ります。単一の値の場合は一般に、括弧を省略できます。詳しくは xixページの『複数のオペランドまたは値』を参照してください。

キーワードと変数を区切るためにコマンドで定位置コンマが必要な場合、定位置コンマは、キーワードまたは変数の前に置きます。

本書について xvii

コマンドの例を示す場合は、定位置オペランドが存在しないことを示すためにもコンマを使用します。例えば、2 番目のコンマはオプションのオペランドが使用されていないことを示します。

COMMAND_NAME opt_variable_1,,opt_variable_3

末尾の定位置コンマを指定する必要はありません。末尾の定位置コンマと非定位置コンマは、無視されるか、またはコマンドが拒否されます。後ろにコンマがあるかどうかの各コマンド状態の制限により、コマンドは拒否されます。

省略形コマンドおよびキーワードの省略形は、各コマンドの説明の後の同義語テーブルにリストしています。

構文例次の例では、構文エレメントのさまざまな使用法を示します。v 『必須の構文要素』v 『オプションの構文要素』v xixページの『デフォルトのキーワードと値』v xixページの『複数のオペランドまたは値』v xixページの『1 行より長い構文』v xixページの『構文断片』

必須の構文要素:必須のキーワードと変数は、メイン構文線上に表示します。必須のキーワードと変数をコーディングする必要があります。

�� REQUIRED_KEYWORD required_variable ��

必要な選択項目 (2 つ以上の項目) は、メインパスの上側にある垂直スタックに表示されます。項目は英数字順に表示されています。

�� REQUIRED_OPERAND_OR_VALUE_1REQUIRED_OPERAND_OR_VALUE_2

��

オプションの構文要素:オプションのキーワードと変数は、メイン構文線の下に表示します。オプションのキーワードと変数は、コーディングしないことを選択できます。

��OPTIONAL_OPERAND

��

必要な選択項目 (2 つ以上の項目) は、メインパスの下側にある垂直スタックに表示されます。項目は英数字順に表示されています。

��OPTIONAL_OPERAND_OR_VALUE_1OPTIONAL_OPERAND_OR_VALUE_2

��

xviii プログラミング: REXX および NetView コマンド・リスト言語

デフォルトのキーワードと値:デフォルトのキーワードと値は、次のいずれかの方法でメイン構文線の上に示します。

v デフォルト・キーワードは、メイン構文線の上にのみ示します。このキーワードを指定するか、デフォルトにすることができます。以下の構文例では、デフォルト・キーワード KEYWORD1 をメイン構文線の上に、オプションのキーワードの残りをメイン構文線の下に示しています。

v オペランドのデフォルト値がある場合は、そのオペランドをメイン構文線の上下両方に示します。メイン構文線の下の値は、オペランドを指定する場合には、デフォルト値または示されている別の値も指定しなければならないことを示します。オペランドを指定しない場合は、メイン構文線の上にあるデフォルト値が使用されます。以下の構文例では、メイン構文線の上下にオペランド OPTION=*

のデフォルト値が示されています。

�� COMMAND_NAMEKEYWORD1

KEYWORD1KEYWORD2KEYWORD3

OPTION=*

OPTION= *VALUE1VALUE2

��

複数のオペランドまたは値:一群のオペランドまたは値の上にある左に戻る矢印は、複数選択が可能か、または1 つの値を繰り返すことができることを示しています。

��

,

REPEATABLE_OPERAND_OR_VALUE_1REPEATABLE_OPERAND_OR_VALUE_2REPEATABLE_OPERAND_OR_VALUE_3

,

KEYWORD= ( value_n ) ��

1 行より長い構文:図が 1 行より長い場合は、続きのある各行が 1 つの矢印で終わり、次の行の先頭が 1 つの矢印で始まります。

�� OPERAND1 OPERAND2 OPERAND3 OPERAND4 OPERAND5 OPERAND6 OPERAND7 �

� OPERAND8 ��

構文断片:構文図によっては、構文の長い、複雑な、または繰り返されるセクションを表すために使用する構文断片が含まれています。構文断片は、メインの構文図に続きます。各構文断片名は大/小文字混合で、メインの構文図と断片の見出しに表示されます。以下の構文例は、Fragment1 と Fragment2 という名前の 2 つの断片が存在する構文図を示しています。

本書について xix

�� COMMAND_NAME Fragment1Fragment2

��

Fragment1

KEYWORD_A=valueA KEYWORD_B KEYWORD_C

Fragment2

KEYWORD_D KEYWORD_E=valueE KEYWORD_F

xx プログラミング: 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, 2013 1

v サブシステムおよびプログラム (例えば、 VTAM、 CICS®、および TSO) のモニターおよび再始動。

v オペレーター画面についての情報を表示する。

v オペレーター・コマンドの入力を単純化する。

v オペレーター・コマンドとプロシージャーを、ユーザーのネットワークに合わせて調整する。

v 一連のコマンドを発行する必要があるときに、必ず、完全で順序が正しくなるようにする。

v オペレーターの役割を拡張、または、オペレーターの効率と生産性を向上する、特別なオペレーター・ダイアログをインプリメントする。

コマンド・リストを作成する前に、ユーザーのシステム、ネットワーク操作手順、およびオペレーターが定期的に実行するタスクを分析してください。それらのジョブのうちどれを、コマンド・リストを使用して実行したいのかを決定します。まず単純なコマンド・リストの作成から始めて、経験を積むに従って複雑な機能を追加していくようにしてください。

注: 本書では、 NetView オペレーター・コマンドについての説明はありません。特定のコマンドについての情報が必要な場合は、NetView オンライン・ヘルプまたは「IBM Tivoli NetView for z/OS コマンド・リファレンス 第 2 巻 (O - Z)」を参照してください。

共通の開始コマンド・リストの例端末アクセス機能 (TAF) セッションを、情報管理システム (IMS™) およびホスト・コマンド機能 (HCF) とともに設定したい場合、個別にコマンドを入力する代わりに、コマンド・リストを使用することができます。

図 1 (REXX で書かれている) は、 IMS および HCF との端末アクセス機能 (TAF)

セッションを確立します。

オペレーターは 3 つのコマンドを覚えておいて入力する必要はなく、コマンド・リスト名の STARTUP1 だけを入力します。コマンド・リストは 3 つのセッションを開始し、オペレーターはこれら 3 つのコマンドを発行した場合と同様のメッセージを受け取ります。

ネットワーク制御プログラムの活動化の例コマンド・リストを作成することによって、ネットワーク制御プログラム (NCP) を簡単に活動化することができます。 3ページの図 2 は、NCP を活動化する REXX

コマンド・リストの一例です。

/* 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 コマンド・リスト

基本トピック

2 プログラミング: REXX および NetView コマンド・リスト言語

コマンド・リストの作成方法コマンド・リストは、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 ステートメントをコーディングすることによって、データ・セットを連結します。

/* NCP1 */’V NET,ACT,ID=NCP1,LOAD=YES,LOADSTA=LINK1’EXIT

図 2. NCP 活動化の例

//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 コマンド・リファレンス 第 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 コマンドを使用して、コマンド・リストを主ストレージに入れたり出したり、現在主ストレージにあるコマンド・リストをリストしたりすることができます。

LOADCLDROPCL および 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 コマンドを発行できます。 101ページの『第 5 章 自動化リソース管理』には、コマンド・リストを使用した NetView 自動化の実行についての追加情報が含まれています。

端末からのコマンド・リストの実行他のコマンドやオペランドと同じ方法で、端末からコマンド・リスト名を入力することができます。コマンド・リストの名前を入力すると、そのコマンド・リストが処理を開始します。コマンド・リストの作成方法によっては、メッセージの応答や他の情報をオペレーターに送ることができます。

指定された時刻または時間間隔でのコマンド・リストの実行指定された時刻または時間間隔でコマンド・リストを実行するために、オペレーターは、次の NetView コマンドを使用することができます。

AFTER指定された期間の後でコマンド・リストを実行するように、Tivoli NetView

for z/OS プログラムに指示します。

AT 特定の時刻にコマンド・リストを実行するように、 Tivoli NetView for

z/OS プログラムに指示します。

基本トピック

8 プログラミング: REXX および NetView コマンド・リスト言語

CHRON複数の異なる柔軟な方法でコマンドを実行するように、Tivoli NetView for

z/OS プログラムに指示します。

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

他のコマンド・リストを実行するコマンド・リストの作成を計画するときは、以下の考慮事項に注意してください。

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 のステージ、あるいはグローバル変数プールを使用できます。

statement1astatement2astatement3a

statement5astatement6astatement7astatement8astatement9a

EXIT

CMDLISTB

CMDLISTA CMDLISTB CMDLISTC

statement1cstatement2cstatement3cstatement4cstatement5cstatement6cstatement7c

EXIT

statement1bstatement2bstatement3bstatement4bCMDLISTCstatement6b

EXIT

図 4. ネストされたコマンド・リスト

基本トピック

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

基本トピック

12 プログラミング: REXX および NetView コマンド・リスト言語

v MVS D A,L

詳細については、 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

基本トピック

第 1 章 はじめに 15

– SUBMIT

– TRAP

– 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 ステートメント( 122ページの『&CONTROL ステートメント』を参照)、&WAIT SUPPRESS 制御

基本トピック

16 プログラミング: REXX および NetView コマンド・リスト言語

ステートメント ( 157ページの『&WAIT ステートメントのカスタマイズ』を参照)、または抑止文字 ( 110ページの『抑止文字の規則』を参照) を使用します。

コマンド・リストの処理時に表示されるコマンドとメッセージは、NetView コマンド・ファシリティー・パネルのメッセージ領域に表示されます。通常、コマンド・リストの出力の前には C というタイプ・コードが付いています。NetView のパネル・レイアウトとそのパネルに送信されるメッセージ形式の詳細については、「IBM

Tivoli NetView for z/OS ユーザーズ・ガイド: NetView」を参照してください。

メッセージの処理メッセージ は、次の部分から構成されているオブジェクトです。

v オプションの応答 ID

v 1 行以上のテキスト

v 各行のテキストに関連した属性

v メッセージ全体に関連した属性

メッセージに存在する 現行メッセージ は常に、最大で 1 つのみです。現行メッセージは、以下のイベントのうち直近に発生したイベントにより設定されます。

v メッセージ自動化。プロシージャーが呼び出される際、自動化をトリガーしたメッセージが現行メッセージです。NetView 自動化について詳しくは、 101ページの『第 5 章 自動化リソース管理』を参照してください。

v パイプライン。直前のステージから渡されたメッセージによって、プロシージャーの呼び出しがトリガーされると、そのメッセージが現行メッセージになります。

v REXX の場合は、メッセージの正常な TRAP 後に発生する MSGREAD です。NetView CLIST 言語の場合は、&WAIT です。制御変数を &WAIT とともに使用する方法の詳細については、 155ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。

v プロシージャーが NetView パイプラインを「第 1 以外の」ステージとして動作している SAFE * とともに呼び出す場合。

前にリストされた、現行メッセージを設定するすべての方法は、メッセージを現行メッセージにした方法にかかわらず、現行メッセージからデータを戻します。複数行オペレーター宛メッセージ (MLWTO) の場合、これらの関数により検証されるのはメッセージの先頭行だけです。

現行メッセージ に関する情報は、REXX 関数か NetView CLIST 変数 ( 58ページの『メッセージ処理情報関数』を参照)、MSU 関数 ( 75ページの『REXX 管理サービス単位情報関数』を参照)、またはメッセージ情報のコマンド ( 183ページの『コマンド・リストで使用されるコマンド』を参照) を使用して検索できます。

注:

1. 通常、先頭行のテキストにある、ブランクで区切られた先頭の語がメッセージID として見なされます。応答 ID (存在する場合) は無視されます。

2. 現行メッセージがあるかどうかをテストするには、次のコマンドを発行します。

PIPE SAFE * | COUNT LINES | VAR LINECOUNT

基本トピック

第 1 章 はじめに 17

変数 LINECOUNT に 0 が入っている場合には、現行メッセージは存在しません。変数 LINECOUNT に 0 以外の値が入っている場合には、現行メッセージが存在します。

3. 現行メッセージに関するデータを戻す REXX 関数は、メッセージが現行メッセージになった方法に関係なくデータを戻します。複数行のメッセージの場合、これらの関数により検証されるのは先頭行だけです。ただし、特に明記されている関数を除きます。

4. MSGREAD、&WAIT、PIPE SAFE * が発行されると、メッセージがヌルであっても(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, 2013 19

らかじめ定義された操作を実行する組み込み関数も、何個か組み込まれています。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.V6R2M0.EAGPRC の中にあります。

– ロード・モジュールは、REXX CALL 命令を介して、または REXX 関数としてのみ、呼び出すことができます。

5. CEXEC 形式でコンパイルされた REXX コマンド・リストを実行するには、出力ファイルを DSICLD データ・セットのいずれか 1 つのメンバーに入れます。

REXX 言語の概要

20 プログラミング: REXX および NetView コマンド・リスト言語

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 コード形式が決まります。これらのディレクティブは、ロジック形式とデータ形式を切り替える際に役立ちます。これらのディレクティブについて次に説明します。

REXX 言語の概要

第 2 章 REXX 言語の概要 21

/*%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 ディレクティブのいずれかがあるかを判別し

REXX 言語の概要

22 プログラミング: REXX および NetView コマンド・リスト言語

ます。いずれかのディレクティブがある場合は、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 /*%DATA Put any comments you want here. */2 %> x = cglobal(’y’); /* getting a value for x3 PASSWORD = XYZ4 %> any comment */5 %> IF tower(’AON’) THEN6 AUTOCMD.mytable.ORDER = C

3 行目と 6 行目に %> コーディングがないことに注意してください。

tower(’AON’) 関数が真と評価されると、この例により次のレコードが生成されます。

AUTOCMD.mytable.ORDER = C

最初のステップで、3 行目がロードされます。ただし、3 行目は 3 番目のステップでは認識されません。それは、2 行目の REXX コメントの開始区切り文字 /* と 4

行目の REXX コメントの終了区切り文字 */ が一致するためです。

REXX 言語の概要

第 2 章 REXX 言語の概要 23

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

REXX 言語の概要

24 プログラミング: REXX および NetView コマンド・リスト言語

– MVSVAR

– 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 コードの形式が決まります。これらのディレクティブは、ロジック形式とデータ形式を切り替える際に役立ちます。

/*%DATANetView REXX /*%DATA ディレクティブは、その後に続く Data REXX コードに対してデータ・モードを指定します。/*%LOGIC ディレクティブが検出されるか、ファイルの終わり (EOF) に到達するまで、ファイルはデータ・モードのままです。

NetView REXX /*%DATA ディレクティブの構文は、次のとおりです。

/*%DATA

�� / * % DATA comments * / ��

ここで各要素は以下のとおりです。

/*%DATA/*%DATA ディレクティブの先頭には、1 桁目にスラッシュ記号 (/) を付けなければなりません。DATA の後にスペースが 1 つ必要で、DATA はすべて大文字である必要があります。ファイルは、1 行目が DATA または LOGIC ディレクティブで開始する必要があります。

comments

挿入したい任意のコメントを指定します。コメントは、複数の行にまたがることができます。

*/ DATA ディレクティブの終わりを指定します。

使用上の注意

REXX 言語の概要

第 2 章 REXX 言語の概要 25

v データ・モードでは、すべての REXX 命令の先頭に %> を 1 桁目に付ける必要があります。 %> で始まらない行は、データとして処理されます。

例: 次の例は、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%> ENDFinal data line

関連ステートメント: /*%LOGIC

/*%LOGICNetView REXX /*%LOGIC ディレクティブは、その後に続く Data REXX コードに対してロジック・モードを指定します。/*%DATA ディレクティブが検出されるか、ファイルの終わり (EOF) に到達するまで、ファイルはロジック・モードのままです。

NetView REXX /*%LOGIC ディレクティブの構文は、次のとおりです。

/*%LOGIC

�� / * % LOGIC comments * / ��

ここで各要素は以下のとおりです。

/*%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’

REXX 言語の概要

26 プログラミング: REXX および NetView コマンド・リスト言語

ELSEDO’%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 MARKSTHIS IS A STRING WITH DOUBLE QUOTATION MARKS

REXX 言語の概要

第 2 章 REXX 言語の概要 27

引用符で囲まれたストリングのテキスト中でアポストロフィまたは二重引用符を使用する場合、次の行をコーディングします。

SAY "IT’S EIGHT O’CLOCK. TIME TO BRING UP CICS."SAY ’IT’’S EIGHT O’’CLOCK. TIME TO BRING UP CICS.’SAY ’PLEASE ENTER "GO NODENAME" OR "GO STOP"’SAY "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 DDNAMEADDRESS MVS ’EXECIO 1 DISKR ’ DDNAME ’ ( STEM LINE’

注:

1. 複数レコードにまたがる引用符で囲まれたストリングのある REXX 文節を書くときは、注意が必要です。 Tivoli NetView for z/OS プログラムは、コマンド・リストを実行する前にすべての REXX コマンド・リスト・レコードから末尾のブランクを切り捨てるので、複数のレコードにまたがる、引用符で囲まれたストリングをもつ REXX 文節は、期待どおりに実行されない可能性があります。例

REXX 言語の概要

28 プログラミング: REXX および NetView コマンド・リスト言語

えば、次に示す複数レコードにまたがる REXX 文節の集合では、 Tivoli

NetView for z/OS プログラムが引用符付きストリングの中央にあるブランクを出力から削除します。

次のコマンドを入力します。

say ’ABCDEF’

出力は次のテキストです。

ABCDEF

すべての末尾ブランクが、文字 C と D の間から削除されました。

保持しておくブランクは、以下の例に示すように、その次の行にコーディングします。

say ’ABCDEF’

出力は次のテキストです。

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 コマンド・リストから発行されるコマンドに対しては無視されます。

REXX 言語の概要

第 2 章 REXX 言語の概要 29

IGNRLSUP コマンドと FOLDUP コマンドの詳細については、「IBM Tivoli NetView

for z/OS コマンド・リファレンス 第 1 巻 (A - N)」と「IBM Tivoli NetView for

z/OS コマンド・リファレンス 第 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 命令をコーディングします (PARSE PULL の場合は、REXX データ・スタックにデータが存在する

REXX 言語の概要

30 プログラミング: REXX および NetView コマンド・リスト言語

場合を除きます)。コマンド・リストは、一時的に停止された後、オペレーターが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 は一度に 32000 文字しか表示できません。

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 つのコマンド・リストの間で共用されます。このようなデータの共用を避けるために、CALL 命令を使用せずに、NetView

REXX 言語の概要

第 2 章 REXX 言語の概要 31

コマンドとしてルーチンを呼び出してください。Data REXX の使用時にはこのオプションを使用することができないことに注意してください。

REXX 関数に関する NetView の制約事項このセクションでは、 Tivoli NetView for z/OS プログラム用の REXX コマンド・リストまたは Data REXX ファイルに REXX 関数をコーディングする際に適用される、制約事項を説明します。

REXX LINESIZE() 関数は、Tivoli NetView for z/OS 用の REXX コマンド・リストまたは Data REXX ファイルで使用すると、常に 32728 の値を戻します。

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 チューニング・ガイド」を参照してください。

REXX 言語の概要

32 プログラミング: REXX および NetView コマンド・リスト言語

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 のみをサポートします。

REXX 言語の概要

第 2 章 REXX 言語の概要 33

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 を使用する方法の例については、 211ページの『PRINT の例』および 212ページの『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 プログラムが提供しているので、コマンド・リストで使用すると

REXX 言語の概要

34 プログラミング: REXX および NetView コマンド・リスト言語

きに、 ADDRESS MVS 命令を使用する必要がありません。 他の NetView コマンドと同様に、コマンドを引用符で囲んでください。 189ページの『付録 F.

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 レベルのネストされた

REXX 言語の概要

第 2 章 REXX 言語の概要 35

呼び出しをもつ 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 ライブラリーを参照してください。

REXX 言語の概要

36 プログラミング: REXX および NetView コマンド・リスト言語

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 コマンドの構文は以下のとおりです。

次のメッセージを受信したとします。

CNM431I REXX INTERACTIVE TRACE. ENTER ’GO TRACE OFF’ TO END TRACE,ENTER ’GO’ TO CONTINUE.

トレースを終了する場合は GO TRACE OFF と入力し、トレースを続行する場合はGO と入力します。また、トレース・ポイントに達したことを示すメッセージを 1

つ受信した後に、GO に続いてコマンド・リスト内の一定の場所で実行したいコマンドまたは命令を入力することができます。例えば、コマンド・リスト内のその場所で変数を特定の値に設定したい場合は、次のように入力します。

GO X=5

また変数の現行値を表示する場合は、次のように入力することができます。

GO SAY ’VAR1 CURRENTLY IS ’VAR1

TS

�� TS ��

REXX 言語の概要

第 2 章 REXX 言語の概要 37

いったん TS コマンドを入力したが、トレースが始まる前に、トレースを実行しないことに決めた場合、TRACE END (TE) コマンドを使用してトレースを取り消すことができます。TE コマンドを使用して、対話式でないトレースを終了させることもできます。

注: Data REXX では、TS および 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 コマンド・リスト内のエラーからのリカバリー』を参照してください。

TE

�� TE ��

REXX 言語の概要

38 プログラミング: REXX および NetView コマンド・リスト言語

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 キーを押す。

REXX 言語の概要

第 2 章 REXX 言語の概要 39

– ユーザーのコマンド・リストによって発行されたコマンドが、取り消されるか、または –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 ライブラリーを参照してください。

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 命令のリストについては、 171ページの『付録 D. 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, 2013 41

令にメッセージを提供する時まで処理を停止します。 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 命令を定期的に発行する。

NetView REXX 命令

42 プログラミング: REXX および NetView コマンド・リスト言語

ネストされたコマンド・リスト内の 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

NetView REXX 命令

第 3 章 NetView 環境で実行されるコマンド・リストの REXX 命令 43

以下の関数が設定されます。

変数 値

MSGORIGN()DOM01

MSGID()DSI008I

MSGSTR()SPAN1 NOT ACTIVE

MSGCNT()3

MSGVAR(1)SPAN1

MSGVAR(2)NOT

MSGVAR(3)ACTIVE

MSGVAR(4)–MSGVAR(31)ヌル

これらのメッセージ処理関数やその他のメッセージ処理関数の詳細については、58ページの『メッセージ処理情報関数』を参照してください。

注:

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

コマンド・リファレンス 第 1 巻 (A - N)」を参照してください。

4. MSGVAR(1) から MSGVAR(31) までの関数は、&1 から &31 までの NetView

コマンド・リスト言語のパラメーター変数と同じ方法でコマンド・リストが呼び出されたときに、値を指定することができます。コマンド・リストが呼び出されたときに MSGVAR(1) から MSGVAR(31) に値を指定する場合は、MSGREAD

命令を発行する前にそれらの値を変数に保管しておいてください。これにより、MSGREAD 命令によって変更された値を使用できます。

5. MSGREAD 命令を使用した後で、別の MSGREAD 命令を発行する前に、メッセージ関数の値を変数に保存してください。

NetView REXX 命令

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 関数のリストは、171ページの『付録 D. REXX と NetView コマンド・リスト言語の比較』を参照してください。このリストには、NetView プログラムが提供する関数と REXX 自体が提供する関数の両方が含まれます。

本章のテーブルでは、各 NetView REXX 関数および NetView コマンド・リストで使用される同等の NetView コマンド・リスト言語の制御変数により、実行されるタスクを示しています。各テーブルには、NetView 関数がリストされています。REXX 関数および同等の NetView コマンド・リスト言語の制御変数は、REXX 関数を先にして、アルファベット順に並べられています。

これらのテーブルでは、関数と制御変数は、後に説明を記載しています。

注:

© Copyright IBM Corp. 1997, 2013 45

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. 59ページの表 7 および 76ページの表 10 にリストされている REXX 関数は、Data REXX ファイルで使用するとき、処理するメッセージのない、一貫する値を戻します。

変換関数表 1. 変換関数関数または変数 説明

CODE2TXT(table,code) 各種タイプのコード・ポイントの各国語テキストへの変換を行います。

NetView プログラムを問題管理データベースとともに使用すると、NetView アラートの受信時に問題記録をオープンすることができます。アラートで受信した数字コード・ポイントを読み取り可能なテキストに変換するために、REXX ではコード・ポイント変換関数が用意されています。

CODE2TXT 関数の構文は以下のとおりです。

CODE2TXT

�� CODE2TXT ( table , code ) ��

REXX 関数

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 アドレス処理表 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 アドレスが有効ではありませんでした。

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

DOSAY OPID() ’IS NOT AUTHORIZED TO KEYWORD/VALUE’ RESULTEXIT

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 , )keywordkeyword=value

��

ここで各要素は以下のとおりです。

command

許可検査に使用されるコマンドを指定します。これは必須パラメーターです。ヌルまたは空のコマンドが渡されると、構文エラーが発生します。command パラメーターには、最大 8 文字まで指定できます。空白、コンマ、または等号を組み込むことはできません。

コマンド・セキュリティー検査は、最初にコマンド (コマンド同義語も可) に対して実行されます。値が有効なコマンドではない場合や、現在のオペレーターにそのコマンドを発行する権限がない場合は、そのcommand パラメーターが返されます。

keyword

権限検査の対象となるキーワード、または keyword=value ペアのキーワード部分を指定します。キーワードには、空白またはコンマを組み込むことができません。それぞれの keyword には、最大 246 文字まで入れることができます。REXX では、関数呼び出しで最大 20 個のパラメーターがサポートされているため、プログラムに渡すことができるキーワードとオプションの値は、最大 19 個です。キーワードが有効なキーワードではない場合、または指定されたキーワードを使用して指定されたコマンドを実行する権限が現在のオペレーターにない場合は、そのキーワードが返されます。

value

キーワードに対する値を指定します。それぞれの value には、最大 246 文字まで入れることができます。keyword と = (等号) を指定せずに value を指定することはできません。

変数置換ではヌル値が発生する場合があるため、AUTHCHKX はヌル値を受け入れ、= (等号) をはずして、「キーワード のみ」のセキュリティー検査を行います。例えば、変数置換後では、次の例はAUTHCHKX 関数の有効な呼び出しです。

AUTHCHKX(command,keyword1=,keyword2=value2

指定されたコマンドを、指定された keyword=value ペアを使用して実行する権限が現在のオペレーターにない場合は、その keyword=value ペアが返されます。

コマンド・リスト情報

52 プログラミング: REXX および NetView コマンド・リスト言語

表 3. コマンド・リスト情報 (続き)

関数または変数 説明

AUTHCHKX()(続き) 使用上の注意:

1. AUTHCHKX 呼び出しのすべてのパラメーターは、REXX 関数呼び出しの適切な形式であるコンマ区切りで指定する必要があります。

2. すべてのセキュリティー検査は、先頭および末尾のブランクが除去されたパラメーターを使用して実行されます。

3. keyword パラメーターまたは keyword=value ペア・パラメーターがヌルまたはすべて空白である場合、もしくはそのパラメーターが有効と見なされ、セキュリティー検査をパスした場合は、次のパラメーターに処理が移ります。

4. 現在のコマンドがセキュリティー検査をバイパスして実行されている場合 (AUTBYPAS(ON) が指定されている場合など) は、すべてのセキュリティー検査をパスしたことになります。

5. 現在のオペレーターが、指定されたすべてのキーワードおよび keyword=value ペアを使用して指定されたコマンドを発行する権限を保持しており、すべてのパラメーターが有効と見なされる場合は、権限が許可されていることを示すヌル・ストリングが返されます。

6. 一部のコマンド (READSEC、WRITESEC など) で指定できるパラメーターは、コマンド・プロセッサーが許可検査を実行するときには、標準の keyword=value 構文に従っていません。AUTHCHKX がこれらのパラメーターに対して同等の許可検査を実行できるようにするには、コマンドで必須とされている構文ではなく、keyword=value 必須構文でこれらのパラメーターを指定してください。目的の AUTHCHKX 関数呼び出しをコーディングする前に、既存のコマンドに関するすべての入手可能な資料を参照してください。

7. キーワード・セキュリティーについては、RACF ライブラリーおよび「IBM Tivoli NetView for z/OS セキュリティー・リファレンス」を参照してください。

例:

NetView のコマンド・リスト言語プログラム NVCLCMD が、渡された 2 つのパラメーターの権限検査を行う必要がある場合は、以下のように指定して REXX プログラム NVCHKAUT を呼び出すことができます。

NVCHKAUT NVCLCMD,&P1,&P2

NVCHKAUT は、以下のようにコーディングできます (初期 REXX コメント行の後)。

PARSE ARG cmd’,’parm1’,’parm2res=AUTHCHKX(cmd,parm1,parm2)Return_Code = 0IF res <> ’’ THENDOSAY OPID() ’IS NOT AUTHORIZED TO ISSUE’ ,

cmd ’WITH’ resReturn_Code = 8

ENDReturn Return_Code

この例では、parm1 または parm2 で渡されたパラメーターのいずれかが、cmd で渡されたコマンドとの権限検査にパスしない場合、AUTHCHKX によって非ヌル値が返されます。現在は keyword=value が実行中であるため、そのコマンドは現在のオペレーターによる実行が許可されている必要があります。キーワードが検査にパスしない場合、そのキーワードは渡されたコマンドとともにメッセージに組み込まれ、REXX プログラムは戻りコード 8 を設定し、それを戻します。値が検査にパスしない場合、キーワードと値は渡されたコマンドとともにメッセージに組み込まれ、REXX プログラムは戻りコード 8 を設定し、それを戻します。例えば、OPER1 がNVCLCMD START, LU=LU200 と入力したが、START キーワードの使用を許可されていない場合は、メッセージ OPER1 IS NOT AUTHORIZED TO ISSUE NVCLCMD WITH START が表示され、NVCHKAUT はNVCLCMD に戻りコード 8 を返します。NVCLCMD は、その後、以降の処理を行わずに終了します。

CMDNAME()この REXX 専用関数は、プログラムの呼び出し時に用いられた名前を戻します。この名前は、REXX PARSE

SOURCE コマンドによって 3 番目のトークンに戻される名前と同じ場合があります。この名前は、入力されたときのコマンドです。場合によってはその同義語です。

Data REXX では、この関数は、処理されているファイルのメンバー名を戻します。

コマンド・リスト情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 53

|

表 3. コマンド・リスト情報 (続き)

関数または変数 説明

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 この値が返された場合には、NetView サービス、関数、およびコンポーネントは IPv6 オペレーションのみを実行しようとします。それが成功しないか、IPv4 アドレスのみが使用可能な場合には、失敗します。

PARMCNT()

&PARMCNT

コマンド・リストの開始時に入力されるパラメーター変数の数を戻します。例えば、コマンド・リスト RESC

が、RESC ACT,LU200 を入力することによって開始される場合、 PARMCNT は 2 になります。パラメーター変数が存在しない場合、PARMCNT はゼロです。

&PARMSTR コマンド・リストの開始時に使用されるパラメーター値のストリングを戻します。&PARMSTR は、コマンド・リスト名を含みません。例えば、コマンド・リスト RESC が RESC ACT,LU200 を入力することによって開始される場合、&PARMSTR は ACT,LU200 になります。パラメーター変数が存在しない場合、&PARMSTR はヌルです。&PARMSTR によって戻される、ストリングの最大長は 255 文字です。

&RETCODE 最新のコマンド・プロシージャー、最新の活動化されたコマンド・リスト、もしくは最新のネストされたコマンド・リストのいずれかによって設定される戻りコードを戻します。

&RETCODE はゼロに初期設定されています。 &RETCODE は、コマンド・プロシージャーまたはネストされたコマンド・リストによって設定されます。別のコマンド・リストによって呼び出されるコマンド・リストを作成する場合、ネストされたコマンド・リスト内の &EXIT ステートメントで戻りコードを設定することができます。呼び出し側のコマンド・リストで &RETCODE を使用すると、この戻りコードをテストすることができます。 145ページの『&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 または他の障害の結果、コマンド・リストが停止しました。

コマンド・リスト情報

54 プログラミング: REXX および NetView コマンド・リスト言語

クロスドメイン情報関数表 4. クロスドメイン情報関数

関数または変数 説明

NVCNT()

&NCCFCNT

オペレーターがクロスドメイン・セッションを確立できる、NetView ドメインの数を戻します。

NVID(n)

&NCCFID n

クロスドメイン・セッションの確立が可能なドメインの NetView ドメイン ID を戻します。クロスドメイン・セッションの確立が可能なドメインは、オペレーター・プロファイルの DOMAINS ステートメントによって定義されます。

ただし、ユーザーのプロファイルが 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)

&NCCFSTAT name

ドメインとのアクティブ・セッションがあるかどうかを示します。 name の値は、照会中のドメインのドメイン ID です。ドメインとのアクティブ・セッションがある場合、NVSTAT(name) または &NCCFSTAT は ACT の値を戻します。ドメインとのアクティブ・セッションがない場合には、INACT が戻されます。注: name を指定しない場合、あるいは無効な name を指定した場合には、次のようになります。

v NVSTAT の場合には、ヌルが戻されます。

v &NCCFSTAT の場合には、エラー・メッセージが戻されます。

クロスドメインおよびグローバル変数

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 55

データ・セット情報関数表 5. データ・セット情報関数関数または変数 説明

FNDMBR

(DD_name,member_name)

DD 名によって識別されたファイル内の、指定されたメンバーの検出を試みます。ファイルは、FNDMBR の実行時にすでに NetView によって割り振られている必要があります。割り振られたファイルは、区分データ・セット (PDS) でなければなりません。FNDMBR は、2 つの明確な結果と、REXX プログラムのデバッグに使用可能な、調査を要するいくつかの結果を戻します。

FNDMBR 関数の引数は、次のように定義されています。

DD_name

割り振られた PDS ファイルが NetView プログラムに認識される際の DD 名を指定します。

member_name

検出しようとする、割り振り済み PDS ファイル内のメンバーの名前を指定します。

データ・セット情報関数

56 プログラミング: REXX および NetView コマンド・リスト言語

表 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 メッセージが出されるため、これは行わないでください。

データ・セット情報関数

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 57

グローバル変数情報関数表 6. グローバル変数情報関数

関数または変数 説明

CGLOBAL(name) REXX

名前付き共通域グローバル変数が存在する場合には、その値を戻します。指定された name をもつ共通グローバル変数が存在しない場合には、ヌル値が戻されます。 name を指定しない場合、または複数の name を指定した場合には構文エラーとなります。

NetView コマンド・リスト言語

NetView コマンド・リスト言語制御ステートメント &CGLOBAL は、ここで説明する NetView REXX 関数とは、機能的に異なります。 164ページの『&TGLOBAL および &CGLOBAL の使用法』 を参照してください。

TGLOBAL(name) REXX

指定されたタスク・グローバル変数が存在する場合には、その値を戻します。指定された name をもつタスク・グローバル変数が存在しない場合には、ヌル値が戻されます。 name を指定しない場合、または複数の name を指定した場合には構文エラーとなります。

NetView コマンド・リスト言語

NetView コマンド・リスト言語制御ステートメント &TGLOBAL は、ここで説明する NetView REXX 関数とは、機能的に異なります。 164ページの『&TGLOBAL および &CGLOBAL の使用法』 を参照してください。

メッセージ処理情報関数59ページの表 7 は、NetView プログラムがサポートするすべてのオペレーティング・システム・プラットフォームによって生成されるメッセージで (特に明記しない限り) 使用できる関数および変数を示しています。

使用できるメッセージ処理情報がない場合には、特に指定がない限り、 NetView コマンド・リスト言語の制御変数および REXX 関数の値はヌルです。

このセクションに記載されている関数と変数の一部では、現行メッセージ について説明しています。 17ページの『メッセージの処理』では、現行メッセージ に関する追加情報が記載されています。

データ・セット情報関数

58 プログラミング: REXX および NetView コマンド・リスト言語

メッセージ処理情報表 7. メッセージ処理情報

関数または変数 説明

ACTIONDL()

&ACTIONDL

NetView プログラムが関連メッセージを削除した理由を戻します。次のいずれかの値になります。

(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

メッセージに、制御フラグ設定の無効な組み合わせがあります。

ACTIONMG()

&ACTIONMG

メッセージがアクション・メッセージである場合には 1 を戻します。それ以外の場合には、0 を戻します。

AREAID()

&AREAID

メッセージを表示する複数コンソール・サポート・パネル上の区域についての、 1 文字(A から Z) の ID を戻します。

ATTNID()

&ATTNID

VSE アテンション ID を戻します。正符号 (+) は、このメッセージに対して即時に 応答が必要であることを示します。負符号 (-) は、このメッセージに対して応答が必要であることを示します。

メッセージが VSE システムからのものである場合には、この関数には値がありますが、非 VSE メッセージの場合にはヌルです。

AUTOTOKE()

&AUTOTOKE

MVS メッセージ処理機能 (MPF) 自動化トークンの 1 から 8 文字までの名前を戻します。注: MPF テーブルで AUTO(YES) または AUTO(NO) を指定している場合、値 YES およびNO は自動化トークンではありません。

DESC()

&DESC

MVS DESCriptor コードを、順位のあるビットを表す一連の 16 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 コード値の詳細については、MVS ライブラリーを参照してください。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 59

表 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

受信されたメッセージまたは MSU の、 1 文字の NetView バッファー・タイプを指定します。バッファー・タイプは、「IBM Tivoli NetView for z/OS プログラミング: アセンブラー」に説明されています。

IFRAUGMT()

&IFRAUGMT

自動化内部機能要求 (AIFR) が作成されたら、 UTC 平均時間を戻します。変数IFRAUGMT は、ストア・クロック形式の 8 バイトの 16 進値で戻されます。

メッセージ処理

60 プログラミング: REXX および NetView コマンド・リスト言語

表 7. メッセージ処理情報 (続き)

関数または変数 説明

IFRAUIND()

&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 メッセージは非送信請求されました。注:

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 = デフォルトの優先順位

01 = 低い優先順位10 = 高い優先順位11 = 受信側の優先順位のテスト

3 VM PMX

IFRAUI3X()

&IFRAUI3X

DSIIFR の IFRAUI3X の語の中の制御フラグに相当する、1 と 0 の値の 32 バイトのストリングを戻します。先頭の 8 ビットは、IFRAUIN3 と同じで、32 ビットすべてを一度にアクセスできます。

IFRAUSB2()

&IFRAUSB2

DSIIFR 内の 2 バイトのユーザー・フィールドを 2 文字のストリングで戻します。注:

1. フィールドがすべてブランクかまたは 2 進ゼロの任意の組み合わせである場合、この関数はヌルです。

2. IFRAUSB2 と IFRAUSRB は同じユーザー・フィールドを指しますが、値は別の形式で戻します。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 61

表 7. メッセージ処理情報 (続き)

関数または変数 説明

IFRAUSC2()

&IFRAUSC2

DSIIFR 内の 16 バイトのユーザー・フィールドを、順位のあるビットを表す一連の128 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。注: IFRAUSC2 と IFRAUSRC は同じユーザー・フィールドを指しますが、値は別の形式で戻します。

IFRAUSDR()

&IFRAUSDR

発信元の NetView タスクの 1 文字から 8 文字までの名前を戻します。

IFRAUSRB()

&IFRAUSRB

DSIIFR 内の 2 バイトのユーザー・フィールドを、順位のあるビットを表す一連の 16

個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。注: IFRAUSRB と IFRAUSB2 は同じユーザー・フィールドを指しますが、値は別の形式で戻します。

IFRAUSRC()

&IFRAUSRC

DSIIFR 内の 16 バイトのユーザー・フィールドを 16 文字のストリングで戻します。注:

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 プログラミング: アセンブラー」を参照してください。

メッセージ処理

62 プログラミング: REXX および NetView コマンド・リスト言語

表 7. メッセージ処理情報 (続き)

関数または変数 説明

IFRAUWF1()

&IFRAUWF1

4 バイトの MVS 特有の WTO 情報を、順位のあるビットを表す一連の 32 個のオン(1) およびオフ (0) の EBCDIC 文字で戻します。定義された使用法で有効な特定のビット位置とその意味は、次のとおりです。

6 メッセージは WTOR です。

7 メッセージは抑制されます。

8 すべてにブロードキャストします。

9 ジョブ名を表示します。

10 状況を表示します。

14 セッションを表示します。注: 他のビットは、テストすることはできますが、定義された使用法はありません。この区域内での MLWTO フラグにも定義された使用法はありません。 MLWTO インディケーターは、データ・バッファーに移されます。

JOBNAME()

&JOBNAME

1 から 8 文字までの MVS ジョブ名の ID を戻します。 JOBNAME は、メッセージを発信したジョブの名前であるため、メッセージが指しているジョブの名前と常に同じであるとは限りません。例えば、MVS が NetView ジョブに関するメッセージを発行している場合、ジョブ名は異なることがあります。また、ジョブの開始時または停止時にJOBNAME がイニシエーターの名前 (実際のジョブ名ではなく) を含む可能性もあります。始動中または停止中にメッセージが出される場合は、ジョブ名は JOBNAME 関数を使用するのではなくメッセージ・テキストから抜き出してください。

MSGCOJBN を使用すると同じ情報が提供されます。

JOBNUM()

&JOBNUM

8 文字の MVS ジョブ番号 ID を戻します。注: MVS ジョブ ID には、ブランクが埋め込まれている場合があります。

KEY()

&KEY

メッセージに関連した 8 文字の検索キーを戻します。

LINETYPE()

&LINETYPE

以下の複数行のオペレーター向け書き込み (MLWTO) 行タイプまたは MSU データ・バッファー・タイプを戻します。

C メッセージ制御行。

L メッセージ・ラベル行。

D メッセージ・データ行。

DE 最終メッセージ・データ行。

E この行は最終メッセージ行で、データは入っていません。

H この行は HIER データ・バッファー・タイプです。

M この行は MSU データ・バッファー・タイプです。

blank メッセージは単一行メッセージです。

ヌル このコマンド・リストに関連したメッセージまたは MSU データ・バッファーはありません。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 63

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MCSFLAG()

&MCSFLAG

システム・メッセージ・フラグを、順位のあるビットを表す一連の 8 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 メッセージを条件付きでコンソール SYSCONID に送信します。

2 メッセージを無条件でコンソール SYSCONID に送信します。

3 RESP。

4 REPLY。

5 BRDCST。

6 HRDCPY のみ。

7 NOTIME。

8 NOCPY。注:

1. この関数は、自動化テーブル比較項目と同じ、複数コンソール・サポート・フラグのマッピングを戻しません。

2. MCSFLAG='00000000' の設定は有効です。これは、着信 WTO により設定されるMCSFLAG をオーバーライドします。

MSGASID()

&MSGASID

メッセージが出された MVS のシステム・アドレス・スペース ID を戻します。MSGASID の値は、1 桁から 5 桁までの 10 進数です。注: MVS アドレス・スペースから出されたものではないメッセージに対しては、この値はヌルです。

MSGAUTH()

&MSGAUTH

メッセージが許可プログラムから出されたものであるかどうかを示す 2 文字の値を戻します。

00 WTO メッセージは MVS から出されていません。

10 WTO は未許可プログラムから出されています。

11 WTO は許可プログラムから出されています。

MSGCATTR()

&MSGCATTR

16 ビットの MVS メッセージ属性フラグを、順位のあるビットを表す一連のオン (1)

およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 メッセージは抑制されます。

2 メッセージはコマンド応答です。

3 メッセージは許可プログラムによって出されました。

4 メッセージは、自動化メッセージ保存機能 (AMRF) によって保存されます。注: 他のビットは、テストすることはできますが、定義された使用法はありません。

メッセージ処理

64 プログラミング: REXX および NetView コマンド・リスト言語

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGCMISC()

&MSGCMISC

8 ビットの MVS の各種経路指定フラグを、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 UD (配信不能) メッセージを表示します。

2 UD メッセージのみを表示します。

3 ID のみを使用してキューに入れます。

4 メッセージが NetView 自動化に対して適格であるとして、メッセージ処理機能 (MPF) テーブルにマークされているかどうかを示します。

注:

1. この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

2. 他のビットは、テストすることはできますが、定義された使用法はありません。

MSGCMLVL()

&MSGCMLVL

16 ビットの MVS メッセージ・レベル・フラグを、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 WTOR

2 即時アクション

3 クリティカル・イベント・アクション

4 イベント・アクション

5 通知

6 ブロードキャスト注: 他のビットは、テストすることはできますが、定義された使用法はありません。

MSGCMSGT()

&MSGCMSGT

16 ビットの MVS メッセージ・タイプ・フラグを、順位のあるビットを表す一連のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 ジョブ名を表示します。

2 状況を表示します。

3 活動状態をモニターします。

6 SESS をモニターします。注:

1. この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

2. 他のビットは、テストすることはできますが、定義された使用法はありません。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 65

|||

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGCNT()

&MSGCNT

REXX

現行メッセージのメッセージ・ストリング内の項目数を戻します (現行メッセージ については、 17ページの『メッセージの処理』を参照してください)。

NetView コマンド・リスト言語

メッセージ・ストリング内のワード数を戻します。

制御変数を &WAIT とともに使用する方法の詳細については、 155ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。

MSGCOJBN()

&MSGCOJBN

1 から 8 文字までの発信元ジョブ名を戻します。JOBNAME を使用して、同じ情報を利用することができます。

MSGCPROD()

&MSGCPROD

16 文字の MVS プロダクト・レベルを戻します。文字は、次のように定義されています。

v 最初の 4 文字は、MVS 制御点オブジェクトのバージョン・レベルを表します。

v 次の 4 文字は、制御プログラム名 (MVS) を表します。

v 最後の 8 文字は、発信側システムの機能変更 ID (FMID) を表します。

注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGCSPLX()

&MSGCSPLX

受け取ったメッセージが発信された MVS SYSPLEX の 1 から 8 文字の名前を戻します。注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGCSYID()

&MSGCSYID

DOM に対する 1 から 3 桁の 10 進数のシステム ID を戻します。注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGDOMFL()

&MSGDOMFL

8 ビットの MVS DOM フラグを、順位のあるビットを表す一連のオン (1) およびオフ(0) の EBCDIC 文字で戻します。 有効なビット位置とその意味は、次のとおりです。

1 メッセージ ID による DOM

2 システム ID による DOM

3 ASID による DOM

4 ジョブ・ステップ TCB による DOM

5 トークンによる DOM

注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

メッセージ処理

66 プログラミング: REXX および NetView コマンド・リスト言語

|||

|||||

|||

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGGBGPA()

&MSGGBGPA

4 バイトの 16 進数の背景表示属性を戻します。有効なバイトとその説明は、次のとおりです。

1 背景色制御フィールド

2 背景色フィールド

3 背景色強調表示フィールド

4 背景色輝度フィールド

次の書式のいずれかを使用して、16 進値を検査してください。

REXX

IF MSGGBGPA() = ’12345678’X THEN ...

NetView コマンド・リスト言語&IF &MSGGBGPA = X’12345678’ &THEN ...

注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGGDATE()

&MSGGDATE

yyyyddd の 7 文字形式でメッセージ日付を戻します。 yyyy は年、ddd は暦日を示します。注: これが必ずしも現在日付であるとは限りません。MVS が、メッセージが発行されたとして関連づけた日付である場合もあります。

MSGGFGPA()

&MSGGFGPA

4 バイトの 16 進数の前景表示属性を戻します。有効なバイトとその意味は、次のとおりです。

1 前景色制御フィールド

2 前景色フィールド

3 前景色強調表示フィールド

4 前景色輝度フィールド

次の書式のいずれかを使用して、16 進値を検査してください。

REXX

IF MSGGFGPA() = ’12345678’X THEN ...

NetView コマンド・リスト言語&IF &MSGGFGPA = X’12345678’ &THEN ...

注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGGMFLG()

&MSGGMFLG

16 ビットの MVS 汎用メッセージ・フラグを戻します。 有効なビット位置とその意味は、次のとおりです。

1 DOM (オペレーター・メッセージの削除)

注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

MSGGMID()

&MSGGMID

4 文字の 16 進値の MVS メッセージ ID フィールドを戻します。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 67

|||

|||

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGGSEQ()

&MSGGSEQ

1 から 8 文字までの数値の 10 進数シーケンス番号を戻します。この関数はMSGGMID の最後の 3 バイトを表します。

MSGGSYID()

&MSGGSYID

1 から 3 文字までの数値の 10 進数システム ID を戻します。これは、MSGGMID の最初のバイトです。

MSGGTIME()

&MSGGTIME

11 文字 (ピリオドを含む) の時刻を hh.mm.ss.th の形式で戻します。この記述の中で、hh は時間、mm は分、ss は秒、th は 10 分の 1 秒および 100 分の 1 秒です。

MSGID()

&MSGID

REXX

現行メッセージ のメッセージ ID を戻します (現行メッセージ の定義については、 17ページの『メッセージの処理』を参照してください)。これは先頭のトークンです。ここではトークンはブランクで判別されます。応答 ID (存在する場合) は無視されます。メッセージとともに応答 ID が送信される場合には、先頭のトークンとして使用されません。複数行オペレーター宛メッセージ(MLWTO) の場合、MSGID はメッセージの先頭行の先頭のトークンを使用します。MSU バッファーが処理中の場合、MSGID はヌル ('') と同じです。注: VM PROP/PMX インターフェースを通じて受信されるメッセージの場合、メッセージの前に追加される情報のため、MSGID は実際のメッセージ ID に設定されません。

NetView コマンド・リスト言語

REXX と異なる点は、&MSGID は NetView 自動化では &WAIT ともに使用されることです。

MSGITEM(n)

&MSGITEM

REXX

現行メッセージからの項目を戻します ( 17ページの『メッセージの処理』では、現行メッセージ に関する追加情報が記載されています)。項目 0 と同様、応答 ID (存在する場合) の後の先頭のブランク区切りストリングは、メッセージ ID と見なされます。メッセージ ID の後、項目 1 から以下の MSGCNT()

の構文解析が実行されます。

v ストリングはブランクまたはコンマで区切ることができます。

v ブランクまたはコンマが前にある単一引用符で始まるストリング、およびブランクまたはコンマが後にある単一引用符で終わるストリングは、引用符付きストリングと見なされ、単一項目として扱われます。これは引用符で囲まれません。

v 引用符付きストリング内にはない、他のすべての区切られたストリングは単一項目として扱われます。

v 引用符付きストリング内にはない区切り文字は、どの項目の一部でもありません。

MSGITEM は 255 より長いストリングを戻せます。

メッセージ処理

68 プログラミング: REXX および NetView コマンド・リスト言語

||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGORIGN()

&MSGORIGIN

REXX

MSGREAD によって読み取られる最終メッセージが発信されたドメインを戻します。 MSGORIGN() は、NetView 自動化では MSGREAD とともに使用されます。

関数を MSGREAD とともに使用する方法の詳細については、 NetView オンライン・ヘルプを参照してください。

NetView コマンド・リスト言語

メッセージが発信されたドメインを指定します。 &MSGORIGIN は、NetView

自動化では、&WAIT とともに使用されます。

NetView 自動化について詳しくは、 101ページの『第 5 章 自動化リソース管理』を参照してください。

制御変数を &WAIT とともに使用する方法の詳細については、 155ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。

注: このコマンドの NetView コマンド・リスト言語バージョンと REXX バージョンとでは、スペルにわずかな違いがあります。コマンド・リストを作成するときは、正しいスペルを使用するよう注意してください。

MSGSRCNM()

&MSGSRCNM

1 から 17 文字までのソース・オブジェクト名を戻します。このソース名は、DSIMMDBS または CNMPMDB のいずれかのアプリケーション・プログラミング・インターフェース (API) の呼び出しによって提供されたソース・オブジェクトからの ID

です。

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 マッピングを参照してください。注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 69

|||

||

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGSTR()

&MSGSTR

REXX

現行メッセージのメッセージ・テキストを戻します (現行メッセージ については、 17ページの『メッセージの処理』を参照してください)。MSGSTR() は、メッセージ ID (MSGID() 関数によって使用されるトークン) を組み込みません。複数行オペレーター宛メッセージ (MLWTO) の場合、MSGSTR() はメッセージの先頭行のメッセージ・テキストになります。

NetView コマンド・リスト言語

NetView が受け取った最新のメッセージのメッセージ・テキストです。&MSGSTR は、メッセージ ID (&MSGID 制御変数によって使用されるトークン) を組み込みません。 &MSGSTR は、&WAIT とともに使用されます。

制御変数を &WAIT とともに使用する方法の詳細については、 155ページの『&WAIT で使用される制御変数とパラメーター変数』を参照してください。

MSGTOKEN()

&MSGTOKEN

メッセージに関連したトークンを示す、1 から 10 桁までの 10 進数を戻します。注: TOKEN 値を使用して、MSGTOKEN を設定することによって WTO をグループ化してから、WTO コマンドを発行することができます。後で、単一の DOM コマンドを使用して、MSGTOKEN にトークン値を指定することによってこれらのメッセージを削除できます。

MSGTSTMP()

&MSGTSTMP

メッセージのタイム・スタンプを戻します。このフィールドの値は、NetView メッセージ・バッファーが作成された時刻です。このフィールドは、hhmmss という形式の 6 文字のストリングです。ここで各要素は以下のとおりです。hh 時間mm 分ss 秒

MSGVAR(n) 注: 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 とともに使用されます。

関数を MSGREAD とともに使用する方法の詳細については、 NetView オンライン・ヘルプを参照してください。

MSGVAR(n) 関数は、&1 から &31 の NetView コマンド・リスト言語パラメーター変数が呼び出されるのと同じ方法でコマンド・リストが呼び出されるときに、値が指定されます。

メッセージ処理

70 プログラミング: REXX および NetView コマンド・リスト言語

|||

||

||||

||||

||||||

||

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

MSGTYP()

&MSGTYP

システム・メッセージ・タイプを、順位のあるビットを表す一連の 3 個のオン (1) およびオフ (0) の EBCDIC 文字で戻します。 1 つの位置における文字 (1) は、以下の値に対応します。

1 SESS - IFRAUWF1 (14) に対応します。

2 JOBNAMES - IFRAUWF1 (9) に対応します。

3 STATUS - IFRAUWF1 (10) に対応します。

MVSRTAIN()

&MVSRTAIN

自動化テーブルでは、メッセージの MVS 保存特性を記述する 3 ビット・フィールドです。注: NetView が SSI インターフェースを使用している場合は、MVS WQE 制御ブロックに定義される 3 つのフラグに相当する 3 つのフラグです。拡張コンソール・モードで実行している場合は、MDB の類似した 3 つのフラグに相当する 3 つのフラグです。このフラグの正確な意味および使用は、オペレーティング・システムのプロパティーです。

NetView コマンド・リスト言語では、&MVSRTAIN はメッセージの MVS 保存特性を記述する 3 ビット・フィールドです。

NVDELID()

&NVDELID

メッセージについての 24 文字の NetView 削除 ID を戻します。NetView の DOM

NVDELID コマンドを使用して、NetView プログラム内のすべてのタスクに対する保留キューからメッセージを除去することができます。これは、MVS DOM 関数と同等のNetView 関数ですが、MVS WTO または WTOR 以外のメッセージに対して使用されます。

PRTY()

&PRTY

発信元によって設定されたとおりに、メッセージの優先順位を戻します。このフィールドは、1 桁から 5 桁までの 10 進数です。 NetView プログラムは、メッセージ処理時にこのフィールドを使用しません。注: この値が役立つのは送信請求メッセージの場合のみです。この関数を使用する前に、ifrauind() 関数のビット 16 を調べて、現在のメッセージが送信請求であることを確認してください。

REPLYID()

&REPLYID

WTOR に対する応答 ID を戻します。このフィールドの最大長は 8 文字です。

VSE システムからのメッセージの場合、 REPLYID は 6 文字のメッセージ接頭語のうちの最後の 3 文字です。戻された 3 文字は、送信側システムがその文字を使用してメッセージに対する応答 ID を指定している場合のみ、そのメッセージの応答 ID となります。

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 71

|||

表 7. メッセージ処理情報 (続き)

関数または変数 説明

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. 特定のビットを検査する別の方式は、 73ページの図 7 に示すように、REXX 環境POS (位置) 関数を使用することです。

3. REXX POS 関数の詳しい使用法については、REXX ライブラリーを参照してください。

SESSID()

&SESSID

メッセージを送信した TAF (端末アクセス機能) セッションの 1 から 8 文字の ID を戻します。

NetView 自動化について詳しくは、 101ページの『第 5 章 自動化リソース管理』を参照してください。注: ドメイン ID と同じ SESSID を用いて TAF セッションが開始されている場合、SESSID は予測できない値に設定され、結果も予測できないものになる可能性があります。現行メッセージが PPI 受信側のパイプ・ステージから発信されていた場合、SESSID は SAF ID を示します。

SMSGID()

&SMSGID

個々のメッセージのインスタンスを識別する、1 から 10 文字の 10 進数を戻します。この関数は、ディスプレイから除去するアクション・メッセージを識別するために、DOM コマンドによって使用することができます。 DOM の詳細については、NetView

オンライン・ヘルプを参照してください。

このフィールドには MSGGMID と同じ情報が入りますが、 SMSGID は 10 進数で戻され、MSGGMID は 16 進値として戻される点が異なります。

SYSCONID()

&SYSCONID

メッセージに関連した MVS システム・コンソールの名前を戻します。システム・コンソール名の長さは、2 から 8 文字までです。注: コマンド改訂環境では、コマンドが発行されたコンソール名を戻します。

SYSID()

&SYSID

到着したメッセージの発信元の MVS システムの、 1 から 8 文字の ID を戻します。注: コマンド改訂環境では、コマンドが発行されたシステム ID を戻します。

WTO.REPLY

&WTOREPLY

WTOR へオペレーター応答を戻します。

REXX

REXX バージョンは関数ではありません。これはローカル変数であるため、終わりに括弧はありません。

メッセージ処理

72 プログラミング: REXX および NetView コマンド・リスト言語

|

|

ROUTCDE の例

コマンド処理情報関数表 8 は、コマンド改訂環境で発信されるコマンドで使用可能な関数を示しています。

表 8. コマンド処理情報

関数または変数 説明

RECEDATA() コマンド改訂テーブルの NETVONLY アクションを使用して NetView 環境に転送されたコマンドの発信元についての情報を提供します。詳しくは表 9を参照してください。

SYSCONID() コマンドが発行されたコンソール名を戻します。

SYSID() コマンドが発行されたシステム ID を戻します。

表 9 は、RECEDATA 関数の使用時に指定可能な引数と、戻される値を示しています。

表 9. RECEDATA 引数

引数 同義語 戻されるデータ

ヌル 引数を入力しないときは、以下の値が戻されます。

値 説明

0 呼び出し元のプロシージャーが NETVONLY アクションによって駆動されていなかった場合

asid 発信元のアドレス・スペースのアドレス・スペース ID を 4 文字の 16 進数で表記したもの

/* 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 コマンド・リスト言語の例

/* POS COMPARE (Using the REXX environment function) */BIT2CHK = 17IF POS(’1’,ROUTCDE(),BIT2CHK) = BIT2CHK

THEN SAY ’ROUTCDE BIT 17 IS SET’

図 7. ビット 17 をテストする REXX の POS 関数の使用法

メッセージ処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 73

||

表 9. RECEDATA 引数 (続き)

引数 同義語 戻されるデータ

ASTYPET

TYPE

アドレス・スペースのタイプ (ジョブ・タイプ)。 1 文字の値が戻されます。

値 説明

D USS 永続プロシージャー。

アドレス・スペースに、JOB に該当する、開始されたプログラムの名前が付いています。ただし、OpenMVS アドレス・スペース・ブロックが存在している場合、それは特殊目的 USS 永続プロシージャーを示します。

J アドレス・スペースは JOB です。

N アドレス・スペースは、オペレーティング・システム初期化 (NIP) 処理の間に開始されたシステム・アドレス・スペースです。

S アドレス・スペースは開始タスク (STC) です。

T アドレス・スペースはタイム・シェアリング・ユーザー (TSO) です。

U アドレス・スペースは、USS でフォークまたは作成されたプロシージャーです。

* エラー: コマンドを発信したアドレス・スペースがクローズしました。

? エラー: データが矛盾します (一時的な状態である可能性があります)。

! エラー: データが矛盾します。

> エラー: 指定された ASID が、システムで生成された ASID の最大値を超えています。

AUTH A コンソールの権限。 1 文字の値が戻されます。

値 説明

C コンソール

I 入出力

M マスター

S システム

GROUP G SAF グループ

JOBNAME J 1 から 8 文字までの MVS ジョブ名 ID

TESTMODE X テーブル・ロード時のテスト・モードの状態。

値 説明

0 テスト・モードが要求されませんでした

1 テスト・モードが要求されました

USER U SAF ユーザー名

コマンド処理

74 プログラミング: REXX および NetView コマンド・リスト言語

使用上の注意: 引数を指定して RECEDATA 関数が開始されたときに、開始プロシージャーが NETVONLY アクションによって駆動されていなかった場合は、REXX

エラーが生成されます。まず引数なしで RECEDATA 関数を使用して、0 の値がないかどうかを確認してから、コマンド改訂環境で任意のアクションを実行することを検討してください。

REXX 管理サービス単位情報関数76ページの表 10 では、管理サービス単位 (MSU) 処理に対する REXX 関数を示します。MSU には次の情報が含まれます。

v 制御点管理サービス単位 (CP_MSU)

v マルチドメイン・サポート・メッセージ単位 (MDS_MU)

v ネットワーク管理ベクトル・トランスポート (NMVT)

v 保守用統計レコード (RECMS)

v 保守用統計様式化レコード (RECFMS)

MSU の詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。

76ページの表 10 では、以下の用語が使用されています。

総称 MSUサブベクトル 92 を含むすべての MSU。総称 MSU には以下のものが含まれます。

v サブベクトル 92 を含むアラート

v 常にサブベクトル 92 を含む解像度

統計専用 RECMSRECMS レコードの中には、統計データだけを含むものがあります。統計データのみを含む RECMS レコードは、記録モード (RECMS へのバイト8、1 オフセット) X'81'、X'86'、および X'87' (X'87' の場合は永続エラーではなく一時エラーを表します) のレコードです。

統計専用 RECFMSRECFMS レコードの中には、統計データだけを含むものがあります。統計データのみを含む RECFMS レコードは、RECFMS タイプ (RECFMS へのバイト 8、1 オフセット) 1、4、および 5 のレコードです。

コマンド処理

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 75

表 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 の説明 (ページ) を参照してください。

5. リソース階層内に複合リンクが存在する場合には、HIER() によって戻される情報にはないリソース・レベルが存在する場合があります。複合リンクが存在するときは、システム図を使用して完全な階層構成を判別しなければなりません。複合リンクが存在するかどうかを検査するには、HMCPLINK 関数を使用します。HMCPLINK 関数の詳細については、表 10 を参照してください。

6. NetView 組み込み関数 &HIER の詳細については、 133ページの『&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 に適用されます。

85ページの『HMASPRID』の例を参照してください。

MSU 情報

76 プログラミング: REXX および NetView コマンド・リスト言語

表 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 に適用されます。

85ページの『HMBLKACT』の例を参照してください。

HMCPLINK() 0、1、またはヌルを戻して、以下のように複合リンクが存在するかどうかを示します。

1 複合リンクが存在します。

複合リンクが存在する場合には、HIER 関数によって返されるリソース階層内にはないリソース・レベルが存在する場合があります。複合リンクが存在するときは、システム図を使用して完全な階層構成を判別しなければなりません。詳しくは、HIER の説明を参照してください。

最新のイベント (Most Recent Events) などのハードウェア・モニターのパネルでは、パネルの最上部にある絵で表したリソース階層にアスタリスク (*) を付け、パネルの最下部近くのメッセージ行にメッセージ BNJ1538I を表示することで、複合リンクが存在することを示します。

0 複合リンクは存在しません。

ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんでした。

最大長は 1 文字です。

HMCPLINK は、ハードウェア・モニターによって自動化に実行要求されているすべての MSU に適用されます。

85ページの『HMCPLINK』の例を参照してください。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 77

表 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 はヌルを戻します。

86ページの『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 はヌルを戻します。

86ページの『HMEPNAU、HMEPNET および HMFWDSNA』の例を参照してください。

MSU 情報

78 プログラミング: REXX および NetView コマンド・リスト言語

表 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. 86ページの『HMEPNETV』の例を参照してください。

HMEVTYPE() MSU のイベント・タイプを戻します。イベント・タイプ内の末尾のブランクはすべて除去されます。以下のイベント・タイプが有効です。

AVAL BYPS CUST DLRC HMV HELD IMPD IMRINST INTV NTFY PAFF PERF PERM PROC REDLRSLV RSNT SCUR SNA TEMP USER UNKN

すべてのイベント・タイプの詳細については、NetView のオンライン・ヘルプを参照してください。

MSU が以下のいずれかのタイプであるか、ハードウェア・モニターによって自動化に実行要求されていない場合には、HMEVTYPE はヌルを戻します。

v PD 統計 (X'0025')

v リンク構成データ (X'1332')

v 統計専用 RECMS

v 統計専用 RECFMS

最大長は 4 文字です。

HMEVTYPE は、ハードウェア・モニターによって自動化に実行要求されているすべての MSU に適用されます。

86ページの『HMEVTYPE』の例を参照してください。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 79

表 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 に適用されます。

86ページの『HMFWDED』の例を参照してください。

MSU 情報

80 プログラミング: REXX および NetView コマンド・リスト言語

表 10. 管理サービス単位 (MSU) 情報関数 (続き)

関数 説明

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 関数はヌルを戻します。

86ページの『HMEPNAU、HMEPNET および HMFWDSNA』の例を参照してください。

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 に適用されます。

87ページの『HMGENCAU』の例を参照してください。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 81

表 10. 管理サービス単位 (MSU) 情報関数 (続き)

関数 説明

HMONMSU() 0 または 1 を戻して、以下のように、MSU がハードウェア・モニターによって自動化に実行要求されていたかどうかを示します。ここで各要素は以下のとおりです。

1 MSU はハードウェア・モニターによって自動化に実行要求されていました。

0 MSU がハードウェア・モニターによって自動化に実行要求されていなかった(例えば、総称受信側 MS アプリケーションによって自動化に実行要求されていた) ことを示します。

最大長は 1 文字です。

HMONMSU はすべての MSU に適用されます。

87ページの『HMONMSU』の例を参照してください。

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 および HIER の説明を参照してください。

MSU がハードウェア・モニターによって自動化に実行要求されていない場合には、HMORGIN はヌルを戻します。

最大長は 8 文字です。

HMORIGIN は、ハードウェア・モニターによって自動化に実行要求されているすべての MSU に適用されます。

87ページの『HMORIGIN』の例を参照してください。

MSU 情報

82 プログラミング: REXX および NetView コマンド・リスト言語

表 10. 管理サービス単位 (MSU) 情報関数 (続き)

関数 説明

HMSECREC() 0、1、またはヌルを戻して、以下のように、ハードウェア・モニターが MSU に対して2 次記録を実行するかどうかを示します。ここで各要素は以下のとおりです。

1 HIER 関数によって戻されたリソース・レベルで MSU に対する 2 次記録が実行されます。詳しくは、HIER の説明を参照してください。

0 MSU に対して 2 次記録は実行されません。HMSECREC は、PD 統計(X'0025') およびフレーム・リレー (X'1332') に対しては常に 0 を戻します。それは、ハードウェア・モニターがこれらの MSU に対しては 2 次記録を実行することがないからです。

ヌル ハードウェア・モニターによって MSU が自動化に実行要求されていませんでした。

最大長は 1 文字です。

HMSECREC は、ハードウェア・モニターによって自動化に実行要求されているすべての MSU に適用されます。

88ページの『HMSECREC』の例を参照してください。

HMSPECAU() 2 文字の 16 進数固有の MSU コンポーネント・コードを戻します。

特定のコンポーネント・コードは、MSU が作成される原因となった例外条件と最も密接に関連しているコンポーネント、サブコンポーネント、または論理リソースの総称タイプを示します。特定のコンポーネント・コードについて詳しくは、SNA ライブラリーの基本アラート (X'91') アラート 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 に適用されます。

88ページの『HMSPECAU』の例を参照してください。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 83

表 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 に適用されます。

88ページの『HMUSRDAT』の例を参照してください。

MSUSEG(operands) 管理サービス単位 (MSU) または他の同様に設計されたデータの部分から情報を抽出するために必要な構文解析機能を提供します。この関数は、NetView 自動化テーブルまたは LU6.2 アプリケーションによって呼び出されるコマンド・リストで使用してください。

MSUSEG の完全な構文およびいくつかの使用例については、 88ページの『MSUSEG

の構文および例』を参照してください。

組み込み関数 &MSUSEG については、 136ページの『&MSUSEG』 を参照してください。

NPDABA(operands) 関連したハードウェア・モニターの推定原因およびエラーの説明テキストを戻します。

NPDABA 構文の詳細と使用例については、 91ページの『推定原因の構文および例』を参照してください。

MSU 情報

84 プログラミング: REXX および NetView コマンド・リスト言語

ハードウェア・モニター (HMxxxxxx) の例

HMASPRID

HMBLKACT

HMCPLINK

/* 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

/* 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

/* 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

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 85

HMEPNAU、HMEPNET および HMFWDSNA

HMEPNETV

HMEVTYPE

HMFWDED

/*===================================================================*//* 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 の例

/*===================================================================*//* Example A: Was the MSU was forwarded from a remote node *//* entry point NetView over LU 6.2? *//*===================================================================*/IF HMEPNETV() = ’1’ THEN ...

図 16. HMEPNETV の例

/* 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

/* Example A: The following example checks for hardware *//* monitor MSUs forwarded from another NetView program *//* using the NV-UNIQ/LUC.. */IF HMFWDED() = 1 THEN ....

図 19. HMFWDED の例 A

/* Example B: The following example checks for hardware *//* monitor MSUs not forwarded from another NetView program *//* using the NV-UNIQ/LUC.. */IF HMFWDED() = 0 THEN ....

図 20. HMFWDED の例 B

MSU 情報

86 プログラミング: REXX および NetView コマンド・リスト言語

HMGENCAU

HMONMSU例 A は、ハードウェア・モニターによって実行要求されていた MSU を検査する一方法を示します。

例 B は、ハードウェア・モニターによって実行要求されていなかった MSU を検査する一方法を示します。

HMORIGIN

/* 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

/* Example A */IF HMONMSU() = 1 THEN ......

図 23. HMONMSU の例 A

/* Example B */IF HMONMSU() = 0 THEN ......

図 24. HMONMSU の例 B

/* Example: The following example checks for hardware *//* monitor MSUs sent from a resource named GENALERT. */IF HMORIGIN() = ’GENALERT’ THEN ....

図 25. HMORIGIN の例

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 87

HMSECREC

HMSPECAU

HMUSRDAT

MSUSEG の構文および例

構文MSUSEG (オペランド) の構文は、次のとおりです。

MSUSEG

�� �

.( 1 )

MSUSEG ( ' id ' )H ( occ ) 1

��

/* Example: The following example checks for secondary *//* recording on an MSU and displays the resource hierarchy. */IF HMSECREC() = 1 THEN

DOSAY ’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 の例

/* 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

/* Example: The following example checks for hardware *//* monitor MSUs with user specified data of MYDAT in *//* subvector 33. */IF HMUSRDAT() = ’MYDAT’ THEN ....

図 29. HMUSRDAT の例

MSU 情報

88 プログラミング: REXX および NetView コマンド・リスト言語

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 位置がロケーションの終わりの位置の外側にある場合には、ヌル値が戻されます。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 89

5. 指定された長さが、指定されたロケーションに残っているものより長い場合には、そのロケーションに残っているものが戻されます。

6. MSUSEG(operands) の使用例を 88ページの『MSUSEG の構文および例』に示します。

7. 自動化テーブルの詳細については、「IBM Tivoli NetView for z/OS 自動操作ガイド」を参照してください。ベクトル定義については、SNA ライブラリーを参照してください。 LU6.2 および MSU の詳細については、「IBM Tivoli NetView

for z/OS アプリケーション・プログラマーズ・ガイド」を参照してください。

8. NetView コマンド・リスト言語 CLIST 内の組み込み関数 &MSUSEG の使用に関する詳細については、 136ページの『&MSUSEG』 を参照してください。

例以下の例で MSUSEG() 関数の使用法を示します。

図 30 では、Alert 主ベクトル内のサブベクトル A0 の 3 番目のバイト (0000) は’OPEN’ で始まります。 Alert は、サポートされている任意のエンベロープ内に入れることができます。

図 31 では、Alert のサブベクトル A0 には、’DOWN’ を従えている ’LINE’ が、その中に入っています。リテラルは、EBCDIC および 16 進にすることができます。

図 32 では、Alert サブベクトル A1 には、重要ではないビットを含めて、第 4 バイトの先頭ビットから始まるビット '01X01X00XX11XXXX' があります。

図 33 は、MDS-MU を示しています。この MDS-MU では、先頭の 1212

(CP-MSU) に 1323 が入り、 1323 の先頭にはいくつかの 1326 が入り、1323 の 2

番目にはいくつかの 132B が入り、 1323 の 3 番目にはサブベクトル 01 が入っています。

IF MSUSEG(’0000.A0’,3,4) = ’OPEN’ .....

図 30. MSUSEG() の例 1

INTERPRET ’PARSE VALUE "’MSUSEG(’0000.A0’)’" WITH ’LINE’X +4’DOWN’’ Y +4 .’IF X ¬= ’’ & Y ¬= ’’ .....

図 31. MSUSEG() の例 2

IF BITAND(MSUSEG(’0000.A1’,4,2),’DB30’X) = ’4830’X .....

図 32. MSUSEG() の例 3

IF MSUSEG(’H1212.1323.1326(2).132B(3).01’) ¬= ’’ .....

図 33. MSUSEG() の例 4

MSU 情報

90 プログラミング: REXX および NetView コマンド・リスト言語

推定原因の構文および例

構文NPDABA の構文は以下のとおりです。

NPDABA

�� NPDABA ( ' bbbaa ' ) ��

ここで各要素は以下のとおりです。

bbbaa

総称アラート前を定義する 5 文字のストリング。v bbb はハードウェア・モニターのブロック ID です。

このブロック ID は、レコードに関連した IBM ハードウェアまたはソフトウェアを識別するために使用されるコードです。

v aa は、関連したハードウェア・モニターのアクション・コードです。

このアクション・コードは、ブロック ID 内の特定のアラート ID です。

注: NPDABA 関数は、関連したハードウェア・モニターの推定原因およびエラーの説明テキストを戻します (最大長 48 文字)。

表 11. NPDABA の例

例 推定原因

NPDABA(’FFF03’)

NPDA ブロック ID は FFF であり、関連したアクション・コードは 03 です。

’ADAPTER FEEDBK CHK:COMMUN CTRLR PGM/COMMUN CTRLR’

NPDABA(’123456’)

この入力データは 6 文字で、有効な長さではありません。

’INCORRECT INPUT’

入力データは有効ではありません (有効な 16 進数ではないか、5 文字の長さではありません)。

NPDABA(’12345’)

この入力データは 5 文字ですが、有効なブロック ID とアクション・コードではありません。

’NOT AVAILABLE’

ハードウェア・モニターは、このブロック ID (123) とアクション・コード (45) の組み合わせを認識しません。

MSU 情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 91

オペレーター情報関数NetView プログラムにおいては、REXX コマンド・リストまたは Data REXX ファイルで次のオペレーター情報関数を使用できます。

表 12. オペレーター情報関数

関数または変数 説明

getpw() これは、主に datarexx で使用することを目的としています。この関数は、REXX プロシージャーが自動化から駆動されるときに使用することもできます。BROWSE コマンドまたはその他の方法でメンバーが参照されているときは、値を使用できません。

OPID()

&OPID

OPID ('O') と同じオペレーター ID またはタスク ID を戻します。OPID は、1 から 8

文字までの ID です。

OPID('x') 1 から 8 文字までのオペレーター ID またはタスク ID を戻します。この記述の中で、x は次のいずれかの値になります。

O 所有者の ID を戻します。通常の OST では OPID() と同じですが、VOST では所有している OST のオペレーター ID が戻されます。

R 分散自動タスクを制御しているリモート・タスクのオペレーター ID を戻します。そのタスクが分散自動タスクでない場合は、ヌル値を戻します。

S 実行されているコマンドを発行したオペレーターのソース ID を戻します。オペレーター ID 以外で、次の特殊値が返される可能性があります。

automation

自動化テーブルの処理によって発生したコマンド。

internal セキュリティー検査が (AUTBYPAS 関数などによって) 中断されたソースから発行されたコマンド。AUTBYPAS 関数について詳しくは、「IBM Tivoli NetView for z/OS セキュリティー・リファレンス」を参照してください。

(null) ソースが無視されることを指定したオプション・タスクまたはアセンブラー・コードで発生したコマンド。注: NetView プログラムが REXX をこのように呼び出す事例は、現在のところ存在しません。ユーザーが書いたコード、または他のベンダーから入手したコードでは、このように呼び出す可能性もあります。

T REXX プログラムが実行されているタスクの ID である宛先 ID を戻します。

オペレーター情報

92 プログラミング: REXX および NetView コマンド・リスト言語

|||||

セッション情報関数NetView においては、REXX コマンド・リストおよび Data REXX ファイルで、次のセッション情報関数を使用できます。

表 13. セッション情報関数

関数または変数 説明

APPLID()

&APPLID

コマンド・リストを実行しているタスクに対するアプリケーション・プログラム ID を戻します。 APPLID は、NetView プログラムによって割り当てられた 3 文字の 16 進数の接尾部が追加された、NetView ドメイン ID です。例えば、ドメイン ID がPARIS の場合、APPLID は PARIS001 になります。 NetView プログラムは、定義済みで使用可能な APPLID の使用を試行します。この試行が成功した場合、各 APPLID は固有の存在になります。定義済みで使用可能な APPLID がない場合は、APPLID が定義済みで使用可能になるまで、 notInit! の APPLID が使われます。この場合、notInit!

複数のタスクがこのような状況にあるかもしれないので、APPLID は固有の存在であるとは保証されません。

ASID()

&ASID

現行の NetView アドレス・スペース ID を戻します。ASID の値は、1 から 5 桁までの 10 進数です。

ATTENDED()

&ATTENDED

1 または 0 のいずれかの 1 文字の値を戻します。次の値が定義されます。

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

この自動タスクに関連した MVS コンソール ID を戻します。 この関連付けは、CONSOLE キーワードを指定した AUTOTASK コマンドを使用して行われています。AUTCONID の値は、この自動タスクの下で実行するために NetView コマンドを入力できる、MVS コンソールのコンソール名です。

AUTOTASK()

&AUTOTASK

1 または 0 の単一文字の値を戻して、タスクが自動タスクであるかどうかを示します。有効な値は以下のとおりです。

1 自動タスクです。

0 自動タスクではありません。

セッション情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 93

表 13. セッション情報関数 (続き)

関数または変数 説明

CGI() 1 または 0 のいずれかの 1 文字の値を戻します。有効な値は次のとおりです。

1 プロシージャーは、NetView Web サーバーによって呼び出されました。

0 プロシージャーは、NetView Web サーバーによって呼び出されませんでした。

CLOSING() CLOSE コマンド後の処理時に 1 の値を戻します。それ以外の場合は、0 の値を戻します。

GLOBAL オプションが指定されたパイプ KEEP ステージで、ENDCMD オプションを使用して実行されるようにスケジュールされたコマンドを識別するには、この関数を使用してください。

CURCONID()

&CURCONID

NetView タスクによって取得される MVS コンソール ID を戻します。このコンソールは、GETCONID コマンドを用いて、あるいは MVS コマンドを発行することによって取得されています。 CURCONID の値は、このタスクが MVS コマンドを入力するために使用する MVS コンソールのコンソール名です。

CURSYS()

&CURSYS

1 から 8 文字までの現行システム名を戻します。

DISC() タスクが切断されているかどうかを示す 1 または 0 の 1 文字の値を戻します。以下の値が返される可能性が有ります。

1 自動タスクは切断されました。

0 自動タスクは、切断されていません。

DISTAUTO()

&DISTAUTO

タスクが RMTCMD コマンドを用いて開始された分散自動タスクであるかどうかを示す1 または 0 の 1 文字の値を戻します。有効な値は次のとおりです。

1 分散自動タスクです。

0 分散自動タスクではありません。注: これは、TVBDAUT の値に対応します。

DOMAIN()

&DOMAIN

現行 NetView ドメインの 1 から 5 文字までの名前を戻します。

DOMAIN('x') NetView ドメインの 1 から 5 文字までの名前を戻します。この記述の中で、x は次の値です。

R 分散自動タスクを制御しているリモート・タスクのドメイン・ネームを戻します。そのタスクが分散自動タスクでない場合は、ヌル値を戻します。

ECVTPSEQ() MVS IHAECVT データ域で検出された z/OS 製品のシーケンス番号です。例えば、z/OS v1.12 で実行している場合、ECVTPSEQ は 01011200 の値を戻します。

セッション情報

94 プログラミング: REXX および NetView コマンド・リスト言語

||

表 13. セッション情報関数 (続き)

関数または変数 説明

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 の場合)

複数の項目は、逆順の呼び出しシーケンスを示します。 オペレーターが入力したコマンドは、リストされている最後の項目です。

JOBNAME(*) NetView プログラムの実行元ジョブの名前を示す 1 から 8 文字の名前を返します。許可されている唯一のパラメーター値はアスタリスク (*) です。

MVSLEVEL()

&MVSLEVEL

現在実行されている MVS のバージョンを戻します。例えば、z/OS 01.13.00 を実行している場合、この関数は SP7.1.3 を返します。

NETID()

&NETID

VTAM ネットワーク ID を戻します。このフィールドの最大長は 8 文字です。NetView プログラムがアクティブのときに VTAM がアクティブになっていない場合、値は CNMSTYLE メンバーの NETID ステートメントから割り当てられます。

NETVIEW()

&NETVIEW

現在実行されている NetView プログラムのバージョンおよびリリースを戻します。NETVIEW の値は、NVvr の形式の 4 文字のストリングです。この記述の中で

v NetView プログラムのバージョン番号を示します。

r NetView プログラムのリリース番号を示します。

NETVIEW('x') テキスト・ストリングを戻します。この記述の中で、x は次の値になります。

T 正式の NetView 名を含むテキスト・ストリングを戻します。

OPSYSTEM()

&OPSYSTEM

NetView プログラムがコンパイルされたオペレーティング・システムのタイプを戻します。

PANEL() 1 または 0 のいずれかの 1 文字の値を戻します。有効な値は次のとおりです。1 パネル・コマンドは発行できます。0 パネル・コマンドは許可されていません。

PARTID()

&PARTID

VSE メッセージ用の 6 文字の接頭部のうちの先頭の 2 文字を戻します。戻された 2

文字は、送信側システムがこれらの文字を使用してメッセージ用の区分 ID を指定している場合のみ、メッセージ区分 ID となります。

STCKGMT()

&STCKGMT

現在の UTC 平均時間をストア・クロック形式で戻します。このフィールドは、8 バイトの 16 進値で戻されます。

セッション情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 95

||

||

表 13. セッション情報関数 (続き)

関数または変数 説明

SUPPCHAR()

&SUPPCHAR

ユーザーのシステムに対する抑止文字を戻します。 (抑止文字は、NetView プログラムがコマンドを端末、ハードコピー・ログ、およびネットワーク・ログに書き込むのを防ぎます。)

SUPPCHAR は、ユーザーが CNMSTYLE メンバーに含まれる CNMSTUSR またはCxxSTGEN メンバーで定義する単一文字です。これらのメンバーで定義されるデフォルトの抑止文字は、疑問符 (X'6F') です。

CNMSTYLE メンバーに組み込まれた CNMSTUSR メンバーまたは CxxSTGEN メンバーに抑止文字を定義しないと、SUPPCHAR はデフォルトの X'3F' になります。注: X'3F' という SUPPCHAR のデフォルト文字をオペレーター・コンソールで入力することはできません。したがって、抑止文字を定義しないと、オペレーターはその文字を使用できません。

SYSPLEX()

&SYSPLEX

拡張 CVT フィールドにあるシスプレックス名 (ECVTSPLX) を返します。

TASK()

&TASK

コマンド・リストを実行しているタスクのタイプを示す、 3 文字のストリングを戻します。以下の値が示されます。

PPT 基本 POI タスク

OST オペレーター端末タスク

NNT NetView 間タスク

Data REXX の場合は、PPT、OST、および NNT に加えて、以下の値も戻される可能性があります。

DST データ・サービス・タスク

HCT ハードコピー・タスク

MNT メインタスク

OPT オプション・タスク

UNK 不明タスク注: この値は、エラーが生じたことを意味しています。詳しくは、IBM ソフトウェア・サポートに連絡してください。

TASK を使用すると、コマンド・リストがタスクのタイプをテストして、そのタイプに応じて処理することができるため、これらのタスクのうちの任意のタスクの下で同じコマンド・リストを実行することができます。例えば、PPT の下で実行するコマンド・リストについてはいくつかの制限が適用されます。 15ページの『基本 POI タスク (PPT)

の制限』 を参照してください。

セッション情報

96 プログラミング: REXX および NetView コマンド・リスト言語

|

表 13. セッション情報関数 (続き)

関数または変数 説明

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 で失敗します。

TYPE() インストールされている NetView プログラムのレベルを示す、3 文字のストリングを戻します。以下の値が示されます。

ENT エンタープライズ・オプション

システムNetView システム・サービス

VTAM()

&VTAM

VTAM のバージョンおよびリリースを、 VTvr または Vvrm の形式の 4 文字のストリングで戻します。この記述の中で

v バージョン番号です。

r リリース番号です。

m 修正番号です。注: VTAM プログラムがアクティブでない場合には、VTAM の値はヌルになります。

VTCOMPID()

&VTCOMPID

以下の形式の 14 文字の VTAM コンポーネント ID を返します。

5695-11701-xxx

この記述の中で xxx はリリース番号です。

VTAM の今後の更新で、VTAM コンポーネント ID が追加される可能性があります。VTAM がアクティブでない場合には、VTCOMPID の値はヌルになります。

セッション情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 97

|

|

|

||

表 13. セッション情報関数 (続き)

関数または変数 説明

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 以外のオペレーティング・システムに対してはヌル値を戻します。

表 14. REXX 環境情報関数

関数または変数 説明

RXDEFENV()

&RXDEFENV

DEFAULTS コマンドの REXXENV パラメーターによって設定される、NetView REXX

環境のデフォルト数を戻します。

RXDEFSTR()

&RXDEFSTR

DEFAULTS コマンドの REXXSTOR パラメーターによって設定される、デフォルトのNetView REXX 環境初期ストレージ・サイズを戻します。REXXSTOR がデフォルト値に設定された場合、または全く設定されていない場合、この値が -1 になる場合があります。

RXNUMENV()

&RXNUMENV

このタスク用に初期設定される現在の REXX 環境の数を戻します。RXNUMENV() の場合、この数は少なくとも 1 となり、現在実行されている REXX 環境を表します。&RXNUMENV では、この値はゼロ (0) になる場合があります。

RXOVRENV()

&RXOVRENV

OVERRIDE コマンドの REXXENV パラメーターによって設定される、NetView REXX

環境のオーバーライド数を戻します。REXX 環境の数が指定変更されていない場合、またはデフォルト値に設定されている場合には、ヌル値が戻されます。

RXOVRSTR()

&RXOVRSTR

DEFAULTS コマンドの REXXSTOR パラメーターによって設定される指定変更用の、NetView REXX 環境初期ストレージ・サイズを戻します。REXX 初期ストレージ・サイズが指定変更されていない場合、またはデフォルト値に設定されている場合には、ヌル値が戻されます。

セッション情報

98 プログラミング: REXX および NetView コマンド・リスト言語

端末情報関数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 時になる可能性があり、現在時刻に対する日付を誤る可能性があります。&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 関数の中には、末尾文字の除去レベルが異なるものがあることに注意してください。

REXX 環境および端末情報

第 4 章 NetView REXX コマンド・リストおよび Data REXX ファイルの REXX 命令 99

関数または変数 除去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 ヌルおよびブランク

ヌルおよびブランクの除去

100 プログラミング: 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, 2013 101

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 関数を検査してください。次に、条件付き処理を使用して、別のタスクの下では別の要領で実行できるように、そのコマンド・リストを十分に柔軟性のあるものにします。条件付き処理の詳細については、 143ページの『付録 B. NetView コマンド・リスト言語のブランチ』を参照してください。

自動化コマンド・リストのテスト自動化コマンド・リストが NetView 自動化テーブルから正しく呼び出され、呼び出された後に正しく実行されるために、いくつかの方法で自動化コマンド・リストをテストできます。

自動化コマンド・リストの正常動作の検査REXX の自動化を完全にテストする場合、NetView CLIST を AUTOTABLE に入れる前にその正常な自動化を検査することをお勧めします。 NetView プログラムでは、ユーザーの REXX プログラムが自動化テーブルから駆動される場合に存在する現行メッセージをシミュレートできます。シミュレートされたメッセージを作成するには、LITERAL ステージを使用すれば十分な場合があります。ただし、LITERAL は自動化に必要なジョブ名または自動化トークンなどのメッセージ属性を設定できません。これらのメッセージ属性がテストに関係する場合は、計画されたアクションの代わりに HOLD(Y) 自動化アクションを一時的にコーディングして、メッセージの完全なコピーをテスト用に入手できます。

この一時的な自動化が呼び出された後、NCCF 画面で保持されているサブジェクト・メッセージとともに、 HELDMSG ステージを使用してテスト用の正確なコピーを作成できます。このテストを行うには、TS コマンドを発行してトレースを実行し、次のようなコマンドを発行します。

上級トピック

102 プログラミング: 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 章 自動化リソース管理 103

処理をトレースして 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 はそのメッセージに対して自動

上級トピック

104 プログラミング: 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 章 自動化リソース管理 105

106 プログラミング: REXX および NetView コマンド・リスト言語

付録 A. NetView コマンド・リスト言語の簡単なコマンド・リストの作成

本章では、NetView コマンド・リスト言語を使用した、Tivoli NetView for z/OS プログラム用のコマンド・リストの作成の基礎を説明します。また変数、割り当てステートメント、および組み込み関数が互いにどのように適合するか、およびコマンド・リスト内でそれらをどのように結合するかについても説明します。

NetView コマンド・リスト言語に含まれるものNetView コマンド・リスト言語は、次の 6 タイプのステートメントで構成されています。

v コマンド

v コメント

v 制御

v 割り当て

v ラベル

v ヌル

コマンド・リスト・ステートメントの内部では、以下の変数および関数を使用することができます。

v パラメーター変数

v 制御変数

v ユーザー変数

v グローバル変数

v 組み込み関数

グローバル変数以外は、すべて本章の後半で詳しく説明します。グローバル変数とパラメーター値を渡す方法の説明は、 163ページの『付録 C. NetView コマンド・リスト言語のグローバル変数』にあります。

NetView コマンド・リスト言語は、反復処理または代替処理 (ループまたは if-then

命令) を実行するアプリケーション・コードを作成する場合に使用します。これらの機能は、以下の制御ステートメントによって実施されます。

v &IF

v &GOTO

v &EXIT

v &WAIT

制御ステートメントについては、 143ページの『付録 B. NetView コマンド・リスト言語のブランチ』で説明します。

© Copyright IBM Corp. 1997, 2013 107

注: コマンド・リストは、他のコマンド・リストの処理に割り込むことができます。これは CNMCMD 内の CMDDEF ステートメントを使用して行われます。

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 変数置換後の最大長が 3200 文字になるようにステートメントをコーディングします。

NetView コマンド・リスト言語のコマンド・リスト

108 プログラミング: REXX および NetView コマンド・リスト言語

注: 変数置換の動作の詳細については、 112ページの『変数置換の順序』を参照してください。

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 語を複数行に分割しないので、メッセージは次のように表示されます。

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 109

STATEMENT CONTINUED WITH THE HYPHEN TO KEEPBLANKS

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 言語のラベルの前には抑止文字を使用しないでください。抑止文字があると、そのラベルを含むコマンド・リスト行がすでに処理済みの場合を除いて、そのラベルにブランチできなくなります。

111ページの図 34 では、制御変数 &SUPPCHAR が抑止文字として定義された文字で置き換えられます。例のコマンド・リストの最後の行は、抑止されます。

NetView コマンド・リスト言語のコマンド・リスト

110 プログラミング: REXX および NetView コマンド・リスト言語

状況を戻りコードに入れて戻すコマンドを発行するとき、抑止文字を 2 回コーディングして、コマンドからの同期出力を抑制することができます。例えば、コマンド・リストで次のコードを使用する場合、コマンド・リストからの同期出力はオペレーターに対して表示されません。

&DOUBLESUPP = &CONCAT &SUPPCHAR &SUPPCHAR&DOUBLESUPP SET PF24 IMMED RETRIEVE

戻りコードによって状況が十分に分かっていて、なおかつ同期的に行モードメッセージを作成するコマンドのパフォーマンスを上げたい場合は、二重抑止文字を使用します。二重抑止文字を使用しても、コマンドによってスケジュールされた出力(例えば、D NET、APPLS) には影響ありません。また、長期実行コマンド (例えば、NLDM) の出力を確実に減らすわけではありません。

ラベルラベルは、流れの制御のため、内部資料のため、または制御権を移動するときのターゲット・ステートメントを示すために使用されます。制御権移動については、143ページの『付録 B. NetView コマンド・リスト言語のブランチ』で説明します。

ラベルは、コメント・ステートメントを除くすべてのコマンド・リスト・ステートメントにコーディングできます。コマンド、制御ステートメント、割り当てステートメント、およびヌル・ステートメントでラベルをコーディングすることができます。Tivoli NetView for z/OS がラベルを検出できない場合、処理が停止して、エラー・メッセージが発行されます。

ラベルはコマンド・リスト行の最初の非ブランク・ワードでなければなりません。ラベルは、EBCDIC のハイフン (-) と、その後に続く 1 から 11 個の文字で構成されます。A から Z、0 から 9、#、@、および $ が有効な文字です。ラベルの後にコマンド・リスト・ステートメントは、必ずしもコーディングする必要はありません。ただしコーディングする場合は、ラベルとキーワードの間に少なくとも 1 個のブランクを空けてコマンド・リスト・ステートメントを開始してください。

他のラベルをコーディングすることもできます。すべてのラベルは、1 つのコマンド・リスト内では固有でなければなりません。 1 つのコマンド・リスト内に 2 つの同一ラベルがあると、 Tivoli NetView for z/OS はそのコマンド・リストを終了します。コマンド・リストのさまざまな部分がどこから始まるかを示すための内部コメントとして、ラベルをコーディングすることもできます。例えば、ラベルを使用して特定の処理ルーチンを強調することができます。

次に、ラベルの付いたコマンド・リスト・ステートメントの例を示します。

&CONTROL CMD* COMMAND LIST UPDATED 2/5/08 BY OPERATOR CARLSTART DOMAIN=&1&WRITE ENTER GO WHEN MESSAGE DSI809I ARRIVES FROM &1&PAUSE&SUPPCHAR ROUTE &1,OPER1,123456

図 34. 抑止文字の使用例

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 111

||||||

-MYLABEL VARY NET,INACT,ID=LU1234-$PROC2 &LEN = &LENGTH &1-SETUP &USER = 55-ALLALONE

注: ラベルを &BEGWRITE で使用すると、メッセージの停止する場所を示します。ラベルでは変数を使用できませんが、&BEGWRITE、&GOTO、または &WAIT ステートメントではラベル名として変数をコーディングすることができます。これらのステートメントを制御権の移動に使用する場合については、 143ページの『付録B. NetView コマンド・リスト言語のブランチ』で説明します。

変数コマンド・リスト内のステートメントに異なる値を、オペレーターから受け入れたり、自分で定義したりする場合に変数を使用します。以下の変数を使用して、多くの異なる状況において正しく操作するコマンド・リストを作成することができます。

v パラメーター

v 制御

v ユーザー

v グローバル

このセクションでは、パラメーター変数、制御変数、およびユーザー変数の使用方法を説明します。また、NetView PARSEL2R コマンドを使用して、コマンド・リスト内の変数を解析する方法についても説明します。グローバル変数の説明は、 163

ページの『付録 C. NetView コマンド・リスト言語のグローバル変数』を参照してください。

変数は、コマンド・リスト内の最初の非ブランク・ワードとしてコーディングします。

変数は、EBCDIC のアンパーサンド (&) と、その後に続く 1 から 11 個の文字で構成されます。A から Z、0 から 9、#、@、および $ が有効な文字です。

変数置換の順序変数置換は、Tivoli NetView for z/OS プログラムが各ステートメントを右から左にスキャンするときに実行され、各変数の値を次のように置き換えます。

1. 各エレメントを右から左に向かって、アンパーサンド (&) がないかどうかスキャンします。

v アンパーサンドが見つかると、アンパーサンドとその右側にあるエレメントはその変数の値に置き換えられます。

v 値が存在しなければ、変数はヌルになります。

v アンパーサンドの右側の先頭文字が数値の場合、変数はパラメーター変数であると見なされます。次に、Tivoli NetView for z/OS プログラムは右方をスキャンし、そのパラメーター変数の部分で数字が続いていればそれを取ります。ブランクまたは文字が検出されると、検索は停止します。特殊文字 (非英数字)

が見つかった場合、変数名は区切り文字で区切られます。

NetView コマンド・リスト言語のコマンド・リスト

112 プログラミング: REXX および NetView コマンド・リスト言語

例えば、&21A は &21 と受け取られ、&21 の値で置き換えられます。そのため、&21A は、値 A になります。別の例として、エレメントに&A=&XYZ が含まれている場合には、値 &XYZ が置き換えられ、その後、 &A が &XYZ

を置き換えた値で取り替えられます。

注: X'50' の値 (EBCDIC 文字セットの中のアンパーサンド) は、 2 バイト文字セットの中では無視されます。アンパーサンドを使用したい場合は、シフトイン (X'0F') 制御文字を使用してストリングを終了させてから変数を入力します。ストリングを再開するときは、シフトアウト (X'0E') 制御文字を使用してストリングを始めます。

2. 左側の隣の文字からスキャンが再開され、アンパーサンドの検索が続きます。アンパーサンドが検出されると、そのアンパーサンドと右方の構文エレメント全体が、前に置換されたものも含めて変数の名前として認識され、変数値によって置き換えられます。

注: 置換された値は、アンパーサンドに対してスキャンされません。

エレメントが割り当てステートメントのターゲットであれば、スキャンは 2 番目の文字で停止して、値に割り当てられる変数名を保存します。例えば、次の例のステートメントは、ユーザー変数 &A1 の値を 2 に設定します。

&B = 1&A&B = 2

以下の項目については、変数置換は行われません。

制御キーワード詳しくは 122ページの『&CONTROL ステートメント』を参照してください。

&PAUSE ステートメントユーザーが GO コマンドを入力したときに、変数に値が割り当てられます。詳しくは 127ページの『&PAUSE 制御ステートメント』を参照してください。

&IF ステートメント上の &THEN 文節&IF 文節が真の場合、&THEN 文節からステートメントが作られ、それが独立にコーディングされたかのように処理されます。詳しくは 143ページの『&IF 制御ステートメント』を参照してください。

メッセージ・シリーズ &BEGWRITE NOSUB の中の任意のステートメント詳しくは 125ページの『&BEGWRITE 制御ステートメント』を参照してください。

組み込み関数詳しくは 130ページの『NetView 組み込み関数』を参照してください。

パラメーター変数パラメーター変数は定位置変数で、コマンド・リストの実行時に定義されます。パラメーター変数は、実行中のコマンド・リストの名前の後にオペランドとして入力して指定します。パラメーター変数には、次の特性があります。

v コマンド・リスト内で、番号付きの位置 (例えば、&1) によって識別される

v 実行時にコマンド・リスト名の後に入力される

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 113

v コンマ、アポストロフィ、またはブランクで区切られる

パラメーター変数を使用してコマンド・リストをコーディングするときは、次のガイドラインを使用してください。

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) が変更されます。

これらの変数については、 117ページの『制御変数』を参照してください。

コマンド・リストにパラメーター変数情報を渡す方法パラメーター変数を使用するコマンド・リストを活動化するとき、オペレーターはコマンド・リスト名とその後に続けてコマンド・リスト内の各パラメーター変数の値を入力します。次の例は、オペレーターが最大 31 個のパラメーター変数をコマンド・リストに渡す形式を示しています。

cmdlistname _____,_____,_____,. . .,_____.,_____

&1 &2 &3 &31

コマンド・リスト名の後の最初の値がコマンド・リスト内の &1 を置き換え、次の値が &2 を置き換え、以下同様に置き換えていきます。例えば、コマンド・リスト内の 2 番目のパラメーター変数は、そのパラメーターの値を入れる場所に &2 とコーディングされます。

リソース LU100 を開始する RESC というコマンド・リストを、次の例に示すようにコーディングしたとします。

RESC CLIST&CONTROL ERRVARY NET,ACT,ID=LU100

コマンド・リストでパラメーター変数を使用したい場合は、コマンド・リストを変更して、どのリソースも活動化または非活動化できます。次の例では、パラメーター変数によってコマンド・リストがどのように見えるかを示します。

RESC CLIST&CONTROL ERRVARY NET,&1,ID=&2;

これによって、オペレーターは RESC ACT,LU100 と入力すれば、リソース LU100

を開始することができます。

NetView コマンド・リスト言語のコマンド・リスト

114 プログラミング: REXX および NetView コマンド・リスト言語

|

コマンド・リストの実行時に、&1 と &2 は次の定位置パラメーターによって置き換えられます。

v &1 は ACT で

v &2 は LU100 で

コマンド・リストは、コマンド・リスト名の後にオペランドが入力された順序にしたがって、入力されたオペランドから &1 と &2 の値をとります。

注: コマンド・リストを使用するオペレーターには、提供するパラメーター変数の数とどの値を提供するかを知らせなければなりません。

コマンド・リストがメッセージによって活動化される場合、メッセージの各ワードが別々のパラメーター変数になります。詳細については、 101ページの『第 5 章自動化リソース管理』を参照してください。

コマンド・リストでのパラメーター変数の使用方法コマンド・リスト内にパラメーター変数を置くために、設定された命令は必要ではありません。次の例は、&1 の前に &2 を使用できることを示しています。

V NET,&2,ID=&1

&1 には最初のオペレーター入力の値が与えられ、 &2 には 2 番目の値が与えられます。

コマンド・リスト・ステートメントに 2 つ以上のパラメーター変数がある場合には、右端の変数がまず変更されます。右から左にスキャンを続行してから、次の変数が置き換えられます。この方式を使用して、一部のパラメーター変数の意味を変更することができます。オペレーターが何個のパラメーターを入力したか、またはどのパラメーター値が入力されたかをテストする必要がある場合は、制御変数&PARMCNT と &PARMSTR を使用してください。 117ページの『制御変数』を参照してください。

ネストされたコマンド・リストにパラメーター変数を渡す方法ネストされたコマンド・リストを活動化するコマンド・リスト・ステートメントで、パラメーター変数をコーディングすることができます。これらのパラメーター変数は、他のパラメーター変数と同じ基本規則に従います。それに加えて、パラメーター変数として実際の値か、その他の変数のいずれかを渡すことができます。他の変数を渡す場合は、これらの変数が、次に活動化されたコマンド・リストに認識されるようにしてください。

以下の例で、パラメーターの引き渡しを示します。

コマンド・リスト CALLER には、次のような 1 行のコードが含まれています。

CALLEE LINES,TERMS,CDRMS

コマンド・リスト CALLEE は、次の変数を使用します。

&1 LINES

&2 TERMS

&3 CDRMS

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 115

コマンド・リスト MAJOR は、MAJOR ALPHA,BETA を入力することによって活動化され、次のステートメントを含んでいます。

コマンド・リスト MINOR は、次の変数を使用します。

&1 55

&2 ALPHA

&3 BETA

コマンド・リスト MINOR は、&A (55) の値を最初のパラメーターとして取り、MAJOR の最初のパラメーターの値 (ALPHA) を 2 番目のパラメーターとして取り、MAJOR の 2 番目のパラメーターの値 (BETA) をその 3 番目のパラメーターとして取ります。

ネストされたコマンド・リストに引用符付きストリングを含む変数を渡す必要がある場合は、ネストされたコマンド・リスト呼び出しで、その変数を単一引用符で囲んでください。次の例では、CLIST1 が CLIST2 を呼び出します。

CLIST1 CLIST&STR = &1CLIST2 ’&STR’&EXIT

ネストされたコマンド・リスト呼び出しでのパラメーター変数は、前後に引用符を付けなければなりません。

パラメーター変数内の引用符付きストリングまたは特殊文字の使用ブランク、アポストロフィ (')、またはコンマ (,) を値の一部に使用する必要がある場合、単一引用符を使用してその値を特殊文字ストリングにしなければなりません。テキスト・ストリングを、あるパラメーターの値として採用してほしい場合も、特殊文字ストリングにしなければなりません。

NetView コマンド・リスト言語の引用符付きストリングは、次の要件のいずれか 1

つに合う任意のテキストです。

v 前に区切り文字と単一引用符があり、後に単一引用符と区切り文字、または右端の非ブランク文字である単一引用符のいずれかがあるテキスト。

v 前に左端の非ブランク文字である単一引用符があり、後に単一引用符と区切り文字があるテキスト。

v 前に左端の非ブランク文字である単一引用符があり、後に右端の非ブランク文字である単一引用符があるテキスト。

次のコマンドを入力して、コマンド・リスト名 RESC を活動化するとします。

RESC ACT,’LU200,LOGMODE=S3270’

RESC コマンド・リスト内のパラメーター変数には、次の値が含まれます。

&1 = ACT&2 = LU200,LOGMODE=S3270

&A = 55MINOR &A,&1,&2

NetView コマンド・リスト言語のコマンド・リスト

116 プログラミング: REXX および 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 コマンドを使用します。

注: コマンド・リストは、すでに制御ステートメント、制御変数、または組み込み関数として定義済みのユーザー変数を作成することができます。ただし、このようなユーザー変数が作成された場合、そのコマンド・リスト内では、提供された制御ステートメント、制御変数、または組み込み関数を使用できません。

ユーザー変数ユーザー変数とは、ユーザーがコマンド・リスト内で作成して設定する変数です。ユーザー変数は割り当てステートメントまたは &PAUSE 制御ステートメントで設定することができます。

割り当てステートメントについては、 120ページの『割り当てステートメント』を参照してください。

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 117

&PAUSE 制御ステートメントは、オペレーターがデータ入力できるようにコマンド・リストを停止し、コマンド・リストが継続するときにユーザー変数の値をオペレーターから受け取ります。 &PAUSE については、 127ページの『&PAUSE 制御ステートメント』を参照してください。

ユーザー変数を作成するときは、以下の規則を守ってください。

v 先頭文字は、アンパーサンド (&) でなければなりません。

v アンパーサンドの後の最初の文字は、数値でなく文字またはシンボルでなければなりません。それ以外の場合には、パラメーター変数として処理されます。

v アンパーサンドの後に、1 個から 11 個までの文字が続かなければなりません。A から Z、0 から 9、#、@、および $ が有効な文字です。

v ユーザー変数の値は 255 文字長までです。シフトアウト (X'0E') 制御文字とシフトイン (X'0F') 制御文字の間の 2 バイト文字の最大数は 126 です。

v ユーザー変数には、符号を含めて 255 桁の長さの数値を入れることができます。ただし、ユーザー変数の値が算術式 (加算や減算など) を使用して取得される場合、またはユーザー変数が算術式で使用される場合、ユーザー変数には-2147483647 と 2147483647 の間の数値を入れることができます。数値で使用できる文字は、0 から 9 までです。数値の直前には、その値が正 (+) か負 (-) かを示す文字を付けることができます。

注: コマンド・リストは、すでに制御ステートメント、制御変数、または組み込み関数として定義済みのユーザー変数を作成することができます。ただし、そのコマンド・リスト内では、提供された制御ステートメント、制御変数、または組み込み関数を使用できなくなります。

表 17 は、いくつかのユーザー変数名の例を示しています。

表 17. ユーザー変数名

有効 無効 理由

&A &2A &2 (パラメーター変数) と読み取られる

&USERNAME &INVALIDUSERNAME 長すぎる

&@23456 &A% % は有効文字ではない

次の例は、パラメーターの設定およびオペレーターとの通信のための割り当てステートメント内での、ユーザー変数の操作方法の例を示しています。

&PAUSE VARS &ONE &TWO&SUM = &ONE + &TWOCLEAR&WRITE >>> THE SUM OF &ONE + &TWO IS --->&SUM

16 進表記NetView コマンド・リスト言語では、 16 進データを処理するための 16 進表記機能が提供されます。 コマンド・リスト変数を使用できる場所ならどこでも (割り当てステートメント内の受信側の場合を除く)、 16 進表記を使用することができます。

NetView コマンド・リスト言語のコマンド・リスト

118 プログラミング: REXX および NetView コマンド・リスト言語

次の構文は、NetView コマンド・リスト言語の 16 進表記を示しています。

ここで各要素は以下のとおりです。

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 ステートメントのターゲットにすることができます。ラベルの使用法の詳細については、 111ページの『ラベル』を参照してください。

ヌル・ステートメントを使用して、オペレーターに対するメッセージの形式を整えたり、長いコマンド・リストの読み取りや更新が容易なように分離することができます。ヌル・ステートメントは、&BEGWRITE ステートメントで作成されたメッセージの一部である場合、オペレーターにブランク行として送られます。コマンド・リストを分離するためにヌル・ステートメントを使用した場合、コマンド・リストの実行時にそのステートメントは無視されます。

�� X ' n ' ��

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 119

割り当てステートメント割り当てステートメントは変数に値を指定し、コマンド・リスト内で算術演算を行います。割り当てステートメントの構文は以下のとおりです。

等号の前後にブランクが存在している必要があります。

コマンド・リストが実行されると、ユーザー変数の値が式の値に設定されます。例えば、割り当てステートメント &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

注: 制御ステートメントを変数として使用するのは、その制御ステートメントが単一引用符で囲まれている場合であっても無効です。例えば、次の割り当てステートメントは無効です。

&A = &IF&A = ’&WAIT ERROR’

割り当て

�� & variable = expression ��

図 35. 割り当てステートメント

NetView コマンド・リスト言語のコマンド・リスト

120 プログラミング: REXX および NetView コマンド・リスト言語

算術演算加算と減算の演算を、割り当てステートメントの中で使用することができます。この形式は、プラス (+) またはマイナス (-) の符号で分離した 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 になります。

注: 算術演算でエラー条件になるのを避けるには、潜在的ヌル変数の前にゼロをコーディングします。

組み込み関数割り当てステートメントの中で組み込み関数を使用できます。演算の結果は、ユーザー変数に入れられます。詳細については 130ページの『NetView

組み込み関数』 を参照してください。

次の例は、割り当てステートメントの中に組み込み関数をコーディングする方法を示しています。

&STR2 = &SUBSTR &STRING 2 1&STR1 = &SUBSTR &STRING 1 1&NEWSTR = &CONCAT &STR5 &STR4&NEWSTR = &CONCAT &NEWSTR &STR3

制御ステートメント制御ステートメントは、Tivoli NetView for z/OS がコマンド・リストの他のステートメントにどのように作動するかを制御する、固有のコマンド・リスト・ステートメントです。本章の制御ステートメントを直線的コーディングに使用するか、 143

ページの『付録 B. NetView コマンド・リスト言語のブランチ』で説明するステートメントとともに条件付き処理のために使用することができます。

制御ステートメントを使用して、処理の順序を変更することができます。コマンド・リスト制御ステートメントを使用して、以下のアクションを行うことができます。

v コマンド・リストからオペレーターへのメッセージの送信。

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 121

v コマンドの実行順序の制御。

v コマンド・リストの継続に必要な情報の入力のオペレーターへの依頼。

v コマンド・リストを継続する前の送信請求メッセージの到着の待機。

各コマンド・リスト制御ステートメントは、 &ワード の形式の制御シンボルで始まります。&IF を使用する場合を除き、1 行にコーディングできる制御ステートメントは 1 個だけです。

制御ステートメントの説明を読むと、これらの基本ステートメントの一般的な機能について理解できます。それぞれの制御ステートメントの詳細については、以降のセクションを参照してください。

次の制御ステートメントが説明されています。

&BEGWRITEオペレーターへの 1 つまたは一連のメッセージを作成する。

&CONTROLコマンド・リストの実行中に、オペレーター画面上に表示するコマンド・リスト・ステートメントを指定する。

&PAUSEオペレーターがコマンド・リストの継続に必要な情報を入力するまで、コマンド・リストを停止する。

&WRITE指定されたオペレーター向けのメッセージを作成する。

&CONTROL ステートメント&CONTROL ステートメントを使用すると、コマンド・リストの実行中にオペレーター端末にどのコマンド・リスト・ステートメントを表示するかを指定することができます。指定されたコマンド・リスト・ステートメントは、すべての置換を終え、コマンド・リスト・ステートメントが実行される前に、表示されます。&CONTROL ALL または &CONTROL CMD による表示を使用して、コマンド・リストのデバッグを支援することができます。

&CONTROL は、コマンド・リストの先頭に設定します。 &CONTROL の設定値をコマンド・リスト内で必要に応じて何回でも変更することができます。&CONTROL は、コマンド・リスト内のその点から次の &CONTROL ステートメントに達するまでの間有効です。例えば、コマンド・リストにコードの新しいセクションを追加したばかりの場合、新しいセクションについては全体を表示し、既存のセクションについてはエラーだけを表示することができます。この制御ステートメントは、&CONTROL の後にブランクとオペランドを続けてコーディングします。&CONTROL 制御ステートメントの構文は以下のとおりです。

NetView コマンド・リスト言語のコマンド・リスト

122 プログラミング: REXX および NetView コマンド・リスト言語

ここで各要素は以下のとおりです。

ALLALL 制御ステートメントは、すべてのコマンド・リスト・ステートメントをオペレーター端末上に表示します。各ステートメントは、処理の直前に表示されます。&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 の使用を、コマンド・リストのコメントと混同しないでください。コメントは、コマンド・リストの作成者のためのものなので、

&CONTROL

��ALL

&CONTROLCMDERR

��

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 123

&CONTROL ALL が設定されていなければオペレーターに送信されません。&WRITE ステートメントおよび &BEGWRITE ステートメントはオペレーターにメッセージを送信します。

複数のメッセージ行を送信するか、またはフルスクリーンを必要とするテーブルを表示する場合、 &WRITE ステートメントや &BEGWRITE ステートメントでなく、 NetView VIEW コマンドを使用することができます。

&WRITE 制御ステートメント&WRITE ステートメントは、1 行のテキストをオペレーターに送信します。Tivoli

NetView for z/OS は、オペレーターにメッセージを送信する前に、メッセージ・テキスト上で変数置換を実行します。メッセージ・テキストに置換を行いたくない場合は、&BEGWRITE を使用します。メッセージ・テキストを含めないと、オペレーターにブランク行が送信されます。&WRITE ステートメントの構文は以下のとおりです。

行の先頭文字の前にブランクを含めたい場合は、 &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 を入力してこのコマンド・リストを活動化すると、 125ページの図 36 が表示されます。

&WRITE

�� &WRITE message_text ��

NetView コマンド・リスト言語のコマンド・リスト

124 プログラミング: REXX および NetView コマンド・リスト言語

&WRITE ステートメントの中の &1 が HD3790N1 という値で置き換えられてから、オペレーターに送信されていることに注意してください。 &CONTROL CMD

がコーディングされたので、コマンドも表示されます。表示の他の部分は、VTAM

コマンドに対する応答です。

図 37 は複数の &WRITE ステートメントを示しており、これらは 1 行メッセージをオペレーターに送信するものです。

&BEGWRITE 制御ステートメント&BEGWRITE を使用して、一連の行をオペレーター端末へ送信することができます。また、メッセージを送信する前に変数を置き換えるかどうかを、制御することもできます。

&BEGWRITE ステートメントは、送信したい最初のオペレーター・メッセージの 1

行上に、そのステートメントだけを 1 行にコーディングします。 &BEGWRITE でラベルを指定することもできます。ラベルは、メッセージが終了してコマンド・リスト処理が続行される場所をコマンド・リストに知らせます。ラベルの詳細については、 111ページの『ラベル』を参照してください。

変数を実際の値に置き換えてからオペレーターに送信したいと、指示することができます。選択を指示しないと、変数は置き換えられません。

&BEGWRITE ステートメントの構文は以下のとおりです。

*** STATUS OF VTAM SWITCHED PATHS FOR HD3790N1 ***D NET,PATHS,ID=HD3790N1IST097I DISPLAY ACCEPTEDIST148I DIAL OUT PATH INFORMATION FOR PHYSICAL UNIT HD3790N1IST149I LINE GRP TELEPHONE NUMBER OR LINE NAME PID GID CNTIST168I EGROUP40 4094 001 001 005 AVAAUTIST168I EGROUP50 4094 002 002 001 AVAMANIST314I END

図 36. PATH コマンド・リスト例の結果

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

��NOSUB

&BEGWRITESUB - label

��

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 125

ここで各要素は以下のとおりです。

-label

これは、後に続く行をオペレーターに対して表示することを指定します。ステートメントでラベルをコーディングする場合、このラベルはコマンド・リスト内のメッセージ・テキスト行の終わりの後に続くステートメントになければなりません。 &BEGWRITE とラベルのあるステートメントの間にあるコマンド・リスト行は、オペレーターに送信されます。ラベルのあるコマンド・リスト・ステートメントは、オペレーターに送信されません。これは、次のコマンド・リスト・ステートメントとして処理されます。ラベルを見つけることができない場合、コマンド・リスト・ステートメントの他の部分はコメントとしてオペレーターに送信され、コマンド・リストは終了します。&BEGWRITE にラベルがない場合、&BEGWRITE の後の最初のコマンド・リスト・ステートメントだけがオペレーターに送信されます。

&BEGWRITE で、ラベル用の変数をコーディングすることができます。変数を有効な値で置き換えてください。

NOSUBオペレーターへのメッセージは、何の変数置換もなく印刷してあるとおりに正確に作成してください。言い換えれば、&1 は &1 のままで送信され、 &1 の値では送信されません。このオペランドは、メッセージの中のコマンド・リスト変数について作成するときに使用してください。NOSUB はブランクを除去しません。テキストを、入力されたとおり正確に表示します。&BEGWRITE をオペランドなしでコーディングすると、NOSUB と見なされます。

SUBTivoli NetView for z/OS は、オペレーターにメッセージを送信する前に、メッセージ・テキスト上で置換を実行します。変数置換の管理方法の詳細については、 112ページの『変数置換の順序』を参照してください。

メッセージ行の先頭文字の前にブランクがある場合、その行は最初の非ブランク文字が 1 桁目に来るまで左方にシフトされます。オペレーター画面にそのブランクを送信したい場合は、非ブランク文字を 1 桁目にコーディングしてください。&BEGWRITE を使用して 2 バイト文字セット (DBCS) 文字を含むメッセージを作成している場合は、SUB オプションを使用する必要があります。上記のコーディング規則は、&WRITE と同じです。

図 38 は、変数置換を行う &BEGWRITE ステートメントの例です。

事例によっては、変数置換が不要な場合もあります。次の例では、&BEGWRITE ステートメントはオペレーターに ENDIT コマンド・リストの使用方法を示します。

&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

NetView コマンド・リスト言語のコマンド・リスト

126 プログラミング: REXX および NetView コマンド・リスト言語

&CONTROL ERR&BEGWRITE NOSUB -OVERTO END FULL SCREEN SESSIONS,TYPE "ENDIT &1,&2,&3"REPLACE &1,&2,&3 WITHTHE APPLID NAMES OF THEFLSCN SESSIONS TO BE ENDED-OVER

ENDIT コマンド・リストは、ENDIT と入力して呼び出します。図 39 は、ENDIT

が使用されたときにオペレーターに対して表示されるメッセージを示しています。

&1、&2、および &3 は、オペレーターにメッセージが送信されるときに、その値によって置き換えられないことに注意してください。

&PAUSE 制御ステートメント&PAUSE 制御ステートメントを他のコマンドとともに使用すると、オペレーターに質問し、入力された応答を処理するコマンド・リストをコーディングすることができます。&BEGWRITE と &WRITE 制御ステートメントは、オペレーターに命令を送信するために使用します。例えば、オペレーターに NetView GO コマンドとそれに続けてユーザー変数の値 (単数または複数) を入力するように命令する、コマンド・リストをコーディングすることができます。次に、&PAUSE ステートメントをコーディングすると、コマンド・リストが一時的に停止します。コマンド・リストは、オペレーターが GO コマンドを入力して処理を継続するか、または RESET コマンドを入力してコマンド・リストを終了するまで停止します。 &PAUSE コマンドをコーディングすると、コマンド・リストが GO コマンドの後に続くオペランドを処理し、それらをユーザー変数にすることができます。詳細については、 117ページの『ユーザー変数』を参照してください。

注:

1. &PAUSE を、自動化タスク・コマンド・リストまたは PPT の下で実行するコマンド・リストで使用することは無効です。

2. VIEW コマンドは、GO コマンドを使用せずにオペレーター入力を取得します。

&PAUSE ステートメントの構文は以下のとおりです。

TO END FULL SCREEN SESSIONS,TYPE "ENDIT &1,&2,&3"REPLACE &1,&2,&3 WITHTHE APPLID NAMES OF THEFLSCN SESSIONS TO BE ENDED

図 39. ENDIT コマンド・リスト例の結果

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 127

ここで各要素は以下のとおりです。

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 が出された後で再表示されます。

&PAUSE

��

NOINPUT&PAUSE

VARS variableSTRING variable

��

NetView コマンド・リスト言語のコマンド・リスト

128 プログラミング: REXX および 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

NetView コマンド・リスト言語のコマンド・リスト

付録 A. 簡単なコマンド・リストの作成 129

&LAST の値は SMITH になり、&FIRST の値は JOHN になり、&MI の値は A になります。この後、これらの変数はコマンド・リストの他のステートメントで使用できます。

NetView 組み込み関数組み込み関数は、事前定義された演算を実行します。これは割り当てステートメントか、&IF 制御ステートメントのいずれかで使用されます。(&IF 制御ステートメントについては、 143ページの『&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 制御ステートメントに組み込み関数を使用した例は、 143ページの『&IF 制御ステートメント』を参照してください。

&IF 制御ステートメントでは、組み込み関数の結果は、比較された式の片方または両方に使用されます。例えば、&LENGTH 組み込み関数を、 2 つの変数の長さの比較に使用することができます。

NetView コマンド・リスト言語のコマンド・リスト

130 プログラミング: REXX および NetView コマンド・リスト言語

&BITAND&BITAND 関数は、2 つの入力ビットを 1 ビットずつ互いに論理的に AND 結合したもので構成されたストリングを戻します。結果の長さは、2 つのストリングのうちの長い方の長さになります。 2 つのストリングのうちで短い方が尽きたときにAND 演算が終了した場合、長い方のストリングの未処理部分は、結果の一部に付加されます。両方のストリングの値がヌルの場合、結果はヌル・ストリングになります。

&BITAND 関数の構文は以下のとおりです。

ここで各要素は以下のとおりです。

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 関数の構文は以下のとおりです。

&BITAND

�� &BITAND string1string2

��

組み込み関数

付録 A. 簡単なコマンド・リストの作成 131

ここで各要素は以下のとおりです。

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 関数の構文は以下のとおりです。

ここで各要素は以下のとおりです。

string1

定数またはコマンド・リスト変数のいずれかです。

string2

定数またはコマンド・リスト変数のいずれかです。

&BITXOR 演算の 2 例を示します。

&BITOR

�� &BITOR string1string2

��

&BITXOR

�� &BITXOR string1string2

��

組み込み関数

132 プログラミング: REXX および NetView コマンド・リスト言語

&BITXOR X’12’ X’22’ は、X’30’ になります。

&BITXOR X’1211’ X’22’ は、X’3011’ になります。

使用法:

1. string2 がヌルの場合、結果は未変更の string1 になります。

2. 2 つ以上のストリングを指定すると、メッセージ DSI186I が発行されてコマンド・リストは終了します。このことは、これに相当する REXX 関数とも矛盾しません。

3. string1 を指定しないと、メッセージ DSI187I が発行されてコマンド・リストは終了します。このことは、これに相当する REXX 関数とも矛盾しません。

&CONCAT&CONCAT 関数は 2 つの変数、2 つの定数、または変数と定数を連結して新しい値を構成します。&CONCAT 組み込み関数の構文は以下のとおりです。

2 つの項目を結合するときは、作成される値が最大 255 文字を超えないことを確認してください。上位の値が切り捨てられてしまいます。結合される両方の項目の値がヌルの場合、結果はヌルになります。

例えば、次のようなステートメントがあるとします。

処理の後に、ユーザー変数は次のように設定されます。&PREFIX

SN/

&ID 5497

&SERIALSN/5497

注: &CONCAT を使用して 2 つの 2 バイト文字セット (DBCS) ストリングを連結すると、隣接するシフトイン (SI) 文字とシフトアウト (SO) 文字が除去されます。

&HIER&HIER 関数は、MSU に関連した NetView ハードウェア・モニター階層データへのユーザー・アクセスを提供します。

&HIER の構文は以下のとおりです。

&CONCAT

�� &CONCAT variable variableconstant constant

��

&PREFIX = SN/&ID = 5497&SERIAL = &CONCAT &PREFIX &ID

組み込み関数

付録 A. 簡単なコマンド・リストの作成 133

ここで各要素は以下のとおりです。

n 特定の名前/タイプの組み合わせの索引番号 (1 から 5) を指定します。

注:

1. &HIER で n を指定しないと、BNJ146I メッセージで見つかるものとは少し異なるリソース階層が戻されます。名前/タイプの組み合わせは、次のようになっています。

aaaaaaaa1111bbbbbbbb2222....eeeeeeee5555

文字はリソース名を表し、数字はリソース・タイプを表しています。

ハードウェア・モニターは、1 個から 5 個までの名前/タイプの組み合わせを定義します。それぞれの名前は 8 文字長で、それぞれのタイプは 4 文字です。名前とタイプには、必要に応じてブランクで埋め込みが行われます。

2. &HIER で n を指定すると、n に対応する aaaaaaaa1111 などの名前/タイプの組み合わせを戻します。n に対応する名前/タイプの組み合わせがない場合は、ヌル値が戻されます。

3. &HIER は、以下の条件のもとでヌル値を戻します。

v コマンド・リストが自動化テーブルで実行されない場合

v 自動化テーブルが MSU によって駆動されなかった場合

v MSU にハードウェア・モニター・リソース階層がない場合

4. 135ページの図 40 に示された、テンプレートを解析する NetView コマンド・リスト言語の例を使用して、リソース階層内にリソースが存在するかどうかをテストすることができます。

5. リソース階層内に複合リンクが存在する場合、&HIER 関数によって戻される情報には表示されないリソース・レベルが存在する可能性があります。複合リンクが存在するときは、システム図を使用して完全な階層構成を判別しなければなりません。

HIER

�� &HIERn

��

組み込み関数

134 プログラミング: 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*

&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 の例

組み込み関数

付録 A. 簡単なコマンド・リストの作成 135

&LENGTH&LENGTH 関数は、変数または定数の長さを戻します。&LENGTH の構文は以下のとおりです。

変数値または定数の長さが戻されます。変数がヌルであるか、または定数がヌル・ストリングである場合、戻される値は 0 です。

以下の例は、&LENGTH の使用方法を示しています。 SAMP LU2525 と入力することによって、SAMP を呼び出したとします。ハードコピー・プリンター名(&HCOPY) 制御変数は、HC55 とします。

処理の後に、変数は次のように設定されます。&HCOPY

HC55

&HCLENGTH4

&1 LU25257

&RESLEN6

ユーザー変数 &HCLENGTH は、ハードコピー装置名の長さに設定されています。ハードコピー装置は HC55 です。HC55 は 4 文字であるため、&HCLENGTH は 4

になります。&RESLEN は、最初のパラメーター変数の長さになります。最初のパラメーター変数は LU2525 なので、&RESLEN は 6 になります。

&MSUSEG&MSUSEG 関数は、管理サービス単位 (MSU) または他の同様に設計されたデータの部分から情報を抽出するために必要な構文解析機能を提供します。この関数は、NetView 自動化テーブルまたは LU6.2 アプリケーションによって呼び出されるコマンド・リストで使用します。

&MSUSEG 関数の構文は以下のとおりです。

&LENGTH

�� &LENGTH variableconstant

��

SAMP CLIST&HCLENGTH = &LENGTH &HCOPY&RESLEN = &LENGTH &1

組み込み関数

136 プログラミング: REXX および NetView コマンド・リスト言語

ここで各要素は以下のとおりです。

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 は、左側に指定されたベクトルに含まれます。

オペランド間の区切り文字としてブランクを使用できますが、ブランクにはプレースホルダーとしての機能はありません。例えば、byte の変数をコーディングした場合、変数の値がヌルでブランクを区切り文字として使用すると、length は byte のオペランドと見なされます。

位置が見つからない場合、または &MSUSEG 関数を含むコマンド・リストが MSU

のために自動化テーブル・ステートメントで実行されなかった場合、または関数がMSU によって駆動されなかった場合、&MSUSEG 関数の値はヌルになります。

byte 位置を指定しないと、戻されるデータには、id で指定された最小 ID の 1 または 2 バイトの ID が後に付いた 1 または 2 バイトの長さのものが含まれます。

byte 位置がロケーションの終わりの位置の外側にある場合には、ヌル値が戻されます。

&MSUSEG

�� �

.( 1 )

&MSUSEG idH ( occ ) 1

,byte , length

��

組み込み関数

付録 A. 簡単なコマンド・リストの作成 137

指定された長さが、指定されたロケーションに残っているものより長い場合には、そのロケーションに残っているものが戻されます。

自動化テーブルの詳細については、「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 の構文は以下のとおりです。

ここで各要素は以下のとおりです。

number

数値または数値になる変数のいずれかです。許される最大の数は、&NCCFCNT

(このオペレーターが開始できるクロスドメイン・セッションの総数を示す制御変数) の値です。

コマンド・リストは &NCCFID を使用して、クロスドメイン・セッションを自動的に開始または停止することができます。

以下の例は、&NCCFID の使用方法を示しています。

&DOM1 = &NCCFID 1&DOM2 = &NCCFID 2&DOM3 = &NCCFID 3START DOMAIN=&DOM1START DOMAIN=&DOM2START DOMAIN=&DOM3

ご使用のオペレーター・プロファイルが、クロスドメイン・セッションを確立できる 3 つのドメインを定義しているとします。1 ALPHA

2 BETA

3 GAMMA

&NCCFID

�� &NCCFID number ��

組み込み関数

138 プログラミング: REXX および NetView コマンド・リスト言語

処理の後に、ユーザー変数は次のように設定されます。&DOM1

ALPHA

&DOM2BETA

&DOM3GAMMA

次に、3 つのドメインが START コマンドによって開始されます。

この例では、オペレーターは、3 つのドメインを開始できることを知っていなければなりません。&IF 制御ステートメントを使用して &NCCFCNT をテストし、ドメインの数を検出してからそれらを開始することもできます。

&NCCFSTAT&NCCFSTAT 関数は、指定されたドメインとのアクティブなクロスドメイン・セッションがあるかどうかを示す値を戻します。&NCCFSTAT の構文は以下のとおりです。

ここで各要素は以下のとおりです。

domain

ドメイン・ネームまたはドメイン・ネームになる変数のいずれかです。

関数呼び出しは、オペレーターがそのドメインとのアクティブなクロスドメイン・セッションを保持している場合、文字の ACT で置き換えられます。関数呼び出しは、オペレーターがそのドメインとのアクティブなクロスドメイン・セッションを保持していない場合、文字の INACT で置き換えられます。

例えば、ドメインの状況を検査するコマンド・リストを作成し、アクティブでなければそのドメインを開始することができます。次の例では、STARTEM NCCFA を入力することによって、STARTEM コマンド・リストを活動化したものとします。

処理の後に、変数は次のように設定されます。&1 NCCFA

&STATUSACT|INACT

パラメーター変数 &1 は NCCFA に設定され、ドメイン NCCFA の状況の検査が行われます。NCCFA とのアクティブなクロスドメイン・セッションを保持している場合、&STATUS は ACT に設定されます。保持していない場合は、&STATUS

&NCCFSTAT

�� &NCCFSTAT domain ��

STARTEM CLIST&CONTROL ERR&STATUS = &NCCFSTAT &1&IF &STATUS = INACT &THEN START DOMAIN=&1&IF &STATUS = ACT &THEN &WRITE DOMAIN &1 IS ALREADY ACTIVE

組み込み関数

付録 A. 簡単なコマンド・リストの作成 139

は INACT に設定されます。&IF ステートメントは、&STATUS が ACT かINACT に設定されているかどうかをテストします。(詳細については、 143ページの『&IF 制御ステートメント』を参照してください。)

NCCFA が非アクティブの場合、コマンド・リストが開始します。NCCFA がアクティブの場合、次のメッセージが表示されます。

DOMAIN NCCFA IS ALREADY ACTIVE

&SUBSTR&SUBSTR 関数は、start の位置から始めて length 文字を解析することによって、入力変数の指定された部分を戻します。&SUBSTR の構文は以下のとおりです。

ここで各要素は以下のとおりです。

length

指定された start の位置から始めて、解析する文字数です。length が指定されない場合、解析は start から変数の終わりまでになります。

start

variable 内の解析操作の開始位置です。

variable

解析する変数です。

例えば、次のようなステートメントがあるとします。

処理の後に、ユーザー変数は次のように設定されます。&HOLD

ACF/VTAM

&FIRSTACF

&SECONDVTAM

&THIRDTAM

前記の例の先頭行は、変数 &HOLD の値を ACF/VTAM に設定します。次の行では、&SUBSTR は &HOLD の先頭文字 (文字 A) から始め、右側に 3 文字移動(文字 F へ) します。文字 ACF が、変数 &FIRST の値になります。次の行では、&SUBSTR は &HOLD の 5 番目の文字 (文字 V) から始めて 4 文字の長さだけ(文字 M へ) 進みます。文字 VTAM が、変数 &SECOND に入れられます。最後の行では、&SUBSTR は &HOLD の 6 番目の文字 (文字 T) から始めますが、長さ

&SUBSTR

�� &SUBSTR variable startlength

��

&HOLD = ACF/VTAM&FIRST = &SUBSTR &HOLD 1 3&SECOND = &SUBSTR &HOLD 5 4&THIRD = &SUBSTR &HOLD 6

組み込み関数

140 プログラミング: REXX および NetView コマンド・リスト言語

は指定しません。したがって、&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 制御変数のサブストリングを使用してコマンド・リストを実行しているドメインの名前を判別する方法を示しています。

2 バイト文字をローマ字 (A から Z、a から z) とともに使用している場合、&SUBSTR 関数は変数を次のように調整します。

開始バイト = シフトアウト文字調整しない

開始バイト = シフトイン文字ブランクで置換

開始バイト = 2 バイトの先頭の半分ブランクとシフトアウト文字で置換

開始バイト = 2 バイトの後の半分シフトアウト文字で置換

最終バイト = シフトアウト文字ブランクで置換

最終バイト = シフトイン文字調整しない

最終バイト = 2 バイトの先頭の半分シフトイン文字で置換

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 を使用してドメイン・ネームを判別する方法

組み込み関数

付録 A. 簡単なコマンド・リストの作成 141

最終バイト = 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 &DBCS 4 5= ’D1D2D’ (interim string)= ’ <D2D’ (interim string)= ’ <D2>’ (recovery string)

注: DBCS 区切り文字は 1 バイト長で、DBCS コードは 2 バイト長です。

組み込み関数

142 プログラミング: REXX および NetView コマンド・リスト言語

付録 B. NetView コマンド・リスト言語のブランチ

本章では、 NetView コマンド・リスト言語の条件付きブランチ・ステートメントおよび無条件ブランチ・ステートメントについて説明します。

v &IF ステートメントは、論理的比較または算術的比較に基づいて条件付きブランチを行います。 &IF ステートメントの中のテストまたは比較の結果によって、どちらの選択肢を選択するかが決まります。条件付き処理ステートメントを使用することによって、 if-then 構造およびループ構造のコーディングに柔軟性をもたせることができます。

v &GOTO ステートメントは、無条件ブランチを行います。

v &EXIT ステートメントは、コマンド・リスト内の論理的出口点のコーディングに使用します。

v &WAIT ステートメントは処理を延期して、イベントの完了を待機します。

&IF 制御ステートメント&IF 制御ステートメントは条件をテストし、テストの結果に基づいて処理を実行します。条件は、2 つの式と論理演算子または算術演算子で構成されています。

条件が真であれば、&THEN 文節が処理されます。条件が偽であれば、&IF 制御ステートメントに続くステートメントから処理が継続されます。&IF 制御ステートメントの構文は以下のとおりです。

ここで各要素は以下のとおりです。

= または EQ等しい

expression_1

割り当てステートメントで使用可能な任意の式。定数、変数、算術演算、または組み込み関数が入ります。詳しくは 120ページの『割り当てステートメント』を参照してください。

&IF&THEN

�� &IF expression_1 = expression_2 &THEN statementEQ¬=NE<LT>GT<=LE>=GE¬>NG¬<NL

��

© Copyright IBM Corp. 1997, 2013 143

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

算術式で使用される変数がヌルと等しい可能性がある場合は、次の構文を使用してください。

7 > 3 + 0&1

NetView コマンド・リスト言語のブランチ

144 プログラミング: REXX および NetView コマンド・リスト言語

この例では、&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 制御ステートメントの構文は以下のとおりです。

ここで各要素は以下のとおりです。

-label

処理が継続する、このコマンド・リスト内のターゲット・ステートメントを識別します。

NetView プログラムは、&GOTO ステートメントを解釈するとき、コマンド・リストにこの同じラベルで始まるステートメントがないかどうか検索します。NetView

プログラムは、そのステートメントに制御権を移動して、コマンド・リスト処理を継続します。ラベルで識別されるステートメントは、 &GOTO ステートメントの前でも後でも構いません。

NetView プログラムが &GOTO ステートメントを処理する前に変数をある値で置き換えれば、その変数をラベルにコーディングすることができます。ラベルの詳細については、 111ページの『ラベル』を参照してください。

&EXIT 制御ステートメントコマンド・リストが &EXIT 制御ステートメントに達すると、コマンド・リストの処理が終了します。

&EXIT を &IF とともに使用すると、コマンド・リストを検査して、エラーが発生すれば終了させることができます。 &EXIT を &GOTO とともに使用すれば、コマ

&GOTO

�� &GOTO -label ��

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 145

ンド・リストの流れを制御することができます。&EXIT 制御ステートメントの構文は以下のとおりです。

ここで各要素は以下のとおりです。

number

エラー戻りコード。これは -1、0、または 2147483647 までの任意の正の数です。ネストされたコマンド・リストで、エラーを起こす可能性がある問題をデバッグするために、&EXIT で戻りコードをコーディングしておきます。

&EXIT 制御ステートメントで設定された戻りコードは、 &RETCODE 制御変数に置かれます。呼び出しコマンド・リストは &RETCODE をテストし、戻りコードに基づいてアクションをとることができます。&RETCODE の詳細については、 50ページの『コマンド・リスト情報』を参照してください。

正の数には、ユーザーが意味を定義することができます。 &EXIT ステートメントで非ゼロ戻りコードをコーディングした場合、 &CONTROL ERR が有効であれば、その非ゼロ戻りコードを生成したコマンド・リスト・コマンドがパネル上にエコーされます。

コマンド・リストが -1 を戻した場合、そのコマンド・リスト、およびネストされたチェーン内のすべてのコマンド・リストが終了します。 &EXIT に戻りコードをコーディングしない場合、または最後の行を処理したときにコマンド・リストが終了し、かつ &EXIT ステートメントが存在しない場合、ゼロの戻りコードが設定されます。

147ページの図 42 は、ENDSESS コマンドを使用してすべての端末アクセス機能セッションを停止する、STOPTAF というコマンド・リストの例を示しています。コマンド・リストは、エラーの有無を検査します。コマンド・リストを開始するには、STOPTAF または STOPTAF ALL を入力します。コマンド・リストの内容または入力の内容を忘れてしまった場合は、STOPTAF ? を使用して、ヘルプを表示してください。

&EXIT

�� &EXITnumber

��

NetView コマンド・リスト言語のブランチ

146 プログラミング: REXX および NetView コマンド・リスト言語

STOPTAF または STOPTAF ALL と入力すると、 2 つの ENDSESS コマンドの結果だけが表示されます。

STOPTAF FLSCN と入力すると、次のメッセージが表示されます。

YOU ENTERED: STOPTAF FLSCN WHICH IS NOT CORRECTENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS

STOPTAF ? と入力すると、次のメッセージが表示されます。

ENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS

&WAIT 制御ステートメントコマンド・リストが特定のイベントやメッセージを待機するようにしたい場合があります。&WAIT 制御ステートメントを使用すれば、どのイベントがコマンド・リストの処理を再開させるかを定義することができます。コマンド・リストは、1 から 10 文字のメッセージ ID をもつ任意のメッセージを待機することができます。

注:

1. &WAIT は、基本 POI タスク (PPT) の下での操作中は使用できません。 PPT

の下での &WAIT の使用の詳細については、 15ページの『基本 POI タスク(PPT) の制限』を参照してください。

2. NetView パイプライン (PIPE コマンドによって呼び出される) は、メッセージ処理の自動化に関して機能が拡張され、また複雑さは軽減しています。PIPE コマンドは &WAIT 制御ステートメントの代わりとなるものです。 NetView パイプラインについては、「IBM Tivoli NetView for z/OS プログラミング: パイプ」を参照してください。

&WAIT を自動化タスク・コマンド・リスト内で使用する場合は、必ず適切なタイムアウト値を指定してください。タイムアウト・イベントのコーディングについての指示は、 150ページの『event=-label の組み合わせ』を参照してください。

トラップされたメッセージが待ち条件を満たす場合は、待機コマンド・プロシージャーの処理が再開されます。トラップされるメッセージを抑止しない場合は、この

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-CMDENDSESS OPCTL,ALLENDSESS FLSCN,ALL&EXIT-ERROR&WRITE YOU ENTERED: STOPTAF &PARMSTR WHICH IS NOT CORRECT-HELP&BEGWRITE -ENDENTER: STOPTAF TO STOP ALL TERMINAL ACCESS FACILITY SESSIONS-END&EXIT 4

図 42. TAF セッションを停止する CLIST の例

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 147

|

|

|

待機コマンド・プロシージャーはメッセージ・フローの処理を継続します。ただし、メッセージを抑止すると、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 ステートメントのコーディング方法は、何通りかあります。このセクションでは基本形式を説明します。 157ページの『&WAIT ステートメントのカスタマイズ』では、&WAIT のカスタマイズ方法について説明します。

コマンド・リストによる &WAIT 制御ステートメントの処理の開始時には、メッセージを受信したか、または ENTER キーが押されたために画面が更新された場合には、 NetView はパネルの右上隅に W の文字を表示します。この W は、オペレーターにコマンド・リスト処理が待ち状態であることを知らせます。待ち状態とは、コマンド・リストがその処理を停止し、特定のメッセージまたはメッセージのグループを待っていることを意味します。特定のメッセージが到着すると、制御変数とパラメーター変数がそれぞれの現行値に設定されます。&WAIT 制御ステートメントの構文は以下のとおりです。

NetView コマンド・リスト言語のブランチ

148 プログラミング: REXX および NetView コマンド・リスト言語

ここで各要素は以下のとおりです。

'command'NetView プログラムから発行できる、任意のコマンドまたはコマンド・リストです。このコマンドはオプションです。通常、コマンド・リストが待っている、メッセージを発行するコマンドです。例えば、コマンド・リストが正常なセッション開始を待機するようにしたい場合、BGNSESS コマンド全体を単一引用符の間にコーディングします。event=-label の組み合わせの前に、必ずコマンド・リストの継続文字をコーディングしてください。コマンドは、コマンド・リスト内でそのコマンドに到達するとすぐに実行されます。

NetView タイマー・コマンド、AT、EVERY、または AFTER のいずれかを&WAIT ステートメント内でコーディングできます。スケジュールされたコマンドがコマンド・リストの場合、現行コマンド・リストが完了するか STACK コマンドが入力されるまで実行できません。

event=-label

event=-label の組み合わせです。この組み合わせは、&WAIT ステートメントに255 文字の限度まで、必要なだけコーディングすることができます。イベントとは、普通はコマンド・リストが待っているメッセージです。イベントは、メッセージが到着するまでの待ち状態を終了させるトリガーとすることができます。&WAIT ステートメントによって、NetView プログラムはオペレーターに送信されたすべてのメッセージをスキャンします。コーディングされたイベントの 1

つと一致するメッセージがあると、コマンド・リストは指定されたラベルの行に移動して、そのラベル付きステートメントから処理を継続します。 &WAIT を満たすことができるイベントのタイプの詳細については、 150ページの『event=-label の組み合わせ』を参照してください。

NetView プログラムが待機しているメッセージを受信すると、そのメッセージはすべての NetView メッセージの場合と同様に、オペレーター端末に表示されます。ただし、メッセージがコマンド・リストから発信された &WAIT の条件を満たす場合、メッセージ・タイプは C のままであり、そうでない場合は、メッセージ・タイプは W になります。オペレーターにはこのメッセージが見えないようにしたい場合は、 157ページの『&WAIT ステートメントのカスタマイズ』を参照してください。

検査される唯一のメッセージは、オペレーター画面用のものです。 DSIEX02A 出口ルーチン (オペレーターへの出力) をコーディングする場合、 &WAIT 制御ステートメントがマッチングのためのメッセージを設定しない場合があります。例えば、DSIEX02A 出口ルーチンがメッセージを削除すると、 &WAIT 制御ステートメントはメッセージを入手できないのでマッチングは行われません。オペレーターがメッセージを受信しないので、待機コマンド・リストも受信できません。したがって、NetView コンソールに表示されるメッセージだけを待ってください。

&WAIT

�� �&WAIT event=-label'command'

��

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 149

&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 ステートメントで複数のメッセージを処理したい場合は、これを変更することができます。 157ページの『&WAIT ステートメントのカスタマイズ』 を参照してください。

event=-label の組み合わせ&WAIT ステートメントの event=-label の組み合わせによって、 4 タイプのイベントの中の 1 つが起きたときに、ラベルのあるステートメントに制御権を渡すことができます。このラベルは、 111ページの『ラベル』で説明した標準ラベルです。&WAIT ステートメントでコーディングされるラベルは変数でも構いませんが、パラメーター変数は使用できません。

event=-label の組み合わせを指定することによって、 &WAIT ステートメント上のラベルに制御権を渡すことができます。以下のイベントを使用できます。

v token

v *ERROR

v *nn

v *ENDWAIT

以下のリストで、前述のイベントを説明します。

token このイベントは、NetView プログラムが token と一致するメッセージを受信すると発生します。token 変数は、1 から 10 文字にすることができ、コマンド・リストが待機しているメッセージ (単数または複数) の最初のトークンを識別します。オプションで、コマンド・リストが待機しているメッセージのドメインを識別することができます。ドメイン ID を指定する場合、トークンの前に置いて、ピリオドでトークンと分離します(domainid.token)。アスタリスク (*) を使用して、部分ドメイン ID またはトークンの指定であることを示すこともできます。ドメイン ID を指定しない場合、コマンド・リストが待機するメッセージはどのドメインでも構いません。

NetView コマンド・リスト言語のブランチ

150 プログラミング: REXX および NetView コマンド・リスト言語

以下の例で、コマンド・リストが待機するメッセージの発信元を指定する方法のいくつかを示します。

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 を使用しなければなりません。

152ページの図 43 は、特殊文字を含むトークンのコーディングの例を示しています。

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 151

複数行オペレーター向け書き込み (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 プログラムがコマンドの正常終了メッセー

&WAIT DOMAIN1.*HASP=-MSG1&WAIT DOMAIN1.=HASP=-MSG1&X = &CONCAT & HASP&WAIT DOMAIN1.&X=-MSG1

図 43. 特殊文字のあるトークンのコーディングの例

NetView コマンド・リスト言語のブランチ

152 プログラミング: REXX および NetView コマンド・リスト言語

ジを待っている場合、このコマンド・リストを実行しているオペレーターは、他の人が GO か RESET を発行するまで持ち越されます。 *ERROR

が満たされた場合、メッセージ制御変数は次のように設定されます。&MSGID

*ERROR

&MSGORIGINコマンド・リストが実行しているドメインの名前

&MSGSTRヌル

&MSGCNT0

注: コマンドが非ゼロ戻りコードを戻す前に、コマンドと関連したメッセージを受信する場合があります。このようなメッセージが 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 プログラムは、この組み合わせをコーディングされた順に、左から右に向けてスキャンします。

例えば、次のステートメントをコーディングしたとします。

NetView プログラムは IST123I を受信すると、ラベル -SPECIAL でなく -ALL に進みます。 IST123I を IST* の前に、コーディングしてください。

&WAIT IST*=-ALL,IST123I=-SPECIAL

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 153

1 つの &WAIT 制御ステートメントに、 255 文字までの範囲で必要なだけのイベントをコーディングすることができます。イベントの組み合わせが 1 行以上になる場合は、継続文字の使用を忘れないでください。メッセージ ID とドメイン ID

は、処理する順序にコーディングします。 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 コマンドは、コマンド・リストが処理を再開するまでリジェクトされます。

NetView コマンド・リスト言語のブランチ

154 プログラミング: REXX および NetView コマンド・リスト言語

UNSTACKコマンド・リスト処理を再開します。 &WAIT は、コマンド・リストが延期されている間に一致したイベントの処理を再開します。

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 個の変数まで繰り返されます。

詳しくは 58ページの『メッセージ処理情報関数』を参照してください。

以下の例で、ドメイン DOM01 からのメッセージ DSI008I SPAN1 NOT ACTIVE が&WAIT ステートメントによって代行受信されたときに、変数がどのように設定されるかの例を示します。

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 155

&MSGORIGINDOM01

&MSGIDDSI008I

&MSGSTRSPAN1 NOT ACTIVE

&MSGCNT3

&1 SPAN1

&2 NOT

&3 ACTIVE

&4–&31NULL

注:

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 待機コマンド・リストのために到着するメッセージは、ネストされたコマンド・リストが処理を終了するまでエンキューされています。

NetView コマンド・リスト言語のブランチ

156 プログラミング: REXX および NetView コマンド・リスト言語

v &WAIT ステートメントで、待機コマンド・リストとネストされたコマンド・リストに同じメッセージ番号を指定すると、そのメッセージはネストされたコマンド・リスト内の &WAIT を満たします。

ネストされたコマンド・リストが、メッセージが &WAIT を満たす前に終了すると、そのメッセージは待機コマンド・リストのキューに入れられます。&WAIT

または待機コマンド・リストが終了されなければ、メッセージ・キューは増え続け、NetView プログラムがストレージを使い切ってしまう可能性があります。

&WAIT ステートメントのカスタマイズ前の項では、&WAIT コマンドの最も簡単な形式を説明しましたが、その場合、最初に受信した待機を満たすメッセージがオペレーターの端末に表示され、コマンド・リストの処理が継続します。

このセクションでは、&WAIT ステートメントをより柔軟にカスタマイズする方法を説明します。

&WAIT ステートメントをカスタマイズするには、次の構文を使用します。

ここで各要素は以下のとおりです。

DISPLAYコマンド・リストが待機しているメッセージが NetView プログラムに着信したら、オペレーターの端末に表示することを指定します。DISPLAY はデフォルト値です。

SUPPRESS&WAIT ステートメントを満たす任意のメッセージを表示、ログ、あるいは自動化しないことを指定します。

CONTWAIT次の &WAIT event=-label ステートメントが、待機が終了するまで追加イベントを待機していることを指定しています。CONTWAIT によって、1 つの&WAIT ステートメントで、複数のイベントを処理することができます。このオペランドは、LIST コマンドなどの 1 つのコマンドから複数のメッセージを検索したい場合に便利です。

ENDWAIT次に処理する event=-label の組み合わせの処理を設定します。ENDWAIT はデ

&WAIT

��DISPLAY ENDWAIT

&WAITSUPPRESS CONTWAIT

��

または

&WAIT

�� &WAIT CONTINUE ��

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 157

フォルト値で、&WAIT を満たす最初のイベントの後で待機が終了することを指定します。ENDWAIT を指定すると、すでに処理中の待機は終了させませんが、オペレーターが GO コマンドを使用して待機を終了させることはできます。RESET コマンド (待機を終了させる) も、コマンド・リストを終了させます。

CONTINUEコマンド・リストに、元の &WAIT ステートメントを満たす次のイベントのために続けて待機するよう指示します。CONTINUE は、&WAIT CONTWAIT が&WAIT event=-label より前に指定されているときだけ使用されます。イベント処理の終了後も待機を継続したい場合は、&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 がデフォルト値になります。有効なオプションの組み合わせについては、表 18 を参照してください。

8. ENDWAIT オプションと CONTWAIT オプションは、コマンド・リスト内のどの点においても変更可能です。 CONTWAIT が開始すると、デフォルト値に戻るには、もう一度 ENDWAIT オペランド付きの &WAIT ステートメントをコーディングしなければなりません。

表 18. &WAIT のカスタマイズ・オプション・マトリックス:

S = 指定オペランド

v = 呼び出されるデフォルト

DISPLAY SUPPRESS ENDWAIT CONTWAIT

S S

S S

NetView コマンド・リスト言語のブランチ

158 プログラミング: REXX および NetView コマンド・リスト言語

表 18. &WAIT のカスタマイズ・オプション・マトリックス (続き):

S = 指定オペランド

v = 呼び出されるデフォルト

DISPLAY SUPPRESS ENDWAIT CONTWAIT

S S

S S

v S

v S

S v

S v

注: 少なくとも 1 個のオプションを指定しなければなりません。オプションを指定しないと、デフォルト値が呼び出されません。

この形式のオペランドはオプションで、どの順序でコーディングしても構いません。ただし、&WAIT event=-label ステートメントには、これらのオペランドはコーディングできません。&WAIT ステートメントは、コマンド・リストを待ち状態にはせず、代わりにコマンド・リストが、次の &WAIT event=-label 制御ステートメントの処理方法を指示するだけです。

このステートメントを SUPPRESS、CONTWAIT、または CONTINUE を使用して更新すると、新しい設定値は、現在処理中の &WAIT を含むコマンド・リスト内の、他の &WAIT ステートメントについても有効になります。初期設定値を復元するには、適切なオペランドの &WAIT ステートメントをもう 1 回コーディングしなければなりません。ネストされたコマンド・リストを活動化する場合、そのネストされたコマンド・リストのための &WAIT ステートメントをコーディングしない限り、そのコマンド・リストについてはデフォルト設定値が有効になります。

CONTWAIT が有効な場合の &WAIT の終了154ページの『&WAIT の終了』では、コマンド・リストが 1 つだけのイベントを待機している場合の、待機の終了方法について説明しました。コマンド・リストが複数のイベントの一致を待機している場合、待機を終了させるには、次の方法のうちの 1 つを使用します。

v 端末で GO コマンドを入力する。

&WAIT CONTINUE が最後の &WAIT ステートメントであった場合、&WAIT

CONTINUE ステートメントに続く、次のコマンド・リスト・ステートメントから処理が継続されます。*ENDWAIT イベントがコーディングされると、処理はラベル・ステートメントから継続されます。event=-label で一致状態がなかった場合、処理は &WAIT ステートメントに続く行から継続されます。

v &WAIT ENDWAIT ステートメントに続くコマンド・リスト・ステートメント内に、GO コマンドをコーディングする。

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 159

*ENDWAIT イベントがコーディングされると、処理はラベル・ステートメントから継続されます。event=-label で一致状態がなかった場合、処理は GO コマンドに続く行から継続されます。

v *ERROR を、&WAIT ステートメントのイベントとしてコーディングする。

&WAIT ステートメントで指定されたコマンドがエラーで終了した場合、コマンド・リストはラベルで示されたステートメントから処理を継続します。&WAIT

は、エラーが起こらなければ終了しません。ただし、コマンド・リストでエラーが発生し、*ERROR をコーディングしていなければ、割り込みが起こらず待機が終了しない場合があります。

v &WAIT ステートメントで、*nn をコーディングする。

nn 秒以内にそのイベントが起こらなければ、コマンド・リストはラベルによって指定されたステートメントから処理を継続します。

v &WAIT ステートメントで、*ENDWAIT をコーディングする。

オペレーターが GO コマンドを入力すると、コマンド・リストはラベルで指定されたステートメントから処理を継続します。

v ラベルの後に、&EXIT をコーディングする。

コマンド・リストは、終了します。

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 がデフォルトで有効な場合、最初に一致するイベントによって待機が終了し、コマンド・リスト処理が継続します。 154ページの『&WAIT の終了』 を参照してください。

v &WAIT CONTWAIT を指定した場合、イベントを 159ページの『CONTWAIT が有効な場合の &WAIT の終了』に示すように指定しなければ、最初にこのイベントを受信したときも &WAIT は終了しません。コマンド・リストは、イベント用に指定されたラベルに進んで処理を継続します。

NetView コマンド・リスト言語のブランチ

160 プログラミング: REXX および NetView コマンド・リスト言語

コマンド・リストのこのようなセクションを完了させるには、次のアクションのうちいずれか 1 つを行います。

– &WAIT CONTINUE をコーディングして待機を継続する。

– &WAIT ENDWAIT と、その後に &WAIT CONTINUE をコーディングして、次のイベントがこの待機の最終イベントであることを指定する。

– &WAIT ENDWAIT ステートメントと GO コマンドを、コマンド・リストにコーディングして待機を終了する。

– &EXIT をコーディングして、コマンド・リストを終了する。

&WAIT を使用したサンプル図 44 は、1 つのメッセージを待機する &WAIT の使用を示しています。コマンド・リストは ACTONE という名前で、論理装置を活動化する VTAM コマンドを発行します。コマンド・リストは、活動化コマンドに応答するメッセージをトラップし、メッセージをフォーマットし直して、オペレーター画面上に表示します。

ACTONE コマンド・リストは、次のメッセージのうちの 1 つを待機します。

&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 を発行するコマンド・リスト

NetView コマンド・リスト言語のブランチ

付録 B. NetView コマンド・リスト言語のブランチ 161

IST093I modename ACTIVEIST105I modename NODE NOW INACTIVE

ACTONE とオペランド NODE1 を入力することによって、コマンド・リストを活動化します。オペランドは、活動化する論理装置の名前です。このオペランドは、パラメーター変数 &1 の値を指定します。成功を示すメッセージ (IST093I) か、失敗を示すメッセージ (IST105I) を受信すると、ENDWAIT が指定されたため待機が終了します。処理は指定されたラベル (IST093I の場合は -REFORM、IST105I の場合は -FAIL) から処理を継続します。SUPPRESS が指定されたため、待機させられたメッセージは表示されませんが、他のメッセージはいずれも表示されます。

NODE1 の活動化が成功すると、図 45 に示されたメッセージ・テキストがオペレーター端末に表示されます。

ACTONE NODE1IST097I VARY ACCEPTEDVTAM MESSAGE IST093I WAS RECEIVEDNODE1 IS NOW ACTIVECOMMAND LIST ACTONE COMPLETE

図 45. ACTONE NODE1 のメッセージ・テキスト

NetView コマンド・リスト言語のブランチ

162 プログラミング: 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, 2013 163

メント以降、直接グローバル変数を設定することができます。各コマンドは機能を提供しますが、単一の NetView コマンド・リスト内ではどちらか一方のみを使用してください。

2. グローバル変数を作成する際、その変数の長さは 1 から 11 文字までが可能です。A から Z、0 から 9、#、@、および $ が有効な文字です。

3. グローバル変数の値は 255 文字長までです。シフトアウト (X'0E') 制御文字とシフトイン (X'0F') 制御文字の間の 2 バイト文字の最大数は 126 です。

4. グローバル変数には、-2147483647 から 2147483647 までの数値を指定することができます。この限界外の数値は、文字ストリングとして取り扱われます。

&TGLOBAL および &CGLOBAL の使用法&TGLOBAL および &CGLOBAL 制御ステートメントを使用すると、複数のグローバル変数を指定することができます。変数名は、コンマまたはブランクで区切る必要があります。

変数置換を実行する場合を除いて、定義ステートメントでは、グローバル変数名とともに & をコーディングしないでください。アンパーサンド (&) が付く変数は置換されます。グローバル変数を使用するときは (グローバル変数の定義時は除く)、ユーザー変数に対する場合と同じように、変数名に & を付ける必要があります。

グローバル変数を間接的に参照する場合は、2 つの & が必要です。変数の間接参照に関する詳細については、 115ページの『コマンド・リストでのパラメーター変数の使用方法』 および 112ページの『変数置換の順序』を参照してください。

&TGLOBALタスク・グローバル変数は、同じタスクの下で実行するコマンド・リストによってのみ参照することが可能です。

&TGLOBAL 制御ステートメントを使用して、任意の変数をタスク・グローバル変数として定義します。 &TGLOBAL 制御ステートメントの構文は次のとおりです。

このステートメントは、列記された変数をタスク・グローバル変数として定義します。このステートメントによって定義された変数の値は、同じタスクの下で実行されている別のコマンド・リストによって割り当てられた最新のものになります。値が何も割り当てられていない場合、その値は未定義またはヌルとなり、その値を検索しようとするとヌル値が戻されることになります。値が参照される前に、各コマンド・リストの &TGLOBAL ステートメントを使用しないと、その変数のデフォルト値はローカル・ユーザー変数となります。

以下は、&TGLOBAL 制御ステートメントの使用例です。

&TGLOBAL

�� �&TGLOBAL variable ��

NetView コマンド・リスト言語のグローバル変数

164 プログラミング: REXX および NetView コマンド・リスト言語

最初の行は、JOHN という値に設定されたローカル・ユーザー変数で構成されています。 2 行目は、以下のように 2 つのタスク・グローバル変数を定義しています。

v ABC は、タスク・グローバル変数 &ABC になります。 &ABC の値は、定義されなかったためヌルです。

v &JOHN の値は、定義されていないためヌルです。これは、変数の間接参照の一例です。

タスク・グローバル変数と、ユーザー変数および共通グローバル変数との相互作用については、 168ページの『&TGLOBAL および &CGLOBAL 使用時の変数のエクステント』を参照してください。

&TGLOBAL ステートメントで複数の変数名を指定する場合は、変数名をコンマまたはブランクで区切る必要があります。

以下のタスク・グローバル変数の使用法の推奨に注意してください。

v PROFILE IC は、タスク・グローバル変数を設定して、別のタイプのオペレーター向けの別のメッセージ抑止レベルやメッセージ圧縮を指示することができます。さまざまなメッセージによって駆動されるコマンド・リストは、これらの変数をテストして、特定のオペレーターにとって必要な情報を判別することができます。

v どのコマンド・リストも、同じオペレーター・タスクの下で実行されている別のコマンド・リストに対して、任意の数のパラメーターを設定して初期化することができます。タスク・グローバル変数はネストされたコマンド・リストから情報を戻すことができるため、これによって、ネストされたコマンド・リストの通信が改善されます。

&CGLOBAL&CGLOBAL 制御ステートメントを使用して、任意の変数を共通グローバル変数として定義します。&CGLOBAL 制御ステートメントの構文は、次のとおりです。

このステートメントは、列記された変数を共通グローバル変数として定義します。このステートメントによって定義された変数の値は、他のコマンド・リストによって割り当てられた最新のものになります。値が何も割り当てられていない場合、その値は未定義またはヌルとなり、その値を検索しようとするとヌル値が戻されることになります。変数が参照される前に、各コマンド・リストの &CGLOBAL ステートメントを使用しないと、その変数のデフォルト値はローカル・ユーザー変数となります。

&NAME = JOHN&TGLOBAL ABC,&NAME

&CGLOBAL

�� �&CGLOBAL variable ��

NetView コマンド・リスト言語のグローバル変数

付録 C. NetView コマンド・リスト言語のグローバル変数 165

&CGLOBAL 制御ステートメントの使用例を、以下に示します。

最初の行は、JOHN という値に設定されたローカル・ユーザー変数で構成されています。 2 番目の行は、2 つの共通グローバル変数を次のように定義しています。

v ABC は、共通グローバル変数 &ABC になります。 &ABC の値は、定義されていないためヌルです。

v &NAME は、共通グローバル変数 &JOHN になります。 &NAME は JOHN という値をもっているため、この行の &NAME は JOHN に置き換えられます。これは、共通グローバル変数 &JOHN を定義します。 &JOHN の値は、定義されていないためヌルです。

同一のグローバル変数にアクセスしている異なったタスクの下で複数のコマンド・リストを実行している場合は、その変数が設定された最新の値が、その変数を変更する任意のコマンド・リストにより設定される値になります。例えば、あるコマンド・リストが共通グローバル変数にアクセスし、その後、そのコマンド・リストがその変数を更新する前に、別のタスクの下で実行している別のコマンド・リストがその変数にアクセスするとします。両方のコマンド・リストが変数を更新する場合、その変数は、それを最後に更新するコマンド・リストによって与えられた値を受け取ります。

共通グローバル変数が、同時に別のコマンド・リストによって更新されるのを防止するために、その変数を更新するすべてのコマンド・リストを同じタスクの下で実行させることができます。共通グローバル変数の、ユーザー変数およびタスク・グローバル変数との対話に関する詳細については、 168ページの『&TGLOBAL および &CGLOBAL 使用時の変数のエクステント』を参照してください。

&CGLOBAL ステートメントで複数の変数名を指定する場合は、変数名をコンマまたはブランクで区切る必要があります。

NetView 製品で提供されるコマンド・リスト UPDCGLOB および SETCGLOB を使用して、共通グローバル変数を更新および設定できます。詳細については、NetView オンライン・ヘルプを参照してください。

共通グローバル変数を使用すると、オペレーターのログオン、ログオフに関係なく、ネットワークに関する正確な情報を保守することができます。

また、共通グローバル変数を使用して、非送信請求アクセス方式メッセージの累積情報を保持することができます。例えば、障害のあるリソースの通知を使用して、そのリソースをリカバリーすることができます。グローバル変数を用いると再試行の回数を記録し、ループを防止することができます。

&NAME = JOHN&CGLOBAL ABC,&NAME

NetView コマンド・リスト言語のグローバル変数

166 プログラミング: REXX および NetView コマンド・リスト言語

&TGLOBAL を使用したタスク・グローバル変数の更新方法以下の 2 つの例でコマンド・リストを示します。1 番目のコマンド・リストCLIST1 は、ネストされたコマンド・リスト UPDT1 を呼び出します。 CLIST1 とUPDT1 の両コマンド・リストは、タスク・グローバル変数の定義、参照、および更新の方法を示しています。

図 46 の CLIST1 は、タスク・グローバル変数 SYSVAR1 を定義します。割り当てステートメント &SYSVAR1 = 5 を使用して値が割り当てられるまでは、タスク・グローバル変数 SYSVAR1 の値はヌル値を戻します。CLIST1 は、UPDT1 の名前をもつネストされたコマンド・リストを活動化します。

図 47 の UPDT1 は、タスク・グローバル変数 &1 に保管されている値を再定義します。タスク・グローバル変数 &1 は、CLIST1 に呼び出されたとき UPDT1 に渡された最初の (かつ唯一の) 変数である SYSVAR1 から、元の値を入手します。NetView プログラムは、変数を右から左にスキャンするため、&&1 の &1 の部分が最初に評価され、&1 の値は SYSVAR1 と同じ値になります。タスク・グローバル変数の値は、&SYSVAR1 として参照されます。 &SYSVAR1 の初期値は 5 で、&SYSVAR1 はその後 &&1 = &&1 + 1 ステートメントを (NetView プログラムによって評価された後は、&SYSVAR1 = &SYSVAR1 + 1) を使用して 1 ずつ増えていきます。

* 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 コマンド・リスト

* 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 コマンド・リスト

NetView コマンド・リスト言語のグローバル変数

付録 C. NetView コマンド・リスト言語のグローバル変数 167

更新された値は、CLIST1 内でタスク・グローバル変数 &SYSVAR1 として使用できます。&WRITE SYSVAR1 = &SYSVAR1 ステートメントは、&SYSVAR1 タスク・グローバル変数の更新済みの値を表示します。

&TGLOBAL および &CGLOBAL 使用時の変数のエクステントローカル変数と同じ名前でグローバル変数を定義すると、そのローカル変数の値は失われます。そのため、グローバル変数はそのローカル変数の値を受け取りません。値が割り当てられるまで、グローバル変数の値はヌルになります。

タスク・グローバル変数が定義された後で、コマンド・リストが共通グローバル変数を定義し、しかもタスク・グローバル変数と同じ名前である場合、そのタスク・グローバル変数の値は未変更のままです。ただし、&TGLOBAL を使用してそのタスク・グローバル変数の値を再定義しない限り、もはやこのコマンド・リストがその変数の値にアクセスすることはできません。

共通グローバル変数が、別の共通グローバル変数と同じ名前を使用して定義された後で、コマンド・リストがタスク・グローバル変数を定義すると、その共通グローバル変数の値は変更されないままになります。ただし、&CGLOBAL を使用してその共通グローバル変数の値を再定義しない限り、もはやこのコマンド・リストがその変数の値にアクセスすることはできません。

GLOBVAR1 ( 169ページの図 48) は、個々のコマンド・リストおよび別のタスクの下で実行されているコマンド・リスト内のユーザー変数、タスク・グローバル変数、および共通グローバル変数のエクステントを示したものです。このコマンド・リストは、以下の変数操作の例を示します。

v ユーザー変数への値の割り当て

v タスク・グローバル変数の定義

v 共通グローバル変数の定義

v 共通グローバル変数に対する値の設定

v 共通グローバル変数からタスク・グローバル変数への変更

以下の例では、グローバル変数が入ったコマンド・リストが示されています。以下の例では、変数の値は括弧で囲んで示しています。

NetView コマンド・リスト言語のグローバル変数

168 プログラミング: REXX および NetView コマンド・リスト言語

&CONTROL ERR*** CLIST NAME: GLOBVAR1*** ASSIGN VALUES TO SEVERAL USER VARIABLES AND PRINT THEIR VALUES******************************************************************

&OPER = OPER1&VTLV = VT33&DOM1 = CNM01002CLEAR&BEGWRITE SUB -ENDLOCAL

FROM GLOBVAR1: AFTER LOCAL VARIABLES ASSIGNEDVARIABLE 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 DEFINEDVARIABLE 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 VTLVHAVE BEEN LOST AS THEY ARE NO LONGER LOCALVARIABLES AND THE TASK GLOBAL VARIABLES HAVE NOTBEEN ASSIGNED YET.

-ENDTG1

**** ASSIGN VALUES TO THE TASK GLOBAL VARIABLES**********************************************

&OPER = OPER2&VTLV = VT33&CNT = 3&BEGWRITE SUB -ENDTG2

FROM GLOBVAR1: AFTER VALUES ASSIGNED TO TGLOBAL VARIABLESVARIABLE 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 DEFINEDVARIABLE 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 GLOBALVARIABLES OPER AND VTLV HAVE BEEN REPLACED BYCOMMON GLOBAL VARIABLES OPER AND VTLV. THESE ARENULL AS NO VALUE HAS BEEN ASSIGNED TO THEM YET.

-ENDTG3

**** ASSIGN VALUES TO COMMON GLOBAL VARIABLES********************************************

&OPER = OPER3&VTLV = VT32&VAL = HEX&BEGWRITE SUB -ENDTG4

FROM GLOBVAR1: AFTER CGLOBAL VARIABLES ASSIGNEDVARIABLE 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 STATEMENTVARIABLE 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 TASKGLOBAL VARIABLE OPER AGAIN AS THE MOST RECENTDECLARATION STATEMENT DEFINED IT AS TASK GLOBAL.

-ENDTG5

図 48. グローバル変数のエクステントを表す GLOBVAR1 の例

NetView コマンド・リスト言語のグローバル変数

付録 C. NetView コマンド・リスト言語のグローバル変数 169

GLOBALV コマンドGLOBALV コマンドは、 NetView コマンド・リスト言語のコマンド・リストで、グローバル変数の定義、配置、および獲得を行うために使用します。また、GLOBALV コマンドは、グローバル変数を VSAM データベースに保管します。NetView プログラムが停止して再始動した場合に、保管されていたグローバル変数を復元したり、または保管されていたグローバル変数を外部ストレージから消去(除去) することができます。グローバル変数を使用すれば、複数のコマンド・プロシージャーは、それらの言語に関係なく、共通の値を共用できます。

GLOBALV コマンドの詳細については、NetView オンライン・ヘルプを参照してください。

NetView コマンド・リスト言語のグローバル変数

170 プログラミング: REXX および NetView コマンド・リスト言語

付録 D. 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 命令の提供元

なし N/A &BEGWRITE 125ページの『&BEGWRITE 制御ステートメント』

N/A

CGLOBAL(name) 58ページの『グローバル変数情報関数』

&CGLOBAL 165ページの『&CGLOBAL』

NetView

TRACE 37ページの『REXX コマンド・リストのトレース』

&CONTROL 122ページの『&CONTROL ステートメント』

REXX

EXIT 145ページの『&EXIT 制御ステートメント』

&EXIT 145ページの『&EXIT 制御ステートメント』

REXX

SIGNAL 38ページの『REXX コマンド・リスト内の戻りコード』

&GOTO 145ページの『&GOTO 制御ステートメント』

REXX

IF 143ページの『&IF 制御ステートメント』

&IF 143ページの『&IF

制御ステートメント』

REXX

© Copyright IBM Corp. 1997, 2013 171

表 19. REXX 命令と NetView コマンド・リスト言語制御ステートメントとの比較 (続き)

REXX 命令 記載ページNetView 制御ステートメント 記載ページ

REXX 命令の提供元

PARSE EXTERNAL 30ページの『オペレーター入力のための休止』

&PAUSE 127ページの『&PAUSE 制御ステートメント』

REXX

PARSE PULL 30ページの『オペレーター入力のための休止』

&PAUSE 127ページの『&PAUSE 制御ステートメント』

REXX

TGLOBAL(name) 58ページの『グローバル変数情報関数』

&TGLOBAL 164ページの『&TGLOBAL』

NetView

TRAP * &WAIT 147ページの『&WAIT 制御ステートメント』

NetView

WAIT * &WAIT 147ページの『&WAIT 制御ステートメント』

NetView

MSGREAD * &WAIT 147ページの『&WAIT 制御ステートメント』

NetView

FLUSHQ * &WAIT 147ページの『&WAIT 制御ステートメント』

NetView

SAY 31ページの『SAY 命令の使用』

&WRITE 124ページの『&WRITE 制御ステートメント』

REXX

*「IBM Tivoli NetView for z/OS コマンド・リファレンス 第 2 巻 (O - Z)」を参照してください。

REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較

表 20 は、NetView コマンド・リスト言語で使用される各種の制御変数および関数、および同等の REXX 関数を示しています。

関数は、NetView プログラムによって提供されている場合は NetView プログラムでのみ使用でき、SAA REXX ではサポートされません。

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

ACTIONDL() 59ページの『メッセージ処理情報』

&ACTIONDL NetView

REXX と NetView コマンド・リスト言語の比較

172 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

ACTIONMG() 59ページの『メッセージ処理情報』

&ACTIONMG NetView

APPLID() 93ページの『セッション情報関数』

&APPLID NetView

AREAID() 59ページの『メッセージ処理情報』

&AREAID NetView

ASID() 93ページの『セッション情報関数』

&ASID NetView

ATTENDED() 93ページの『セッション情報関数』

&ATTENDED NetView

ATTNID() 59ページの『メッセージ処理情報』

&ATTNID NetView

AUTCONID() 93ページの『セッション情報関数』

&AUTCONID NetView

AUTHCHK(...) 50ページの『コマンド・リスト情報』

なし NetView

AUTHCHKX(...) 50ページの『コマンド・リスト情報』

なし NetView

AUTOTASK() 93ページの『セッション情報関数』

&AUTOTASK NetView

AUTOTOKE() 59ページの『メッセージ処理情報』

&AUTOTOKE NetView

BITAND(...) 131ページの『&BITAND』

&BITAND REXX

BITOR(...) 131ページの『&BITOR』

&BITOR REXX

BITXOR(...) 132ページの『&BITXOR』

&BITXOR REXX

CGI() 93ページの『セッション情報関数』

なし NetView

REXX と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 173

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

CGLOBAL(name) CGLOBAL, 165

ページの『&CGLOBAL』

&CGLOBAL NetView

CMDNAME() 50ページの『コマンド・リスト情報』

なし NetView

CODE2TXT(...) 46ページの『変換関数』

なし NetView

|| 133ページの『&CONCAT』

&CONCAT REXX

CURCONID() 93ページの『セッション情報関数』

&CURCONID NetView

CURSYS() 93ページの『セッション情報関数』

&CURSYS NetView

DATE() 99ページの『時刻および日付変数』

&DATE REXX

DESC() 59ページの『メッセージ処理情報』

&DESC NetView

DISC() 93ページの『セッション情報関数』

&DISC NetView

DISTAUTO() 93ページの『セッション情報関数』

&DISTAUTO NetView

DOMAIN() 93ページの『セッション情報関数』

&DOMAIN NetView

DOMAIN(' x') 93ページの『セッション情報関数』

なし NetView

ECVTPSEQ() 93ページの『セッション情報関数』

&ECVTPSEQ NetView

ENVDATA('x') 93ページの『セッション情報関数』

なし NetView

EVENT() 59ページの『メッセージ処理情報』

なし NetView

REXX と NetView コマンド・リスト言語の比較

174 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

FNDMBR(...) 56ページの『データ・セット情報関数』

なし NetView

HCOPY() 99ページの『端末情報関数』

&HCOPY NetView

HDRMTYPE() 59ページの『メッセージ処理情報』

&HDRMTYPE NetView

HIER (n) 75ページの『REXX 管理サービス単位情報関数』, 133ページの『&HIER』

&HIER NetView

HMASPRID() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMBLKACT() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMCPLINK() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMEPNAU() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMEPNET() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMEPNETV() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMEVTYPE() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

REXX と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 175

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

HMFWDED() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMFWDSNA() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMGENCAU() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMONMSU() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMORIGIN() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMSECREC() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMSPECAU() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

HMUSRDAT() 75ページの『REXX 管理サービス単位情報関数』

なし NetView

IFRAUGMT() 59ページの『メッセージ処理情報』

&IFRAUGMT NetView

IFRAUIND() 59ページの『メッセージ処理情報』

&IFRAUIND NetView

IFRAUIN3() 59ページの『メッセージ処理情報』

&IFRAUIN3 NetView

IFRAUI3X() 59ページの『メッセージ処理情報』

&IFRAUI3X NetView

REXX と NetView コマンド・リスト言語の比較

176 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

IFRAUSDR() 59ページの『メッセージ処理情報』

&IFRAUSDR NetView

IFRAUSRB() 59ページの『メッセージ処理情報』

&IFRAUSRB NetView

IFRAUSB2() 59ページの『メッセージ処理情報』

&IFRAUSB2 NetView

IFRAUSRC() 59ページの『メッセージ処理情報』

&IFRAUSRC NetView

IFRAUSC2() 59ページの『メッセージ処理情報』

&IFRAUSC2 NetView

IFRAUTA1() 59ページの『メッセージ処理情報』

&IFRAUTA1 NetView

IFRAUWF1() 59ページの『メッセージ処理情報』

&IFRAUWF1 NetView

JOBNAME() 59ページの『メッセージ処理情報』

&JOBNAME NetView

JOBNUM() 59ページの『メッセージ処理情報』

&JOBNUM NetView

KEY() 59ページの『メッセージ処理情報』

&KEY NetView

LENGTH(...) 136ページの『&LENGTH』

&LENGTH REXX

LINETYPE() 59ページの『メッセージ処理情報』

&LINETYPE NetView

LU() 99ページの『端末情報関数』

&LU NetView

MCSFLAG() 59ページの『メッセージ処理情報』

&MCSFLAG NetView

MSGASID() 59ページの『メッセージ処理情報』

&MSGASID NetView

REXX と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 177

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

MSGAUTH() 59ページの『メッセージ処理情報』

&MSGAUTH NetView

MSGCATTR() 59ページの『メッセージ処理情報』

&MSGCATTR NetView

MSGCMISC() 59ページの『メッセージ処理情報』

&MSGCMISC NetView

MSGCMLVL() 59ページの『メッセージ処理情報』

&MSGCMLVL NetView

MSGCMSGT() 59ページの『メッセージ処理情報』

&MSGCMSGT NetView

MSGCNT() 59ページの『メッセージ処理情報』

&MSGCNT NetView

MSGCOJBN() 59ページの『メッセージ処理情報』

&MSGCOJBN NetView

MSGCPROD() 59ページの『メッセージ処理情報』

&MSGCPROD NetView

MSGCSPLX() 59ページの『メッセージ処理情報』

&MSGCSPLX NetView

MSGCSYID() 59ページの『メッセージ処理情報』

&MSGCSYID NetView

MSGDOMFL() 59ページの『メッセージ処理情報』

&MSGDOMFL NetView

MSGGBGPA() 59ページの『メッセージ処理情報』

&MSGGBGPA NetView

MSGGDATE() 59ページの『メッセージ処理情報』

&MSGGDATE NetView

MSGGFGPA() 59ページの『メッセージ処理情報』

&MSGGFGPA NetView

REXX と NetView コマンド・リスト言語の比較

178 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

MSGGMFLG() 59ページの『メッセージ処理情報』

&MSGGMFLG NetView

MSGGMID() 59ページの『メッセージ処理情報』

&MSGGMID NetView

MSGGSEQ() 59ページの『メッセージ処理情報』

&MSGGSEQ NetView

MSGGSYID() 59ページの『メッセージ処理情報』

&MSGGSYID NetView

MSGGTIME() 59ページの『メッセージ処理情報』

&MSGGTIME NetView

MSGID() 59ページの『メッセージ処理情報』

&MSGID NetView

MSGITEM() 59ページの『メッセージ処理情報』

なし NetView

MSGORIGN() 59ページの『メッセージ処理情報』

&MSGORIGIN NetView

MSGSRCNM() 59ページの『メッセージ処理情報』

&MSGSRCNM NetView

MSGSTR() 59ページの『メッセージ処理情報』

&MSGSTR NetView

MSGTOKEN() 59ページの『メッセージ処理情報』

&MSGTOKEN NetView

MSGTSTMP() 59ページの『メッセージ処理情報』

&MSGTSTMP NetView

MSGTYP() 59ページの『メッセージ処理情報』

&MSGTYP NetView

MSGVAR() 59ページの『メッセージ処理情報』

なし NetView

REXX と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 179

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

MSGVAR(number) 59ページの『メッセージ処理情報』

&1 から &31 NetView

MSUSEG(...) 75ページの『REXX 管理サービス単位情報関数』, 136ページの『&MSUSEG』

&MSUSEG NetView

MVSLEVEL() 93ページの『セッション情報関数』

&MVSLEVEL NetView

NVCNT() 55ページの『クロスドメイン情報関数』

&NCCFCNT NetView

NVDELID() 59ページの『メッセージ処理情報』

&NVDELID NetView

NVID(n) 55ページの『クロスドメイン情報関数』

&NCCFID NetView

NVSTAT(name) 55ページの『クロスドメイン情報関数』

&NCCFSTAT NetView

NETID() 93ページの『セッション情報関数』

&NETID NetView

NETVIEW() 93ページの『セッション情報関数』

&NETVIEW NetView

NETVIEW(' x') 93ページの『セッション情報関数』

なし NetView

OPID() 92ページの『オペレーター情報関数』

&OPID NetView

OPID('x') 92ページの『オペレーター情報関数』

なし NetView

OPSYSTEM() 93ページの『セッション情報関数』

&OPSYSTEM NetView

REXX と NetView コマンド・リスト言語の比較

180 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

PANEL() 93ページの『セッション情報関数』

なし NetView

PARMCNT() 50ページの『コマンド・リスト情報』

&PARMCNT NetView

ARG(1) 50ページの『コマンド・リスト情報』

&PARMSTR REXX

PARTID() 93ページの『セッション情報関数』

&PARTID NetView

PRTY() 59ページの『メッセージ処理情報』

&PRTY NetView

REPLYID() 59ページの『メッセージ処理情報』

&REPLYID NetView

RC 50ページの『コマンド・リスト情報』

&RETCODE REXX

ROUTCDE() 59ページの『メッセージ処理情報』

&ROUTCDE NetView

RXDEFENV() 98ページの『REXX 環境情報関数』

&RXDEFENV NetView

RXDEFSTR() 98ページの『REXX 環境情報関数』

&RXDEFSTR NetView

RXNUMENV() 98ページの『REXX 環境情報関数』

&RXNUMENV NetView

RXOVRENV() 98ページの『REXX 環境情報関数』

&RXOVRENV NetView

RXOVRSTR() 98ページの『REXX 環境情報関数』

&RXOVRSTR NetView

SESSID() 59ページの『メッセージ処理情報』

&SESSID NetView

REXX と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 181

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

SMSGID() 59ページの『メッセージ処理情報』

&SMSGID NetView

STCKGMT() 93ページの『セッション情報関数』

&STCKGMT NetView

SUBSTR(...) 140ページの『&SUBSTR』

&SUBSTR REXX

SUBSYM(...) 46ページの『変換関数』

なし NetView

SUPPCHAR() 93ページの『セッション情報関数』

&SUPPCHAR NetView

SYSCONID() 59ページの『メッセージ処理情報』

&SYSCONID NetView

SYSID() 59ページの『メッセージ処理情報』

&SYSID NetView

SYSPLEX() 93ページの『セッション情報関数』

&SYSPLEX NetView

TASK() 93ページの『セッション情報関数』

&TASK NetView

TGLOBAL(name) 58ページの『グローバル変数情報関数』, 164ページの『&TGLOBAL』

&TGLOBAL NetView

TIME() 99ページの『時刻および日付変数』

&TIME REXX

TOWER(...) 93ページの『セッション情報関数』

なし NetView

TRAP() 93ページの『セッション情報関数』

なし NetView

TYPE() 93ページの『セッション情報関数』

なし NetView

REXX と NetView コマンド・リスト言語の比較

182 プログラミング: REXX および NetView コマンド・リスト言語

表 20. REXX 関数と NetView コマンド・リスト言語制御変数および関数との比較 (続き)

REXX

関数または変数 記載NetView

制御変数REXX 関数の提供元

VTAM() 93ページの『セッション情報関数』

&VTAM NetView

VTCOMPID() 93ページの『セッション情報関数』

&VTCOMPID NetView

WEEKDAYN() 93ページの『セッション情報関数』

&WEEKDAYN NetView

WTO.REPLY 59ページの『メッセージ処理情報』

&WTOREPLY NetView

コマンド・リストで使用されるコマンド「IBM Tivoli NetView for z/OS コマンド・リファレンス 第 1 巻 (A - N)」と「IBM

Tivoli NetView for z/OS コマンド・リファレンス 第 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 と NetView コマンド・リスト言語の比較

付録 D. REXX と NetView コマンド・リスト言語の比較 183

REXX コマンド・リストでコマンドを使用する場合は、変数置換を行わないコマンドの部分を単一引用符で囲みます。

コマンド・リストのコマンド

184 プログラミング: REXX および NetView コマンド・リスト言語

付録 E. コマンド・リストの例の索引

この付録には、本書に記載されている REXX および NetView コマンド・リストの例についての参照テーブルを記載してあります。テーブル内の項目はアルファベット順にリストされています。

このテーブルでは、コマンド・リスト例の名前、その関数の要旨、および本書内でのその例の記載個所を示してあります。

REXX コマンド・リストの例表 21 は、本書で示されている REXX コマンド・リストの例をリストしたものです。

表 21. REXX コマンド・リスト例の解説

コマンド・リスト例 説明 参照個所

ACTAPPLS このコマンド・リストは、アクティブ・アプリケーションを表示します。 189ページの『ACTAPPLS

の例』

ACTLU このコマンド・リストは、VTAM ノードを活動化します。 190ページの『ACTLU の例』

CHKOPNUM このコマンド・リストは、基本的な REXX 関数および NetView 特有の関数をコマンド・リストでどのように使用できるかを示します。 CHKOPNUM は、REXX

PARSE 命令、および NetView の MSGTRAP、WAIT、MSGREAD およびGLOBALV コマンドの使用法を図示します。

191ページの『CHKOPNUM

の例』

CHKRSTAT このコマンド・リストは、もっと複雑な REXX 関数および NetView 特有の関数をコマンド・リストでどのように使用できるかを示します。 CHKRSTAT は、REXX INTERPRET 命令と、 NetView WAIT および GETMLINE コマンドの使用法を図示します。

192ページの『CHKRSTAT

の例』

CNMS1101 このコマンド・リストは、PPI 通信およびフルスクリーン自動化の例です。 194ページの『CNMS1101』

CNME1080 これは、共通グローバル変数を再入可能な方法で更新する例です。 202ページの『CNME1080』

CNMESRVAR これは、単一改訂変数を更新する例です。 205ページの『CNMSRVAR

の例』

CNMSRVMC これは、コマンド改訂の NETVONLY アクションの例です。 207ページの『CNMSRVMC

の例』

© Copyright IBM Corp. 1997, 2013 185

表 21. REXX コマンド・リスト例の解説 (続き)

コマンド・リスト例 説明 参照個所

DSPRSTAT オペレーター端末タスク (OST) のオペレーターによって、このコマンド・リストを使用すると、特定の 1 つのリソースに対して CHKRSTAT コマンド・リストを複数回実行した結果を表示することができます。 CHKRSTAT コマンド・リストによって検査される間隔に基づいて、リソースがどのくらいの頻度でアクティブになるかを判別する必要がある場合に、援助機能として DSPRSTAT を使用してください。

208ページの『DSPRSTAT

の例』

GETCG GETCG コマンド・リストは、共通グローバル変数の値を獲得して、それを要求元タスクに表示します。

209ページの『GETCG の例』

GREETING このコマンド・リストは、DATE コマンドを使用した待機およびトラッピングの例を示します。

209ページの『GREETING

の例』

LISTVAR このコマンド・リストの機能説明については、 NetView のオンライン・ヘルプを参照してください。

210ページの『LISTVAR の例』

PRINT このコマンド・リストは、データ・セットのメンバーをシステム印刷ファイルに印刷します。

211ページの『PRINT の例』

TYPE このコマンド・リストは、それを発行したユーザーの端末にデータ・セットのメンバーを一度に 1 行表示します。

212ページの『TYPE の例』

TYPEIT このコマンド・リストは、それを発行したユーザーの端末にデータ・セットのメンバーを一度に 1 行表示します。

213ページの『TYPEIT の例』

NetView コマンド・リスト言語の例表 22 は、本書に記載されている、 NetView コマンド・リスト言語の例をリストしたものです。

表 22. NetView コマンド・リスト例の参照

コマンド・リスト例 説明 参照個所

ACTONE このコマンド・リストは、 VTAM コマンドを発行して論理装置 (LU) を活動化します。 ACTONE コマンド・リストは、1 つのメッセージを待つための&WAIT の使用法を示します。

161ページの図44

CLIST1 CLIST1 コマンド・リストは、ネストされたコマンド・リスト UPDT1 を含んでいます。 CLIST1 と UPDT1 は、タスク・グローバル変数の定義、参照、および更新の方法を示します。

167ページの図46

GLOBVAR1 GLOBVAR1 コマンド・リストは、個々のコマンド・リスト内のユーザー変数、タスク・グローバル変数、および共通グローバル変数の有効範囲を図示します。

169ページの図48

PATH このコマンド・リストは、&WRITE 制御ステートメントおよび VTAM コマンドを使用します。

124ページの『&WRITE 制御ステートメント』

REXX 例の索引

186 プログラミング: REXX および NetView コマンド・リスト言語

表 22. NetView コマンド・リスト例の参照 (続き)

コマンド・リスト例 説明 参照個所

UPDT1 CLIST1 コマンド・リストは、ネストされたコマンド・リスト UPDT1 を含んでいます。 CLIST1 と UPDT1 は、タスク・グローバル変数の定義、参照、および更新の方法を示します。

167ページの図47

NetView コマンド・リスト言語例の索引

付録 E. コマンド・リストの例の索引 187

NetView コマンド・リスト言語例の索引

188 プログラミング: REXX および NetView コマンド・リスト言語

付録 F. NetView のための REXX コマンド・リストの例

ここには、NetView プログラム用に書かれた REXX コマンド・リストの例を収録してあります。これらの例は、NetView 環境で実行している REXX コマンド・リストで、 NetView によって提供されている命令および関数と、 REXX の標準的な命令および関数とをどのようにして一緒に使用できるかを示しています。

ACTAPPLS の例/* *******************************************************************//* *//* ACTAPPLS - REXX VERSION *//* *//* DISPLAY ONLY THE ACTIVE APPLS *//* *//* *******************************************************************/TRACE ESAY ’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’ THENCALL FIRST

OTHERWISECALL ALLELSE

END /* END - SELECT */’WAIT CONTINUE’

END /* EVENT() = M do loop */OTHERWISE

DO’TRAP NO MESSAGES’’FLUSHQ’

ENDEND /* END - SELECT */

END /* END - DO WHILE */

/* *//* ALL NON-INFORMATIONAL MESSAGES GO HERE *//* */ALLELSE:RETURN/* *//* THE MULTILINE WTO WITH THE APPL INFORMATION COMES HERE *//* */

FIRST:’GETMSIZE NUMLINES’ /* Determine the number of lines */I = 0 /* Initialize line number counter*/TOTALACT = 0 /* Initialize total active appls */DO WHILE NUMLINES ¬= I /* DO for all lines */

NUMACT = 0 /* Number of active appls foundon this line */

© Copyright IBM Corp. 1997, 2013 189

|

||||||||||||||||||||||||||||||||||||||||||

||||||||

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 3IF S.CURR ¬= ’’ THEN /* Do we have a status? */

DOIF S.CURR = ’ACTIV’ THEN /* Is the current APPL active? */

NUMACT = NUMACT + 1 /* Bump the number active count */ELSE

DOS.CURR = ’’ /* APPL not active, so blank out */A.CURR = ’

ENDEND

ELSEA.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: ’TOTALACTEXIT

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 */

REXX コマンド・リスト

190 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||

|

||||||||||||||||||||||||||||||||||||

END /* DO WHILE RC=0, LOOP BACK */END /* PROCESS TRAPPED MESSAGE DO */

/* OUT OF DO WHILE, CHECK FORERROR 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 ’NODEOTHERWISE /* NO-OP */

END /* OF SELECT FOR ERROR/TIME-OUT */END /* IF RC=0 (VALID NODENAME) */

END /* IF NODE¬=’STOP’ PROCESSING */EXIT

CHKOPNUM の例以下の例では、PARSE 命令が使用されています。

/**********************************************************************//* *//* 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 *//* ----------- -------- ------------------------------------------ *//* *//**********************************************************************/

SIGNAL ON ERRORPARSE ARG OPTION’GLOBALV GETC CHKOPTIMES, CHKOPNUM, CHKOPMAX’IF OPTION = ’DISPLAY’ THEN DO;

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 191

||||||||||||||||

|

|

||||||||||||||||||||||||||||||||||||||||

||||

IF CHKOPTIMES = ’’ THENSAY ’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/CHKOPTIMESSAY ’MAXIMUM NUMBER OF OPERATORS LOGGED ON IS: ’CHKOPMAXEND;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 +1ELSE NOP

ENDIF CHKOPTIMES = ’’ THEN CHKOPTIMES = 1ELSE CHKOPTIMES = CHKOPTIMES + 1IF CHKOPNUM = ’’ THEN CHKOPNUM = CUROPNUMELSE CHKOPNUM = CHKOPNUM + CUROPNUMIF CHKOPMAX = ’’ THEN CHKOPMAX = CUROPNUMELSE IF CHKOPMAX < CUROPNUM THEN CHKOPMAX = CUROPNUM’GLOBALV PUTC CHKOPTIMES, CHKOPNUM, CHKOPMAX’

EXIT 0;ERROR: SAY ’ERROR OCCURRED. RETURN CODE = ’ RCEXIT -1;

CHKRSTAT の例以下の例では、INTERPRET 命令が使用されています。

/**********************************************************************//* *//* 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’

REXX コマンド・リスト

192 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||||||

|

|

||||||||||||||||||||||||||||||

EXIT 99END

/* 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 99END

/* READ MESSAGE. IF IT IS IST097I, ISSUE WAIT AGAIN, AND THE NEXT *//* MESSAGE READ SHOULD BE IST075I, WHICH HAS THE STATUS INFO */

’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 ’VARNAMEINTERPRET ’ACT# =’VARNAMEIF DATATYPE(ACT#) ¬= ’NUM’ THEN

ACT# = 1 /* IF NONNUMERIC */ELSE

ACT# = ACT# + 1INTERPRET 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 ’VARNAMEINTERPRET ’NACT# =’VARNAMEIF DATATYPE(NACT#) ¬= ’NUM’ THEN

NACT# = 1 /* IF NONNUMERIC */ELSE

NACT# = NACT# + 1INTERPRET VARNAME’=NACT#’’GLOBALV PUTC ’VARNAME

END

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 193

|||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||||||

EXIT 0;ERROR: SAY ’ERROR OCCURRED. RETURN CODE IS ’ RCEXIT -1; /* END COMMAND LIST FOR ERROR */

CNMS1101以下は、PPI 通信およびフルスクリーン自動化の例です。

/**********************************************************************//* ---------------- 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 HALTsep = ’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>>---------------------*/

arg functionsIF functions = ’’ THENDO;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’,

REXX コマンド・リスト

194 プログラミング: REXX および NetView コマンド・リスト言語

|||

|

|

|||||||||||||||||||||||||||||||||||||||

||||||||||||||||||

’| T:’END;ELSEDOparse var functions step funcArgsSELECT

WHEN (¬datatype(step,’W’)) THENsay ’Function codes must be numeric’

WHEN (step=1) THEN CALL PATLIST funcArgsWHEN (step=2) THEN CALL ShowALH funcArgsWHEN (step=3) THEN CALL MAPCL funcArgsWHEN (step=4) THEN CALL DALspread funcArgsWHEN (step=5) THEN CALL TasksOut funcArgsWHEN (step=6) THEN CALL PickData funcArgsWHEN (step=7) THEN CALL Responder funcArgsWHEN (step=8) THEN CALL Requestor funcArgsWHEN (step=9) THEN CALL NewFile funcArgsWHEN (step=10) THEN CALL EndMe funcArgsWHEN (step=11) THEN CALL MakeAlert funcArgsWHEN (step=12) THEN CALL resDyn funcArgsWHEN (step=13) THEN CALL presDyn funcArgsOTHERWISE

say ’Function number’ step ’out of range.’ENDENDEXIT

/*---------------------<<< 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 /*----- Retrieve Alert History -----*/’ATTACH NPDA’ /* Output, including messages will be */

/* saved for future VET call */’PIPE (NAME AHIST1 END +)’, /* Start a pipe */

’| VET NEXT ROWS’, /* give update when it arrives, as image*/’| CORRWAIT MOE 60’, /* Wait 60 sec for first NPDA screen */’| NLOCATE 1.7 /BNH150I/’, /* I KNOW what first screen looks like */’| CONSOLE’, /* show badness */’| A: LOCATE 1.7 /DWO369I/’, /* Separate timeout message (MOE) */’| VAR timeout’, /* save timeout message */’+ A:’, /* other message? */’| VAR npdamsg’ /* ...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. */

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 195

||||||||||||||||||||||||||

||||||||||||||||||||||||||||||||||||||||

’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. */

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

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:’,

REXX コマンド・リスト

196 プログラミング: REXX および NetView コマンド・リスト言語

|||

|||||||||||||||||||||||||||||||||||||

||||||||||||||||||||||||||

’| 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... */

’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! */

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 197

||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||||

"¥ 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

PickData: PROCEDURE /* use PICK to segregate the data */

’PIPE (NAME LOWUSERX)’,’| NETVIEW MAPCL’, /* obtain display of all REXX in storage */’| SEPARATE’, /* handle lines individually */’| DROP 3’, /* header lines */’| DROP LAST 2’, /* trailer line and totals */’| PICK 14.5 < / 6/’, /* compare 5 chars from data with "6" */’| CONSOLE ONLY’ /* 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 EXPOSE step

/* PPI "responder": This program waits (forever) for a request. *//* When a request is received, new lines are added to the begining *//* and end, color is added and the result sent back. "Responder" *//* is designed to be 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’,

’| CONS’,’; A:’,’| NLOCATE 1.11 /+0000000000/’,’| COLOR WHI’,’| EDIT /Error code from receive:/ 1’,

’1.* NW’,’| CONS’,

REXX コマンド・リスト

198 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||

||||||||||||||||||||||||||||||||||||||||||||||||||

|||||||

’;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 THENSAY ’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

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’Xaltxt = altxt||’2A95120117111712171317141715171617171718’Xaltxt = altxt||’16811014101510161017101810191020102110221023’Xaltxt = altxt||’1103030109C7C5D5C14BF34040C3D6D4C3’Xaltxt = 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!!! *//* */

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 199

|||||||||||||||||||||||||||||||||||||||||||||||

||||||||||||||||||||

/* 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. *//* --------------------------------------------------------------- */

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.’,xtraStgTM = 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 VIEWpanel.

We continue to use RESOURCE, making it asynchronous by running it ata VOST (hence the ATTACH) and making it repeat by using the time-outcode from a PIPE WAIT to redrive the command found in the secondarystream. See definition of TimdResc below -- this command could beused from the NCCF command line, if desired, but use ACTION=DISPLAYwith your ATTACH in that case.

The output of TimdResc is captured by the PERSIST and delivered toour trap queue. The presence of a message there makes VIEW givecontrol 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 determinewhen we must exit; VIEW always sets EVENT() to M when it returns fora message. We will get the tText when the PERSIST ends either fromtime-out or because of STOP PERSIST, STOP VOST, etc.

Notice that this sample does not pre-populate the VIEW variableswith values as in resdyn (12) above. Instead, a LITERAL value in

REXX コマンド・リスト

200 プログラミング: REXX および NetView コマンド・リスト言語

||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||

the TimdResc command causes a message to be returned to us promptly.The first instance of VIEW initializes, then returns control hereand we populate the values from the first "asynchronous" response.

:: -------------- 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’

returnHALT:IF symbol(’step’) = ’VAR’ THEN

say ’CNMS1101 function’ step ’ends.’’pipe hole | keep resdyn’ /* empty safe created by resdyn (12) */EXIT -5

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 201

|||

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

CNME1080以下は、共通グローバル変数を再入可能な方法で更新する例です。

/*-----------------------------------------------------------------------*//* FUNCTION : This CLIST sets updates a specified common global *//* variable by a specified numeric amount upto a *//* a specified maximum. *//* *//* NOTE : The CLIST may not be used directly by an operator. Call *//* from automation, another CLIST, or directly from code. *//* *//* COMMAND INPUT PARMS: *//* 1 - Name of the variable to be updated. *//* 2 - "BY" *//* 3 - Increment size *//* 4 - "MAX" *//* 5 - maximum value allowed for the global variable *//* Note, if the increment size is negative, this *//* is a minimum. *//* *//* Default for BY amount is 1; "BY" required if BY amount specified. *//* Default for MAX is "no maximum"; "MAX" required when a value is *//* specified *//* *//* FUNCTION/SUBROUTINE INPUT PARMS: *//* This clist may also be called as a REXX function. When called as *//* a function, the three inputs should be separated by commas and *//* the result of the update is returned as the function result. *//* As above, the Increment (second arg) and Max result (third arg) *//* can be omitted. For example, *//* *//* x = updcglob(aComVar,2,500) /+ add 2, but stop at 500 +/ *//* say ’Updated value of aComVar is’ x *//* *//* *//* OUTPUT : *//* NORMAL: Named common global variable is updated. *//* Common global variable <varname> has been updated to *//* <newvalue>. *//* rc = 0 *//* Function return: new value. *//* *//* *//* ERROR: Value would have exceeded specified maximum: *//* "Common global variable ’&1’ was too big to update(val). *//* It still has the value ’nnn’." *//* rc = 4 *//* *//* Function return: previous value plus one increment *//* *//* DSI004, DSI069 *//* RC = 16 *//*-----------------------------------------------------------------------*/ADDRESS NETVASISparse source RxH InvType fName CLD fm synPH inAddr hIF InvType = ’COMMAND’ THENdo;

func = 0arg varName byStr ’MAX’ maxValueIF varName = ’?’ THEN SIGNAL helpIF varName = ’’ THEN SIGNAL missingparse var byStr . ’BY’ addend

end;ELSEdo;

func = 1

REXX コマンド・リスト

202 プログラミング: REXX および NetView コマンド・リスト言語

|

|

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

varName = arg(1)addend = arg(2)maxValue = arg(3)

end;IF verify(’|=;?’,varName,’M’) > 0 THEN SIGNAL missingSELECT

WHEN maxValue = ’’ THEN NOP /* that’s fine; no maximum */WHEN datatype(maxValue,’N’) THEN NOP /* that’s the max, maximum */OTHERWISE SIGNAL missing

ENDSELECT

WHEN addend = ’’ THEN addend = 1 /* okay, use default increment */WHEN datatype(addend,’N’) THEN NOP /* swell, he gave us a number */OTHERWISE SIGNAL missing

ENDIF func THEN

rc = 0ELSEdo;

CALL testSecrc = result

end;loadString = ’;’ || varName || ’=oldValue;’do WHILE (RC = 0)

’PIPE var (common)’ varName ’| VAR oldValue’ /* Previous value */IF rc = 0 THENdo;

SELECT;WHEN (oldValue = ’’) THEN

newValue = addendWHEN (dataType(oldValue,’N’)) THEN

newValue = oldValue + addendWHEN (func) THEN

newValue = addendOTHERWISE

SIGNAL badOldValEND;SELECT;

WHEN (maxValue = ’’) THEN NOP /* no max; no checking */WHEN (addend >= 0 & newValue > maxValue) THENdo;IF func THEN return NewValueSIGNAL exceedMaxend;WHEN (addend < 0 & newValue < maxValue) THENdo;IF func THEN return NewValueSIGNAL exceedMaxend;OTHERWISE nop

END;

’PIPE (NAME UPDCS END ;)’,’| VAR loadString’,’| EDIT 1.* 1 "’newValue’" NEXT’ ,’| x: VARLOAD (COMMON)’,’| PIPEND 1’,’; x:’,’| PIPEND 0’

end;endIF func THEN return newValueIF rc = 1 THENdo;

rc = 0say ’Common global variable’ varName ’has been updated to’ newValue

end;

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 203

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

exit RCexceedMax:

’PIPE (NAME UPDMAXM)’,’| VAR varName oldValue’,’| COLLECT’,’| EDIT "Common global variable" 1’,

’W1 NEXTWORD’,’"was too big to update. It still has the value" NEXTWORD’,’RL W1 NEXTWORD’,

’| COLOR YEL’,’| CONSOLE’

exit 4badOldVal:

’PIPE (NAME UPDnoVal)’,’| VAR varName oldValue’,’| COLLECT’,’| EDIT "Common global variable" 1’,

’W1 NEXTWORD’,’"was not numeric(" NEXTWORD’,’RL 1.* NEXT’,’"). UPDCGLOB has aborted." NEXT’,

’| COLOR YEL REV’,’| CONSOLE’

exit 24/* Security: must not be called by operator */testSec:

IF opid(’S’) = ’internal’ | opid(’S’) = ’automation’ THENtsRC = 0

ELSEDO;

tsRC = 8’pipe ENVDATA | SEP | LOCATE 1.9 /GENEALOGY/ | VAR parents’parse var parents . . parents /* remove ’GENEALOGY’ & self *//* --- Find a clist in our ancestery --- */DO WHILE (parents ¬= ’’ & tsRC > 0)

parse var parents oneP parentsparse var oneP . ’/’ verb’PIPE NETV RESOLVE’ verb,’| LOCATE 1.7 /DWO081I/’,’| EDIT SKIPTO /implemented/ WORD 3 1’,’| var vMod’IF vMod = ’DSICCP.’ THEN

tsRC = 0END

END;IF tsRC > 0 THEN

’MESSAGE DSI290 SETCGLOB’ opid(’S’)return tsRC/* ------------ Report Error ------------ */syntErr:IF func THEN

CALL sayCNM423ELSE

’MESSAGE DSI069’exit 16/* ------------ Report Error ------------ */missing:IF func THEN

CALL sayCNM423ELSE’MESSAGE DSI004’

exit 16/* ------------ Punish caller ----------- */sayCNM423:

’pipe envdata|sep|loc 1.S /GENEALOGY/’,’| EDIT W2| VAR whoCalls’

parse var whoCalls . ’/’ whoCalls

REXX コマンド・リスト

204 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

’PIPE NETV MESSAGE CNM423’ whoCalls ’|EXPOSE|ROUTE /:’’CALLEND’RETURN /* sno! *//* ------------ Display help ------------ */help:h.1="UPDCGLOB updates the value of a specified common global variable by"h.2="a specified numeric increment unless the value would then exceed"h.3="a specified maximum. (If the maximum would be exceeded, you will"h.4="receive a message informing you that the update could not be done.)"h.5=""h.6="SYNTAX (command):"h.7= "UPDCGLOB <variable> by <increment> max <maximum>"h.8=""h.9="SYNTAX (function):"h.10= "x = UPDCGLOB(variable,increment,maximum)"h.11=""h.12="The variable name is required. The increment defaults to 1. The"h.13="maximum is optional. When called as a REXX function, the output"h.14="value is the resulting value after the increment. (If a negative"h.15="increment is specified, third arg is treated as a minimum.)"h.16=""h.17="example: ""updcglob globvar1 by 2 max 99"" will cause the common"h.18=" global variable ’globvar1’ to be incremented by 2 unless"h.19=" that would increase its value to more than 99."h.20="example: say ’New value of XYZ is’ updcglob(’XYZ’,2)"h.0 = 20"PIPE stem h.|collect|console"exit 4

CNMSRVAR の例以下は、単一改訂変数を更新する例です。

/*********************************************************************//* --->

This sample shows how to manipulate the "revision variable" tablethat exists in the NetView SSI and is loaded or queried using theSETRVAR command. This sample, invoked as a command, will accept avalue of one variable. If the variable currently has a value, thenew value will be substituted, without altering the other, existingvariables. If the variable is new, it will be added.

Remember that a null value (zero length) is the same (for revisionvariables) as not defined. Therefore this sample can be used todelete 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, usermay specify the new value as hex string, for exampleCNMSRVAR myvar ’94A840A58193A485’X

Remember - only the variable named is affected. Other variablesare 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

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 205

||||||||||||||||||||||||||||

||

|

|||||||||||||||||||||||||||||||||

from the ’ ’X sequence that identifies hex */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 thesame values. (SETRVAR ignores label lines on input.) However, thispipe will alter the message by deleting the line with our inputvariable name and then inserting a new one with the new value.When called for "current message," SETRVAR reads only the hex partof each line and it expects that hex to begin in position 33, as itdoes in the output of SETRVAR QUERY.<--- */

varname = translate(varname) /* upper case to match msg */NewLine = left(varname,32) || theValue /* 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 */

/* The next bit is optional. Let operator know that it all worked. */IF RC = 0 THEN /* pipe & commands work? */’SETRVAR QUERY’ /* reassure oper */

/*Sample output from SETRVAR QUERY.Deleting a data line and substituting another causes the revisionvariable 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:33MYFIRST Lovely thing! D396A58593A840A3888995875ASOLEMVAR keep Trucking? 9285859740E399A483928995876F| |1 33

*/exit RC

REXX コマンド・リスト

206 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

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 4HALT: /* */EXIT -5 /*

CNMSRVMC の例以下は、コマンド改訂の NETVONLY アクションの例です。

/* ----------->Sample NETVONLY action command. This command gets control as a resultof a Command Revision action: NETVONLY=CNMSRVMC

It is designed to respond to a pseduo-command "V NetView,LOGON" issuedfrom a regular MVS console. Or to a START command for a specialprocedure 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 beinvoked by the NETVONLY action. This sample is only a model.

Use any REXX function here, but the message based functions that returnmeaningful 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 X2D(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 revisiontable are satisfied. See CNMSCRT1. */

SELECTWHEN (LEFT(verb,1) = ’S’) THEN /* It was a START cmd */

CALL startTooBigWHEN (LEFT(verb,1) = ’V’) THEN /* VARY cmd with NetView arg */

CALL getNVassocOTHERWISE /* Should Not Occur unless CNMSCRT1 changed. */do;

msg = ’RECE command CNMSRVMC driven by system command "’ ||,arg(1) || ’". Please review CRT.’

’pipe VAR msg | ROUTE AUTHRCVR’/* We purposely do not REISSUE here. Operator will get CNM017E */

end;END

exit 0/* Ask the operator to confirm. Wait for response to the WTOR.

Note: Waiting for the response here DOES NOT block otherNETVONLY actions from proceeding.

Note: if confirmed, this procedure issues the exact same command

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 207

|||||||||||||

|

|

||||||||||||||||||||||||||||||||||||||||||||||||

that caused this NETVONLY action. This will not start a loopand the reissued command will appear to have originated in thesame 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’ fullCmdELSEdo;WTO.TEXT = ’TLH917I start’ PARM1 ’canceled.’’WTO’’REISSUE SUPPRESS’end;

RETURN /* from startTooBig */getNVassoc:

username = RECEDATA(’U’)SELECTWHEN (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.’OTHERWISEdo’AUTOTASK OPID=’ || username || ’CONSOLE=’ || sysconid()IF rc = 0 THEN’MSG’ username ’association with NetView,’ domain()’, successful.’ELSE’WTO TLH662E Association with NetView failed:’ RC

endEND’REISSUE SUPPRESS’

RETURN /* from getNVassoc */BadEnvr:

’MESSAGE DSI290 CNMSRVMC’ opid()exit 12

DSPRSTAT の例以下は、 192ページの『CHKRSTAT の例』と同じタイプの関数を使用するコマンド・リストの例です。

/**********************************************************************//* *//* 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 */

REXX コマンド・リスト

208 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||||||||||||||

||

|

|

|||||||||||||||||||||

/* *//* 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 99ENDVARNAMEA = 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 : ’RACTSAY ’ NUMBER OF TIMES RESOURCE WAS INACTIVE: ’RINACTPERCENTACT = RACT/(RACT+RINACT)*100{’%’ /* DETERMINE PERCENT */SAY ’ PERCENTAGE OF TIMES RESOURCE WAS ACTIVE: ’PERCENTACT

ENDEXIT 0

GETCG の例/****************************************************************//* 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

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... */

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 209

||||||||||||||||||||||||||||||||||

|

|||||||||||

|

|||||||||||||

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’

OTHERWISEEND /* OF SELECT */EXIT

LISTVAR の例/* Use NetView HELP for more information about this clist.************************************************************************* ** NAME(LISTVAR) SAMPLE(CNME1006) RELATED-TO() ** ** CNME1006 Change Activity: ** ID=Reference,Ver,Date,Developer: Description ** ------------------------------------------------------ ** ************************************************************************/

IF arg(1) ¬= ’’ THEN SIGNAL ERRORaddress NETVASISmySys = left(opsystem(),3) /* get e.g. "MVS" *

call say353 ’OPSYSTEM’ opsystem()SELECT;

WHEN (mySys = ’VSE’) THENcall say353 ’CURPART’ curpart() /* Partition ID */

WHEN (mySys = ’MVS’) THENDO;call say353 ’MVSLEVEL’ mvsLevel() /* MVS level */call say353 ’ECVTPSEQ’ ecvtpseq() /* ECVTPSEQ value*/call say353 ’CURSYS’ curSys() /* System name */END;

WHEN (mySys = ’VM/’) THENNOP

OTHERWISE’MESSAGE DWO053I’

END;call say353 ’VTAMLVL’ vtam() /* VTAM version */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 only one type */call say353 ’IPV6ENV’ ipv6env()

REXX コマンド・リスト

210 プログラミング: REXX および NetView コマンド・リスト言語

||||||||||||||||||||

|

|||||||||||||||||||||||||||||||||||||||||||

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’ THENdocall 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

PRINT の例以下は、データ・セットを印刷するために使用するコマンド・リストの例です。

/**********************************************************************//* 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 */

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 211

|||||||||||||||||||||||||||||||||

|

|

||||||||||||||||||||||||||||

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 /* RETURN TO CALLER/EXIT */ERROR: SAY ’ERROR OCCURRED. RETURN CODE IS ’ RCEXIT -1; /* END COMMAND LIST FOR ERROR*/

TYPE の例以下は、データ・セットのメンバーを表示する場合に使用するコマンド・リストの例です。

/**********************************************************************//* 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 */

REXX コマンド・リスト

212 プログラミング: REXX および NetView コマンド・リスト言語

|||||||||||||||||||||||||||||||||

|

|

|

|||||||||||||||||||||||||||

’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 ’ RCEXIT -1; /* END COMMAND LIST FOR ERROR*/

TYPEIT の例以下は、 212ページの『TYPE の例』と本質的には同じことがらを実行しますが、エラーの場合にはデータ・セットをクローズするコマンド・リストの例です。

/**********************************************************************//* 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 errorrc = 0parse arg datasetname ’(’ member ’)’ extraif datasetname = ’’ | parmcnt() > 1 | member = ’’ | extra ¬= ’’ then

dosay ’Incorrect syntax used.’say ’Correct syntax is : ’say ’ TYPE dataset.name(member) ’rc = 24

endelse

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

doddname = msgvar(1)if fndmbr(ddname,member) ¬= 0 then

dosay ’Member’ member ’does not exist.’rc = 4

endelse

REXX コマンド・リスト

付録 F. NetView のための REXX コマンド・リストの例 213

||||||||||||||||||||||

|

|

|

||||||||||||||||||||||||||||||||||||||

doaddress mvs ’execio * diskr’ ddname ’(finis’do while queued() ¬= 0

pull recordsay substr(record,1,68)

endsignal off halt’free file(’ddname’)’’trap no messages’’message 309I ’’TYPEIT’’,’’clist is now finished.’’’

endend

endreturn rchalt:’free file(’ddname’)’’trap no messages’return -5error: say ’Error occurred. Return code is’ rcreturn -1

REXX コマンド・リスト

214 プログラミング: REXX および NetView コマンド・リスト言語

||||||||||||||||||||

特記事項

本書は米国 IBM が提供する製品およびサービスについて作成したものです。

本書に記載の製品、サービス、または機能が日本においては提供されていない場合があります。日本で利用可能な製品、サービス、および機能については、日本 IBM

の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービスに言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能であることを意味するものではありません。これらに代えて、IBM の知的所有権を侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用することができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの評価および検証は、お客様の責任で行っていただきます。

IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を保有している場合があります。本書の提供は、お客様にこれらの特許権について実施権を許諾することを意味するものではありません。実施権についてのお問い合わせは、書面にて下記宛先にお送りください。

〒103-8510

東京都中央区日本橋箱崎町19番21号日本アイ・ビー・エム株式会社法務・知的財産知的財産権ライセンス渉外

以下の保証は、国または地域の法律に沿わない場合は、適用されません。

IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状態で提供し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。

国または地域によっては、法律の強行規定により、保証責任の制限が禁じられる場合、強行規定の制限を受けるものとします。

この情報には、技術的に不適切な記述や誤植を含む場合があります。本書は定期的に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随時、この文書に記載されている製品またはプログラムに対して、改良または変更を行うことがあります。

本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のため記載しただけであり、決してそれらの Web サイトを推奨するものではありません。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありません。それらの Web サイトは、お客様の責任でご使用ください。

IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法で、使用もしくは配布することができるものとします。

© Copyright IBM Corp. 1997, 2013 215

本プログラムのライセンス保持者で、(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.

216 プログラミング: REXX および NetView コマンド・リスト言語

プログラミング・インターフェース本書には、プログラムを作成するユーザーが Tivoli NetView for z/OS のサービスを使用するためのプログラミング・インターフェースが記述されています。

商標IBM、IBM ロゴおよび ibm.com は、世界の多くの国で登録された International

Business Machines Corporation の商標です。他の製品名およびサービス名等は、それぞれ 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 の米国およびその他の国における登録商標です。

プライバシー・ポリシーに関する考慮事項サービス・ソリューションとしてのソフトウェアも含めた IBM ソフトウェア製品(「ソフトウェア・オファリング」) では、製品の使用に関する情報の収集、エンド・ユーザーの使用感の向上、エンド・ユーザーとの対話またはその他の目的のために、Cookie はじめさまざまなテクノロジーを使用することがあります。多くの場合、ソフトウェア・オファリングにより個人情報が収集されることはありません。IBM の「ソフトウェア・オファリング」の一部には、個人情報を収集できる機能を持つものがあります。ご使用の「ソフトウェア・オファリング」が、これらのCookie およびそれに類するテクノロジーを通じてお客様による個人情報の収集を可能にする場合、以下の具体的事項を確認ください。

この「ソフトウェア・オファリング」は、Cookie もしくはその他のテクノロジーを使用して個人情報を収集することはありません。

この「ソフトウェア・オファリング」が Cookie およびさまざまなテクノロジーを使用してエンド・ユーザーから個人を特定できる情報を収集する機能を提供する場合、お客様は、このような情報を収集するにあたって適用される法律、ガイドライン等を遵守する必要があります。これには、エンドユーザーへの通知や同意の要求も含まれますがそれらには限られません。

このような目的での Cookie を含む様々なテクノロジーの使用の詳細については、IBM の『IBM オンラインでのプライバシー・ステートメント』(http://www.ibm.com/privacy/details/jp/ja/) の『クッキー、ウェブ・ビーコン、その他のテクノロジー』および『IBM Software Products and Software-as-a-Service Privacy

Statement』(http://www.ibm.com/software/info/product-privacy) を参照してください。

特記事項 217

218 プログラミング: REXX および NetView コマンド・リスト言語

索引日本語, 数字, 英字, 特殊文字の順に配列されています。なお, 濁音と半濁音は清音と同等に扱われています。

[ア行]アクセシビリティー xiii

アセンブラー・コマンド・プロセッサー、REXX コマンド・リストのネスト 36

引用符、REXX コマンド・リストまたは Data REXX ファイル27

エラー、処理NetView コマンド・リスト言語 153

REXX 39

オペランドALL、&CONTROL 制御ステートメント 123

CMD、&CONTROL 制御ステートメント 123

CONTINUE、&WAIT 制御ステートメント 158

CONTWAIT、&WAIT 制御ステートメント 157

DISPLAY

&WAIT 制御ステートメント 157

ENDWAIT、&WAIT 制御ステートメント 153, 157

ERROR、&WAIT 制御ステートメント 152

ERR、&CONTROL 制御ステートメント 123

NOINPUT、&PAUSE 制御ステートメント 128

NOSUB、&BEGWRITE 制御ステートメント 126

STRING、&PAUSE 制御ステートメント 128

SUB、&BEGWRITE 制御ステートメント 126

SUPPCHAR 96

SUPPRESS

&WAIT 制御ステートメント 157

VARS、&PAUSE 制御ステートメント 128

オペレーターコマンド、コマンド・リストの実行 8

情報NetView コマンド・リスト言語制御変数 92

REXX 関数 92

送信、メッセージの 123

入力、REXX コマンド・リスト 30

ログオン、コマンド・リスト 7

オンライン資料アクセス xiii

[カ行]解析

REXX コマンド・リスト 37

活動化、コマンド・リストの 2

環境、REXX によってアドレッシングされた、変更 33

環境変数、表記 xvi

関数組み込み

NetView コマンド・リスト言語 130

REXX 19

REXX

制約事項 32

比較、NetView コマンド・リスト言語制御変数 172

ACTIONDL() 59

ACTIONMG() 59

APPLID() 93

AREAID() 59

ASID() 93

ATTENDED() 93

ATTNID() 59

AUTBYPAS 50

AUTCONID() 93

AUTHCHKX() 52

AUTHCHK() 50

AUTOTASK() 93

AUTOTOKE() 59

CGI() 94

CGLOBAL() 58

CLOSING() 94

CMDNAME() 53

CODE2TXT() 46

CURCONID() 94

CURSYS() 94

DESC() 59

DISC() 94

DISTAUTO() 94

DOMAIN() 94

ECVTPSEQ() 94

ENVDATA() 95

EVENT() 60

FNDMBR() 56

getpw() 92

HCOPY() 99

HDRMTYPE() 60

HIER(n) 76

HMEPNAU 78

HMEPNET 78

HMEPNETV 79

HMFWDSNA 81

IFRAUGMT() 60

IFRAUI3X() 61

IFRAUIN3() 61

IFRAUIND() 61

IFRAUSB2() 61

IFRAUSC2() 62

IFRAUSDR() 62

IFRAUSRB() 62

© Copyright IBM Corp. 1997, 2013 219

関数 (続き)

REXX (続き)

IFRAUSRC() 62

IFRAUTA1() 62

IFRAUWF1() 63

IPV6ENV() 54

IPXLATE() 49

JOBNAME 95

JOBNAME() 63

JOBNUM() 63

KEY() 63

LINESIZE() 32

LINETYPE() 63

LU() 99

MCSFLAG() 64

MSGASID() 64

MSGAUTH() 64

MSGCATTR() 64

MSGCMISC() 65

MSGCMLVL() 65

MSGCMSGT() 65

MSGCNT() 66

MSGCOJBN() 66

MSGCPROD() 66

MSGCSPLX() 66

MSGCSYID() 66

MSGDOMFL() 66

MSGGBGPA() 67

MSGGDATE() 67

MSGGFGPA() 67

MSGGMFLG() 67

MSGGMID() 67

MSGGSEQ() 68

MSGGSYID() 68

MSGGTIME() 68

MSGID() 68

MSGITEM(n) 68

MSGORIGN() 69

MSGREAD 43

MSGSRCNM() 69

MSGSTR() 70

MSGTOKEN() 70

MSGTSTMP() 70

MSGTYP() 71

MSGVAR(n) 70

MSUSEG() 84

MVSLEVEL 95

MVSRTAIN() 71

NETID() 95

NETVIEW() 95

NPDABA() 84

NVCNT() 55

NVDELID() 71

NVID(n) 55

NVMASTER() 55

NVSTAT() 55

関数 (続き)

REXX (続き)

OPID() 92

OPSYSTEM() 95

PANEL() 95

PARMCNT() 54

PARTID() 95

PRTY() 71

recedata() 73

REPLYID() 71

ROUTCDE() 72

RXDEFENV() 98

RXDEFSTR() 98

RXNUMENV() 98

RXOVRENV() 98

RXOVRSTR() 98

SESSID() 72

SMSGID() 72

STCKGMT() 95

STORAGE() 32

SUBSYM() 48

SUPPCHAR() 96

SYSCONID() 72, 73

SYSID() 72, 73

SYSPLEX() 96

TASK() 96

TGLOBAL() 58

TOWER() 97

TRAP 97

TYPE() 97

VTAM() 97

VTCOMPID() 97

WEEKDAYN() 98

WTOREPLY 72

関数、データ・セット情報 56

関数パッケージ、REXX、作成 32

管理サービス単位 (MSU) 関数HIER() 76

MSUSEG() 84

NetView コマンド・リスト言語 130, 133, 136

NPDABA() 84

REXX 133, 136

&HIER 133

&MSUSEG 136

管理サービス単位情報関数 75

規則書体 xv

キューイング、長期実行コマンドの 14

休止、REXX コマンド・リストの 30

共通グローバル変数NetView コマンド・リスト言語 165

組み込み関数NetView コマンド・リスト言語定義 130

割り当てステートメント 121

&BITAND 131

220 プログラミング: REXX および NetView コマンド・リスト言語

組み込み関数 (続き)

NetView コマンド・リスト言語 (続き)

&BITOR 131

&BITXOR 132

&CONCAT 133

&HIER 133

&LENGTH 136

&MSUSEG 136

&NCCFID 55, 138

&NCCFSTAT 55, 139

&SUBSTR 140

REXX 19

組み込み関数、&HIER 133

グローバル変数共通

NetView コマンド・リスト言語 165

タスクNetView コマンド・リスト言語 164

グローバル変数情報関数 58

継続ステートメント 109

研修Tivoli 技術研修を参照 xiv

研修、Tivoli 技術 xiv

コーディングの規則NetView コマンド・リスト言語継続ステートメント 109

構文 108

抑止文字の規則 110

2 バイト文字テキスト 110

REXX

コーディング、非 REXX コマンド、REXX コマンド・リスト 27

構文 27

非 REXX コマンド表示の抑制 29

レコード・サイズ 27

コード・ポイント、変換 46

コマンドオペレーターコマンド・リストの実行 8

AFTER 8

AT 8

CHRON 9

EVERY 9

システム 12

状況モニター、コマンド・リストの使用 12

処理情報REXX 関数 73

セッション・モニター、コマンド・リストの使用 12

ネットワーク 12

ハードウェア・モニター、コマンド・リストの使用 12

フルスクリーン 14

AFTER 8

ALLOCATE 34

AT 8

AUTODROP 6

AUTOTBL 101

コマンド (続き)

CHRON 9

CMD 14

DEFAULTS 8

EVERY 9

EXECIO 34

FREE 34

GO 154

MSGROUTE 101

OVERRIDE 8

RESET 154

RETURN 12

STACK 154

TRACE END (TE) 38

TRACE START (TS) 37

UNSTACK 154

VIEW 14

VTAM 12

コマンド改訂テーブル 73

コマンド・リスト開始、例 2

概要 1

活動化 2

駆動されるメッセージ 101

経路指定、メッセージ 101

更新 3

コマンド・リストのコンパイル 20

作成 3

作成、データ・セットの、MVS 3

システム・コマンド、使用 12

実行 7

使用 1

使用されるコマンド 183

長期実行コマンド、使用 13

定義 1

ネストされた 9

ネットワーク制御プログラムの活動化 2

ネットワーク・コマンド、使用 12

表示、処理時の制御 16

命名 3

ロード、主ストレージへの 5

PPT 下での制限 15

コマンド・リスト言語、NetView 1

コマンド・リスト情報NetView コマンド・リスト言語制御変数 50

REXX 関数 50

コマンド・リストの実行オペレーター・コマンド 8

オペレーター・ログオン 7

指定された時刻 8

別のコマンド・リスト 9

ユーザー作成コマンド・プロシージャー 12

NetView 開始 7

NetView がメッセージを受け取る 8

コメントNetView コマンド・リスト言語 119

索引 221

コメント (続き)

REXX 19

[サ行]再構造化拡張実行プログラム (REXX) 言語関数パッケージ、作成 32

コマンド・リストアセンブラー、C、PL/I コマンド・プロシージャーのネスト 36

エラー、リカバリー 39

オペレーター入力、休止 30

解析 37

環境関数 98

環境の変更 33

コンパイル 19

制約事項 30

トレース 37

非 REXX コマンドのコーディング 29

非 REXX コマンドの抑制 29

例 189

EXECIO コマンドの使用 34

SAY 命令、使用 27

TSO/E 環境 35

コマンド・リストおよび Data REXX ファイルコーディングの規則 27

戻りコード 38

SAY 命令、使用 31

コマンド・リストまたは Data REXX ファイル制約事項 32

末尾ブランク 27

レコード・サイズ 27

CALL 命令、使用 31

LINESIZE 関数、使用 32

STORAGE 関数、使用 32

はじめに 19

比較、NetView コマンド・リスト言語 171

作成、コマンド・リストの 3

サポート xiv

算術演算、割り当てステートメント 121

時間間隔、コマンド・リストの実行 8

式NetView コマンド・リスト言語 120

REXX 19

システム・コマンド、使用 12

自動化ループ 104

自動化、メッセージの 101

自動化タスク 16

状況モニター・コマンド、コマンド・リスト 12

情報関数、MSU 75

初期化、コマンド・リストの実行 7

除去、ヌルおよびブランク 99

書体の規則 xv

資料オンライン・アクセス xiii

資料 (続き)

注文 xiii

NetView for z/OS ix

深夜 12 時 99

制御ステートメント、NetView コマンド・リスト言語定義 121

比較、REXX 命令 171

&BEGWRITE 125

&CGLOBAL 165

&CONTROL 122

&EXIT 145

&GOTO 145

&IF 143

&PAUSE 127

&TGLOBAL 164

&WAIT 147

&WRITE 124

制御変数、NetView コマンド・リスト言語定義 117

JOBNAME 95

MSGITEM(n) 68

REXX 関数の比較 172

&1 から &31 155

&ACTIONDL 59

&ACTIONMG 59

&APPLID 93

&AREAID 59

&ASID 93

&ATTENDED 93

&ATTNID 59

&AUTCONID 93

&AUTOTASK 93

&AUTOTOKE 59

&CURCONID 94

&CURSYS 94

&DATE 99

&DESC 59

&DISTAUTO 94

&DOMAIN 94

&HCOPY 99

&HDRMTYPE 60

&IFRAUGMT 60

&IFRAUI3X 61

&IFRAUIN3 61

&IFRAUIND 61

&IFRAUSB2 61

&IFRAUSC2 62

&IFRAUSDR 62

&IFRAUSRB 62

&IFRAUSRC 62

&IFRAUTA1 62

&IFRAUWF1 63

&JOBNAME 63

&JOBNUM 63

&KEY 63

&LINETYPE 63

222 プログラミング: REXX および NetView コマンド・リスト言語

制御変数、NetView コマンド・リスト言語 (続き)

&LU 99

&MCSFLAG 64

&MSGASID 64

&MSGAUTH 64

&MSGCATTR 64

&MSGCMISC 65

&MSGCMLVL 65

&MSGCMSGT 65

&MSGCNT 66

&MSGCOJBN 66

&MSGCPROD 66

&MSGCSPLX 66

&MSGCSYID 66

&MSGDOMFL 66

&MSGGBGPA 67

&MSGGDATE 67

&MSGGFGPA 67

&MSGGMFLG 67

&MSGGMID 67

&MSGGSEQ 68

&MSGGSYID 68

&MSGGTIME 68

&MSGID 68

&MSGORIGIN 69

&MSGSRCNM 69

&MSGSTR 70

&MSGTOKEN 70

&MSGTSTMP 70

&MSGTYP 71

&MVSLEVEL 95

&MVSRTAIN 71

&NCCFCNT 55

&NETID 95

&NETVIEW 95

&NVDELID 71

&OPID 92

&OPSYSTEM 95

&PARMCNT 54

&PARMSTR 54

&PARTID 95

&PRTY 71

&REPLYID 71

&RETCODE 54

&RXDEFENV 98

&RXDEFSTR 98

&RXNUMENV 98

&RXOVRENV 98

&RXOVRSTR 98

&SESSID 72

&SMSGID 72

&STCKGMT 95

&SUPPCHAR 96

&SYSCONID 72

&SYSID 72

&SYSPLEX 96

制御変数、NetView コマンド・リスト言語 (続き)

&TASK 96

&TIME 99

&VTAM 97

&VTCOMPID 97

&WAIT の使用 155

&WEEKDAYN 98

&WTOREPLY 72

セッション情報

NetView コマンド・リスト言語制御変数 93

REXX 関数 93

モニター・プログラム・コマンド、コマンド・リスト 12

TAF の例 2

[タ行]タスク・グローバル変数参照、定義、更新を行うコマンド・リストの例 167

NetView コマンド・リスト言語 164

端末情報NetView コマンド・リスト言語制御変数 99

REXX 関数 99

長期実行コマンド 13

キューイング 14

データ・セット、情報関数 56

データ・セット、MVS 3

データ・セット情報関数 56

データ・セットの割り振り、Tivoli NetView for z/OS 34

データ・セットの割り振り解除、Tivoli NetView for z/OS 34

定数、割り当てステートメント 120

ディレクトリー名、表記 xvi

トークン、メッセージNetView コマンド・リスト言語 150

ドメイン情報、REXX 関数 55

トレース、REXX コマンド・リスト 37

[ナ行]ヌルの除去 99

ヌル・ステートメント 119

ネストされたコマンド・リスト定義 9

テスト 9

NetView コマンド・リスト言語、&WAIT の使用 156

REXX

アセンブラー、C、PL/I コマンド・プロシージャー 36

MSGREAD の使用 43

TRAP の使用 42

WAIT の使用 43

ネットワーク制御プログラムを活動化するコマンド・リスト 2

ネットワーク・コマンド、使用 12

索引 223

[ハ行]ハードウェア・モニター・コマンド、使用 12

パス名、表記 xvi

パネルの表示 14

パラメーター変数、NetView コマンド・リスト言語引用符付きストリング、使用 116

特殊文字、使用 116

特性 113

ヌル 117

ネストされたコマンド・リストの使用 115

渡す、コマンド・リスト 114

&WAIT の使用 155

比較、NetView コマンド・リスト言語と REXX 171

表記環境変数 xvi

書体 xvi

パス名 xvi

表示、制御 16

表示、パネルの 14

複数行メッセージ、使用 152

ブック資料を参照 ix

ブランクの除去 99

フルスクリーン・コマンドの使用 14

文節、REXX 19

変換、コード・ポイントの 46

変換関数コード - テキスト関数 (CODE2TXT) 46

変換テーブル、コードからテキストへ 46

編集、コマンド・リストを更新する機能の 3

変数オペレーター情報

NetView コマンド・リスト言語 92

REXX 92

コマンド・リスト情報NetView コマンド・リスト言語 50

REXX 50

セッション情報NetView コマンド・リスト言語 93

REXX 93

端末情報REXX 99

置換の順序 112

ユーザー 117

変数の表記 xvi

[マ行]マニュアル資料を参照 ix

命令、REXX

制約事項 30

定義 19

比較、NetView コマンド・リスト言語制御ステートメント171

命令、REXX (続き)

ADDRESS 33

CALL 31

PARSE 30

SAY 27, 31

SIGNAL 39

TRACE END 37

TRACE START 37

メッセージ応答の自動化 101

経路指定、コマンド・リスト 101

処理情報REXX 関数 58

送信、オペレーター 123

待機、コマンド・リストNetView コマンド・リスト言語 157

複数行、処理 152

=-label の組み合わせのコーディング 149, 153

メッセージ自動化コマンド・リスト実行 8

定義 101

テスト 102

実施 102

戻りコードNetView コマンド・リスト言語 54

REXX 38

[ヤ行]ユーザー作成コマンド・プロシージャー、コマンド・リストの活動化 12

ユーザー変数 117

ユーザー・グループNetView、Yahoo での xv

Tivoli xiv

有効範囲検査変数、NetView コマンド・リスト言語 168

抑止文字 110

抑制非 REXX コマンド、REXX コマンド・リスト 29

メッセージ 102

呼び出し、別のコマンド・リストの 9

[ラ行]ラベル

NetView コマンド・リスト言語 111

REXX 19

ループ 104

例開始コマンド・リスト 2

224 プログラミング: REXX および NetView コマンド・リスト言語

例 (続き)

コマンド・リストタスク・グローバル変数の参照、定義、および更新 167

コマンド・リスト、使用&WAIT 161

ACTAPPLS

REXX 189

ACTLU

REXX 190

GETCG

REXX 209

GLOBVAR1 168

GREETING

REXX 209

LISTVAR

REXX 210

MSUSEG 90

NPDABA 91

REXX コマンド・リスト、NetView

CHKOPNUM 191

CHKRSTAT 192

CNME1080 202

CNMS1101 194

CNMSRVAR 205

CNMSRVMC 207

DSPRSTAT 208

PRINT 211

TYPE 212

TYPEIT 213

レコード・サイズNetView コマンド・リスト言語 109

REXX 27

ロード、コマンド・リストの、ストレージへの 5

ログオン、オペレーター、コマンド・リストを自動的に実行 7

[ワ行]割り当てステートメント、NetView コマンド・リスト言語 120

文節、REXX 19

[数字]16 進表記 (NetView コマンド・リスト言語) 118

2 バイト文字セット文字 (DBCS)

コーディングの規則、NetView コマンド・リスト言語 110

PPT、コマンド・リスト 16

&CONCAT の使用 133

&SUBSTR の使用 141

AACTAPPLS の例

REXX 189

ACTIONDL

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

ACTIONMG

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

ACTLU の例REXX 190

ADDRESS 命令 33

AFTER コマンド、コマンド・リストのスケジューリング 8

ALLOCATE、Tivoli NetView for z/OS コマンド 34

ALL、&CONTROL のオペランド 123

APPLID

NetView コマンド・リスト言語制御変数 93

REXX 関数 93

AREAID

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

WTO コマンド 59

ASID

NetView コマンド・リスト言語制御変数 93

REXX 関数 93

AT コマンド、コマンド・リストのスケジューリング 8

ATTENDED

NetView コマンド・リスト言語制御変数 93

REXX 関数 93

ATTNID

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

AUTBYPAS

REXX 関数 50

AUTCONID

NetView コマンド・リスト言語制御変数 93

REXX 関数 93

AUTHCHK

REXX 関数 50

AUTHCHKX

REXX 関数 52

AUTODROP コマンド、REXX 6

AUTOTASK

NetView コマンド・リスト言語制御変数 93

OST の制約事項 16

REXX 関数 93

AUTOTBL コマンド 101

AUTOTOKE

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

AUTOWRAP の設定 14

BBEGWRITE 制御ステートメント 125

索引 225

CC コマンド・プロシージャー、REXX コマンド・リストのネスト 36

CALL 命令、使用 31

CGI

REXX 関数 94

CGLOBAL

制御ステートメント 165

REXX 関数 58

CHKOPNUM、コマンド・リストの例 191

CHKRSTAT、コマンド・リストの例 192

CHRON コマンド、コマンド・リストのスケジューリング 9

CLEAR コマンド 125

CLOSING

REXX 関数 94

CMD

コマンド 14

&CONTROL のオペランド 123

CMDNAME

REXX 関数 53

CMDSYN ステートメント 3

CNME1080、コマンド・リストの例 202

CNMS1101、コマンド・リストの例 194

CNMSRVAR、コマンド・リストの例 205

CNMSRVMC、コマンド・リストの例 207

CONCAT 組み込み関数 133

CONTINUE、&WAIT のオペランド 158

CONTROL 制御ステートメント 122

CONTWAIT、&WAIT のオペランド 157

CURCONID

NetView コマンド・リスト言語制御変数 94

REXX 関数 94

CURSYS

NetView コマンド・リスト言語制御変数 94

REXX 関数 94

DData REXX 21

処理 25

ホスト・コマンド環境 34

/*%DATA ディレクティブ 25

/*%LOGIC ディレクティブ 26

DATA (%DATA) ディレクティブ 25

DATE 制御変数 99

DBCS 110

DEFAULTS コマンド 8

DESC

NetView コマンド・リスト言語制御変数 59

REXX 関数 59

WTO、WTOR コマンド 59

DISC

REXX 関数 94

DISPLAY

&WAIT のオペランド 157

DISTAUTO

NetView コマンド・リスト言語制御変数 94

REXX 関数 94

DOMAIN

NetView コマンド・リスト言語制御変数 94, 95

REXX 関数 94

DOUBLESUPP 文字 111

DROPCL 6

DSPRSTAT、コマンド・リストの例 208

EECVTPSEQ

REXX 関数 94

ENDWAIT、&WAIT のオペランド 153, 157

ENVDATA

REXX 関数 95

ERROR、&WAIT のオペランド 152

ERR、&CONTROL のオペランド 123

EVENT

REXX 関数 60

event=-label の組み合わせ、&WAIT 制御ステートメント 149,

153

EVERY コマンド、コマンド・リストのスケジューリング 9

EXECIO コマンド、REXX コマンド・リスト 34

EXIT 制御ステートメント 145

FFNDMBR、REXX 関数 56

FREE、Tivoli NetView for z/OS コマンド 34

GGETCG の例

REXX 209

getpw

REXX 関数 92

GLOBALV

命令NetView コマンド・リスト言語 170

GLOBVAR1 の例 168

GO コマンド 154

GOTO 制御ステートメント 145

GREETING の例REXX 209

HHCOPY

NetView コマンド・リスト言語制御変数 99

REXX 関数 99

HDRMTYPE

NetView コマンド・リスト言語制御変数 60

REXX 関数 60

226 プログラミング: REXX および NetView コマンド・リスト言語

HIER 関数NetView コマンド・リスト言語 133

REXX 76

HMEPNAU 関数 78

HMEPNET 関数 78

HMEPNETV 関数 79

HMFWDSNA 関数 81

IIF 制御ステートメント 143

IFRAUGMT

NetView コマンド・リスト言語制御変数 60

REXX 関数 60

IFRAUI3X

NetView コマンド・リスト言語制御変数 61

REXX 関数 61

IFRAUIN3

NetView コマンド・リスト言語制御変数 61

REXX 関数 61

IFRAUIND

NetView コマンド・リスト言語制御変数 61

REXX 関数 61

IFRAUSB2

NetView コマンド・リスト言語制御変数 61

REXX 関数 61

IFRAUSC2

NetView コマンド・リスト言語制御変数 62

REXX 関数 62

IFRAUSDR

NetView コマンド・リスト言語制御変数 62

REXX 関数 62

IFRAUSRB

NetView コマンド・リスト言語制御変数 62

REXX 関数 62

IFRAUSRC

NetView コマンド・リスト言語制御変数 62

REXX 関数 62

IFRAUTA1

NetView コマンド・リスト言語制御変数 62

REXX 関数 62

IFRAUWF1

NetView コマンド・リスト言語制御変数 63

REXX 関数 63

IP アドレス処理 49

IPV6ENV

REXX 関数 54

JJOBNAME

NetView コマンド・リスト言語制御変数 63

REXX 関数 63, 95

JOBNAME 制御変数 95

JOBNUM

NetView コマンド・リスト言語制御変数 63

REXX 関数 63

KKEY

NetView コマンド・リスト言語制御変数 63

REXX 関数 63

LLENGTH 組み込み関数 136

LINESIZE 関数 32

LINETYPE

NetView コマンド・リスト言語制御変数 63

REXX 関数 63

LISTVAR の例REXX 210

LOADCL 6

LOGIC (%LOGIC) ディレクティブ 26

LU

NetView コマンド・リスト言語制御変数 99

REXX 関数 99

MMAPCL 6

MCSFLAG

NetView コマンド・リスト言語制御変数 64

REXX 関数 64

MEMSTORE 5

MEMSTOUT 5

MSGASID

NetView コマンド・リスト言語制御変数 64

REXX 関数 64

MSGAUTH

NetView コマンド・リスト言語制御変数 64

REXX 関数 64

MSGCATTR

NetView コマンド・リスト言語制御変数 64

REXX 関数 64

MSGCMISC

NetView コマンド・リスト言語制御変数 65

REXX 関数 65

MSGCMLVL

NetView コマンド・リスト言語制御変数 65

REXX 関数 65

MSGCMSGT

NetView コマンド・リスト言語制御変数 65

REXX 関数 65

MSGCNT

NetView コマンド・リスト言語制御ステートメント 66, 68

REXX 関数 66

索引 227

MSGCOJBN

NetView コマンド・リスト言語制御変数 66

REXX 関数 66

MSGCPROD

NetView コマンド・リスト言語制御変数 66

REXX 関数 66

MSGCSPLX

NetView コマンド・リスト言語制御変数 66

REXX 関数 66

MSGCSYID

NetView コマンド・リスト言語制御変数 66

REXX 関数 66

MSGDOMFL

NetView コマンド・リスト言語制御変数 66

REXX 関数 66

MSGGBGPA

NetView コマンド・リスト言語制御変数 67

REXX 関数 67

MSGGDATE

NetView コマンド・リスト言語制御変数 67

REXX 関数 67

MSGGFGPA

NetView コマンド・リスト言語制御変数 67

REXX 関数 67

MSGGMFLG

NetView コマンド・リスト言語制御変数 67

REXX 関数 67

MSGGMID

NetView コマンド・リスト言語制御変数 67

REXX 関数 67

MSGGSEQ

NetView コマンド・リスト言語制御変数 68

REXX 関数 68

MSGGSYID

NetView コマンド・リスト言語制御変数 68

REXX 関数 68

MSGGTIME

NetView コマンド・リスト言語制御変数 68

REXX 関数 68

MSGID

REXX 関数 68

MSGITEM、NetView コマンド・リスト言語制御変数 68

MSGITEM、REXX 関数 68

MSGORIGIN、NetView コマンド・リスト言語制御変数 69

MSGORIGN、REXX 関数 69

MSGREAD

関数の設定 43

MSGROUTE コマンド 101

MSGSRCNM

NetView コマンド・リスト言語制御変数 69

REXX 関数 69

MSGSTR

NetView コマンド・リスト言語制御変数 70

REXX 関数 70

MSGTOKEN

NetView コマンド・リスト言語制御変数 70

MSGTOKEN (続き)

REXX 関数 70

MSGTSTMP

NetView コマンド・リスト言語制御変数 70

REXX 関数 70

MSGTYP

NetView コマンド・リスト言語制御変数 71

REXX 関数 71

MSGVAR、REXX 関数 70

MSU (管理サービス単位) 関数NetView コマンド・リスト言語 (組み込み関数) 130

REXX 133

MSU 情報関数 75

MSUSEG 関数 84, 136

REXX 使用法の例 88

MVS

コマンド 12

データ・セットの作成 3

MVSLEVEL

NetView コマンド・リスト言語制御変数 95

REXX 関数 95

MVSRTAIN

NetView コマンド・リスト言語制御変数 71

REXX 関数 71

NNCCFCNT NetView コマンド・リスト言語制御変数 55

NCCFID

組み込み関数 55, 138

NCCFSTAT 組み込み関数 55, 139

NETID

REXX 関数 95

NETVIEW

NetView コマンド・リスト言語制御変数 95

REXX 関数 95

NetView コマンド&PAUSE の使用 128

&WAIT の使用 154

NetView コマンド・リスト言語関数、組み込み 121

機能 107

コーディングの規則 108

コメント 119

ヌル・ステートメント 119

比較、REXX 171

変数 112

ラベル 111

NOINPUT、&PAUSE のオペランド 128

NOSUB、&BEGWRITE のオペランド 126

NPDABA 関数 84

REXX 使用法の例 91

NVCNT 関数 55

NVDELID

NetView コマンド・リスト言語制御変数 71

REXX 関数 71

228 プログラミング: REXX および NetView コマンド・リスト言語

NVID 関数 55

NVMASTER 関数 55

NVSTAT 関数 55

OOPID

NetView コマンド・リスト言語制御変数 92

REXX 関数 92

OPSYSTEM

NetView コマンド・リスト言語制御変数 95

REXX 関数 95

OST、自動タスク、制約事項 16

OVERRIDE コマンド 8

PPANEL

REXX 関数 95

PARMCNT

NetView コマンド・リスト言語制御変数 54

REXX 関数 54

PARMSTR 制御変数 54

PARSE 命令 30

PARTID

NetView コマンド・リスト言語制御変数 95

REXX 関数 95

PAUSE 制御ステートメント、NetView コマンドを使用する127, 128

PL/I コマンド・プロシージャー、REXX コマンドのネスト 36

PPT の制限 15

PRINT、コマンド・リストの例 211

PROFILE ステートメント 7

PRTY

NetView コマンド・リスト言語制御変数 71

REXX 関数 71

RRECEDATA()

REXX 関数 73

REPLYID

NetView コマンド・リスト言語制御変数 71

REXX 関数 71

RESET コマンド 154

RETCODE 制御変数 54

RETURN コマンド、REXX の制限 12

ROUTCDE

NetView コマンド・リスト言語制御変数 72

REXX 関数 72

RXDEFENV

NetView コマンド・リスト言語制御変数 98

REXX 関数 98

RXDEFSTR

NetView コマンド・リスト言語制御変数 98

RXDEFSTR (続き)

REXX 関数 98

RXNUMENV

NetView コマンド・リスト言語制御変数 98

REXX 関数 98

RXOVRENV

NetView コマンド・リスト言語制御変数 98

REXX 関数 98

RXOVRSTR

NetView コマンド・リスト言語制御変数 98

REXX 関数 98

SSAY 命令、使用 27, 31

SECURITY

コマンド・リスト内でのネットワーク・コマンドの使用 12

制御アクセス、コマンド・リスト 4

NetView 開始時のコマンド・リストの実行 7

service xiv

Service Management Connect xiv

SESSID

NetView コマンド・リスト言語制御変数 72

REXX 関数 72

SIGNAL 命令 39

SMC xiv

SMSGID

NetView コマンド・リスト言語制御変数 72

REXX 関数 72

STACK コマンド 154

STCKGMT

NetView コマンド・リスト言語制御変数 95

REXX 関数 95

STORAGE 関数 32

STRING、&PAUSE のオペランド 128

SUBSTR 組み込み関数 140

SUBSYM、REXX 関数 48

SUB、&BEGWRITE のオペランド 126

SUPPCHAR 96, 110

SUPPCHAR 制御変数 96

SUPPRESS

&WAIT のオペランド 157

SYSCONID

NetView コマンド・リスト言語制御変数 72

REXX 関数 72, 73

SYSID

NetView コマンド・リスト言語制御変数 72

REXX 関数 72, 73

SYSPLEX

NetView コマンド・リスト言語制御変数 96

REXX 関数 96

索引 229

TTAF

セッションの例 2

TASK

NetView コマンド・リスト言語制御変数 96

REXX 関数 96

TE コマンド 38

TGLOBAL

制御ステートメント 164

REXX 関数 58

THEN 文節、&IF 制御ステートメント 144

TIME 制御変数 99

Tivoli

研修、技術 xiv

ユーザー・グループ xiv

Tivoli ソフトウェア・インフォメーション・センター xiii

TOWER

REXX 関数 97

TRACE END コマンド 38

TRACE START コマンド 37

TRAP

REXX 関数 97

REXX コマンド・リスト 42

TS コマンド 37

TSO/E EXECIO コマンド 34

TSO/E 環境 35

TYPE

REXX 関数 97

TYPEIT、コマンド・リストの例 213

TYPE、コマンド・リストの例 212

UUNSTACK コマンド 154

VVARS、&PAUSE のオペランド 128

VIEW コマンド 14

VTAM

コマンド 12

NetView コマンド・リスト言語制御変数 97

REXX 関数 97

VTCOMPID

NetView コマンド・リスト言語制御変数 97

REXX 関数 97

WWAIT

NetView コマンド・リスト言語制御ステートメント一般 147

カスタマイズ 157

コーディングに関する提案 160

WAIT (続き)

NetView コマンド・リスト言語制御ステートメント (続き)

サンプルの使用 161

終了 154, 159

制御変数とパラメーター変数 155

ネストされたコマンド・リストの使用 156

NetView コマンドの使用 154

REXX 命令ネストされた REXX コマンド・リスト 43

WEEKDAYN

NetView コマンド・リスト言語制御変数 98

REXX 関数 98

WRITE 制御ステートメント 124

WTOREPLY 72

YYahoo のユーザー・グループ、NetView xv

[特殊文字]&1 - &31 パラメーター変数 155

&ACTIONDL 制御変数 59

&ACTIONMG 制御変数 59

&APPLID 制御変数 93

&AREAID 制御変数 59

&ASID 制御変数 93

&ATTENDED 制御変数 93

&ATTNID 制御変数 59

&AUTCONID 制御変数 93

&AUTOTASK 制御変数 93

&AUTOTOKE 制御変数 59

&BEGWRITE 制御ステートメント 125

&BITAND 組み込み関数 131

&BITOR 組み込み関数 131

&BITXOR 組み込み関数 132

&CGLOBAL 制御ステートメント 165

&CONCAT 組み込み関数 133

&CONTROL 制御ステートメント 122

&CURCONID 制御変数 94

&CURSYS 制御変数 94

&DATE 制御変数 99

&DESC 制御変数 59

&DISTAUTO 制御変数 94

&DOMAIN 制御変数 94, 95

&EXIT 制御ステートメント 145

&GOTO 制御ステートメント 145

&HCOPY 制御変数 99

&HDRMTYPE 制御変数 60

&IF 制御ステートメント 143

&IFRAUGMT 制御変数 60

&IFRAUI3X 制御変数 61

&IFRAUIN3 制御変数 61

&IFRAUIND 制御変数 61

&IFRAUSB2 制御変数 61

230 プログラミング: REXX および NetView コマンド・リスト言語

&IFRAUSC2 制御変数 62

&IFRAUSDR 制御変数 62

&IFRAUSRB 制御変数 62

&IFRAUSRC 制御変数 62

&IFRAUTA1 制御変数 62

&IFRAUWF1 制御変数 63

&JOBNAME 制御変数 63

&JOBNUM 制御変数 63

&KEY 制御変数 63

&LENGTH 組み込み関数 136

&LINETYPE 制御変数 63

&LU 制御変数 99

&MCSFLAG 制御変数 64

&MSGASID 制御変数 64

&MSGAUTH 制御変数 64

&MSGCATTR 制御変数 64

&MSGCMISC 制御変数 65

&MSGCMLVL 制御変数 65

&MSGCMSGT 制御変数 65

&MSGCNT 制御変数 66

&MSGCOJBN 制御変数 66

&MSGCPROD 制御変数 66

&MSGCSPLX 制御変数 66

&MSGCSYID 制御変数 66

&MSGDOMFL 制御変数 66

&MSGGBGPA 制御変数 67

&MSGGDATE 制御変数 67

&MSGGFGPA 制御変数 67

&MSGGMFLG 制御変数 67

&MSGGMID 制御変数 67

&MSGGSEQ 制御変数 68

&MSGGSYID 制御変数 68

&MSGGTIME 制御変数 68

&MSGID 制御変数 68

&MSGITEM 制御変数 68

&MSGORIGIN 制御変数 69

&MSGSRCNM 制御変数 69

&MSGSTR 制御変数 70

&MSGTOKEN 制御変数 70

&MSGTSTMP 制御変数 70

&MSGTYP 制御変数 71

&MSUSEG 組み込み関数 136

&MVSLEVEL 制御変数 95

&MVSRTAIN 変数 71

&NCCFCNT 制御変数 55

&NCCFID 組み込み関数 55, 138

&NCCFSTAT 組み込み関数 55, 139

&NETVIEW 制御変数 95

&NVDELID 制御変数 71

&OPID 制御変数 92

&OPSYSTEM 制御変数 95

&PARMCNT 制御変数 54

&PARMSTR 制御変数 54

&PARTID 制御変数 95

&PAUSE 制御ステートメント 127

&PRTY 制御変数 71

&REPLYID 制御変数 71

&RETCODE 制御変数 54

&RXDEFENV 制御変数 98

&RXDEFSTR 制御変数 98

&RXNUMENV 制御変数 98

&RXOVRENV 制御変数 98

&RXOVRSTR 制御変数 98

&SESSID 制御変数 72

&SMSGID 制御変数 72

&STCKGMT 制御変数 95

&SUBSTR 組み込み関数 140

&SUPPCHAR 制御変数 96

&SYSCONID 制御変数 72

&SYSID 制御変数 72

&SYSPLEX 制御変数 96

&TASK 制御変数 96

&TGLOBAL 制御ステートメント 164

&THEN 文節、&IF 制御ステートメント 144

&TIME 制御変数 99

&VTAM 制御変数 97

&VTCOMPID 制御変数 97

&WAIT 制御ステートメント 147

&WEEKDAYN 制御変数 98

&WRITE 制御ステートメント 124

&WTOREPLY 制御変数 72

/*%DATA ディレクティブ 25

/*%LOGIC ディレクティブ 26

%INCLUDE 21

索引 231

232 プログラミング: REXX および NetView コマンド・リスト言語

����

Printed in Japan

SA88-4395-01