カテゴリ: COBOL 更新日: 2025/11/16

COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方

COBOLでデータベース接続する基本の考え方
COBOLでデータベース接続する基本の考え方

先生と生徒の会話形式で理解しよう

生徒

「先生、COBOLのプログラムってデータベースとやり取りできるんですか?」

先生

「もちろんできますよ!銀行の口座情報や顧客データなど、多くのCOBOLシステムはデータベースとつながっています。」

生徒

「でも、どうやって接続するんですか?パソコンでファイルを開くのとは違うんですよね?」

先生

「そのとおりです。COBOLでデータベースを操作するには、『埋め込みSQL(エンベデッドSQL)』という仕組みを使うんです。今日はその基本的な考え方を一緒に学びましょう。」

1. COBOLとデータベースの関係とは?

1. COBOLとデータベースの関係とは?
1. COBOLとデータベースの関係とは?

COBOL(コボル)は、もともと業務システムを作るために生まれた言語です。銀行、保険、物流などで使われるシステムの多くは「大量のデータ」を扱うため、データベースと連携することが欠かせません。データベースとは、顧客情報や商品情報などを整理して保管する「データの倉庫」のようなものです。

COBOLが扱うデータベースには、主に以下のような種類があります。

  • DB2(ディービーツー):IBM製の大規模業務システム向けデータベース
  • Oracle Database:多くの企業で使われている商用データベース
  • PostgreSQLMySQLなどのオープンソース系データベース

COBOLでは、これらのデータベースに「SQL文(エスキューエルぶん)」を使ってアクセスします。SQLとは「Structured Query Language(構造化問い合わせ言語)」の略で、データを取り出したり登録したりするための共通の言葉です。

2. 埋め込みSQLとは?

2. 埋め込みSQLとは?
2. 埋め込みSQLとは?

COBOL単体ではデータベースと直接通信できません。そのため、SQL文をCOBOLのプログラム内に書いて、データベースに指示を出す方法を使います。それが埋め込みSQL(Embedded SQL)です。

イメージとしては、「COBOLが事務員さん、SQLがデータベースに話しかける手紙」という感じです。COBOLがSQL文を使って「このデータを教えて」と依頼すると、データベースが結果を返してくれるのです。


EXEC SQL
    SELECT CUSTOMER-NAME, BALANCE
    INTO :WS-CUST-NAME, :WS-BALANCE
    FROM CUSTOMER-TABLE
    WHERE CUSTOMER-ID = :WS-CUST-ID
END-EXEC.

上のコードでは、EXEC SQL ~ END-EXECの間にSQL文が書かれています。:(コロン)がついた変数(例::WS-CUST-ID)は、COBOLの中で定義された変数です。SQLが取得した結果をCOBOLの変数に受け渡すことで、プログラム内で扱えるようになります。

3. データベース接続の基本手順

3. データベース接続の基本手順
3. データベース接続の基本手順

COBOLでデータベースに接続してデータを扱うには、いくつかのステップがあります。順番に見ていきましょう。

  1. データベースとの接続を開始する
  2. SQL文でデータを操作する(検索・追加・更新・削除)
  3. 接続を終了する

この流れは、まるで「お店で商品を注文する」ようなものです。まずお店(データベース)に入って(接続)、注文をして(SQLを実行)、帰る(接続終了)という手順です。


EXEC SQL
    CONNECT TO 'SAMPLEDB' USER 'COBOLUSER' USING 'PASSWORD'
END-EXEC.

EXEC SQL
    SELECT COUNT(*) INTO :WS-COUNT
    FROM EMPLOYEE
END-EXEC.

EXEC SQL
    DISCONNECT CURRENT
END-EXEC.

このサンプルでは、「SAMPLEDB」というデータベースに接続し、社員数を数えてから切断するという処理をしています。CONNECTで接続し、DISCONNECTで終了する、という流れが基本です。

4. データベース接続に必要な環境設定

4. データベース接続に必要な環境設定
4. データベース接続に必要な環境設定

COBOLでデータベースを使うには、あらかじめ環境を整えておく必要があります。特に、プリコンパイルという手順が重要です。プリコンパイルとは、「COBOLのプログラムの中にあるSQL文をあらかじめ変換して、COBOLが理解できる形にする」ことです。

たとえば、IBMのDB2を使う場合、以下のような流れになります。

  1. COBOLのソースにEXEC SQLでSQL文を書く
  2. プリコンパイラ(PRECOMPILER)でSQLをCOBOLに変換
  3. COBOLコンパイラで通常どおりコンパイルして実行

このように、データベースとやり取りするCOBOLプログラムは、少し特別な手順を踏む必要があります。これを知っておくことで、エラーの原因を理解しやすくなります。

5. 実際のプログラム例を見てみよう

5. 実際のプログラム例を見てみよう
5. 実際のプログラム例を見てみよう

では、COBOLで実際にデータベースから社員の情報を取得するサンプルを見てみましょう。ここでは、社員IDを入力して、名前と部署名を取得するプログラムを例にします。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. DB-CONNECT-SAMPLE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-EMP-ID     PIC 9(5).
       01 WS-EMP-NAME   PIC X(30).
       01 WS-DEPT       PIC X(20).

       EXEC SQL
           INCLUDE SQLCA
       END-EXEC.

       PROCEDURE DIVISION.
           DISPLAY "社員IDを入力してください:".
           ACCEPT WS-EMP-ID.

           EXEC SQL
               CONNECT TO 'EMPDB' USER 'USER1' USING 'PASS1'
           END-EXEC.

           EXEC SQL
               SELECT EMP-NAME, DEPT-NAME
               INTO :WS-EMP-NAME, :WS-DEPT
               FROM EMPLOYEE
               WHERE EMP-ID = :WS-EMP-ID
           END-EXEC.

           DISPLAY "名前:" WS-EMP-NAME.
           DISPLAY "部署:" WS-DEPT.

           EXEC SQL
               DISCONNECT CURRENT
           END-EXEC.

           STOP RUN.

実行結果のイメージ:


社員IDを入力してください:
10001
名前:山田太郎
部署:営業部

このように、COBOLのプログラムでSQL文を直接書くことで、データベースとやり取りができます。SQLCA(SQL Communication Area)は、SQLの実行結果やエラー情報を格納する領域で、ほとんどのCOBOLデータベース連携で使われます。

6. まとめると理解しやすいポイント

6. まとめると理解しやすいポイント
6. まとめると理解しやすいポイント
  • COBOLでデータベースを扱うには、埋め込みSQLを使う
  • SQL文はEXEC SQL ~ END-EXECで囲む
  • 変数をやり取りするときは:をつける
  • 接続(CONNECT)と切断(DISCONNECT)を忘れずに行う

COBOLとデータベースの連携は、実務システムでは欠かせない重要なスキルです。最初は少し難しそうに感じるかもしれませんが、仕組みを理解すればとても論理的で扱いやすいものです。

カテゴリの一覧へ
新着記事
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
COBOLのUSAGE句(DISPLAY・COMPなど)をやさしく解説!初心者でもわかる効率化の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド