カテゴリ: COBOL 更新日: 2026/01/26

COBOLのデータ型とは?基本のPIC句の書き方を初心者向けにやさしく解説

COBOLのデータ型とは?基本のPIC句の書き方
COBOLのデータ型とは?基本のPIC句の書き方

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

生徒

「先生、COBOLでデータを使うときって、どうやって種類を決めるんですか?」

先生

「COBOLでは、データの種類を“データ型”で指定します。特にPIC句というのを使って定義します。」

生徒

「PIC句ってなんですか? 難しそう…」

先生

「大丈夫ですよ。PIC句は、データの形(フォーマット)を指定するものです。数字か文字か、小数かなどを決めるんです。では、順番に見ていきましょう!」

1. COBOLのデータ型とは?

1. COBOLのデータ型とは?
1. COBOLのデータ型とは?

プログラミングでは、数字や文字などの「データ」を扱います。そのとき「このデータは数字ですよ」とか「これは文字列ですよ」といった情報が必要になります。これがデータ型(data type)です。

たとえば、名前や年齢といった身近な情報でも、コンピュータ側は「これは数字として計算する? それとも文字としてそのまま表示する?」という判断ができません。人間にとっては当たり前でも、機械にとってはただの0と1の並びなので、あらかじめ「ここは数字」「ここは文字」と決めてあげる必要があります。

COBOLでは、他のプログラミング言語のように「int」や「string」などの型名を書くのではなく、「PIC句(ピックく)」を使ってデータの種類や桁数、形式をまとめて指定します。たとえば、「数字3桁」「文字20桁」といった業務データのルールをそのまま表現できる点が特徴です。

PICとは「PICTURE(ピクチャー)」の略で、「このデータはこんな形ですよ」という“見た目のルール”を定義します。帳票で「ここは金額欄」「ここは名前欄」と枠を決めるのと同じように、COBOLではPIC句を使ってデータの枠や形を細かく指定していきます。

まずは、簡単なサンプルで「データ型をPIC句で決める」というイメージをつかんでみましょう。


DATA DIVISION.
WORKING-STORAGE SECTION.
01  SAMPLE-NAME   PIC X(10).   *> 文字を10桁まで
01  SAMPLE-AGE    PIC 99.      *> 2桁の数字

PROCEDURE DIVISION.
    MOVE "TARO" TO SAMPLE-NAME
    MOVE 25 TO SAMPLE-AGE

    DISPLAY "名前:" SAMPLE-NAME
    DISPLAY "年齢:" SAMPLE-AGE

    STOP RUN.

この例では、PIC X(10)が「文字型」、PIC 99が「数字型」という役割を果たします。PIC句さえ理解すれば、COBOLで扱うデータの形がぐっと分かりやすくなります。

2. PIC句の基本構文

2. PIC句の基本構文
2. PIC句の基本構文

基本の構文はこのようになります:


01  変数名  PIC データの形式.

例えば、3桁の数字を扱いたいときは、こう書きます:


01  AGE  PIC 999.

ここで使われている「9」は、「数字(0〜9)を1桁分受け取る」という意味です。つまり、「999」と書くと、「3桁の数字」を意味します。

3. PIC句で使われる文字の意味

3. PIC句で使われる文字の意味
3. PIC句で使われる文字の意味

PIC句でよく使われる文字と意味は以下の通りです:

  • 9:数字(0〜9)を1桁
  • X:文字(英数字・記号など)を1文字
  • A:アルファベット1文字
  • V:小数点の位置(実際のデータには表示されない)
  • S:符号付き(+や−の意味)

例えば、「S999V99」という定義なら、「符号付きで整数3桁、小数2桁の数値」を扱えます。

4. 数値を扱うPIC句の例

4. 数値を扱うPIC句の例
4. 数値を扱うPIC句の例

以下に、COBOLで使える数値の例を紹介します。


01  PRICE  PIC 999V99.
01  QUANTITY  PIC 9(3).
01  TOTAL  PIC S9(5)V99.
  • PRICE は、整数3桁、小数2桁の金額(例:123.45)
  • QUANTITY は、「9(3)」で「999」と同じ意味(3桁の数字)
  • TOTAL は、「符号付き」で最大5桁の整数と2桁の小数(例:-12345.67)

5. 文字を扱うPIC句の例

5. 文字を扱うPIC句の例
5. 文字を扱うPIC句の例

文字や名前などを扱いたいときは、「X」を使います。


01  NAME  PIC X(20).
01  GENDER  PIC X.

この例では、NAMEは最大20文字の名前、GENDERは1文字(例:「M」や「F」)を想定しています。

6. 実行例を見てみよう

6. 実行例を見てみよう
6. 実行例を見てみよう

次に、簡単なプログラムを作って、PIC句で定義した変数に値を入れて表示してみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. PIC-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  NAME      PIC X(10).
01  AGE       PIC 99.
01  HEIGHT    PIC 999V9.

