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

COBOLの文字データ型「PIC X」の基本と使い方をやさしく解説!初心者でも理解できる文字列の扱い方

文字データ型(PIC X)の基本と活用例
文字データ型(PIC X)の基本と活用例

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

生徒

「COBOLで名前とか文字を扱いたいときって、どうすればいいんですか?」

先生

「そのときには『PIC X』という文字データ型を使いますよ。」

生徒

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

先生

「安心してください。これから、COBOL初心者でもわかるように、丁寧に説明していきますね!」

1. PIC Xとは?COBOLの文字データ型の基本

1. PIC Xとは?COBOLの文字データ型の基本
1. PIC Xとは?COBOLの文字データ型の基本

COBOLのPIC Xは、「文字列(もじれつ)」を扱うための文字データ型です。ここで言う「文字列」とは、人の名前や住所、メッセージなど、アルファベットや記号、ひらがな・カタカナなどの文字を表す情報のことです。

PICとは「PICTURE(ピクチャー)」の略で、「データの形」を指定する書き方です。その後ろに続くXは「1文字分のスペース(場所)」を意味します。

例えば、次のように書けば、「10文字の文字列」を保存する変数になります。


01 NAME PIC X(10).

このように「PIC X(10)」とすれば、10文字分の文字を入れる箱が作れるというイメージです。

2. PIC Xの使い方をやさしく解説

2. PIC Xの使い方をやさしく解説
2. PIC Xの使い方をやさしく解説

それでは、実際にPIC Xを使って、名前を入力して表示する簡単なCOBOLプログラムを紹介します。


IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-X.

ENVIRONMENT DIVISION.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME PIC X(20).

PROCEDURE DIVISION.
    DISPLAY "あなたの名前を入力してください:".
    ACCEPT NAME
    DISPLAY "こんにちは、" NAME "さん!".
    STOP RUN.

このプログラムは、以下のように動作します。

  • DISPLAY文で「あなたの名前を入力してください」と表示します。
  • ACCEPT文でキーボードから名前を受け取って、NAME変数に入れます。
  • もう一度DISPLAY文で、入力された名前を使って「こんにちは、◯◯さん!」と挨拶を表示します。

実行結果はこのようになります。


あなたの名前を入力してください:
(ユーザーが「さとうたろう」と入力)
こんにちは、さとうたろうさん!

3. PIC Xで注意すべきこと

3. PIC Xで注意すべきこと
3. PIC Xで注意すべきこと

COBOLで文字列を扱うときには、いくつかのポイントに注意が必要です。

① 長さを必ず決める必要がある

PIC Xでは、必ず「何文字分の長さにするか」を指定しなければなりません。たとえば、「PIC X(10)」は10文字まで使えるけど、それ以上は使えませんし、短すぎると名前が途中で切れてしまうこともあります。

② 空白(スペース)も文字として扱われる

入力された文字数が少ないときは、残りの部分にスペース(空白)が自動的に入ります。たとえば、「PIC X(10)」に「ゆい」と入力すれば、残りの7文字は空白になります。

③ 文字コードに注意(EBCDICとASCII)

COBOLはもともとメインフレーム(大型コンピュータ)向けに作られた言語です。そのため、使われる文字コードにEBCDIC(エビシディック)という形式が使われることがあります。

一方、パソコンやWebではASCII(アスキー)が一般的です。文字化けを防ぐには、環境に合わせた文字コードの確認が大切です。

4. PIC Xの具体的な活用例

4. PIC Xの具体的な活用例
4. PIC Xの具体的な活用例

文字データ型は、さまざまな場面で活用されます。以下のようなケースでPIC Xを使うことが多いです。

① 氏名や住所などの入力データ

人の名前、郵便番号、電話番号、住所など、数字と文字が混ざっている情報にはPIC Xが最適です。


01 ADDRESS PIC X(50).
01 PHONE-NUMBER PIC X(15).

② メッセージの表示

画面に出す案内文やエラーメッセージなどにも使えます。


01 MSG PIC X(30) VALUE "データを入力してください".
DISPLAY MSG.

③ 固定文字列と組み合わせて使う

COBOLでは、定型文とユーザーの入力データを組み合わせることが多く、PIC Xが活躍します。


01 USERNAME PIC X(20).
DISPLAY "ようこそ、" USERNAME "さん!".

5. よくあるエラーとその対策

5. よくあるエラーとその対策
5. よくあるエラーとその対策

初心者がPIC Xでつまずきやすいミスを紹介し、その対処法をまとめました。

① 入力が長すぎる

設定した文字数より多く入力しても、切り捨てられてしまいます。「PIC X(5)」に「たなかたろう」と入力しても、「たなか」だけが保存されます。

