ICKDSF
ICKDSF:DASDの初期化などを行うユーティリティ・プログラム(DSFはDevice Support Facilitiesの略)
ICKDSFユーティリティを検索している人は比較的多いようです。特に「マニュアル」「manual」のキーワードを組み合わせられることがほとんどです。何故かICKDSFのマニュアルは日本語化されていません。そんなにしょっちゅう使うものではないからでしょうか...
英語だけどマニュアルを見てくれ、では記事にならないので、3つの基本パターンのサンプルを紹介します。サンプル以上に詳しいことや、別の使い方については、やはりマニュアルを見てください。
また、ICKDSFは別のカテゴリーでもサンプルを載せているので併せてご覧下さい。==>ここ
DASDボリュームのイニシャライズ-1
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- DASD OFFLINE Initialize //ICKDSF EXEC PGM=ICKDSF //SYSPRINT DD SYSOUT=* //SYSIN DD * INIT UNIT(xxxx) VERIFY(oldnam) VOLID(newnam) VTOC(0,1,14) //
ボリューム内のデータセットを全て消し去って、VTOCを再作成する例です。
ボリューム名を変えたり、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-- //*------- DASD OFFLINE Initialize //ICKDSF EXEC PGM=ICKDSF //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ボリュームのイニシャライズ-2
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- DASD ONLINE Initialize //ICKDSF EXEC PGM=ICKDSF //SYSPRINT DD SYSOUT=* //DASD DD DISP=OLD,UNIT=SYSALLDA,VOL=SER=volnam //SYSIN DD * INIT DDNAME(DASD) NOVERIFY PURGE //
ボリューム内のデータセットを全て消し去ります。
ボリューム名とVTOCのサイズを変えない場合には、オンライン・イニシャライズが利用できます。全データセットを消去するだけなら、オンライン・イニシャライズの方がいいでしょう。DD文でボリューム名を指定するので、この例ではVERIFYはせずに、NOVERIFYとしています。
満了日付やVSAMなど、プロテクトされたデータセットがあると、イニシャライズはできません。PURGEパラメーターを指定することで、これらのデータセットがあっても強制的にイニシャライズすることもできます。ただしカタログには残ったままになりますから、後々面倒です。後でカタログだけを個別に消して行くぐらいなら、最初からきちんとデータセットとして消す方がいいでしょう。
DASDボリューム名の変更
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- //*------- RENAME DASD VOLUME //ICKDSF EXEC PGM=ICKDSF //SYSPRINT DD SYSOUT=* //SYSIN DD * REFORMAT UNIT(xxxx) VERIFY(oldnam) VOLID(newnam) //
ボリューム名を変更します。中のデータセットは消されたりせずにそのまま残ります。
ボリューム名を変更する場合も、オフラインで行います。ボリューム名を変更しても、カタログは旧ボリューム名のままですから、やはり後で面倒なことがおきることには変わりないです。
ボリュームだけいじっても、カタログは連動して変わらないことは知っておく必要があります。大量のデータセットを消すのに、楽そうだから、なんて安易な理由でボリュームのイニシャライズをやると泣きを見ます。
しかしDASDがハード障害になったのでワークをつぶしてバックアップから戻す、普段はオフラインになっている予備のボリュームを臨時に使う、などボリュームのイニシャライズは、そうしょっちゅうではなくとも必要になる場合がありますから、運用担当者なら1番目のサンプルぐらいは持ってるといいと思います。