カテゴリ: COBOL 更新日: 2025/12/08

COBOLのEXEC SQLの使い方を完全ガイド!初心者でもわかるデータベース接続の基本構文

EXEC SQLの基本構文と書き方を学ぼう
EXEC SQLの基本構文と書き方を学ぼう

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

生徒

「先生、COBOLからデータベースにアクセスすることってできるんですか?」

先生

「もちろんできますよ。COBOLでは、EXEC SQLという特別な命令を使って、SQL文を直接書くことができます。」

生徒

「SQLって、あのデータベースの言語ですよね?COBOLの中で使えるんですか?」

先生

「そうなんです。COBOLの中にSQL文を埋め込むことで、データの取得や更新を行うことができます。今日はその基本構文を一緒に学びましょう。」

1. EXEC SQLとは?

1. EXEC SQLとは?
1. EXEC SQLとは?

COBOLのEXEC SQLとは、プログラムの中にSQL文(データベース操作用の命令)を直接書くための特別な構文です。SQL(エスキューエル)は「Structured Query Language(構造化問い合わせ言語)」の略で、データベースの中の情報を読み書きするために使われます。

つまり、COBOLとSQLを組み合わせることで、銀行や企業の基幹システムのように「ファイルだけでなく、データベース(DB)」にアクセスできるようになります。

2. EXEC SQLの基本構文

2. EXEC SQLの基本構文
2. EXEC SQLの基本構文

基本的な書き方はとてもシンプルです。SQL文をEXEC SQLEND-EXECで囲むだけです。これでCOBOLのプログラム内でSQLを実行できるようになります。


EXEC SQL
    SQL文
END-EXEC

このように、SQLをそのままCOBOLの中に書けるのが特徴です。EXEC SQLで始まり、END-EXECで終わる、これが基本の形になります。

3. データベースに接続する構文

3. データベースに接続する構文
3. データベースに接続する構文

まず最初に、データベースに接続する必要があります。これにはCONNECT文を使います。データベースのユーザー名とパスワードを指定して接続します。


EXEC SQL
    CONNECT TO sampledb USER 'user1' USING 'password1'
END-EXEC

この例では、「sampledb」というデータベースに「user1」というユーザー名と「password1」というパスワードで接続しています。実際の環境では、データベース名や認証情報はシステムによって異なります。

4. データを取得する(SELECT文)

4. データを取得する(SELECT文)
4. データを取得する(SELECT文)

次に、データベースから情報を取り出す方法を見てみましょう。SQLの基本であるSELECT文を使います。COBOLでは、結果を格納するための変数(ホスト変数)を事前に定義しておきます。


WORKING-STORAGE SECTION.
01  EMP-NAME    PIC X(30).

PROCEDURE DIVISION.
    EXEC SQL
        SELECT EMPLOYEE_NAME
        INTO :EMP-NAME
        FROM EMPLOYEE
        WHERE EMPLOYEE_ID = 1001
    END-EXEC.

    DISPLAY "社員名は:" EMP-NAME.

ここで出てくる「ホスト変数」とは、COBOLの中でSQLの結果を受け取るための変数のことです。COBOL変数の前には「コロン(:)」をつけるのがルールです。これが「SQLとCOBOLの橋渡し」のような役割をします。

5. データを更新する(INSERT・UPDATE・DELETE)

5. データを更新する(INSERT・UPDATE・DELETE)
5. データを更新する(INSERT・UPDATE・DELETE)

COBOLのEXEC SQLでは、データの追加や更新、削除もできます。以下は新しいデータを追加するINSERT文の例です。


EXEC SQL
    INSERT INTO EMPLOYEE (EMPLOYEE_ID, EMPLOYEE_NAME)
    VALUES (2001, '田中太郎')
END-EXEC.

また、データを更新する場合はUPDATE文、削除する場合はDELETE文を使います。


EXEC SQL
    UPDATE EMPLOYEE
    SET EMPLOYEE_NAME = '鈴木花子'
    WHERE EMPLOYEE_ID = 2001
END-EXEC.

EXEC SQL
    DELETE FROM EMPLOYEE
    WHERE EMPLOYEE_ID = 2001
END-EXEC.

このように、SQLの基本操作はすべてCOBOL内で実行できます。これにより、業務システムのデータを直接操作できるようになります。

6. データベース操作の流れを理解しよう

6. データベース操作の流れを理解しよう
6. データベース操作の流れを理解しよう

