COBOLで区分データセットのディレクトリー部を直接読むサンプル

COBOLでも区分データセットのディレクトリー部を順次データセットとして読み込むことができます。ポイントは区分データセット自体のレコード形式、レコード長、ブロック長に関係なく、JCLのDCBパラメーターにRECFM=F,BLKSIZE=256,LRECL=256を指定することです。
プログラムそのものは256バイトの固定長レコード長のファイルを読み込むロジックを書けばいいのです。このサンプル・プログラムでは読んだディレクトリー・ブロックのデータを単にSYSPRINTに書き出すだけですが、ディレクトリー・ブロックのデータはINDATA領域に読み込まれるので必要に応じた処理をそこに追加できます。ディレクトリー部の具体的な構造については各OSのデータ管理解説書などを参照して下さい。なお、COBOLではPDSディレクトリー・ブロックのキー部は読めません(256バイトのデータ部のみが読み込める)。

富士通のXSPではディレクトリー部のレコード長は1000バイトになります。サンプル中の256を1000に置き換えて下さい。MVS(MSP,VOS3)とXSPでの大きな違いには以下のものがあります。

   MVS,MSP,VOS3 XSP
キー部の長さ 8バイト(ブロックの最終エントリメンバー名) ←同じ
データ部の長さ
(レコード長)
256バイト 1000バイト
メンバーエントリーの長さ 12~74バイトの可変長 40または80バイト固定長
(ただし混在はない)

PDSディレクトリー読み込みプログラム・サンプル