COBOLで学ぶカーソル操作と複数行データ取得の基本
先生と生徒の会話形式で理解しよう
生徒
「先生、COBOLでデータベースから複数のデータを一度に取得する方法はありますか?」
先生
「はい、それにはカーソルという仕組みを使います。複数行のデータを順番に取得するのにとても便利です。」
生徒
「カーソルって何ですか?ちょっとイメージが湧かないです。」
先生
「カーソルは、データベースの中を指す“しおり”のようなものです。これを使うと、SELECT文で取得した複数行を1行ずつ順番に読み込むことができます。」
1. カーソルとは?
COBOLでデータベース接続を行うとき、カーソルは複数行のデータを管理し、必要な順序で取り出すための仕組みです。例えば社員データをすべて取得したい場合、カーソルを使って1行ずつ処理できます。プログラム内で大量データを安全に処理するために非常に重要です。
2. カーソルを使った複数行取得の基本手順
- カーソルの宣言:取得したいデータをSELECT文で定義します。
- カーソルのオープン:データベースにアクセスして、取得可能な状態にします。
- FETCHでデータ取得:1行ずつカーソルからデータを取り出します。
- カーソルのクローズ:処理が終わったらカーソルを閉じます。
この手順を理解することで、大量データを効率的に処理できるようになります。
3. COBOLでのカーソル宣言と使用例
WORKING-STORAGE SECTION.
01 EMP-NAME PIC X(20).
01 EMP-AGE PIC 9(3).
01 SQLCODE PIC S9(9) COMP.
PROCEDURE DIVISION.
EXEC SQL
DECLARE EMP-CURSOR CURSOR FOR
SELECT EMP_NAME, AGE
FROM EMPLOYEE
ORDER BY AGE
END-EXEC.
EXEC SQL
OPEN EMP-CURSOR
END-EXEC.
PERFORM UNTIL SQLCODE NOT = 0
EXEC SQL
FETCH EMP-CURSOR INTO :EMP-NAME, :EMP-AGE
END-EXEC
IF SQLCODE = 0
DISPLAY "社員名:" EMP-NAME " 年齢:" EMP-AGE
END-IF
END-PERFORM.
EXEC SQL
CLOSE EMP-CURSOR
END-EXEC.
社員名:田中太郎 年齢:25
社員名:山田花子 年齢:30
社員名:佐藤次郎 年齢:35
この例では、EMPLOYEEテーブルの全社員データを年齢順に取得し、1行ずつ表示しています。
4. 複数行取得のポイント
カーソルを使うと、大量のデータをまとめて取得せず、1行ずつ順番に処理できるため、メモリ効率が良く安全です。また、FETCHで取得したデータを使ってさらに条件分岐や集計を行うことも可能です。初心者でもこの流れを理解すると、COBOLでのデータベース操作がぐっとわかりやすくなります。
5. 初心者向けまとめポイント
- カーソルはデータベースの“しおり”のようなもの。
- OPEN → FETCH → CLOSEの順序で使う。
- 大量データの順次処理に最適。
- FETCHで取得したデータをCOBOL内で自由に表示・加工可能。
これらの基本を押さえれば、COBOLでのデータベース操作の基礎をしっかり理解できます。