2012年3月10日土曜日

VSAM、VSAMデータセット » 「メインフレーム・コンピュータ」で遊ぼう

VSAM、VSAMデータセット » 「メインフレーム・コンピュータ」で遊ぼう

VSAMとは

VSAMとは、データをレコード単位に格納しプログラムで処理するためのデータセットへのアクセス方式です。OSの仮想記憶の機能や仕組みを前提として実装されたファイルシステムで、当初からあったSAM(順次アクセス方式)やDAM(直接アクセス方式)などと異なり、データセットの物理構造をプログラムが意識しなくてもいいように設計されました。
VSAMでアクセスされるレコードを格納した器がVSAMデータセットとなります。VSAMデータセットは他のデータセットと異なり、ディスク装置にしか置くことができません。テープにVSAMデータセットを作成するようなことはできないのです。バックアップをテープに置くことはできますが、この場合のバックアップ・データセットはVSAMではなく、VSAMデータセット内のレコードをアンロードして並べた順次データセットになります

VSAMでは、QSAMやBPAMなどの順次データセットや区分データセットと異なり、プログラムはディスク内のVSAMデータセットに直接アクセスするわけではありません。VSAMによって仮想記憶上に展開された[仮想のファイルの]レコードにアクセスすることになります。


キーストロークを削除する方法

補足:VSAMでもデータの実体はディスク上のデータセットですが、このデータセットにはVSAMによる内部フォーマットによってデータが整理されて格納されています。プログラムはVSAMデータセット内の物理データレコードをそのまま扱うのではなく、VSAMがプログラムで扱う論理レコードの形式に再構成して仮想記憶上に展開したデータがプログラムに渡されます。プログラムは定められたAPI(GETとかPUTなど)を出せばよくVSAM内部の動きなど意識する必要はありません。似たようなものとしてPDSEがあります。PDSEもディスク上の実体は4KB固定長レコードの順次データセットですが、プログラムからは区分編成データセットとしてアクセスできます。VSAMもPDSEも順次編成データセットや区分編成データセットのように、データセット� ��物理的なブロック構造がそのままプログラムに入ってくるわけではないと言う意味で、メモリー上の仮想のファイルにアクセスするようなもの、と表現しています。データセットがまるごとメモリーに読み込まれてディスクへのI/Oが行われないと言う意味ではありません。


VSAMの特長

VSAMもQSAM同様に、論理レコード単位にデータをやり取りすることができます。しかし順次アクセス以外にも直接アクセスやキーによるレコードの検索などもでき、順次アクセスであっても後ろへ戻ったり前へ飛ばしたりなど任意のレコードを直接示すこともできるようになっています。メモリー・イメージをそのまま格納するような目的のために、リニアー形式というレコード構造を持たない先頭から最後までが1つに繋がったフラットなスペースで構成するものもあります。

VSAMは、その仕組みや機能からアプリケーションプログラムのデータの格納用に幅広く使われてきました。キーによる検索やレコードのランダムアクセスなどは、VSAM以前にもISAMやBDAMといったアクセス方式で提供されていましたが、VSAMによってより簡単にデータファイルを構築できるようになり、1970年代から80年代にかけては業務データの格納ファイルの主力として使われました。その後データベース・システムが出現し、現在では業務データの格納にはDB2、IMS/DBなどのデータベース・システムが主に利用されています。しかしVSAMはこれらデータベース・システムの原型とも言えるもので、実際のデータベースの実装にVSAMが利用されたりもしました。今ではRDBMSが主流ですが、シンプルな構造でもよいものならばVSAMを直接使う方 が簡単で軽かったりします。


VSAMデータセットの種類

VSAMにはアクセス方法に応じて4種類のデータセットがあります。KSDS、ESDS、RRDSいずれも固定長または可変長の論理レコードを作れます。


PSPを使用してオンラインビデオを視聴する方法

VSAMデータセットの処理

VSAMデータセットの作成や保守用にはAMSと呼ばれるアクセス方式サービスプログラムというユーティリティーが利用されています。また作成したVSAMデータセットに順次データセット内のレコードをローディングしたり、データが格納されているVSAMデータセットをバックアップしたりするのにも使われます。現在のz/OSでは、JCLのDDステートメントにもVSAM用のパラメーターが追加されているのでIEFBR14でもVSAMがアロケーションできたり、GENERでPSとVSAM間でコピーできたりしますが、VSAMとAMSユーティリティーは切っても切れない関係にあります。VSAMを扱うならAMSユーティリティーの基本的な機能や使い方はしっかり覚えることが大切です。
AMSユーティリティーについては、この記事を参照して下さい。

