メインフレーム VSAM の理解

メインフレームにはSAM、VSAMの概念があります。

SAM、VSAMはファイル編成の方式で、PGMからアクセスする方式が異なります。メインフレームから見た時にはSAMもVSAMもデータ・セットです。VSAMには、次の特徴があります。

VSAM

正式名称は Virtual Storage Access Method です。日本語では 仮想記憶アクセス方式 です。

インデックスの付いたデータ。DBデータのように扱う。そのままでは読めず、データを入れる器を作成するために、DEFINE CLUSTER(クラスター定義)が必要です。

VSAMを管理するには、ユーティリティーである IDCAMS を使用します。IDCAMS は様々な機能を持つユーティリティーで、コマンドとパラメータを指定することで機能を使用します。文法は次のとおりです。

//SYSIN DD *
command parameter
//

サンプルとして、データ・セットを定義してデータをロード、ロードしたデータを印刷する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用語で言うと次のようになる。

  • キー・シーケンス・データセット ← 索引付き付きファイル
  • 相対レコードデータセット ← 相対ファイル
  • エントリー・シーケンス・データセット ← 順次ファイル

参考

VSAM データ・セットを定義する例 – IBM

VSAMファイルの処理 – IBM