PICTURE 句では、基本項目の一般的性質および編集要件を記述する。
一般形式
一般規則
PICTURE 句で記述できるデータの項類は、英字、数値、英数字、英数字編集、数字編集、

各国文字、各国文字編集、UTF-8、


外部浮動小数点数、

ブール値
である。

数値項目を除き、項目に割り当てられる文字位置の数は USAGE 句に応じて次のように決まる。
用途 |
文字型 |
1 文字のバイト数 |
DISPLAY |
英数字 |
1 |
DISPLAY-1 |
DBCS |
2 |
NATIONAL |
各国文字 |
2 |
UTF-8 |
UTF-8 |
1 バイトから 4 バイト |
次に、これらの項類の一般規則を記す。
英字データの規則
- PICTURE 文字列に含められるのは、「A」および「B」記号のみである。
PICTURE 文字列に含められるのは、「A」記号のみである。
- 標準データ形式で表す内容は、1 つ以上の英字とする。
数値データの規則
- PICTURE 文字列に含められるのは、「9」、「P」、「S」、および「V」記号のみであり、最大桁数は 18 までである。または、

PICTURE 文字列に含められる桁数は 31 までである。または、
PICTURE 文字列に含められる桁数は 38 までである。
- 符号を付けない場合、標準データ形式のデータはアラビア数字の「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、および「9」を組み合わせたものとする。符号を付ける場合は、上記の数字の他に、「+」、「-」、またはその他の演算記号も含められる。「SIGN 句」のトピックを参照。
英数字データの規則
- PICTURE 文字列に含められる記号文字は、記号「A」、「X」、および「9」の特定の組み合わせのみであり、項目は、文字列がすべて「X」で記述された場合と同様に扱われる。PICTURE 文字列に含まれる記号文字がすべて「A」または「9」である場合、英数字項目として定義されない。
- 標準データ形式で表した内容は、コンピューターの文字集合内の任意の文字で構成できる。
英数字編集データの規則
- PICTURE 文字列で使用できるのは、次の規則に基づいた、「A」、「X」、「9」、「B」、「0」、および「/」の特定の組み合わせのみである。
- 文字列には、1 つ以上の「B」および 1 つ以上の「X」、または 1 つ以上の「0」(ゼロ) および 1 つ以上の「X」、または 1 つ以上の「/」(斜線) および 1 つ以上の「X」を含める。または、
- 文字列には、1 つ以上の「0」(ゼロ) および 1 つ以上の「A」、または 1 つ以上の「/」(斜線) および 1 つ以上の「A」を含める。
- 標準データ形式で表した内容は、コンピューターの文字集合内の任意の文字で構成できる。
数字編集データの規則
- PICTURE 文字列で使用できるのは、記号「B」、「/」、「P」、「V」、「Z」、「0」、「9」、「,」、「.」、「*」、「+」、「-」、「CR」、「DB」、および通貨記号の特定の組み合わせのみである。使用できる組み合わせは、次のとおり、記号の優先順位および編集規則によって決まる。
- PICTURE 文字列に含められる桁数は 18 までである。または、

PICTURE 文字列に含められる桁数は 31 までである。または、
PICTURE 文字列に含められる桁数は 38 までである。
- PICTURE 文字列には、1 つ以上の「0」、「B」、「/」、「Z」、「*」、「+」、「,」、「.」、「-」、「CR」、「DB」、または通貨記号を含める。
- 桁を表す文字位置の内容は、数字のいずれか 1 つとする。
- PICTURE 文字列のすべての文字位置が挿入文字によって表されている場合、1 つ以上の挿入文字を小数点の左側に配置する。
各国文字データの規則
- PICTURE 文字列で使用できるのは、記号「N」のみである。「N」はそれぞれ 1 つの各国文字のデータ項目のサイズにおける文字位置を表す。
- USAGE DISPLAY-1 が指定されている場合、または USAGE 句の指定がなく NSYMBOL"DBCS" コンパイラ指令が有効になっている場合、文字列は DBCS 文字を表す。
- USAGE NATIONAL が指定されている場合、または USAGE 句の指定がなく NSYMBOL"NATIONAL" コンパイラ指令が有効になっている場合、文字列は各国文字を表す。
各国文字編集データの規則
- NATIONAL"2" コンパイラ指令が有効になっている必要がある。PICTURE 文字列には、1 つ以上の記号「N」と 1 つ以上のB、0 (ゼロ)、または / (斜線) を含める。記号はそれぞれ 1 つの各国文字のデータ項目のサイズにおける文字位置を表す。