またVSAMには次のI/O機能が提供されています。(抜粋)

  • OPEN
  • データセットをオープンする。OSはメモリー内にアクセス用のバッファーを用意し、指定されたデータセットをアクセスするためのコントロールブロックとアクセス環境を作り上げる。

  • CLOSE
  • データセットをクローズする。

  • GET
  • 次のもしくは指定した論理レコードを取り出す。

  • PUT
  • 次のもしくは指定した論理レコードを書き出す。

  • ERASE
  • 取り出した論理レコードを削除する。

  • POINT
  • 次にアクセスするレコード位置を変更する。

機能の名前はQSAMやBSAMなどと大差はありません。これらはアセンブラーマクロで直接VSAMのアクセスメソッドを呼び出す場合に使用します。COBOLなどでは言語のI/Oステートメントの記述によってアクセスできます。



サンプルコード

このサンプルは、次のような構造のレコードを持つKSDSデータセットから顧客番号をキーにしてレコードを検索し読み出すCOBOLプログラムです。

サンプルVSAMファイルのレコード構造


       *****************************************************************       *  COBOL EXAMPLE PROGRAM(SEARCH VSAM KSDS DATASET)       *****************************************************************        IDENTIFICATION DIVISION.        PROGRAM-ID.    CUSTOMER.        ENVIRONMENT DIVISION.        CONFIGURATION SECTION.        INPUT-OUTPUT SECTION.        FILE-CONTROL.            SELECT MSTRFILE ASSIGN TO SYSMSTR                            ORGANIZATION IS INDEXED  RECORD KEY IS PHONE                            ACCESS IS DYNAMIC  FILE STATUS IS FS-CODE.       *        DATA DIVISION.        FILE SECTION.        FD  MSTRFILE            RECORD 80.        01  MSTRDATA.            03 PHONE                     PIC X(10).            03 NAME                      PIC X(20).            03 ADDR                      PIC X(50).        WORKING-STORAGE SECTION.        01  FS-CODE                      PIC XX.       *        PROCEDURE DIVISION.            OPEN INPUT MSTRFILE.            DISPLAY "INPUT CUSTOMER PHONE NUMBER." UPON SYSOUT.        LOOP.            MOVE SPACE TO PHONE.            ACCEPT PHONE FROM SYSIN.            IF PHONE = SPACE THEN CLOSE MSTRFILE                                  STOP RUN.            READ MSTRFILE.            IF FS-CODE = "00"               THEN DISPLAY "NAME=", NAME,                            "INFO=", ADDR UPON SYSOUT               ELSE DISPLAY "RECORD NOT FOUND." UPON SYSOUT.            GO TO LOOP. 

レコードの先頭10バイトが検索キーです。COBOLなどでは言語仕様がアクセス方式を隠してしまうので、プログラミングではVSAMをアクセスしているという意識があまりありません。実際にVSAMを意識するのはデータセットを作成したりデータをローディングする作業においてでしょう。



These are our most popular posts:

一時的VSAMデータセットを使う » 「メインフレーム・コンピュータ」で遊ぼう

2010年5月17日 ... 簡単操作のPC向け分析ソフトウェアを発表 2012年3月8日; 中国銀行のスマートフォン 向けサービス拡充を支援 2012年3月7日; 役員人事のお知らせ 2012 ... そのため先行 ステップでAMSユーティリティーを実行して、VSAMデータセットを作成し、後続ステップ でアクセスした後、最終ステップで削除したり、ボリューム上にそのまま残しておき、次の 実行時に割り振り前に削除をする、などを行っていることもよくあります。 read more

CA VSAM管理製品の ご紹介

その役割は、物理的もしくは論理的破壊が起こった場合に CICS およびバッチ VSAM データをリカバリーできるようにすること ... リカバリー・ジョブの自動作成; パネル・ インターフェースからのバックアップの起動; 必要な場合にデータ・セットを事前割り振り することによる、バックアップの支援 (REPRO などによる) ... CICS VSAM Recovery for z/OS (CICS VR) は、CICS、バッチ、または結合環境のいずれで使用している場合で あっても、( ... read more

CICS VSAM Copy for z/OS, V1.1 - 製品・サービス発表レター

CICS VSAM Copy for z/OS V1.1 (CICS VSAM Copy) は、ビジネスに不可欠な オンライン処理を利用して、VSAM ファイルの ... 本発表レターの[1-2] 「製品機能詳細」 に記載されている制約事項を除き、CICS TSがサポートするすべてのVSAMデータセット を .... 視覚障害のある人は、支援テクノロジー製品を使用すると、このパネルを利用でき ます。 read more

IDCAMS » 「メインフレーム・コンピュータ」で遊ぼう

2011年2月2日 ... 比較的単機能(例えばコピーだけ、プリントだけ)で構成されているデータセット・ ユーティリティーと異なり、多くの機能が ... ALTER, データセット名を変更したり、VSAM データセットの各種属性(バッファ数、キーの位置や長さなど)を変更する。 read more

Related Posts



0 コメント:

コメントを投稿