② 半角と全角の違いに注意

日本語入力では、1文字が2バイトになる場合があります。表示ずれや桁あふれの原因になるため、全角と半角の違いを意識して設定する必要があります。

③ 数値をPIC Xに入れるとき

数字だけど文字として扱いたい場合(郵便番号など)は、PIC Xを使います。ただし、計算はできません。計算するには数値型(PIC 9)を使う必要があります。

まとめ

まとめ
まとめ

COBOLのPIC Xは、名前や住所、メッセージなどの文字列を扱う際に欠かせない基本的な文字データ型です。PIC Xを理解することで、人間にとって意味のあるデータをコンピュータに正しく伝えることができます。特に実務では、文字列の長さや桁数、入力時の余白やスペースの扱いが大きなポイントになります。PIC句は数値だけでなく文字にも使えるので、COBOLにおけるあらゆるデータ定義の出発点とも言えます。

また、文字データは見た目や整形にも関わってくるため、単に「入力できればいい」では済まない場面が多く存在します。住所データのように一定の桁数で揃えたい場合、空白の扱いや桁数の制限を意識して設計しなければ、帳票や画面の表示がずれてしまう原因になります。そのため、PIC X(桁数)の桁数設計は、画面設計や出力形式と深く関係しています。

また、文字データと数値データの違いをしっかり理解しておくことも大切です。例えば、郵便番号や電話番号など、数字だけで構成されているけれども、計算には使わない情報は数値ではなく文字列として扱うのが基本です。これは「文字としての意味を持っているデータはPIC Xで管理する」という考え方に基づいています。

さらに、DISPLAYACCEPTとの連携も重要です。COBOLではDISPLAYで画面に出力し、ACCEPTでキーボード入力を受け取りますが、これらの命令は文字データと非常に相性が良く、特にPIC Xの変数を活用することで、入力された情報をそのまま自然に活用できます。

実際の業務アプリケーションでは、画面の指示文、入力された顧客名、メールアドレス、確認メッセージなど、ありとあらゆる場面でPIC Xが使われています。さらにデータベースや帳票出力と連動する場面でも、文字データの長さ制限やフォーマットの調整など、PIC Xを正しく理解していないとトラブルの原因になります。

サンプル:複数の文字列データを扱うCOBOLプログラム

以下は氏名、住所、メッセージの3つの文字列を扱うCOBOLプログラムの例です。


IDENTIFICATION DIVISION.
PROGRAM-ID. USER-INFO.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME     PIC X(20).
01 USER-ADDRESS  PIC X(40).
01 GREETING      PIC X(30) VALUE "ご登録ありがとうございます!".

PROCEDURE DIVISION.
    DISPLAY "お名前を入力してください:"
    ACCEPT USER-NAME

    DISPLAY "ご住所を入力してください:"
    ACCEPT USER-ADDRESS

    DISPLAY GREETING
    DISPLAY "お名前:" USER-NAME
    DISPLAY "ご住所:" USER-ADDRESS

    STOP RUN.

このプログラムは、ユーザーから名前と住所を受け取り、それに定型のあいさつ文を加えて出力するものです。PIC Xの長さ設定によって、余白が入ることもありますので、表示の整え方に工夫が必要な場面もあるでしょう。

初心者のうちは、「Xの数=文字数の長さ」という感覚をまずしっかり持つことが大切です。PIC X(30)であれば、30文字分のスペースがあり、そこに短い文字を入れると後ろにスペースが補われます。反対に、文字が長すぎる場合は自動的に切り捨てられてしまいます。このように、COBOLの文字データは柔軟なようで実は非常に厳密な管理が求められる分野です。

最後に注意すべき点として、全角文字(漢字・ひらがな・カタカナ)は、環境によっては2バイトとして扱われるため、1文字が「2文字分の幅」を取ることになります。これが画面レイアウトや帳票出力に影響を与えることがあるため、実際の文字数だけでなく、バイト数にも気を配る必要があります。

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

生徒

「先生、PIC Xを使えば名前とか住所とか、いろんな文字を管理できるってわかってきました!」

先生

「その通りです。文字列の扱いはCOBOLの基本中の基本ですし、どんな業務システムでも避けては通れません。」

生徒

「でも、文字数の制限とか、全角・半角の違いとか、思ったより奥が深いですね…」

先生

「ええ、だからこそ最初にしっかり理解しておくことが大切です。PIC Xは一見シンプルだけど、帳票設計や画面表示ではとても重要なんですよ。」

生徒

「今後は、文字の意味だけじゃなくて、どれくらいの長さが必要かもちゃんと考えて設計します!」

先生

「その意識があれば大丈夫。どんな場面でも落ち着いて文字データを扱えるようになりますよ。」

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