PROCEDURE DIVISION.
    MOVE "YUI" TO NAME
    MOVE 25 TO AGE
    MOVE 160.5 TO HEIGHT

    DISPLAY "名前:" NAME
    DISPLAY "年齢:" AGE
    DISPLAY "身長:" HEIGHT

    STOP RUN.

実行結果:


名前:YUI       
年齢:25
身長:1605

ここで、HEIGHTは「999V9」として小数点付きのつもりでしたが、「V」は表示されないため「160.5」は「1605」と表示されます。Vは“見えない小数点”という点がポイントです。

7. よくある間違いと注意点

7. よくある間違いと注意点
7. よくある間違いと注意点
  • 「V」は実際の表示には出ません。「160.5」は「1605」として扱われます。
  • 桁数オーバーすると、エラーになったり正しく表示されません。例えば「PIC 99」に「123」を入れると、入りきらないため注意が必要です。
  • 文字型に数字を入れると、そのまま文字列として扱われます(例:「"123"」は数字ではなく文字)

8. 実務での使いどころ

8. 実務での使いどころ
8. 実務での使いどころ

COBOLでは、銀行の取引データや顧客情報、年齢や金額など、いろいろな形式のデータを扱います。これらを正しいフォーマットで扱うためにPIC句を使います

例えば、給与明細を作るとき、

  • 社員名 → PIC X(30)
  • 基本給 → PIC 9(6)V99
  • 控除額 → PIC S9(5)V99

このように、現実の業務データとピッタリ対応させて、コンピュータに分かる形にするために、データ型の指定とPIC句の理解が大切です。

まとめ

まとめ
まとめ

COBOLにおけるデータ型の基礎として、「PIC句(ピクチャ句)」の使い方を学びました。COBOLでは、JavaやPythonのような型名を使わずに、PICを用いてデータの形式を定義します。9は数字、Xは文字、Sは符号付き、Vは小数点の位置といった記号で構成され、業務データの正確な取り扱いを実現しています。

たとえば「PIC 999V99」で金額、「PIC X(20)」で氏名など、実際の帳票やデータベースに合わせた精緻な設計が可能です。このルールを理解していれば、COBOLでのデータ入力・出力・計算処理の基礎が身につきます。

とくに業務アプリケーションでは、誤った桁数の入力や符号なしによるバグを防ぐため、PIC句での定義がとても重要です。単なる型指定ではなく、実際の表示や内部処理の前提になるため、慎重な設計が求められます。桁数や小数点位置のミスが命取りになる銀行・保険などの現場では、COBOLのPIC句はまさに「業務の生命線」とも言えるでしょう。

また、Vが実際の小数点ではないという点も実務上の落とし穴になります。表示結果を確認せずに使うと「160.5」が「1605」として扱われ、誤解を招くこともあります。このような細かい仕様をしっかりと理解しておくことで、COBOLのプログラムが読みやすくなり、保守性も高まります。

実務で役立つPIC句サンプル

以下に、現場でよく使われるようなPIC句を使った定義と表示例を紹介します。


IDENTIFICATION DIVISION.
PROGRAM-ID. PAYROLL.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  EMP-NAME     PIC X(20).
01  BASE-SALARY  PIC 9(6)V99 VALUE 30000000.
01  DEDUCTION    PIC S9(5)V99 VALUE -152000.
01  NET-SALARY   PIC S9(6)V99.

PROCEDURE DIVISION.
    MOVE "TANAKA TARO" TO EMP-NAME
    COMPUTE NET-SALARY = BASE-SALARY + DEDUCTION

    DISPLAY "氏名:" EMP-NAME
    DISPLAY "基本給:" BASE-SALARY
    DISPLAY "控除額:" DEDUCTION
    DISPLAY "手取り額:" NET-SALARY

    STOP RUN.

このコードでは、EMP-NAMEは氏名用に20文字を確保し、BASE-SALARYDEDUCTIONは金額として定義されています。S付きのDEDUCTIONを計算に含めることで、手取り額が正しく算出されます。

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

生徒

「先生、PIC句って最初は難しそうに見えたけど、ルールを覚えたら意外とわかりやすかったです!」

先生

「その調子ですね。COBOLではデータ型をしっかり設計するのが重要ですから、PIC句に慣れることが第一歩です。」

生徒

「でもVが表示されないってのはびっくりしました!最初は小数点が消えたのかと思いましたよ〜」

先生

「そこはCOBOLの特徴ですね。実際の小数点は出なくても、計算上は正しく動いていますから安心してください。」

生徒

Xは文字、9は数字、Sでマイナス、しっかり区別できるようになってきました!」

先生

「これから実際の業務データを扱うときに、必ず役立ちますよ。引き続き色んなデータ型に触れて慣れていきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

COBOLのデータ型とは何ですか?

COBOLのデータ型とは、数字や文字などのデータがどのような種類かを表す情報です。COBOLでは「PIC句」を使ってデータ型を指定し、データの形や構造を決めます。
カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決