COBOLの文字データ型「PIC X」の基本と使い方をやさしく解説!初心者でも理解できる文字列の扱い方
生徒
「COBOLで名前とか文字を扱いたいときって、どうすればいいんですか?」
先生
「そのときには『PIC X』という文字データ型を使いますよ。」
生徒
「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の使い方をやさしく解説
それでは、実際に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で注意すべきこと
COBOLで文字列を扱うときには、いくつかのポイントに注意が必要です。
① 長さを必ず決める必要がある
PIC Xでは、必ず「何文字分の長さにするか」を指定しなければなりません。たとえば、「PIC X(10)」は10文字まで使えるけど、それ以上は使えませんし、短すぎると名前が途中で切れてしまうこともあります。
② 空白(スペース)も文字として扱われる
入力された文字数が少ないときは、残りの部分にスペース(空白)が自動的に入ります。たとえば、「PIC X(10)」に「ゆい」と入力すれば、残りの7文字は空白になります。
③ 文字コードに注意(EBCDICとASCII)
COBOLはもともとメインフレーム(大型コンピュータ)向けに作られた言語です。そのため、使われる文字コードにEBCDIC(エビシディック)という形式が使われることがあります。
一方、パソコンやWebではASCII(アスキー)が一般的です。文字化けを防ぐには、環境に合わせた文字コードの確認が大切です。
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. よくあるエラーとその対策
初心者がPIC Xでつまずきやすいミスを紹介し、その対処法をまとめました。
① 入力が長すぎる
設定した文字数より多く入力しても、切り捨てられてしまいます。「PIC X(5)」に「たなかたろう」と入力しても、「たなか」だけが保存されます。
② 半角と全角の違いに注意
日本語入力では、1文字が2バイトになる場合があります。表示ずれや桁あふれの原因になるため、全角と半角の違いを意識して設定する必要があります。
③ 数値をPIC Xに入れるとき
数字だけど文字として扱いたい場合(郵便番号など)は、PIC Xを使います。ただし、計算はできません。計算するには数値型(PIC 9)を使う必要があります。