徹底解説!一歩先を行くCOBOLとデータベースの連携とは | 応用ガイド

COBOL(コボル)言語と連携するデータベースとは

応用-データベースの連携-イメージ

データベースとは

大量データを、コンピューターの処理しやすい形に整理した情報がデータベースです。データの検索、追加、更新、削除が容易にできるため、様々なシステム開発で利用されています。

データベースには階層型、ネットワーク型、リレーションナル型などありますが、一般的にデータベースと言えば、リレーショナル型データベース(RDB)を指します。RDBは、プログラムとデータが分離している事と問い合わせ言語(SQL)が利用できる事が特徴です。前者は、データ構造に修正があってもプログラムへの影響が少なく、後者は、データベースの操作が容易にできるメリットがあります。

(ご参考)データベースとファイルの違い

データの保存や利用には、データベース以外にもファイルが利用できます。ただし、ファイルと比べてデータベースは、データの保管場所を気にする必要がなく、複数ユーザがファイルを同時に共有して利用する事もできるので、その特徴をよく理解した上で、利用用途に合わせた使い分けをしましょう。

COBOLで利用されているデータベース

データベース(データベースを管理するシステム:DBMS)は、企業からオープンソースまでとても多くの製品が公開されています。COBOLで利用されている主なDBMSには、以下のようなものがあります。

  • オープン系システム:Oracle(ORACLE社)、SQL Server(Microsoft社)
  • 基幹系システム:Db2(IBM社)

気軽に学習用として使えるデータベースとしては、オープンソースのDBMSがお勧めです。今回はその中の1つ「PostgreSQL(※)」を使って、実際にデータベース(及びテーブル)の作成からデータを検索するまでの流れをご紹介します。

(ご参考)

  • 日本PostgreSQLユーザ会(ダウンロード):
    https://www.postgresql.jp/download
    ※PostgreSQLは、米カリフォルニア大学の発祥の地であるバークレー校で開発され、10年以上にわたり研究されたPostgresをもとにしたデータベースと言われています。

データベースの作成方法

PostgreSQLのインストールが完了したら、RDBの管理や操作を行う問い合わせ言語、SQL文(※2)を利用して、以下のように①データベース、②テーブル、③データの順で作成し、最後に④作成したテーブルを検索して結果を確認してみましょう。

以下のようなGUIのツールを利用すると操作も視覚的でわかりやすいでしょう。

(ご参考)

①データベース作成

  1. CREATE DATABASE [データベース名]

②テーブル作成

  1. CREATE TABLE [テーブル名] (
  2.   [列名] [データ型] [制約],
  3. ・・
  4.   )

③データ作成

  1. INSERT INTO [テーブル名]
  2.  ( [列名1],[列名2]・・) VALUES
  3.  ( [値1],[値2]・・)

④テーブル検索(結果確認)

  1. SELECT * FROM [テーブル名]

(例)PostgreSQLに標準で付属しているpsqlでの実行結果

①データベース作成

応用-データベースの連携-データベース作成

②テーブル作成

応用-データベースの連携-テーブル作成

③データ作成

応用-データベースの連携-データ作成

④テーブル検索(結果確認)

応用-データベースの連携-テーブル検索

COBOLとPostgreSQLを連携させるには

データベースの作成が確認できたところで、実際にCOBOLと連携してみましょう。今回はOpen Cobolを利用してPostgreSQLと連携してみます。Open CobolとPostgreSQLの連携にはOpen Cobol ESQLなどのプリコンパイラが必要になります。プリコンパイラを利用する事でCOBOLプログラム内に直接SQL文を記述したプログラムを作成する事ができるようになります。

(ご参考)

(例)テーブルからデータを検索するサンプルPGM

dbsample.cbl

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. dbsample.
  3. DATA DIVISION.
  4.  
  5. WORKING-STORAGE SECTION.
  6. 01 TID PIC X(4).
  7. 01 TNAME PIC X(10).
  8.  
  9. ******** (1)ホスト変数の定義 ********
  10. EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  11. 01 DBNAME PIC X(32) VALUE "testdb".
  12. 01 USERNAME PIC X(32) VALUE "PostgreSQLユーザID".
  13. 01 PASSWORD PIC X(32) VALUE "ユーザIDのパスワード".
  14. EXEC SQL END DECLARE SECTION END-EXEC.
  15. *************************************
  16. ******** (2)共通領域の定義 **********
  17. EXEC SQL INCLUDE SQLCA END-EXEC.
  18. *************************************
  19. PROCEDURE DIVISION.
  20. MAIN.
  21. ******** (3)データベースと接続 ******
  22. EXEC SQL
  23. CONNECT :USERNAME IDENTIFIED BY :PASSWORD
  24. USING :DBNAME
  25. END-EXEC.
  26. *************************************
  27. ******** (4)データベースとアクセス **
  28. EXEC SQL
  29. SELECT tid,tname
  30. INTO :TID,:TNAME
  31. FROM test
  32. WHERE tid='0001'
  33. END-EXEC.
  34. *************************************
  35. DISPLAY TID TNAME.
  36. STOP RUN.

記述項目

記述内容

(1)ホスト変数の定義 ・COBOL、データベース間のデータ
連携用変数を定義します。
(2)共通領域の定義 ・データベースのエラー情報が格納
されます。
(3)データベースと接続 ・データベースに接続します。
(4)データベースと
アクセス
・データベースの操作(検索、追加、
更新、削除など)を行います。

(補足)コンパイル前にはプリコンパイルが必要です。

・Open COBOL ESQL でプリコンパイルします。

  1. $ ocesql dbsample.cbl dbsample.cob

・プリコンパイル後、その結果をもとにしてコンパイルします。

(PostgreSQLインストールディレクトリを指定します。)

  1. $ cobc -x -locesql -lpq -L/usr/local/opt/postgres/lib dbsample.cob

実行結果

応用-データベースの連携-実行結果

いかがでしたでしょうか。データベースとはどういうものか、COBOLとデータベースを連携するにはどうすればいいか、理解いただけた事と思います。

実際のシステム開発の現場では、データベースの利用は避けては通れません。COBOL言語のデータベースの利用方法と共に、実際の操作にあたるSQL文についてもしっかり学習するようにしましょう。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門