PDSE世代メンバー・リストを出力する

世代管理されるメンバーが格納されたPDSEデータセット内のメンバー一覧を出力するREXX execです。指定したPDSEデータセット内の各メンバーについて、下記に示した内容のリストを出力します。

メンバー名右側の*表示は、データセット内に保管されている相対世代番号を示したスケールです。目盛りは0からの1目盛りが相対世代番号1つに対応し、1、2、… 9、Aと続き、それぞれ相対世代番号-10、-20、-90、-100を示します。上記例のASMTXCは、最も古い相対世代番号-11迄世代別にメンバー内容が保管されています。JCLEX6はこのデータセットの上限の20世代分が保管されています。相対世代番号0だけのメンバーは、登録後まだ更新されていないことを示します。

REXX execの内容

REXXですがバッチ・ジョブで実行します。JCL上部のSETステートメントでARG1にPDSEデータセット名を指定してサブミットします。
メンバー毎だけではなく、各々のメンバーの各世代についてISPF VIEWERを内部で起動して世代が存在するかをテストしているので、メンバー数が多いと実行時間が掛かります。

REXXコード内のコメントにも記していますが、z/OS V2R3以前のバージョンでは、PDSEデータセットの最大世代数を求める為のLISTDSIのSYSMAXGENS変数がサポートされていないので、REXX内のmaxgens変数に直接最大世代数を設定して下さい。「maxgens = SYSMAXGENS」の次に「maxgens = 100」の行を追加します。(100はPDSEデータセットの最大世代数に合わせて下さい。スケールは最大100世代までにしてあるので100のままでもいいです)
サンプルのREXXコードでは、最大世代数の上限はチェックしていません。最大世代数が100を超えたデータセットで実際に保管された世代数も100を超えている場合は、目盛り行を超えて*記号が伸びていくような出力になると思いますが、SYSTSPRTのレコード長の範囲内に収まらなければI/Oエラーになるか切り捨てられるかも知れません。必要なら最大世代数のチェックを入れて下さい。(z/OSが許容する上限数は20億ですが現実には多くても数百程度迄に設定されていると思います)