本文へスキップ
BecomeCoder

COBOLコース · 第3章 データを表す ― PICTURE句とレベル番号 · レッスン14

英数字のPICTURE ― X(英数字)とA(英字)

ローカル実施

導入

数値の次は、文字を扱うPICTURE句です。前のレッスンで使った X に加えて、もう一つ A という記号があります。使い分けを見ていきましょう。

説明

       01  WS-NAME              PIC X(20).      *> 何の文字でもよい(英数字・記号)
       01  WS-CODE              PIC A(3).        *> 英字(A〜Z、a〜z、空白)のみ
記号意味使いどころ
X英数字(英字・数字・記号・空白、何でも可)氏名、住所、フリーテキストなど
A英字のみ(アルファベットと空白)都道府県コードのアルファベット部分など、限定的

実務では X が圧倒的によく使われますA は「英字だけに厳密に制限したい」特殊な場面向けで、頻度は高くありません。迷ったら X を使うと考えて差し支えありません。

文字列は宣言した桁数より短い値を入れると、右側が空白で埋められます(このコースでは詳しく実演はしませんが、覚えておくと後のMOVE文の理解がスムーズです)。たとえば PIC X(10)"AB" を入れると、実際には "AB "(AB+8個の空白)としてメモリに保持されます。逆に、宣言した桁数より長い値を入れようとすると、はみ出した部分が切り捨てられます。

「PICTURE句で宣言した桁数ぴったりの領域が、常に確保されている」——これがCOBOLの文字列の考え方です。多くの言語のように「入れた分だけ伸び縮みする」文字列とは違う点に注意してください。

試すには

PIC X(5)"AI" を入れたら実際には何文字分の領域が使われているか(答え:5文字分、右側3文字は空白)を考えてみましょう。レッスン19のMOVE文で、この動きを実際のコードで確認します。