VSAMデータセットの操作いろいろ(IDCAMS)
AMS(アクセス方式サービスプログラム)はVSAMデータセットとカタログ操作用のユーティリティ・プログラムです。しかし応用範囲はVSAMだけでなくPSやPDSなどの非VSAMデータセットに関してもさまざまな操作を行うことができ、データセット操作の統合ユーティリティとなっています。AMSを使用した非VSAMデータセットの操作サンプルに関しては別の記事「非VSAMデータセット(PS,PDS)の各種操作(IDCAMS)」でアップしてますが、ここではVSAMデータセットとカタログ・データセットに関するいくつかのサンプルを紹介します。足りないものはマニュアルを見てください。
JCLの基本形
// JOB Statement //********************************************************************* //* Sample JCL - IDCAMS //* =================== //********************************************************************* //IDCAMS EXEC PGM=IDCAMS,REGION=4096K //SYSPRINT DD SYSOUT=* //SYSIN DD * AMS制御文 //
プログラム名はMSPではKQCAMS、VOS3ではJSCVSUTとなりますがいずれもIDCAMSの別名が付いているのでIDCAMSとしても利用できます。このユーティリティーは、使いたい機能に応じたAMS制御文をSYSINに記述することで処理を行います。ただし制御文には一部非互換もあるので、必要に応じてマニュアルを参照してください。
カタログされているデータセットをリストアップする。
//SYSIN DD * LISTCAT LEVEL(xxxxxxxx) HIST|VOL|ALLOC|ALL LISTCAT ENTRY(MY.MASTER.*) LISTCAT [CATALOG(catname)] //
LEVELパラメーターでリストアップするデータセットをフィルタリングできます。USR1と指定すればUSR1.で始まるデータセットが、MY.TESTと指定すればMY.TEST.で始まるデータセットがリストアップされます。リストアップされる情報はデータセット名とデータセット種別(CLUSTER,INDEX,DATA,NONVSAM等)です。HIST|VOL|ALLOC|ALLのオプションを指定すれば出力される情報を増やすことができます。
HIST(HISTORY)は名前に加えて、作成日、満了日が追加して出力されます。VOL(VOLUME)はHISTORYに加えてデータセットの格納ボリューム名が追加して出力されます。ALLOCはVSAMデータセットのINDEXおよびDATAコンポーネントの割り振り済みスペース量情報が追加されます。ALLはそのデータセットに関するカタログ項目がすべて出力されます。
ENTRYパラメーターもリストアップするデータセットをフィルタリングします。この例ではMY.MASTER.で始まる3つの修飾子で構成されたデータセットがリストアップされます。LEVELはどちらかと言えば○○○で始まるデータセット名で出したい場合に使い、ENTRYはDSNを構成する修飾子パターンで出したい場合に使われます。LEVELの方がわかりやすいでしょう。MY.TEST.JCLは出して欲しいけどMY.TEST.JCL.BACKUPは出して欲しくないって言うときはENTRYを使います。
LEVELもENTRYも省略すればカタログされているデータセットがすべてリストアップされます。CATALOGパラメーターでデータセットが登録されているユーザーカタログを指定できます。省略すればマスターカタログが探索されます。
TSOのコマンドプロンプトでもLISTCATコマンドは利用できますが、全データセットをリストアップしようとして単にLISTCATと入れても有効になりません。ログオン中のTSOユーザーIDで始まるデータセット名がリストアップされてしまいます。LISTCATコマンドの前にPROFILE NOPREFIXコマンドを使用する必要があります。元に戻すならPROFILE PREFIX(userid)と入力します。
ユーザーカタログおよびALIASをリストアップする。
//SYSIN DD * LISTCAT USERCATALOG VOLUME LISTCAT ALIAS ALL //
利用可能なユーザーカタログおよび登録済みデータセットの別名(ALIAS)とカタログ先をリストアップします。
VSAMデータセットの作成
//SYSIN DD * DEFINE CLUSTER - (NAME(TEST.VSAMFILE) - VOLUMES(WRKVOL) - RECORDS(100 10) - RECORDSIZE(80 80) - NONINDEXED) //
VSAMデータセットの作成にはDEFINE CLUSTERコマンドを使います。この例では新しいエントリー順データセット(ESDS)、TEST.VSAMFILEをWRKVOLに作成します。レコード長は80バイト、レコード数は初期値100レコード分(増分10レコード分)で作成します。TEST.VSAMFILEはクラスター名でJCLのDSNパラメーター等に指定する名前となりますが、DASD上の実際のデータセット名はTEST.VSAMFILE.DATAとなります。
その他詳細はAMSユーティリティのマニュアルを参照して下さい。
VSAMデータセットの改名と削除
//SYSIN DD * ALTER TEST.VSAMFILE NEWNAME(TEST.VSAMFILE.BACKUP) ALTER TEST.VSAMFILE.DATA NEWNAME(TEST.VSAMFILE.BACKUP.DATA) DELETE TEST.VSAMFILE.BACKUP //
VSAMデータセットもリネームできます。最初の例はクラスター名の変更です。データ・コンポーネントやインデックス・コンポーネントの名前は変更されません。コンポーネント(DASD上の実体データセット)の名前を変える場合はコンポーネント名で指定します。それが2番目の例です。最後のDELETEはVSAMデータセットの削除を行います。VSAMデータセットはBR14の実行JCLでDISP=(OLD,DELETE)としても消せません。エラーにならずノーマルエンドしますが実際は消えていません。
VSAMデータセットのアンロード
//SYSUT1 DD DISP=SHR,DSN=TEST.VSAMFILE //SYSUT2 DD DISP=(,CATLG),DSN=TEST.VSAMFILE.UNLOAD, // UNIT=SYSDA,VOL=SER=WRKVOL,SPACE=(TRK,(10,10)), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //SYSIN DD * REPRO INFILE(SYSUT1) OFILE(SYSUT2) //
VSAMデータセットの内容は順次編成データセットにアンロードできます。これはVSAMデータセットのバックアップにもなります。IN側をPSデータセット、OUT側をVSAMにすればデータのローディングとなります。