UTF-8 データの規則
- PICTURE 文字列で使用できるのは、記号「U」のみである。「U」はそれぞれ 1 つの UTF-8 文字のデータ項目のサイズにおける文字位置を表す。
- BYTE-LENGTH 句を指定する場合、記号「U」は 1 つだけとする。この場合の文字位置の数は integer-1 で決まる。
- BYTE-LENGTH が指定されている場合、項目内の文字数は各文字のサイズに応じて異なる。最大は integer-1 で、文字列の各文字の長さが 1 バイトの場合である。
- BYTE-LENGTH が指定された項目は、内容が integer-1 の長さに満たない場合は UTF-8 の空白文字で埋められ、内容が integer-1 を超える場合は切り詰められる。
- GROUP-USAGE UTF-8 句で定義された集団内で定義できるのは、BYTE-LENGTH 句を指定した UTF-8 データ項目のみとなる。


外部浮動小数点数データの規則
- PICTURE 文字列は、次の形式にする。

符号文字は、仮数部および指数部の直前に配置する。
「+」符号は、出力値が正数であれば正号を使用し、負の符号は負数を表すことを示す。
「-」符号は、出力値が正数であれば符号は使用せず、負の符号は負数を表すことを示す。
各符号位置は、1 バイトの記憶域を占める。
significand
仮数部 (significand) には、以下の記号を含められる。
9 .V
実小数点は「.」で表し、想定小数点は「V」で表す。仮数部には実小数点または想定小数点のどちらかを含める。小数点は、左端、中間部、または右端のどこにあってもよい。仮数部の長さは 1 桁以上 16 桁以下とする。
E
指数を示す。
exponent
指数部 (exponent) は、PIC "99" の形式にする。
- 外部浮動小数点数項目には、OCCURS、REDEFINES、および RENAMES 句を関連付けられる。
- SIGN 句は注記になり、符号の表現には影響しない。
- SYNCHRONIZED 句は注記になる。
- 外部浮動小数点数項目では、次の句は無効となる。
BLANK WHEN ZERO JUSTIFIED VALUE
ブール データの規則
- PICTURE 文字列に含められるのは、「1」記号のみである。
- PICTURE 文字列に含められる桁数は 64 までである。
- 値は、開始分離符「B"」を使用して定数で指定できる (「B"1110"」など)。値はビットで表される。
説明:
基本項目のサイズとは、標準データ形式の基本項目が占める文字位置の数を意味する。このサイズは、文字位置を表すために使用できる記号の数によって決まる。記号文字「A」、「,」、「X」、「9」、「N」、「P」、「U」、「Z」、「*」、「B」、「/」、「0」、「+」、「-」、または通貨記号の後にかっこで囲まれた整数は、その記号を複製する数を示す。次の記号は、所定の PICTURE では 1 つしか使用できないことに注意。「S」、「,」、「V」、「.」、「CR」、「DB」
基本項目を記述するために使用する記号の働きを以下で説明する。
指定する場合、関連する VALUE 句に英数字定数、各国文字定数、または次のいずれかの表意定数を含める。
USAGE 句で使用できる指定は NATIONAL のみとなる。NSYMBOL"NATIONAL" コンパイラ指令が有効になっている場合、USAGE 句を省略すると USAGE NATIONAL が暗黙的に指定される。
さらに次の追加の句を指定できる。
NATIONAL"2" コンパイラ指令が有効になっている場合、文字列に 1 つ以上の記号「N」と 1 つ以上の B、0 (ゼロ)、または / (斜線) を含めることで各国文字編集項目を指定できる。
VALUE および追加の句については、上記の各国文字の説明と同じ。定数は指定したとおりに処理される (編集は行われない)。また、USAGE NATIONAL 句を明示的または暗黙的に指定する必要がある。ただし、NSYMBOL"NATIONAL" は各国文字編集項目には効果がないため、USAGE の暗黙指定には使用できない。
文字「P」および挿入文字「.」(小数点) は、同一の PICTURE 文字列には含められない。データ項目の内部表現を別の形式に変換する処理を含む操作で、変換対象のデータ項目の PICTURE 文字列に「P」が記述されていると、「P」で記述する各桁位置にはゼロの値が含まれていると見なされ、データ項目のサイズにはそのように記述された桁位置が含まれると見なされる。
指定する場合、関連する VALUE 句に英数字定数、UTF-8 定数、または次のいずれかの表意定数を含める。
USAGE 句で使用できる指定は UTF-8 のみとなる。省略すると USAGE UTF-8 が暗黙的に指定される。
さらに次の句を指定できる。
通貨記号の最初の出現箇所で、通貨文字列の文字数が項目のサイズに加算される。通貨記号の後続の出現箇所では、それぞれ項目のサイズに 1 を加える。
CURRENCY-SIGN コンパイラ指令は、使用する通貨記号にも影響を与える。
PICTURE 句で編集を実行する一般的な方法として、挿入編集と抑制および置換編集の 2 つがある。挿入編集には次の 4 種類がある。
抑制および置換編集には次の 2 種類がある。
項目に対して実行できる編集の種類は、その項目が属する項類に依存する。次の表に、特定の項類に対してどの種類の編集を実行できるかを示す。
「,」(カンマ)、「B」(空白)、「0」(ゼロ)、および「/」(斜線) は、挿入文字として使用する。挿入文字は項目のサイズに含まれ、項目中で文字を挿入する位置を表す。
「.」(小数点) は、挿入文字として使用できる。また、桁合わせの基準となる小数点を表すためにも使用する。実小数点用に使用する挿入文字は、項目のサイズに含まれる。同じ PICTURE 文字列内で、記号「V」で表される想定小数点と、この挿入文字で表される実小数点をあわせて指定することはできない。特殊挿入編集を施すと、PICTURE 文字列内で示す位置と同じ位置にある項目に挿入文字が含まれる。
通貨文字列および符号編集制御記号「+」、「-」、「CR」、および「DB」は挿入文字である。1 つの PICTURE 文字列内で使用できるのは、1 つの通貨記号またはいずれか 1 つの符号編集制御記号のどちらかのみである。記号「CR」または「DB」を使用する場合、文字列の右端に配置する。これらの記号は、項目のサイズに 2 文字分として含まれる。記号「+」または「-」を使用する場合、右端または左端の文字位置に配置する。これらの記号は、項目のサイズに含まれる。通貨記号は左端の文字とする。
通貨記号および符号編集制御記号「+」および「-」は浮動挿入記号であり、1 つの PICTURE 文字列では同時に指定できない。
浮動挿入編集を行うには、PICTURE 文字列内で複数の浮動挿入記号を含む文字列を指定する。この浮動挿入文字列には、任意の単純挿入文字を含められる。または、この文字列の右隣に単純挿入文字を配置できる。これらの単純挿入文字は、浮動挿入文字列の一部となる。
浮動挿入文字が通貨記号である場合、この浮動挿入文字列の右隣に符号編集制御記号「+」、「-」、「CR」、または「DB」のいずれか 1 つを記述できる。
浮動挿入文字列の左端の文字は、データ項目内の浮動記号の左端の限界を表す。浮動文字列の右端の文字は、データ項目内の浮動記号の右端の限界を表す。
左端から 2 番目の浮動文字は、そのデータ項目内で数値データを格納できる左端の限界を示す。この限界以降右側の文字はすべて、ゼロでない数値データで置き換えられる。
PICTURE 文字列内では、浮動挿入編集を表す方法は 2 通りある。1 つは、小数点の左側の数字位置の先頭の一部または全部を、挿入文字で表す方法である。もう 1 つは、PICTURE 文字列内のすべての数字位置を、挿入文字で表す方法である。
PICTURE 文字列内で小数点の左側にのみ挿入文字がある場合、単一の浮動挿入文字が挿入される。その位置は、小数点のすぐ左、または挿入文字列が表すデータのゼロでない最初の数字のすぐ左であり、PICTURE 文字列内でどちらか左よりの方となる。実際に挿入される挿入文字よりも左側の文字位置は、空白で置き換えられる。
PICTURE 文字列内のすべての数字位置を挿入文字で表した場合、結果はデータの値によって異なる。値がゼロである場合は、そのデータ項目全体に空白が含まれる。値がゼロでない場合は、小数点の左側にのみ挿入文字がある場合と同じ結果となる。
切り捨てを回避するには、受信側データ項目の PICTURE 文字列の最小サイズを、次の 3 つの数字を加算した値にする。1) 送信側データ項目の文字数。2) 受信側データ項目へと編集する固定挿入文字の数。3) 浮動挿入文字用の 1 文字。
数字位置の先行ゼロを抑制するには、PICTURE 文字列内で英字「Z」または文字「*」(星印) を抑制記号として使用する。これらの記号は、所定の PICTURE 文字列内では、どちらか一方しか指定できない。各抑制記号は、項目のサイズに含まれる。「Z」を使用すると、先行ゼロは空白で置換され、「*」を使用すると、先行ゼロは星印で置換される。
ゼロ抑制を指定するには、PICTURE 文字列内で 1 つ以上の抑制記号を含む文字列を使用する。この抑制記号は、データ内の関連付けた文字位置がゼロを含む場合に、ゼロ置換する先行数字位置を示す。抑制記号の文字列内、またはそのすぐ右に埋め込まれた単純挿入文字は、その抑制文字列の一部となる。
PICTURE 文字列内では、ゼロ抑制を表す方法は 2 通りある。1 つは、小数点の左側の数字位置の先頭の一部または全部を、抑制記号で表す方法である。もう 1 つは、PICTURE 文字列内のすべての数字位置を、抑制記号で表す方法である。
小数点の左側にのみ抑制記号がある場合、PICTURE 文字列内の記号に対応するデータ内の先行ゼロは置換文字で置き換えられる。ゼロ抑制が終了する位置は、小数点、またはデータ内の抑制記号文字列が表すゼロ以外の最初の数字のうち、どちらか先に検出された方となる。
PICTURE 文字列内のすべての数字位置を抑制記号で表し、データの値がゼロでない場合、小数点の左側にのみ抑制文字がある場合と同じ結果になる。データの値がゼロであり、抑制記号が「Z」である場合、そのデータ項目全体が空白になる。データの値がゼロであり、抑制記号が「*」である場合、データ項目はすべて星印になる (実小数点は除く)。
記号「+」、「-」、「*」、「Z」、および通貨記号は、浮動置換文字として使用する際には、1 つの PICTURE 文字列内ではいずれか 1 つだけを使用する。
以下の表で、文字列内で文字を記号として使用する際の優先順位を示す。行と列が交差する欄に「X」と記載されている場合、その列の最上段に示した記号を、その行の左端に示した記号の前に (所定の文字列内で) 記述できることを示す。中かっこ { } で囲まれた文字群は、その中の 1 つしか使用できないことを示す。通貨記号は、「cs」記号で示す。PICTURE 文字列内では、記号「A」、「X」、「Z」、「9」、「*」のうち 1 つ以上、または記号「+」、「-」、「cs」のうち 2 つ以上を使用する。
次の「PICTURE 文字の順位規則」表では、固定挿入記号「+」および「-」、浮動挿入記号「Z」、「*」、「+」、「-」、および「cs」、そして別の記号「P」をそれぞれ 2 回ずつ示してある。各記号の左端の列および最上段の行は、小数点の左側で使用する場合を表す。行および列で 2 番目に書かれた記号は、小数点の右側で使用する場合を表す。