メインフレームにはSAM、VSAMの概念があります。
SAM、VSAMはファイル編成の方式で、PGMからアクセスする方式が異なります。メインフレームから見た時にはSAMもVSAMもデータ・セットです。VSAMには、次の特徴があります。
VSAM
正式名称は Virtual Storage Access Method です。日本語では 仮想記憶アクセス方式 です。
インデックスの付いたデータ。DBデータのように扱う。そのままでは読めず、データを入れる器を作成するために、DEFINE CLUSTER(クラスター定義)が必要です。
VSAMを管理するには、ユーティリティーである IDCAMS を使用します。IDCAMS は様々な機能を持つユーティリティーで、コマンドとパラメータを指定することで機能を使用します。
サンプルとして、データ・セットを定義してデータをロード、ロードしたデータを印刷するJCLを記載します。
//DEFINE JOB SAMPLE01 //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //*DEFINE USERCATALOG カタログを作成する //*DEFINE CLUSTER データ・セットを定義する //SYSIN DD * DEFINE USERCATALOG (NAME (USERCATX) ICFCATALOG CYLINDERS(15 5) - VOLUMES(VSER05)) DATA (CYLINDERS(3 1)) IF LASTCC = 0 THEN - DEFINE CLUSTER(NAME (EXAMPL1.KSDS) VOLUMES(VSER05)) - DATA (KILOBYTES (50 5)) /* //STEP2 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSABEND DD SYSOUT=* //AMSDUMP DD SYSOUT=* //INDSET4 DD DSNAME=SOURCE.DATA,DISP=OLD, // VOL=SER=VSER02,UNIT=3380 //*REPRO データ・セットをロードする //*LISTCAT カタログ項目をリストする //*PRINT データ・セットを印刷する //SYSIN DD * REPRO INFILE(INDSET4) OUTDATASET(EXAMPL1.KSDS) IF LASTCC = 0 THEN - LISTCAT ENTRIES(EXAMPL1.KSDS) IF LASTCC = 0 THEN - PRINT INDATASET(EXAMPL1.KSDS) /*
詳細には次のアクセス方式がある。(いずれもVSAM用語)
- キー・シーケンス・データセット ( Key Sequenced Data Set )
- 相対レコードデータセット ( Relative Record Data Set )
- エントリー・シーケンス・データセット ( Entry Sequenced Data Set )
- 線形データセット ( Linear Data Set )
上記をCOBOL用語で言うと次のようになる。
- キー・シーケンス・データセット ← 索引付き付きファイル
- 相対レコードデータセット ← 相対ファイル
- エントリー・シーケンス・データセット ← 順次ファイル
参考