COBOLでデータベースを扱う際の流れは、大まかに次のようになります。

  1. データベースに接続する(CONNECT
  2. SQL文を実行する(SELECTINSERTなど)
  3. 結果を変数に格納して処理する
  4. 必要があればトランザクションを確定する(COMMIT
  5. 最後に接続を切る(DISCONNECT

この流れをしっかり覚えておけば、どんなデータベース操作でも迷わず書けるようになります。

7. 実際の動作イメージ

7. 実際の動作イメージ
7. 実際の動作イメージ

では、実際にプログラムが動作するときの出力イメージを見てみましょう。


社員名は:山田太郎

このように、SQLで取得したデータがCOBOL変数に入り、それを画面に表示できます。まるで「COBOLがデータベースと会話している」ようですね。

8. エラー処理の基本

8. エラー処理の基本
8. エラー処理の基本

データベース操作では、接続エラーやSQLの書き間違いなどのトラブルも発生します。COBOLでは、SQLCODEという変数を使ってSQLの実行結果を確認します。0なら成功、負の値ならエラー、正の値は警告を意味します。


IF SQLCODE NOT = 0
    DISPLAY "エラーが発生しました。SQLCODE=" SQLCODE
END-IF

これにより、万が一のトラブルにも対応できる堅牢なプログラムを作ることができます。

まとめ

まとめ
まとめ

COBOLのEXEC SQLは、企業システムや金融システムのような大規模環境で必須となるデータベース連携を実現する非常に重要な仕組みです。とくに、CONNECTによる接続処理、SELECTによるデータ取得、INSERT・UPDATE・DELETEによる更新処理など、日常的な業務の裏側で動く多くの処理がこの構文によって支えられています。これらの構文は、EXEC SQL と END-EXEC によってCOBOL内部に自然に埋め込まれ、ホスト変数を介してデータを受け渡すことで、実務的な情報処理を安全かつ効率良く行えるようになります。また、SQLCODEによるエラー判定は、運用現場でのトラブル防止に欠かせない要素であり、SQLの成功・警告・失敗を細かく判断しながら堅牢な処理を実現できます。 以下では、学んだ内容を整理しながら、実際の処理をイメージしやすいようサンプルプログラムを交えて振り返ります。COBOLとデータベースの関係性を理解することで、これまでファイル処理が中心だった場面でも柔軟に設計できるようになり、基幹系システムの設計力がより強固なものとなります。

サンプルプログラムで流れを再確認

EXEC SQL を利用した基本的な一連の流れを再度整理したサンプルを以下に示します。CONNECT による接続、SELECT による取得、COMMIT、DISCONNECT までの処理を通して、実際の業務システムがどのようにデータベースと連携しているかがよくわかります。


WORKING-STORAGE SECTION.
01  OUT-NAME   PIC X(30).
01  OUT-ID     PIC 9(4).

PROCEDURE DIVISION.
    EXEC SQL
        CONNECT TO sampledb USER 'user1' USING 'password1'
    END-EXEC

    EXEC SQL
        SELECT EMPLOYEE_NAME
        INTO :OUT-NAME
        FROM EMPLOYEE
        WHERE EMPLOYEE_ID = 1001
    END-EXEC

    IF SQLCODE = 0
        DISPLAY "取得した社員名:" OUT-NAME
    ELSE
        DISPLAY "取得に失敗しました。SQLCODE=" SQLCODE
    END-IF

    EXEC SQL
        COMMIT
    END-EXEC

    EXEC SQL
        DISCONNECT CURRENT
    END-EXEC

こうした構成を理解しておくと、COBOLによるデータ連携の基礎がしっかり身につき、SELECT・INSERT・UPDATE・DELETE といった基本命令を「どの場面で、どのように使うべきか」判断できるようになります。とくに企業システムでは、膨大なデータを扱うため、プログラムの書き方ひとつが業務効率に大きく影響します。EXEC SQL の基礎を確実に押さえておくことは、プログラマとして欠かせない視点です。 また、ホスト変数の使い方はデータ取得の正確性を左右するため、PICの定義や型の違いにも注意を払う必要があります。文字列ならPIC X、数値ならPIC 9 といった基本を意識しながら、SQLが返す値を正確に保持できるようにすることが大切です。こうした積み重ねが、堅牢で安定したプログラムの土台になります。

先生と生徒の振り返り会話

生徒

「先生、今日のEXEC SQLの内容を振り返ってみると、COBOLって思ったより柔軟にデータベースとやり取りできるんですね。」

先生

「その通りです。COBOLは古い言語というイメージが強いですが、企業システムの中心として現在も広く使われており、SQLとの組み合わせによって強力な処理を書くことができますよ。」

生徒

「ホスト変数に値を入れて受け取る仕組みも、実際に見てみると便利ですね。SQLCODE のチェックも大切なんだと理解できました。」

先生

「エラー処理は現場で特に重要になるので、今日学んだ流れは必ず覚えておきましょう。CONNECT、SELECT、更新処理、COMMIT、DISCONNECT。この一連の流れを自然に書けるようになれば、実務レベルで活用できます。」

生徒

「これでデータベースを扱うプログラムが書けるイメージがつきました!次はもっと複雑なSELECTやJOINも挑戦してみたいです。」

先生

「良い心がけですね。基本をしっかり身につければ、応用は自然とできるようになりますよ。」

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方