すべてのボリューム上のデータセット一覧を作る
ボリューム内のデータセットの一覧リスト(VTOCリスト)を必要とする場合があります。IEHLISTやISPF3.4(DSLIST)を利用することもできますが、AMSユーティリティーのDCOLLECT機能を使って、ボリューム内のデータセット情報を収集して、ソート・ユーティリティーで編集するサンプルを紹介します。
1つのボリュームだけでなく、複数のボリュームにまたがってリストを作成する場合、ボリューム名に総称文字*を使うことで、複数のボリュームを一度に検索できます。ISPFのDSLISTでもボリューム名に総称文字が利用できますが、対象のボリューム数が多いと、時間が掛かります。ISPFのDSLISTサービスをバッチ・セッションで実行する方法もありますが、ここでは代替としてAMSのDCOLLECTコマンドを使った方法を紹介します。
全オンライン・ボリューム上のデータセット・リスト(VTOCリスト)を作成する
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//DCOLLECT EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSUT2 DD DISP=(,PASS),UNIT=VIO,SPACE=(CYL,(10,1),RLSE),
// DCB=(RECFM=VB,LRECL=644)
//SYSIN DD *
DCOLLECT OFILE(SYSUT2) VOLUME(*)
//*
//SORTDSN EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=(OLD,PASS),DSN=*.DCOLLECT.SYSUT2
//SORTOUT DD DISP=(,PASS),UNIT=VIO,SPACE=(CYL,(10,1),RLSE)
//*ORTOUT DD SYSOUT=*
//SYSIN DD *
INCLUDE COND=(9,1,CH,EQ,C'D')
SORT FIELDS=(29,44,CH,A)
OUTFIL VTOF,OUTREC=(SEQNUM,6,ZD,
29,44,
83,6,
79,2,CHANGE=(2,X'4000',C'PS',
X'2000',C'DA',
X'0200',C'PO',
X'0008',C'VS'),
NOMATCH=(C'--'),
81,1,CHANGE=(1,B'11......',C'U',
B'.1......',C'V',
B'1.......',C'F'),
NOMATCH=(C'-'),
81,1,CHANGE=(1,B'...1....',C'B'),
NOMATCH=(C' '),
81,1,CHANGE=(1,B'.....1..',C'A',
B'......1.',C'M'),
NOMATCH=(C' '),
89,2,BI,EDIT=(IIIII),
91,2,BI,EDIT=(IIIII),
93,4,
97,4,
109,4,
117,4)
//*
//REPORT EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSUT1 DD DISP=(OLD,DELETE),DSN=*.SORTDSN.SORTOUT
//LISTOUT DD SYSOUT=*
//TOOLIN DD *
DISPLAY FROM(SYSUT1) LIST(LISTOUT) -
TITLE('AMS DCOLLECT REPORT: DATASET LIST ON ALL VOLUME') -
DATE(4MD-) TIME PAGE -
HEADER('SEQ#') -
HEADER('DSNAME') HEADER('VOLUME') -
HEADER('DSORG') HEADER('RECFM') -
HEADER('BLKSZ') HEADER('LRECL') -
HEADER('ALLOC(KB)') HEADER('USED(KB)') -
HEADER('CREATE') HEADER('LAST REFER') -
ON(1,6,ZD,NOST) -
ON(7,44,CH) ON(51,6,CH) -
ON(57,2,CH) ON(59,3,CH) -
ON(62,5,CH) ON(67,5,CH) -
ON(72,4,BI,A1) ON(76,4,BI,A1) -
ON(80,4,HEX) ON(84,4,HEX) -
BLANK -
TOTAL('TOTAL')
//
//
最初のステップは、AMSのDCOLLECTです。VOLUME名に*を1つ指定することですべてのオンライン・ボリュームを示しています。DATA*とすれば、ボリューム名DATAxxが対象になります。
次のステップで、DCOLLECTの出力レコードをDSN順にソートして、簡単な編集を行います。そのままSYSOUTに出力してもかまいませんが、さらに次のステップでICETOOLを使い、レポート形式に編集してからSYSOUTに出力します。
DCOLLECTではデータセット・スペース量がトラック数ではなく、キロバイトに換算されたスペース量で格納されるため、ISPFのDSLISTのスペース量表示とは異なります。しかしDCOLLECTのレコードには、かなり細かい情報も入りますので、必要なものを選択して、SORTやICETOOLを使って編集することができます。必要に応じてDSLISTやDCOLLECTを使い分ければいいでしょう。
すべてのボリュームを対象にして、データセットのリストを作成すれば、SORTと組み合わせて重複データセットをピックアップしたり、容量の大きなもの、アクセスされていないもの、などをランク付けすることもできます。いろいろと工夫してみて下さい。

