ボリューム内のデータセットの一覧リスト(VTOCリスト)を必要とする場合があります。IEHLISTやISPF3.4(DSLIST)を利用することもできますが、AMSユーティリティーのDCOLLECT機能を使って、ボリューム内のデータセット情報を収集して、ソート・ユーティリティーで編集するサンプルを紹介します。
1つのボリュームだけでなく、複数のボリュームにまたがってリストを作成する場合、ボリューム名に総称文字*を使うことで、複数のボリュームを一度に検索できます。ISPFのDSLISTでもボリューム名に総称文字が利用できますが、対象のボリューム数が多いと、時間が掛かります。ISPFのDSLISTサービスをバッチ・セッションで実行する方法もありますが、ここではAMSのDCOLLECTコマンドを使ってみます。
全オンライン・ボリューム上のデータセット・リスト(VTOCリスト)を作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
//DCOLLECT EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSUT2 DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(5,5),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と組み合わせて重複データセットをピックアップしたり、容量の大きなもの、アクセスされていないもの、などをランク付けすることもできます。いろいろと工夫してみて下さい。