カテゴリ: COBOL 更新日: 2026/08/10

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句の基本構文

PIC句は、「この変数はどんな形のデータを入れるか」を宣言するための書き方です。COBOLでは、次のような形で書くのが基本のパターンになります。


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

最初の「01」はレベル番号と呼ばれるもので、「これはひとつの項目ですよ」という目印です。そのあとに続く「変数名」のところに、AGE や PRICE など、扱いたい項目の名前を書きます。そして PIC の後ろに「データの形式(桁数や種類)」を指定し、最後にピリオド「.」で文の終わりを表します。

たとえば、3桁の数字を扱いたいときは、次のように書きます。


01  AGE  PIC 999.

ここで使われている「9」は、「数字(0〜9)を1桁分受け取る」という意味です。つまり「999」と書くと、「数字を3桁分入れられる枠」を作っているイメージになります。この例では、AGE という変数に 000 〜 999 までの値を入れられる、ということをCOBOLに伝えています。

もう少しイメージしやすくするために、簡単なサンプルを見てみましょう。AGE と POINT という2つの数値項目を用意して、それぞれ桁数の違うPIC句で定義しています。


DATA DIVISION.
WORKING-STORAGE SECTION.
01  AGE    PIC 99.    *> 年齢(2桁まで)
01  POINT  PIC 9(3).  *> 点数(3桁まで)

PROCEDURE DIVISION.
    MOVE 25 TO AGE
    MOVE 100 TO POINT

    DISPLAY "年齢:" AGE
    DISPLAY "点数:" POINT

    STOP RUN.

PIC 99は「数字2桁」、PIC 9(3)は「数字3桁」を表しています。書き方は違いますが、どちらも「数字の枠」を決めている点は同じです。このように、PIC句の基本構文は「レベル番号」「変数名」「PIC」「データの形式」という並びになっていて、COBOLのデータ型を考えるうえでの土台になります。

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

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

PIC句では、データが「どんな種類で、どんな形をしているか」を表すために、いくつかの特別な文字を使います。これらは難しそうに見えますが、ひとつずつ見ていくと役割がとても分かりやすく、COBOLでデータを扱ううえで欠かせない基礎となります。

  • 9:数字(0〜9)を1桁扱う
  • X:文字(英数字・記号など)を1文字扱う
  • A:アルファベットを1文字扱う
  • V:小数点の位置を示す(実際の出力では表示されない)
  • S:符号(+/−)を扱えることを示す

たとえば「S999V99」というPIC句なら、「符号つきの整数3桁と小数2桁を持つ数値」という意味になります。Vは“見えない小数点”として扱われるため、表示形式とは少し違う点がポイントです。

よりイメージしやすいように、簡単なサンプルコードも見てみましょう。ここでは、小数点を持つ金額と、符号のついた変数を用意し、PIC句の文字がどのように働くかを確認します。


DATA DIVISION.
WORKING-STORAGE SECTION.
01  AMOUNT    PIC 999V99.   *> 小数点2桁の金額
01  BALANCE   PIC S9(4).    *> 符号つき数値

PROCEDURE DIVISION.
    MOVE 123.45 TO AMOUNT
    MOVE -500   TO BALANCE

    DISPLAY "金額:" AMOUNT
    DISPLAY "残高:" BALANCE

    STOP RUN.

この例では、AMOUNTは「999V99」として定義しているため、小数点の位置が決まっており「123.45」をそのまま格納できます。また、BALANCEは符号つきの4桁として扱われるため、マイナス値も問題なく処理できます。PIC句で使う文字の意味を理解すると、どんな形のデータでもルールに沿って扱えるようになり、COBOLのデータ操作がぐっと楽になります。

4. 数値を扱うPIC句の例

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

数値を扱うPIC句では、「何桁の数字か」「小数点はあるか」「符号(+/−)を持つか」などを細かく指定できます。業務システムでは金額・数量・残高など数値データが多いため、PIC句での数値定義は非常に重要です。まずは、実際によく使われる基本的な例を見てみましょう。


01  PRICE     PIC 999V99.
01  QUANTITY  PIC 9(3).
01  TOTAL     PIC S9(5)V99.
  • PRICE は、整数3桁・小数2桁の金額を表します(例:123.45)。Vは“見えない小数点”として扱われます。
  • QUANTITY は、「9(3)」で3桁の数字を意味し、「999」と同じ役割で数量を扱います。
  • TOTAL は符号つきで、最大5桁の整数と2桁の小数を表します(例:-12345.67)。マイナス値も処理できます。

さらにイメージをつかみやすくするため、簡単な動作例も確認してみましょう。PRICE と QUANTITY を使って小さな計算を行うプログラムです。


DATA DIVISION.
WORKING-STORAGE SECTION.
01  PRICE     PIC 999V99.   *> 商品の単価
01  QUANTITY  PIC 9(3).     *> 数量
01  TOTAL     PIC 9(5)V99.  *> 合計金額

PROCEDURE DIVISION.
    MOVE 150.50 TO PRICE
    MOVE 3       TO QUANTITY
    COMPUTE TOTAL = PRICE * QUANTITY

    DISPLAY "単価:" PRICE
    DISPLAY "数量:" QUANTITY
    DISPLAY "合計:" TOTAL

    STOP RUN.

このサンプルでは、PIC句によって「小数点の位置」や「扱える桁数」が決まっているため、計算結果もルールに沿って正しく格納されます。数値のPIC句を理解しておくと、金額計算や数量管理などの処理がとても扱いやすくなります。

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句」を使ってデータ型を指定し、データの形や構造を決めます。

COBOLのPIC句とは何ですか?

PIC句(ピックく)とは、COBOLでデータの形式や桁数、型を定義するために使う文です。「PICTURE(ピクチャー)」の略で、データの見た目のルールを示します。
カテゴリの一覧へ
新着記事
New1
Azure
Azure Application Insights活用ガイド!Webアプリの応答時間とエラーの可視化を徹底解説
New2
C#
C#の型変換まとめ!int.Parse・ToStringなどの変換方法を解説
New3
COBOL
COBOLのADD・SUBTRACT文の使い方を完全ガイド!初心者でもわかる足し算と引き算の基本
New4
COBOL
COBOLのクラウド移行における法的要件と規制完全ガイド!初心者でもわかるコンプライアンス対策
人気記事
No.1
Java&Spring記事人気No1
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.2
Java&Spring記事人気No2
C#
C#のトランザクション処理を完全ガイド!初心者でもわかるCommit・Rollbackの使い方
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.5
Java&Spring記事人気No5
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.6
Java&Spring記事人気No6
Azure
Azure Bastionの使い方を徹底解説!踏み台サーバー不要で安全にRDP/SSH接続
No.7
Java&Spring記事人気No7
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.8
Java&Spring記事人気No8
COBOL
COBOLの文字データ型「PIC X」の基本と使い方をやさしく解説!初心者でも理解できる文字列の扱い方