導入
数値の次は、文字を扱う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文で、この動きを実際のコードで確認します。