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

COBOLのFETCH文の使い方完全ガイド!初心者でもわかるデータベースからのデータ取得手順

FETCH文を使ったデータ取得の基本手順
FETCH文を使ったデータ取得の基本手順

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

生徒

「先生、COBOLでデータベースから複数のデータを取り出すときはどうしたらいいですか?」

先生

「それには、FETCH文を使います。FETCH文は、データベースの結果セットから一行ずつデータを取り出す命令です。」

生徒

「一行ずつ取り出すって、どういうことですか?」

先生

「イメージとしては、データベースが郵便局で、FETCH文が一通ずつ手紙を取り出す作業のようなものです。一度に全部持ってくるのではなく、一通ずつ安全に確認しながら取り出します。」

1. FETCH文とは?

1. FETCH文とは?
1. FETCH文とは?

COBOLのFETCH文は、SQLで開いたカーソルから次の行を取得するための文です。カーソルとは、SQL文で取得した結果セットを順番にたどるための“目印”のようなものです。結果セットとは、データベースから条件に合う行の集合です。

FETCH文を使うことで、複数行のデータを一行ずつ処理できるため、大量のデータでも効率的に処理できます。

2. FETCH文の基本手順

2. FETCH文の基本手順
2. FETCH文の基本手順

データベースからデータを取得する基本的な手順は以下の通りです。

  1. EXEC SQLでSELECT文を準備してカーソルを宣言する。
  2. EXEC SQLでカーソルをOPENする。
  3. EXEC SQLでFETCH文を使って結果セットから1行ずつデータを取得する。
  4. 必要に応じてループ処理で全件を処理する。
  5. 処理終了後、EXEC SQLでカーソルをCLOSEする。

この手順を守ることで、COBOLでのデータベース操作が安全かつ効率的に行えます。

3. FETCH文の使い方例

3. FETCH文の使い方例
3. FETCH文の使い方例

EXEC SQL
    DECLARE EMP_CURSOR CURSOR FOR
        SELECT EMPLOYEE_ID, EMPLOYEE_NAME
        FROM EMPLOYEE
        WHERE DEPARTMENT = :DEPT
END-EXEC.

EXEC SQL
    OPEN EMP_CURSOR
END-EXEC.

PERFORM UNTIL SQLCODE NOT = 0
    EXEC SQL
        FETCH EMP_CURSOR INTO :EMP-ID, :EMP-NAME
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY "社員ID:" EMP-ID " 社員名:" EMP-NAME
    END-IF
END-PERFORM.

EXEC SQL
    CLOSE EMP_CURSOR
END-EXEC.

この例では、EMPLOYEEテーブルから指定部署の社員情報を一件ずつ取得しています。PERFORM UNTIL SQLCODE NOT = 0のループで、FETCH文を順番に実行し、SQLCODEで結果を確認しています。

4. FETCH文使用時のポイント

4. FETCH文使用時のポイント
4. FETCH文使用時のポイント
  • カーソルは必ずOPENしてからFETCHする。
  • FETCHでデータを取得したら、SQLCODEを確認して成功かどうか判断する。
  • 全件取得後は必ずカーソルをCLOSEしてリソースを解放する。
  • FETCH文は結果セットの次の行を取得するため、ループ処理と組み合わせると全件取得が可能。
  • FETCH文とSQLCAを組み合わせると、エラー発生時の対処も簡単に行える。

5. 初心者が覚えておくこと

5. 初心者が覚えておくこと
5. 初心者が覚えておくこと

COBOLでのFETCH文は、データベースから安全にデータを取り出すための基本です。まずは1行ずつ取り出すこと、SQLCODEで結果を確認すること、カーソルのOPENとCLOSEを必ず行うことを意識すると理解しやすいです。FETCH文の使い方を覚えることで、データベース処理の基礎をしっかり身につけることができます。

6. FETCH文の実践例

6. FETCH文の実践例
6. FETCH文の実践例

WORKING-STORAGE SECTION.
01  DEPT      PIC X(10) VALUE "営業部".
01  EMP-ID    PIC 9(4).
01  EMP-NAME  PIC X(30).

PROCEDURE DIVISION.
    EXEC SQL
        DECLARE EMP_CURSOR CURSOR FOR
        SELECT EMPLOYEE_ID, EMPLOYEE_NAME
        FROM EMPLOYEE
        WHERE DEPARTMENT = :DEPT
    END-EXEC.

    EXEC SQL
        OPEN EMP_CURSOR
    END-EXEC.

    PERFORM UNTIL SQLCODE NOT = 0
        EXEC SQL
            FETCH EMP_CURSOR INTO :EMP-ID, :EMP-NAME
        END-EXEC.

        IF SQLCODE = 0
            DISPLAY "社員ID:" EMP-ID " 社員名:" EMP-NAME
        END-IF
    END-PERFORM.

    EXEC SQL
        CLOSE EMP_CURSOR
    END-EXEC.

