ICKDSFは、DASDの初期化などを行うユーティリティ・プログラム(DSFはDevice Support Facilitiesの略)です。
ICKDSFユーティリティを検索している人は、比較的多いようです。特に「マニュアル」「manual」のキーワードを組み合わせられることがほとんどです。何故かICKDSFのマニュアルは日本語化されていません。そんなにしょっちゅう使うものではないからでしょうか...
英語だけどマニュアルを見てくれ、では記事にならないので、3つの基本パターンのサンプルを紹介します。サンプル以上に詳しいことや、別の使い方については、やはりマニュアルを見てください。
ICKDSFは、別のカテゴリーでもサンプル「DASDボリュームの初期化(イニシャライズ)」を載せているので併せてご覧下さい。
DASDボリュームのイニシャライズ①
1 2 3 4 5 6 7 |
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- DASD OFFLINE Initialize //ICKDSF EXEC PGM=ICKDSF,REGION=0M //SYSPRINT DD SYSOUT=* //SYSIN DD * INIT UNIT(xxxx) VERIFY(oldnam) VOLID(newnam) VTOC(0,1,14) // |
ボリューム内のデータセットを全て消し去ってVTOCを再作成する例です。ボリューム名を変える場合には、オフライン・イニシャライズを行います。
DASDを一度オフラインにするので、使用中のDASDはイニシャライズできません。なお、UNIT番号を誤って指定したときのガードになるので、VERIFYパラメーターで現在のボリューム名も指定するといいでしょう(指定した現ボリューム名が間違っているとイニシャライズはされない)。
VOLIDで新しいボリューム名、VTOCパラメーターでVTOCの場所と大きさを指定します。VTOCパラメーターを省略すると、z/OSではシリンダ0、トラック1に14トラック分が割り当てられます(1シリンダあたりのトラック数から1を引いた値、3390は15トラック/1シリンダなので14)。MSPではシリンダ0、トラック1は同じですが、大きさはたったの1トラック分しか取られません。容量は沢山空いているのに、データセットが追加できない、と後で大きな後悔をすることになりかねないので注意します。アバウトですが、作成されるデータセット50個につき1トラック使うとして必要なTRK数を出し、システムが使う分を考慮して10%増しぐらいにすればよいでしょう。
1 2 3 4 5 6 7 |
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- DASD OFFLINE Initialize //ICKDSF EXEC PGM=ICKDSF,REGION=0M //SYSPRINT DD SYSOUT=* //SYSIN DD * INIT UNIT(xxxx) NOVERIFY VOLID(newnam) VTOC(0,1,14) INDEX(1,0,15) STGR // |
MVS(z/OS)において、DASDをSMS管理ボリュームとしてイニシャライズする例です。SMS管理ボリュームにするためにはSTORAGEGROUP(短縮形はSTGRまたはSG)オプションを指定します。SMS管理ボリュームは、必ずINDEX付きVTOCでなければなりません。イニシャライズ時に、STORAGEGROUPオプションを指定していなくても、後でDFDSSのCONVERTV機能を使い、SMS管理ボリュームとして設定することもできます。
DASDボリュームのイニシャライズ②
1 2 3 4 5 6 7 8 |
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- DASD ONLINE Initialize //ICKDSF EXEC PGM=ICKDSF,REGION=0M //SYSPRINT DD SYSOUT=* //DASD DD DISP=OLD,UNIT=SYSALLDA,VOL=SER=volnam //SYSIN DD * INIT DDNAME(DASD) NOVERIFY PURGE // |
ボリューム内のデータセットを全て消し去ります。ボリューム名を変えない場合には、オンライン・イニシャライズが利用できます。
全データセットを消去するだけなら、オンライン・イニシャライズの方がいいでしょう。DDステートメントでボリューム名を指定するので、この例ではVERIFYせずにNOVERIFYとしています。
満了日付やVSAMなど、プロテクトされたデータセットがあると、イニシャライズはできません。PURGEパラメーターを指定することで、これらのデータセットがあっても強制的にイニシャライズすることもできます。ただし、カタログには残ったままになりますから、後々面倒です。後でカタログだけを個別に消して行くぐらいなら、最初からきちんとデータセットとして消す方がいいでしょう。
DASDボリューム名の変更
1 2 3 4 5 6 7 |
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- RENAME DASD VOLUME //ICKDSF EXEC PGM=ICKDSF,REGION=0M //SYSPRINT DD SYSOUT=* //SYSIN DD * REFORMAT UNIT(xxxx) VERIFY(oldnam) VOLID(newnam) // |
ボリューム名を変更します。中のデータセットは消えずにそのまま残ります。ボリューム名を変更する場合も、オフラインで行います。ボリューム名を変更しても、カタログは旧ボリューム名のままですから、やはり後で面倒なことがおきることには変わりないです。
ボリュームだけいじっても、カタログは連動して変わらないことは知っておく必要があります。大量のデータセットを消すのに、楽そうだから、なんて安易な理由でボリュームのイニシャライズをやると泣きを見ます。
しかし、DASDがハード障害になったのでワーク・ボリュームをつぶしてバックアップから戻す、普段はオフラインになっている予備のボリュームを臨時に使うなど、ボリュームのイニシャライズはそうしょっちゅうではなくとも必要になる場合がありますから、運用担当者なら1番目のサンプルぐらいは持ってるといいと思います。