- 「メインフレーム・コンピューター」で遊ぼう - http://www.arteceed.net -

ICKDSF

ICKDSF:DASDの初期化などを行うユーティリティ・プログラム(DSFはDevice Support Facilitiesの略)

ICKDSFユーティリティを検索している人は比較的多いようです。特に「マニュアル」「manual」のキーワードを組み合わせられることがほとんどです。何故かICKDSFのマニュアルは日本語化されていません。そんなにしょっちゅう使うものではないからでしょうか...
英語だけどマニュアルを見てくれ、では記事にならないので、3つの基本パターンのサンプルを紹介します。サンプル以上に詳しいことや、別の使い方については、やはりマニュアルを見てください。
また、ICKDSFは別のカテゴリーでもサンプルを載せているので併せてご覧下さい。==>ここ [1]


    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番目のサンプルぐらいは持ってるといいと思います。