メインフレーム環境で区分編成データセットのメンバ名を出力する方法

[OS]MVS
[リリース] 6.07, 6.08, 6.09E
[キーワード] SOURCE

[質問]

メインフレーム上の区分編成データセットのメンバ名を、SASデータセットに出力できますか。

[回答]

メインフレーム版のSASには、SOURCE、PDSCOPY、TAPELABELなど、システム運用に役立つ便利なユーティリティプロシジャがあります。

上記質問の場合には、SOURCEプロシジャとDATAステップを利用して、メンバ情報をSASデータセットに出力することができます。
以下にSOURCEプロシジャを使用した、サンプルマクロプログラムを示します。

/*   使用方法 */
%pdsdir(区分データセット名,作成するSASデータセット名)

/*マクロプログラム*/
%macro pdsdir(pds, outds) ;
  filename pdsdd "&pds" disp=shr ;

  proc source indd=pdsdd nodata noprint
              dirdd=sasparm  ;
  run ;

  filename pdsdd clear ;

  data &outds ;
    infile sasparm ;
    input member $8. ttr pib3. ind pib1. @ ;
      datalen = 2 * mod(ind,32) ;
      if datalen=30 then do ;
        input ver pib1.  mod pib1.  blank pib2.
              create pd4. changed pd4. hh pk1.
              mm pk1. size pib2. init pib2.
              mod1 pib2. userid $8. ;
        jcreate = datejul(create) ;
        jchange = datejul(changed) ;
        format jcreate date7. jchange date7. ;
      end ;
  run ;
  proc sort data=&outds ; by member ;
  run ;
%mend ;

注意:ホスト環境により、$マークを\マークに変更する必要があります。