COBOLのEXEC SQLの使い方を完全ガイド!初心者でもわかるデータベース接続の基本構文
生徒
「先生、COBOLからデータベースにアクセスすることってできるんですか?」
先生
「もちろんできますよ。COBOLでは、EXEC SQLという特別な命令を使って、SQL文を直接書くことができます。」
生徒
「SQLって、あのデータベースの言語ですよね?COBOLの中で使えるんですか?」
先生
「そうなんです。COBOLの中にSQL文を埋め込むことで、データの取得や更新を行うことができます。今日はその基本構文を一緒に学びましょう。」
1. EXEC SQLとは?
COBOLのEXEC SQLとは、プログラムの中にSQL文(データベース操作用の命令)を直接書くための特別な構文です。SQL(エスキューエル)は「Structured Query Language(構造化問い合わせ言語)」の略で、データベースの中の情報を読み書きするために使われます。
つまり、COBOLとSQLを組み合わせることで、銀行や企業の基幹システムのように「ファイルだけでなく、データベース(DB)」にアクセスできるようになります。
2. EXEC SQLの基本構文
基本的な書き方はとてもシンプルです。SQL文をEXEC SQLとEND-EXECで囲むだけです。これでCOBOLのプログラム内でSQLを実行できるようになります。
EXEC SQL
SQL文
END-EXEC
このように、SQLをそのままCOBOLの中に書けるのが特徴です。EXEC SQLで始まり、END-EXECで終わる、これが基本の形になります。
3. データベースに接続する構文
まず最初に、データベースに接続する必要があります。これにはCONNECT文を使います。データベースのユーザー名とパスワードを指定して接続します。
EXEC SQL
CONNECT TO sampledb USER 'user1' USING 'password1'
END-EXEC
この例では、「sampledb」というデータベースに「user1」というユーザー名と「password1」というパスワードで接続しています。実際の環境では、データベース名や認証情報はシステムによって異なります。
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)
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. データベース操作の流れを理解しよう
COBOLでデータベースを扱う際の流れは、大まかに次のようになります。
- データベースに接続する(
CONNECT) - SQL文を実行する(
SELECTやINSERTなど) - 結果を変数に格納して処理する
- 必要があればトランザクションを確定する(
COMMIT) - 最後に接続を切る(
DISCONNECT)
この流れをしっかり覚えておけば、どんなデータベース操作でも迷わず書けるようになります。
7. 実際の動作イメージ
では、実際にプログラムが動作するときの出力イメージを見てみましょう。
社員名は:山田太郎
このように、SQLで取得したデータがCOBOL変数に入り、それを画面に表示できます。まるで「COBOLがデータベースと会話している」ようですね。
8. エラー処理の基本
データベース操作では、接続エラーやSQLの書き間違いなどのトラブルも発生します。COBOLでは、SQLCODEという変数を使ってSQLの実行結果を確認します。0なら成功、負の値ならエラー、正の値は警告を意味します。
IF SQLCODE NOT = 0
DISPLAY "エラーが発生しました。SQLCODE=" SQLCODE
END-IF
これにより、万が一のトラブルにも対応できる堅牢なプログラムを作ることができます。