ピクチャ指定文字

ピクチャ指定とは、ピクチャ文字のシーケンスです。ピクチャ指定は、文字ピクチャ指定または数字ピクチャ指定のいずれかになります。ピクチャ指定は一重引用符または二重引用符で囲みます。

ピクチャ文字のシーケンスは、文字データ項目または数字データ項目の各位置の内容、および出力の内容を表します。ピクチャ指定の A または X 文字は、その指定を文字ピクチャ指定として定義します。A または X 文字のないピクチャ指定は、数字ピクチャ指定になります。

文字ピクチャ指定

文字ピクチャ項目は、英字、10 進数字、空白、通貨記号、および句読文字で構成されます。

文字ピクチャ指定には以下が含まれます。

文字 説明
X、A、9 使用可能な文字セットでデータの各文字を検証します。

文字ピクチャの文字は次のとおりです。

文字 説明
X 8 ビットのバイトで表される 256 通りのビットの組み合わせによる任意の文字。
A 任意の英字、特別言語文字 (#、@、$)、または空白。
9 任意の数字、または空白。空白は文字データでのみ使用できます。

文字ピクチャ指定は、非可変長文字データ項目を表します。データ項目内の任意の位置に、使用可能な文字セットの特定のサブセットの文字のみが含まれることを指定できます。データは、英字、10 進数字、および空白で構成されます。文字ピクチャ指定での有効な文字は、X、A、および 9 のみです。

文字値がピクチャ文字データ項目に代入されると、対応するピクチャ指定文字に従って各位置の文字が検証されます。文字データが該当位置の指定と一致しない場合、無効な文字として CONVERSION 条件が発生します。

下の例では、次のような文字列が PartNum の有効な値となります。

'BF123M'

'KL092/'

'BT013'

declare PartNum picture'AA999X';
put skip edit(PartNum)(P'AA999X');

数字ピクチャ指定

数字ピクチャ項目は、10 進数字、オプションの小数点、およびオプションの正符号または負符号のみで構成されます。通貨記号など、その他の算術文字も指定できますが、変数の数字値には含まれません。ただし、その他の算術文字は、数字とともに格納され、変数の文字値の一部となります。

数字ピクチャ指定には次が含まれます。

項類 文字 説明
小数位文字 V 値の数値解釈にのみ影響します。小数点文字は実際には格納されません。
数字 9、Z、*、Y 10 進数字で占められる位置を示し、値の数値解釈と文字表現の両方に影響します。
エンコードされた符号文字 T、I、R エンコードされた値の符号と数字を同じ位置に持つ数字を表します。したがって、値の数値解釈と文字表現の両方に影響します。これらの文字は、数字指定子「9」が有効である任意の場所で使用できます。
浮動文字 $、+、–、S 文字の内部表現に挿入される数字または記号を示します(「浮動文字および浮動文字列」セクションを参照してください)。
挿入文字 小数点 (.)、カンマ (,)、スラッシュ (/)、および空白文字 (B) 数字の間に挿入して、ピクチャ値の内部表現にその文字が挿入されることを示します。浮動文字も、単独で使用した場合は、挿入文字として機能します。
貸方と借方 CR、DB 常に 2 文字の記号として指定します(「貸方文字と借方文字」セクションを参照してください)。
注: 文字ピクチャ指定と数字ピクチャ指定を混在させることはできません。ただし、文字 9 は、文字ピクチャの文字としても数字ピクチャの文字としても使用できます。

数字ピクチャの文字について、次の表に示します。

文字 説明
V 「想定」小数点の位置を示します。「V」の右側にある桁位置はすべて小数部の桁になります。

ピクチャ値に代入された値は、最初に、その小数点が「V」の位置と揃うようにスケーリングされます。「V」文字は 1 つのピクチャで 1 つしか使用できません。「V」文字がピクチャに含まれていない場合は、ピクチャの右端にある、つまり整数値であると見なされます。

B、,、.、/ それぞれ、空白文字 (B)、カンマ、小数点、またはスラッシュが挿入される位置を指定します。これらのピクチャ文字は、ゼロ以外の数字が前にあるか、「9」または「V」ピクチャ文字が前にある場合にのみ、ピクチャ値に挿入されます。挿入されない場合は、ゼロ抑制文字 (空白) またはアスタリスク (*) が代わりに挿入されます。

アスタリスクまたは浮動文字列が挿入文字の前にある位置を占め、その位置が先行ゼロに対応している場合は、アスタリスクまたは浮動文字列の文字でも、挿入文字が抑制されます。

小数点が数値解釈と文字解釈の両方で同じ位置になるようにするには、「V」と小数点 (.) を隣接させる必要があります。ピリオドが正しい位置に置かれ、小数点以下の桁が有意である場合に必ずピリオドが表示されるようにするには、ピリオドを「V」の後に続ける必要があります。

Z 先行ゼロ抑制の機能を持つ 10 進数字を示します。

「Z」では、空白を抑制文字として使用してゼロ抑制が行われます。「Z」の前に「9」または浮動文字列を置くことはできません。また、「Z」を含むピクチャではアスタリスク (*) を使用できません。

「Z」ピクチャ文字を「V」の左側に指定した場合は、その「Z」文字に対応する位置にあるすべての先行ゼロが抑制されます。ゼロ以外の数字および有意なゼロは抑制されません。抑制されたゼロは空白文字で表されます。

「Z」を「V」の右側に指定する場合は、その値のすべての数字を「Z」文字で示す必要があります。これにより、小数部のすべての桁がゼロで、整数部のすべての桁が抑制されている場合にのみ、小数部のゼロが抑制されます。この場合、内部表現では、各桁位置に含まれるのは空白文字のみになります。

注:

数値ピクチャ データの使用に関する規則」セクションの例を参照してください。

* 先行ゼロ抑制の機能を持つ 10 進数字を示します。「*」では、アスタリスクを抑制文字として使用してゼロ抑制が行われます。「*」の前に「9」または浮動文字列を置くことはできません。また、「*」を含むピクチャでは「Z」を使用できません。

それ以外については、「*」の規則は「Z」の規則と同じです。

S 正符号 (+) または負符号 (-) の位置を示します。浮動文字列にならない場合もあります。「S」では、数値がゼロ以上の場合は正符号が挿入され、ゼロ未満の場合は負符号が挿入されます。

ピクチャ内で「S」が複数回出現する場合は、「S」のフィールド全体が浮動文字列となり、「V」および 1 つ以上の「B」、「,」、「.」、または「/」ピクチャ文字しか使用できません。このようなフィールドの前に「9」、「Z」、または「*」を置くことはできず、「V」の後に 1 つ以上の「S」が続く場合は、その後に「9」を続けることもできません。

浮動文字列で表される総桁数は、そのフィールド内にある「S」の数よりも 1 つ少なくなります。各桁はゼロ抑制され、値の最上位桁の直前に「+」符号または「-」符号が挿入されます。

「S」が 1 つしかない場合は、「+」符号または「-」符号は、ピクチャ値に対して、ピクチャ内での「S」の位置によって示された場所に挿入されます。

+ 数値がゼロ以上の場合に挿入される正符号 (+) の位置を示します。負の値の符号が空白で示される以外は、「S」とまったく同じように動作します。
数値がゼロ未満の場合に挿入される負符号 (–) の位置を示します。正の値の符号が空白で示される以外は、「S」とまったく同じように動作します。
$ 挿入されるドル記号 ($) の位置を示します。符号の代わりに「$」が挿入される以外は、「S」と同じように動作します。
9 先行ゼロを含む、10 進数字を示します。「9」で占められている位置には、その桁がピクチャ値の数値解釈で有意であるかどうかに関係なく、常に 10 進数字が含まれます。
Y 他のピクチャ文字を基準とした「Y」の位置に関係なく、常にゼロの数字が空白によって抑制される 10 進数字の位置を示します。
CR 数値がゼロ未満の場合に「CR」が挿入される位置を示します。これら 2 つの文字は、ピクチャの右端に対で指定する必要があります。値が負でない場合、内部表現では 2 つの空白に置き換えられます。
DB 数値がゼロ未満の場合に「DB」が挿入される位置を示します。「CR」と同様に、これら 2 つの文字は、ピクチャの右端に対で指定する必要があり、値が負でない場合、内部表現では 2 つの空白に置き換えられます。
T エンコードされた正符号または負符号を持つ 10 進数字の位置を示します。この桁には、数値がゼロ以上の場合にはエンコードされた正符号が含まれ、ゼロ未満の場合にはエンコードされた負符号が含まれます(エンコードされた符号付き数字の表現については、下の表を参照してください)。
I 数値がゼロ以上の場合にエンコードされた正符号を持つ 10 進数字の位置を示します。値がゼロ未満の場合、この位置には通常の数字が含まれます。
R 数値がゼロ未満の場合にエンコードされた負符号を持つ 10 進数字の位置を示します。値がゼロ以上の場合、この位置には通常の数字が含まれます。
数字 ASCII 文字 数字 ASCII 文字
-0 } +0 {
-1 J +1 A
-2 K +2 B
-3 L +3 C
-4 M +4 D
-5 N +5 E
-6 O +6 F
-7 P +7 G
-8 Q +8 H
-9 R +9 I