LoginSignup
8
3

More than 5 years have passed since last update.

カタログ登録のないVSAMデータセットを削除する

Last updated at Posted at 2016-09-13

はじめに(おさらい)

VSAM編成データセット(以下VSAMデータセット)は、必ずカタログされて利用されます。
非VSAM編成データセットはカタログ登録がなくてもJCL中にUNIT= VOL=SER=を指定することでアクセスできますが、VSAMデータセットに対してはこれらの指定はできず、必ずカタログを利用してアクセスすることになります。

VSAMがカタログ管理されていればこそ、下記のようにAMSユーティリティーによって一発でVSAMの索引部とデータ部を同時に削除することができるのですね。

//DELVSAM JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID,REGION=0M
//DELETE   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*    
//SYSIN    DD *           
DELETE (VSAM.TEST.KSDS) CLUSTER
/*

カタログ登録のないVSAMデータセットの削除

ところが、なんらかの不運によって「カタログ登録のないVSAMデータセット」が生まれてしまう or 残ってしまうことが稀にあります。
先ほど、VSAMがカタログ管理されていればこそAMSユーティリティーでずばっとデータセットを一発で削除できると書きました。ところがカタログ管理されていない場合、これらのデータセットは普段どおりのDELETE CLUSTERでは削除できません。

ではそんなさまよえる亡霊と化したデータセットを除霊するにはどうするか。そんなときに役立つ呪文がAMSユーティリティーのVVRオプションです。

//DELVSAM JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID,REGION=0M
//DELETE   EXEC PGM=IDCAMS
//DD1      DD   VOL=SER=YYYIMS,UNIT=3390,DISP=OLD
//SYSPRINT DD SYSOUT=*    
//SYSIN    DD *           
  DELETE-
       VSAM.TEST.KSDS.INDEX -
       FILE(DD1) - 
       VVR
/*

VVRは大雑把に言うと、カタログを経由せずVTOC情報からデータセットを探すという指定です(詳しくは参考文献のリンクを見てください)。
カタログを経由しないので、当然索引部ならば.INDEX、データ部ならば.DATAまで手書きでデータセット名を指定してやらないといけません。

DELETE CLUSTERを弾かれた時にはびっくりしましたが、これで無事、亡霊を退治することができました。

参考文献

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3