カテゴリ: COBOL 更新日: 2026/02/25

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句でよく使われる文字と意味は以下の通りです:

  • 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#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう
New2
COBOL
COBOLの文字列検索を完全ガイド!初心者でもわかるINSPECTとUNSTRINGの使い方
New3
C#
C#でXMLバリデーションを完全マスター!XSDスキーマを使ったチェック方法を初心者向けに解説
New4
COBOL
COBOLのEDITING記述子を完全解説!初心者でもわかるPIC Z・\*・\$による整形出力
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.3
Java&Spring記事人気No3
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.5
Java&Spring記事人気No5
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方