ISPFにSDSFコマンドを登録する

SDSFをISPFコマンドとして登録すると、どのISPFパネルからでもSDSFを起動することができます。カスタマイズされたプライマリー・オプション・メニュー画面には、多くのユーザーでSDSFを「SD」あるいは「S」のオプション・コードで起動することができます。しかし、この場合のオプション・コード「SD」や「S」はプライマリー・オプション・メニュー画面でしか入力できません。この記事で紹介するのは、ISPFのメニュー画面にSDSFを登録することではなく、任意のISPFパネル(例えばDSLISTユーティリティー画面やエディター画面など)からのコマンド入力によってどこからでもSDSFを起動する方法です。

ISPFを2画面分割している状態で、JCLとプログラムをエディターで開いているとします。IBMデフォルトの状態では、JCLをサブミットして実行結果を見る場合、JCLかプログラムのどちらかを終わらせないとSDSFを起動できません。「=SD」などと入力したとしても(画面を閉じて)現在のダイアログを終わらせた上でSDSFを起動することになり、そのSDSFを終わらせればメニュー画面に戻ってしまいます。

現在の画面をそのまま保留にして、画面を上書きする形でSDSFを起動してジョブの実行結果を確認し、終わったら元の画面に戻れれば効率のよい作業ができます。ISPFの中でも多用されるオプション3.4のDSLISTは、メニュー画面からの起動だけでなく、コマンド「DSLIST」によってどのISPFパネルからでも起動でき終われば元の画面に戻れます。同じ事をSDSFでもできるようにします。

ユーザー・コマンド・テーブルを有効にする

独自のISPFコマンドを登録する前に、ISPFでユーザー・コマンド・テーブルの機能を有効にする必要があります。まずは、使用しているISPF環境でユーザーまたはサイト・コマンド・テーブルが有効になっているかを確認します。

ISPFのオプション3.9を実行します。ダイアログボックス右側のCommand serach orderのユーザー・テーブルとサイト・テーブルの両方が空白の場合は、コマンド・テーブルを追加しても使用されません。ISPF構成テーブルを修正して、ユーザー・コマンド・テーブルまたはサイト・コマンド・テーブルを有効にします。

以下にその手順の例を紹介しますが、ISPF全体に対しての修正なので必要ならシステム管理部門にやってもらうかその指示に従って下さい。断られた場合は、こちら(シンプルISPFメニューとクイック起動)の記事で紹介した、独自のISPF起動CLISTを作り自分のISPFだけにユーザー・コマンド・テーブルが有効になるようにISPLLIBに自分用のロード・モジュール・ライブラリー(例えば、userid.UISPLOAD)を連結します。その後に、作成した自分用のISPFを起動してからユーザー・コマンド・テーブルが有効になるようにします。任意のISPFパネルで「TSO△ISPCCONF」コマンドを実行すれば、構成テーブル・ユーティリティーが起動します。もっとお手軽に済ませたいなら、こちら(F4キーでSDSFのSTパネルを起動する)の記事で紹介した、ほとんど使うことがないファンクション・キーにSDSF起動コマンドを割り当てる方法がいいでしょう。

構成テーブル・ユーティリティーが起動したら、修正後の構成テーブルのキーワードファイル・メンバーを格納するデータセット名とメンバー名を指定します。共用のISPF環境なら、サンプルのようにISPで始まるDSNのデータセットを準備してそこに格納します。個人のISPF環境なら、userid.UISPCONFのように先頭prefixをTSOのユーザーIDにするといいでしょう。メンバー名はISPCFIGUにします。ISPFは、カスタマイズされた構成テーブルのモジュール名をISPCFIGUにしますのでそれに合わせます(*1)。なお、ここで指定するデータセットはRECFM=FB、LRECL=251の区分データセットとして予め作成しておきます。スペース量は10TRKあれば十分です。オプション1を選択して、システム・デフォルトの構成テーブル内容を反映した構成テーブルのキーワードファイル・メンバーを生成します。


