はじめに(おさらい)
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
を弾かれた時にはびっくりしましたが、これで無事、亡霊を退治することができました。
参考文献
- IBM Knowledge Center - Optional Parameters
http://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.idai200/da6i2172.htm