社員ID:1001 社員名:山田太郎
社員ID:1002 社員名:佐藤花子
社員ID:1003 社員名:鈴木一郎

この例では、営業部の全社員情報をFETCH文で順番に取得し、画面に表示しています。FETCH文を理解すると、COBOLでのデータベース操作がスムーズに行えます。

まとめ

まとめ
まとめ

COBOLにおけるFETCH文は、データベースから一行ずつていねいに情報を取り出すための大切な仕組みであり、実務の現場でも頻繁に利用される重要な手順です。今回の記事では、FETCH文がどのような役割を持っているのか、カーソルを使った基本的なデータ取得の流れ、そして実際のプログラム例まで順を追って学びました。特に、カーソルのOPENとCLOSE、そしてSQLCODEを確認する仕組みはCOBOLのデータベース処理において欠かせない要素であり、初心者ほど早めに習得しておくと後の理解がぐっと深まります。データベースの結果セットを一行ずつ安全に読みだすFETCH文は、大量データを扱うときでも整然とした処理を実現できるため、多くの企業システムで重宝されています。 また、実際のコード例を何度も確認しながら理解を深めることで、プログラム上の動きがより立体的にイメージできるようになります。FETCHによって取得される情報が順番に処理されていく様子は、データを逐次管理しながら業務ロジックを組み立てる上で欠かせない基礎です。こうした仕組みをしっかりと理解しておくと、単純な検索処理だけでなく、ループを用いた柔軟なデータ処理や、条件を踏まえた動的なロジックにも対応できるようになります。 FETCH文はあくまで「一行ずつ取得する」という明確な役割を持ち、その動く仕組みを知ることで、COBOLのデータベース操作全体の流れを把握する糸口にもなります。カーソルの宣言、OPEN、FETCH、CLOSEという一連の流れを手順として自然に覚えてしまうと、より複雑なSQLを扱うときにも慌てず確実に処理できるようになります。下記には記事と同じ構造で簡単なサンプルコードをまとめておきますので、実際の現場で応用しやすいベースとして役立ててください。

サンプルプログラム(まとめ)


EXEC SQL
    DECLARE EMP_CURSOR CURSOR FOR
        SELECT EMPLOYEE_ID, EMPLOYEE_NAME
        FROM EMPLOYEE
        WHERE DEPARTMENT = :DEPT
END-EXEC.

EXEC SQL
    OPEN EMP_CURSOR
END-EXEC.

PERFORM UNTIL SQLCODE NOT = 0
    EXEC SQL
        FETCH EMP_CURSOR INTO :EMP-ID, :EMP-NAME
    END-EXEC.

    IF SQLCODE = 0
        DISPLAY "社員ID:" EMP-ID " 社員名:" EMP-NAME
    END-IF
END-PERFORM.

EXEC SQL
    CLOSE EMP_CURSOR
END-EXEC.

このサンプルは、FETCH文の流れを整理し直したもので、データベースから必要な情報を順番に取り出す処理がどのように組み立てられるのかを理解しやすい構成になっています。COBOLのプログラムは一見すると厳格な形式に見えますが、ルールさえ掴んでしまえば読みやすく、そして修正もしやすい言語です。FETCH文を使った処理は、その中でも実務で最も利用頻度の高い部分ですので、自分の手で書きながら自然に覚えていくことが大切です。 これまで学んだ内容を踏まえて、自分なりに別のテーブルを使ったFETCH文を試してみたり、条件を変えて取得件数がどう変わるかを観察することで、いっとう深い理解に繋がっていきます。FETCH文とカーソル操作はCOBOLのデータ処理における基礎のひとつであり、これを理解しておくと後々のバッチ処理や業務アプリケーション作成の際にも必ず役立ちます。ぜひ繰り返し読み返し、実行しながら身につけてください。

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

生徒「FETCH文って、一行ずつ順番に取り出す動きが実際にプログラムで見ると理解しやすかったです!」

先生「そうだね。カーソルを使った処理の流れをつかめば、COBOLのデータベース処理はぐっと身近に感じられるはずだよ。」

生徒「カーソルのOPEN、FETCH、CLOSEの順番もようやく覚えられました。SQLCODEを確認する意味もよくわかりました。」

先生「一度身につければ応用しやすいから、これからも別の条件でFETCHを使って試してみるといい。実務で困らない力がしっかりつくよ。」

生徒「はい!また別のテーブルや条件でも試してみます。」

カテゴリの一覧へ
新着記事
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演算子の違いと使い方