*1 システム・デフォルトの構成テーブル・モジュール名はISPCFIGで、ISP.SISPLPAに格納されLPAに展開されている。システム・デフォルトを変更することはなく、必ずユーザー用構成テーブル・モジュールを作ることになるが、メンバー名はISPCFIGUで決まっている。ISPFは、起動時にISPLLIB DDステートメントに定義されたライブラリーからISPCFIGUを読み込む。ISPCFIGUがなければシステム・デフォルトのISPCFIGが使われる。

デフォルト値によって構成テーブルのキーワードファイル・メンバーが生成されます。このままPF3キーで終了させます。続いて生成されたメンバー内容がVIEWで表示されますが、再びPF3キーで終了させます。

最初に指定したキーワードファイル・データセットのメンバーとして構成テーブルの内容が保管されます。

次に、作成された構成テーブルのキーワードファイル・メンバーの内容を修正します。オプション2を選択します。

構成テーブル・ユーティリティーからエディターが呼ばれ、構成テーブルのキーワードファイル・メンバーの内容が表示されます。「APPLID_FOR_USER_COMMAND_TABLE」をスキャンして見つけます。/*と*/で囲まれ行全体がコメントになっているので、先頭と末尾の/*と*/を消して有効な行にして、値のNONEをユーザー・コマンド・テーブルの接頭辞(4文字まで)にします。USRとかUSERがわかりやすいでしょう。修正したらPF3キーでエディターを終了します。

このダイアログボックスが出たら実行キーを押します。キーワードファイル・メンバーが保管されたら構成テーブルをロード・モジュール化します。オプション4を選択します。

ダイアログボックスに、構成テーブルのロード・モジュール(ISPCFIGU)の格納先データセットを指定します。全体で共通に使うならISP.UISPLOAD、自分だけに有効にするならuserid.UISPLOADを指定すればいいでしょう。どちらのデータセットも事前に作成しておく必要があります。RECFMとLRECLはISP.SISPLOADと同じにします。スペース量は5TRKあれば十分です。なお、全体で共通に使うなら標準のISP.SISPLOADに格納してもかまいません。メンバー名ISPCFIGUはユーザー用構成テーブル・モジュールなのでデフォルトでは存在しません。もし存在しているようなら以前に別の目的で構成テーブルをカスタマイズしているのですから、その構成テーブルのキーワードファイル・メンバーを修正するべきです。その場合はシステム管理者に確認します。

ロード・モジュールの格納先データセットを指定したら実行キーを押します。モジュールの生成には少々時間が掛かりますがそのまま待ちます。

これでユーザー・コマンド・テーブルを使うためのISPF構成テーブルができあがりました。構成テーブルのロード・モジュールを格納したISP.UISPLOAD(またはuserid.UISPLOAD)をISPFの起動CLISTのISPLLIBに連結定義します。

ISPFを再起動すれば新しい構成テーブルが読み込まれます。ユーザー・コマンド・テーブルが有効になっているかを確認します。任意のISPFパネルで「TSO△ISPVCALL△STATUS」コマンドを実行します。内容が表示されたら「F△’USER△COMMAND’」を検索します。

ユーザー・コマンド・テーブルの接頭辞が「USR」になっています。これでユーザー・コマンド・テーブルを作れば有効になることが確認できました。

ユーザー・コマンド・テーブルを作成する

ISPFのオプション3.9を実行します。ダイアログボックス右側のCommand serach orderのユーザー・テーブルには、構成テーブルで登録した接頭辞が表示されていませんが、これは現時点ではISPTLIBライブラリーにユーザー・コマンド・テーブルのメンバーがまだ入っていないためです。

コマンド・テーブルの接頭辞に、USRやUSERなど構成テーブルに登録した名前を指定して実行キーを押します。

先頭行の左側フィールドにEを入力して実行キーを押します。

登録するコマンド内容のダイアログボックスが出たら、上記のように入力してダイアログボックス下側のUPDATEの文字の部分にカーソルを置いて実行キーを押します。コマンドが登録され1つ前の画面に戻るのでPF3キーを複数回押してユーティリティーを終わらせます。

