0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

若手が考えるメインフレーム攻略10~メインフレームシステムにおけるDb2概要~

0
Last updated at Posted at 2026-09-30

1. はじめに

メインフレーム(z/OS)環境におけるデータベース管理システムとして、広く利用されているのが「IMS Db2 for z/OS」です。

本記事では、メインフレーム(z/OS)環境におけるDb2の位置づけ、実際のプログラムでの書き方、ならびにIMSなど他ミドルウェアとの比較やDb2のメリットなどについて解説します。


2. Db2とは

Db2の定義

DB2(正式名称:IBM Db2)は、 z/OS上で動作し、データベース管理機能をシステムに提供するミドルウェア(RDBMS) です。

データベース管理システム(DBMS)の役割

DB2は単なるデータの保存場所(ファイル)ではありません。

「アプリケーションからの要求を受け取り、データの検索・追加・更新・削除や安全管理を一括で行うソフトウェア」 です。

複数アプリケーションからの同時アクセスに対するデータ保護や、システム障害時の整合性維持を管理します。

【ファイルに直接アクセスする場合】
アプリ A ──┐
          ├── データの直接操作(同時更新による破壊リスクあり)
アプリ B ──┘

【DB2を経由する場合】
アプリ A ──┐
          ├── [ DB2 ] ── データの読み書き(順番・整合性を一括管理)
アプリ B ──┘

※1


3. なぜDb2を使うのか?(DBMSを利用するメリット)

従来のファイル管理(VSAM等)と比較した際、Db2(リレーショナルデータベース)を採用する大きなメリットは以下の3点です。

メリット1:データの取り出し・検索がとにかく自由

VSAMなどのファイル管理では、「キーを指定して1件読む」「先頭から順番に読む」といった限定的なアクセスしかできません。

一方、Db2ではデータが行と列の「表(テーブル)」で管理されており、SQL文を1行書くだけで「条件に合うデータだけ」「特定の列だけ」「複数の表をくっつけて」取得できます。

メリット2:プログラムとデータ構造が切り離されている

従来のファイル管理では、データセットのレイアウトに1項目(例えば「電話番号」)を追加するだけで、そのデータセットを読み込むすべてのCOBOLプログラムを修正・再コンパイルする必要がありました。

Db2の場合、テーブルに新しい列を追加しても、その列を使わない既存のCOBOLプログラムには影響しません。(修正・再コンパイルが不要)

メリット3:データ整合性と排他制御をDb2が自動でやってくれる

複数のプログラムが同時に同じデータを書き換えようとした際の「順番待ち(ロック)」や、プログラムが途中で異常終了した際の「データの元戻し(ロールバック)」を、プログラム側に複雑なロジックを書かなくてもDb2が自動で処理してくれます。


4. COBOLの中でSQLはどう書かれているのか?

メインフレームのCOBOLプログラムでは、「埋め込みSQL(Embedded SQL)」という仕組みを使い、COBOLコードの中に直接SQL文を記述します。

実際のCOBOLコード例(データ検索)

   DATA DIVISION.
   WORKING-STORAGE SECTION.
   EXEC SQL BEGIN DECLARE SECTION END-EXEC.
   01  HOST-CUST-ID    PIC X(3).
   01  HOST-CUST-NAME  PIC N(10).
   EXEC SQL END DECLARE SECTION END-EXEC.

   PROCEDURE DIVISION.
   MAIN-RTN.
       MOVE '001' TO HOST-CUST-ID.
       

  * --- COBOLの中に直接SQLを書き込む ---
       EXEC SQL
           SELECT NAME
             INTO :HOST-CUST-NAME
             FROM CUSTOMER
            WHERE ID = :HOST-CUST-ID
       END-EXEC.
  * --- SQLの終了  ---
       

       IF SQLCODE = 0
           DISPLAY '顧客名: ' HOST-CUST-NAME
       ELSE
           DISPLAY 'エラーが発生しました SQLCODE: ' SQLCODE
       END-IF.

※2

