COBOL 用語集
~ 現場の言葉を、順番に ~
COBOL の保守・改修やシステム移行の現場でよく出てくる用語を、20語に絞って説明します。
読み手は、COBOL を初めて扱う技術者と、COBOL 資産を持つ会社の管理職を想定しています。細かい仕様は各社のマニュアルが正本です。ここでは、全体像と読み違えやすい点を押さえます。
用語の索引
| 0001 | COBOL | COBOL とは |
| 0002 | DIVISION | 4つの部(IDENTIFICATION / ENVIRONMENT / DATA / PROCEDURE) |
| 0003 | PIC | PIC句(データの型と桁数) |
| 0004 | COMP-3 | COMP-3(パック10進数) |
| 0005 | EBCDIC | EBCDIC(メインフレームの文字コード) |
| 0006 | COPY | COPY句・コピーブック |
| 0007 | PERFORM | PERFORM(段落の呼び出しと繰り返し) |
| 0008 | JCL | JCL(ジョブ制御言語) |
| 0009 | VSAM | VSAM(ファイルのアクセス方式) |
| 0010 | CICS | CICS(オンライン処理) |
| 0011 | IMS | IMS(階層型データベースとオンライン処理) |
| 0012 | DB2 | DB2(リレーショナルデータベース) |
| 0013 | ABEND | ABEND(異常終了) |
| 0014 | S0C7 | S0C7(データ例外) |
| 0015 | z/OS | IBM z/OS |
| 0016 | ACOS | NEC ACOS(ACOS-4) |
| 0017 | MSP/XSP | 富士通 MSP/XSP |
| 0018 | VOS3 | 日立 VOS3 |
| 0019 | Y2K | 2000年問題 |
| 0020 | GnuCOBOL | GnuCOBOL(オープンソースの COBOL) |
COBOL(コボル)
COBOL は Common Business-Oriented Language の略で、事務処理向けに1959年から策定が始まったプログラミング言語です。帳票、ファイル処理、金額の計算といった業務の書き方を、英語に近い文で表せるように作られています。
十進数の固定小数点で計算できるため、金額の端数処理を意図どおりに書けることが、今も金融や行政の基幹システムで使われ続ける理由のひとつです。
言語としては国際規格(ISO/IEC 1989)があり、改訂が続いています。ただし実際の現場では、メーカーごとの拡張や方言を含んだプログラムを扱うことになります。
4つの部(DIVISION)
COBOL のプログラムは、IDENTIFICATION・ENVIRONMENT・DATA・PROCEDURE の4つの DIVISION(部)で構成され、この順に書きます。
IDENTIFICATION DIVISION(標識部)にはプログラム名など、ENVIRONMENT DIVISION(環境部)には使うファイルと外部装置の対応、DATA DIVISION(データ部)にはファイルや作業領域のデータ定義、PROCEDURE DIVISION(手続き部)には実際の処理を書きます。
他の言語の関数やクラスに当たるものは PROCEDURE DIVISION の中の段落と節です。データの形を先にすべて宣言する作りなので、まず DATA DIVISION を読むとプログラムの扱う対象がつかめます。
PIC句(PICTURE句)
PIC は PICTURE 句の略で、データ項目の種類・桁数・表示の形を指定する書き方です。
主な記号は、X(英数字)、9(数字1桁)、S(符号あり)、V(小数点の位置。実際のデータには場所を取りません)、Z(上位のゼロを空白にする編集用)です。たとえば PIC S9(5)V99 は、符号付きで整数部5桁、小数部2桁の数値項目です。
同じ数値でも、このあとの USAGE(DISPLAY・COMP・COMP-3 など)で内部表現が変わります。ファイルレイアウトを読み解くときは、PIC と USAGE を必ずセットで見ます。
COMP-3(パック10進数)
COMP-3 は、数値を1バイトに2桁ずつ詰めて持つ内部表現(パック10進数)です。最後の半バイトには符号が入ります。PIC S9(5)V99 COMP-3 であれば、7桁と符号の計8半バイトで4バイトです。
十進数のまま保持するため、0.1 のような値を2進数の浮動小数点で持つときに出る誤差がありません。金額項目で多用される理由です。
中身は文字ではなくバイト列なので、ファイル転送のときに文字コード変換をかけると壊れます。バイナリのまま転送するか、項目ごとに変換方法を分ける必要があります。
EBCDIC
EBCDIC は、IBM のメインフレームを中心に使われてきた文字コードです。ASCII とは文字の並びが異なり、たとえば数字の 0〜9 は 16進で F0〜F9 に当たります。
日本語は、英数字・カナと漢字を切り替えて持つ方式で扱われ、漢字コードはメーカーごとに独自のものがありました。
ASCII や UTF-8 の環境へデータを移すときは、文字項目だけを変換し、COMP-3 などの数値項目は触らない設計が必要です。項目の位置と種類を示したレイアウト定義が欠かせません。
COPY句(コピーブック)
COPY 句は、別のファイルに書いたデータ定義や記述を、コンパイル時にプログラムへ取り込む仕組みです。取り込まれる側のファイルをコピーブック(コピー句ライブラリ)と呼びます。
同じファイルを読み書きする複数のプログラムが、同じレコード定義を共有できます。レイアウトを変えるときにコピーブックを直せば、取り込んでいるプログラムを再コンパイルするだけで反映されます。
その反対に、1つのコピーブックの変更が多数のプログラムに及ぶため、改修前の影響調査ではコピーブックの参照元を洗い出すことが基本の作業になります。
PERFORM
PERFORM は、段落や節を呼び出して処理し、終わったら呼び出し元の次の文に戻る文です。他の言語のサブルーチン呼び出しに近い働きをします。
PERFORM UNTIL(条件を満たすまで繰り返す)や PERFORM VARYING(添字を変えながら繰り返す)の形で、ループも表します。PERFORM A THRU B のように範囲を指定する書き方もあります。
GO TO による飛び先と PERFORM の範囲が入り組んだプログラムは、処理の流れを追うのが難しくなります。保守では、まず PERFORM の呼び出し関係を図にして整理することが多いです。
JCL(ジョブ制御言語)
JCL は Job Control Language の略で、IBM のメインフレームでバッチ処理(ジョブ)の実行内容を記述する言語です。
JOB 文でジョブを宣言し、EXEC 文で実行するプログラムを指定し、DD 文でプログラムが使うデータセット(ファイル)を割り当てます。COBOL プログラムの中のファイル名と、実際のデータセットは、この DD 文でつながります。
COBOL のソースだけを読んでも、どのファイルを読み書きするかは分かりません。夜間バッチを読み解くときは、JCL とプログラムを対にして読みます。メーカーごとに同じ役割の制御言語があり、書き方は異なります。
VSAM
VSAM は Virtual Storage Access Method の略で、IBM のメインフレームのデータセットにアクセスするための方式のひとつです。
キー順データセット(KSDS)、入力順データセット(ESDS)、相対レコード番号データセット(RRDS)などの種類があります。COBOL の索引ファイル(ORGANIZATION INDEXED)は、一般にキー順の KSDS として実現されます。
レコードの追加や削除を繰り返すとデータセットの状態が変わるため、再編成や容量の管理といった運用面の知識も必要になります。
CICS
CICS は Customer Information Control System の略で、IBM のメインフレームでオンライン処理(端末から要求を受けて即座に応答する処理)を動かすためのソフトウェアです。
COBOL プログラムの中に EXEC CICS ... END-EXEC という形で CICS のコマンドを書き、画面の入出力、ファイルの読み書き、ほかのプログラムの呼び出しなどを行います。
1回の要求ごとに短く処理して応答を返す作りが基本です。そのためバッチ処理の COBOL とは、作法が少し異なります。画面と処理が分かれる擬似会話型という設計も、よく出てきます。
IMS
IMS は Information Management System の略で、IBM がメインフレーム向けに提供している、階層型のデータベース(IMS DB)とオンライン処理(IMS TM)の仕組みです。
データを親と子の木構造で持ち、COBOL プログラムからは DL/I という呼び出しで読み書きします。リレーショナルデータベースとは考え方が異なり、SQL では扱いません。
古い基幹システムで使われていることがあり、移行するときはデータ構造そのものを組み替える作業になります。
DB2
DB2 は IBM のリレーショナルデータベース製品です。メインフレーム向けの DB2 for z/OS では、COBOL プログラムの中に EXEC SQL ... END-EXEC という形で SQL を埋め込みます。
SQL の実行結果は SQLCODE(または SQLSTATE)という戻り値で確認します。プログラムは、コンパイルの前に SQL 文を処理する前処理を通してから COBOL としてビルドされます。
メーカーによっては、別のデータベース(富士通の Symfoware や日立の HiRDB など)を組み合わせていることもあります。保守対象がどのデータベースかは、最初に確認します。
ABEND(異常終了)
ABEND は Abnormal End の略で、プログラムやジョブが異常終了することです。IBM のメインフレームでは、システムが検出した原因に Sxxx 形式、プログラムが指定した終了に Uxxxx 形式のコードが付きます。
あわせてダンプ(異常終了時のメモリの内容)が出力されることがあります。原因の調査では、完了コード、ダンプ、コンパイルリスト(どの命令がどの項目を扱っていたかの対応)を突き合わせます。
このサイトの404ページに出る S0C4 ABEND の表示は、この言い回しを借りた演出です。
S0C7(データ例外)
S0C7 は、IBM のメインフレームで起きる ABEND のうち、データ例外を表すコードです。数値として扱う項目に、数値として正しくない中身が入っていると起きます。
典型的な原因は、COMP-3 や数字項目の初期化漏れ、スペースが入ったままの項目の計算、ファイルのレイアウトと COPY 句の定義のずれ、REDEFINES で別の型として読んだ項目の計算などです。
調べるときは、ダンプから異常終了した命令の位置を特定し、コンパイルリストでその命令が扱う項目を割り出して、実際の入力データの中身を確認します。
IBM z/OS
z/OS は、IBM のメインフレーム IBM Z で動く OS です。MVS、OS/390 と名前を変えながら続いてきた系統にあたります。
COBOL では IBM の Enterprise COBOL for z/OS がコンパイラで、JCL・VSAM・CICS・IMS・DB2 といった用語は、この環境の製品や仕組みを指しています。
過去のプログラムを新しい環境でも動かせるように互換性が重視されてきたため、古い資産がそのまま動いているケースが多くあります。
NEC ACOS(ACOS-4)
ACOS は NEC のメインフレームの系列で、ACOS-4 はその OS の名前です。日本の金融機関や官公庁などで使われてきました。
COBOL は ACOS 用のコンパイラで動かします。IBM 系とは JCL やオンライン処理の仕組みが異なり、同じ COBOL でもメーカー固有の拡張が含まれます。
ACOS の案件では、IBM 系の知識がそのまま通用するとは限りません。ACOS の制御言語、ファイルの扱い、オンライン処理の経験を、別に確認します。
富士通 MSP/XSP
MSP と XSP は、富士通のメインフレーム(FACOM 系)で動く OS です。どちらも国内の金融機関や公共機関の基幹システムで使われてきました。
オンライン処理には、IBM の CICS ではなく、富士通独自のオンライン制御(AIM など)が使われます。COBOL も富士通のコンパイラで、IBM 系とは JCL に相当する制御言語や日本語の扱いが異なります。
富士通の COBOL 製品には、オープン系で動く NetCOBOL もあります。メインフレームからオープン系への移行では、MSP/XSP での経験が活きる場面があります。
日立 VOS3
VOS3 は、日立製作所のメインフレームで動く OS です。国内の金融機関や大企業の基幹システムで使われてきました。
COBOL は日立のコンパイラで動かし、バッチの制御言語やオンライン処理は、IBM 系や他のメーカーとは別の仕組みです。メーカー固有の拡張が含まれているため、他社環境で書かれた COBOL をそのまま持ち込めるとは限りません。
案件では、対象がどのメーカーのどの OS かを最初に確認します。
2000年問題
2000年問題は、年を西暦の下2桁(PIC 99 など)で持っていたシステムが、2000年を1900年と解釈して日付の比較や並べ替えを誤る恐れがあった問題です。2000年が閏年である点も確認の対象でした。
COBOL のプログラムは1970〜80年代に作られたものが多く、年を2桁で持つ作りが珍しくなかったため、1990年代後半に多くの COBOL 資産が調査・改修されました。改修方法は、年の項目を4桁に拡張する方式と、基準年を決めて2桁のまま扱うウィンドウ方式に大別されます。
ウィンドウ方式を選んだ資産では、基準年を超えたときに同じ種類の問題が起こりえます。設計書や改修履歴に基準年の記録があるかどうかが、確認のポイントです。
GnuCOBOL
GnuCOBOL は、オープンソースの COBOL コンパイラです。COBOL のソースを C 言語に変換し、C コンパイラでビルドします。以前は OpenCOBOL と呼ばれていました。
Linux や macOS、Windows の上で動かせるため、COBOL の学習や、メインフレームを使わずに処理を試したいときに向いています。このサイトのページも、GnuCOBOL 3.2 のプログラムが書き出しています。
メーカー製のコンパイラとは細かい動作が異なる点があります。本番環境向けの COBOL の検証には、実際の環境での確認が別途必要です。
→ コラム一覧
→ トップページへ
*** END OF REPORT *** 出力行数 0252 RC=0000
Copyright (C) 2026 Koinobori Co., Ltd.
最終更新 2026/10/05 発行:株式会社Koinobori