登録したコマンド・テーブル・メンバーは、DD名ISPTABLに定義されたライブラリーに出力されます。通常、ISPTABLにはユーザー毎のISPFプロファイル・データセットが定義されています。DDLISTコマンドを実行してISPTABLデータセットの中を確認します。

PF8キーで画面をスクロールしてISPTABLを見つけます。ACTフィールドにBを入力して実行キーを押します。メンバーリストが表示されたら、接頭辞+CMDSの名前のメンバーを見つけます。接頭辞がUSRならUSRCMDSです。

それっぽい内容で登録されているはずです。ISPFを再起動すれば登録したユーザー・コマンド・テーブルが反映されます。

再度オプション3.9を実行すると、今度はユーザー・コマンド・テーブルが有効になっていることがわかります。接頭辞USRを指定すると先ほどと異なり、カレント・テーブルなのでVIEWしかできない旨のメッセージが表示されています。

プライマリー・メニュー以外の画面(DSLISTやエディターなど何でもよい)から「SDSF」と入力して実行キーを押してみて下さい。SDSFが起動されるはずです。そのSDSFを終わらせれば元の画面に戻れるはずです。コマンドを登録する際にTRUNCに2を指定したので、SDSFだけでなくSDSやSDでもSDSFが起動できるはずです。SD;DA、SDSF;STのようにSDSFコマンドを続けて指定することもできます。

以前の記事でISPFで3つ以上のパネルを使う方法を紹介しましたが(ISPFで3つ以上のパネルを使う)、画面を切り替えるためにコマンドを入力したりなど、実際には面倒な操作です。コマンドによるダイアログ(*2)の起動では、「=3.4」や「=SD」などのジャンプ機能と異なり現行画面のダイアログは終了しませんので、後から実行したダイアログが終われば元の画面が再表示されて続きの作業を行うことができます。

ジョブをサブミットした後、実行結果は確認するものの、また元のエディターに戻り作業を続け、ジョブログの内容は一度確認できればそれでよく、表示し続ける必要はない、のならば画面を分割する必要なくSDSFを起動して元の画面に戻すことができます。

同じようにDSLIST(オプション3.4)もコマンド(「DSLIST△**」「DSLIST△’PROJ1.WORK’」)で起動できますから、2画面を切り替えて使用するベースになる画面は、継続して表示し続けたいツール(ユーティリティー)に割当て、一時的に内容を確認したいようなものはコマンドで起動するようにすれば、2画面でも3つ以上のユーティリティーやツールを使い分けられます。現在のISPFでは、DSLISTからエディターやブラウズなどほとんどの作業ができますから、DSLISTとSDSFのコマンド起動だけ知っているだけでも日々の作業の操作効率は向上するでしょう。EPDFコマンド(いつでもどこでもデータセット編集)を使用すれば、DSLISTユーティリティーのデータセット一覧パネルすら迂回してISPFエディターを直接起動することもできます。


*2 DSLISTやエディター、SDSFなどの画面を使うISPF機能やユーティリティーのこと。

なお、登録したユーザー・コマンド・テーブルを共用のコマンド・テーブルとして利用する場合は、コマンド・テーブルのメンバーを個人のISPFプロファイル・データセットからDD名ISPTLIBに定義されたライブラリー(ISP.SISPTENUまたはISP.SISPTJPN)に移動するだけです。ただし、コマンド・テーブルを修正した場合は個人のISPFプロファイル・データセットに保管されますので、再度移動する必要があります(個人用にコマンド・テーブルを修正した場合はそのままでかまいません)。

関連マニュアル

  • z/OS SDSF オペレーションおよびカスタマイズ 第10章インストールと構成の考慮事項のISPFの考慮事項
  • 対話式システム生産性向上機能(ISPF)ユーザーズ・ガイド第1巻 第6章MVSでの実行準備
  • 対話式システム生産性向上機能(ISPF)ユーザーズ・ガイド第2巻 第5章ユーティリティー(オプション3)のコマンド・テーブル・ユーティリティー(オプション3.9)
  • 対話式システム生産性向上機能(ISPF)計画とカスタマイズ 第2章ISPF構成テーブル