ポイント解説

  1. EXEC SQL 〜 END-EXEC. で囲む
    COBOLコンパイラに「ここはSQL文ですよ」と教えるための目印です。
  2. ホスト変数(:変数名)でデータをやり取りする
    COBOL側で定義した変数名の頭にコロン(:)を付けることで、SQL文の中で使えます。
  3. SQLCODE で結果を確認する
    SQL実行後、Db2は SQLCODE という変数に実行結果のステータスコードを返します(成功なら 0 、データなしなら 100 など)。

5. DB2のデータはどこに保存されている?

Db2のテーブルに入っているデータは、最終的に z/OS上の VSAM LDS(Linear Data Set) という物理データセットの中に保存されています。

Db2サブシステム
  └─ Database(管理上のグループ単位)
       └─ Table(表データ)
            └─ VSAM Linear Data Set (LDS) ※物理ファイル

※3

「Db2=VSAM」というわけではなく、「Db2という管理ミドルウェアが、データを保持する物理ファイルとしてVSAM LDSを利用している」 という関係性になります。


6. システム内での役割分担とコミット・ロック管理

オンライン処理システム(IMS DC + Db2など)では、以下のように役割が分担されています。

コンポーネント 代表例 役割
DC(通信) IMS DC, CICS 画面や外部からのトランザクション受信・起動
アプリケーション COBOL等 業務ロジックの実行・SQLの発行
DBMS Db2 SQLの実行、データの整合性・ロック管理

※4

IMSとDb2を併用した際のコミット・ロック管理

IMS DCがトランザクションを受け付け、COBOLプログラムがDb2へアクセスする構成では、排他制御(ロック) や更新の確定処理が重要になります。

アプリがSQLを発行した時点では、Db2は対象のデータにロックをかけて更新を行いますが、まだ確定(コミット)はしません。

2相コミット(Two-Phase Commit)による制御

IMS(指示役)とDb2(参加者)の間では、2相コミット処理 と呼ばれる2段階の同期制御機構が機能します。

  1. フェーズ1(準備要求):
    アプリケーションの処理が終わり、IMS側で同期点(CHKP 呼び出しや画面応答など)に達すると、IMSはDB2に対して「更新を確定できる状態か?」と問い合わせます。DB2はログを書き込み、問題がなければOKを返します。
  2. フェーズ2(一括確定):
    関係するすべての処理で準備OKが確認されたら、IMSはDb2に「コミット実行」を指示します。これにより、IMSのメッセージとDb2のデータ更新が同一のタイミングで同期して確定されます。
  3. 異常終了(アベンド)時の動作:
    処理途中でアベンドが発生した場合、IMSはDb2に対して「ロールバック(取り消し)」を指示します。Db2はデータを元の状態に戻し、保持していた行やページのロック(排他)を自動的に解除します。

この仕組みにより、DB2だけが勝手にコミットしてしまうことを防ぎ、システム全体の整合性が保たれています。


7. Db2・IMS DB・VSAMの比較

比較項目 Db2 IMS DB VSAM(KSDS等)
分類 RDBMS 階層型DB アクセス法・ファイル管理
データ構造 テーブル(行・列) 階層構造(セグメント) レコード
アクセス方式 SQL DL/I READ / WRITE文など
構造変更の影響 低い(列追加等の影響が少ない) 高い(階層構造変更の影響大) 高い(レイアウト変更の影響大)

※5


8. まとめ

  1. Db2はz/OS上で動作し、SQLによる柔軟なアクセスを提供するミドルウェアである
  2. データのアクセス自由度が高く、データ構造の変更に強いのが大きなメリットである
  3. COBOLプログラムからは EXEC SQL ... END-EXEC. を使ってSQLを埋め込む
  4. IMS DCと連携する場合でも、2相コミット機構により自動でロック解除やデータ整合性が維持される

9. 参考文献

当資料に掲載の情報・図表に関する注釈

番号 対象 区分 出典・利用許諾状況など
*1 図 生成AI 生成AI「Chat GPT」にて作成
*2 コード 生成AI 生成AI「Chat GPT」にて作成
*3 図 生成AI 生成AI「Chat GPT」にて作成
*4 表 自作 IBMが提供しているサイトを参考に作成 https://www.ibm.com/docs/ja/db2-for-zos/13.0.0
*5 表 自作 IBMが提供しているサイトを参考に作成https://www.ibm.com/docs/ja/db2-for-zos/13.0.0
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?