エディター編集画面のまま編集中のCLISTやREXXを実行するISPFエディター編集マクロ

CLISTやREXXを編集中にメンバーを保管することなく編集画面の内容で実行するISPFエディター・マクロです。作成あるいは修正したCLISTやREXXを実行するためにわざわざメンバー・リスト・パネルに戻ったり、SAVEした後にコマンド・シェル・パネルに切り替えてEXECコマンドを入力する必要がありません。使い方は簡単で、エディター編集画面のコマンド行に「RUN」と入力するだけです。
画面でのテキスト入出力を伴うような処理では、メンバー・リストからのEXコマンドやISPFオプション6のコマンド・シェル・パネルからの実行と異なり、CLISTやREXX内で画面クリアーの処理を入れなくても画面の先頭行からフル・スクリーン表示されます。

①REXX exec「RUN」をCLISTメンバーとして登録する

任意の区分データセットに下記のREXX execをメンバー名RUNで登録します。できれば「userid.CLIST」のDSNでPDSEデータセット(もしくは区分データセット)を作るといいです(後述のTSO EXコマンドが簡単になる)。今後はREXXプログラミングも学習してみようとするなら「userid.CLIST」のDSNで作っておくと便利です。

マクロの処理自体は単純で、作業用データセット userid.ZZTEMP.CLIST を作成して編集中の内容をそこへ書き出し、TSOのEXECコマンドで実行します。REXX(CLIST)実行後も作業用データセットは保管されるので、必要であれば書き出された内容を確認することができます。また、CLISTやREXX実行中に重大なエラー起きてTSOセッションが終了してしまっても、後でメンバー内容を作業用データセットから復元できます。

作業用データセットの保管が不要であれば、マクロ処理の終わりで実行しているTSO FREEコマンドをDELETEコマンドに変えれば作業用データセットを削除してマクロ処理を終了します。(実行途中でTSOセッションが終了してしまっても作業用データセットのDELETE前であれば編集中内容を復元できますが、エディターをRECOVERY ONモードにしておけばエディターの機能で復元することもできます)

②編集マクロとしてテストを行う

  1. 任意のISPFパネル上で下記のコマンドを実行する
  2. ALTLIB ACTコマンドは何もメッセージが出なければ正しく実行できています。ALTLIB DISPコマンドの表示結果で、ApplicationレベルのCLISTライブラリーが追加されているかを確認できます。

  3. 適当なCLISTかREXXをエディターで開きRUNコマンドを実行する
  4. 編集画面の内容がCLISTあるいはREXXとして実行されることを確認します。

③CLISTライブラリーをSYSPROCまたはSYSEXECに連結する(※テストだけで終えるならこれ以降の作業は不要)

①で登録したREXX編集マクロは、エディター編集画面で「RUN」コマンドとして実行します。そのため、CLISTライブラリーをSYSPROCまたはSYSEXECのDD名で割り振られてデータセットに連結するため割り振り直します。ALTLIBコマンドを使ってCLISTライブラリーをアクティブにする方法では、画面分割で新しいISPFセッションが起動する度にエディター起動前にALTLIBコマンドを実行しなければならず面倒です。
ISPFエディターの編集マクロやREXX exec、CLISTは共用するのであれば、元々のSYSPROC(またはSYSEXEC)に連結されるライブラリーに入れてしまうのが簡単です。しかし、個人的に使うものであれば共用ではなく個人のライブラリー・データセットに入れることになるので、自分のTSOユーザー空間だけでSYSPROC(またはSYSEXEC)に連結する方法を考えねばなりません。以下はその一例です。なお、マクロ名は実行という意味で「RUN」としていますが、ISPFコマンドと被らなければ8文字以内の任意の名前に変更できます。TSOコマンドと同じ「EXEC」にすることもできますが、混乱の元になるので「EXEC」は避ける方がいいでしょう。

  1. TSOログオンパネルの自動実行コマンドを控える
  2. 画面下方のCommandフィールドの内容を控えます。この例では「ISPF PANEL(ISR@PRIM)」です。

  3. 現在のSYSPROCライブラリーを控える(DDLISTコマンドを実行)
  4. 任意のISPFパネルでDDLISTコマンドを実行します。DD名SYSPROCで連結されているDSNを控えます。ISPFとSDSFだけを使っているのであれば、ほとんどの場合ユーザー用ライブラリーとISP.SISPCLIBだけで十分ですが、どれを外すと何に影響が出るのかがわからない場合は、面倒でも全部控えます。

  5. CLISTライブラリー連結用CLISTを作成する
  6. 上記の内容でCLISTを作成します。自分のCLISTライブラリー(userid.CLIST)に適当なメンバー名で作成します(ここではADDCLIBとします)。元々ログオンパネルで何のコマンドも指定されていなければ、最後の行にコマンドを追加する必要はありません。WRITEステートメントだけで終えます。

  7. TSOログオンパネルの自動実行コマンドを変更する
  8. 画面下方のCommandフィールドの内容を変更します。ログオン時にuserid.CLISTがSYSPROCライブラリーに連結されて割り振り直され、元々の自動実行コマンドが実行されます。CLISTを間違えて上手く動かなかった場合は、ログオンパネルの自動実行コマンドを元に戻せばログオンできます。

普段何気なくあるいは当たり前のように使っているISPFやSDSFですが、REXXやCLISTによって様々な独自機能を追加することもできます。上記のRUNコマンドも、REXXプログラミングの応用例の1つです。

④作業用データセットをSMS管理にする場合(※オプション作業)

TSOのユーザーIDと同じ名前で始まる(第1修飾子がTSOユーザーIDと同じ)データセットがSMS管理されるシステムの場合は、必要であればREXX execの中で使用する作業用データセットの割り振りもSMS管理データセット用に修正します。

REXXソースコードRUNの始めの方にあるALLOCコマンド(12~14行目)のパラメーターを必要に応じて変更します。上記の例ではSTORCLASを追加しています。

関連マニュアル、資料

  • z/OS TSO/E REXX 解説書(SA88-5453)
  • z/OS TSO/E REXX ユーザーズ・ガイド(SA88-8636)
  • z/OS TSO/E コマンド解説書(SA88-7049)
  • z/OS ISPF 編集と編集マクロ(SC43-2669)