PICTURE(形式)句

機能

PICTURE(形式)句は、基本項目の一般的性質と編集の形式を示す。

一般形式

指令

  1. 予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。

    • INTLEVEL - 方言がMFのときに、数字データ項目に許される最大の長さを決定する。

構文規則

  1. PICTUREは、基本項目にだけ指定できる。

  2. 文字列は、COBOL文字集合(character set)に含まれる文字を記号として用い、一定の規則に従って組み合わせたものである。この組合わせによって、基本項目の項類が決まる。

  3. 文字列に含められる文字の数は、最大30字である。

    文字列に含められる文字の数は、最大50字である。

  4. PICTUREは、RENAMES(再命名)句の左辺に指定してはならない。

  5. PICは、PICTUREの省略形である。

  6. ゼロ抑制記号としての星印(*)とBLANK WHEN ZERO句は、同じ記述項に指定できない。

    ゼロ抑制記号としての星印(*)とBLANK WHEN ZERO句を同じ記述項に指定してもよい。ただし、ゼロ抑制の方がBLANK WHEN ZERO句に優先する。

  7. 1文字に続けて、整数をかっこで囲んで指定すると、その文字を整数の値分の数だけ並べることを意味する。

一般規則

PICTURE句に書けるデータは、英字、数字、英数字、英数字編集、数字編集、

および外部浮動小数点数

である。以下に、各項類ごとに分けて一般規則を記す。

英字(alphabetic)項目に関する規則

  1. PICTURE文字列に書ける記号文字は、"A"と"B"だけである。

    PICTURE文字列に書ける記号文字は、"A"だけである。

  2. 標準データ形式で表わした場合、その内容は1つ以上の英字とする。

数字(numeric)項目に関する規則

  1. 文字列に書ける記号文字は、"9"、"P"、"S"、および"V"だけである。PICTURE文字列で表わせる桁数は、1以上18以内である。

    PICTURE文字列で表わせる桁数は、31までである。

    PICTUREPICTURE文字列で表わせる桁数は、38までである。

  2. 符号を付けない場合、標準データ形式のデータはアラビア数字の"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" を組み合わせたものとする。符号を付ける場合は、上記の数字の他に、"+", "-" およびその他の演算記号を含めることができる。(後述のSIGN(符号)句節を参照。) .)

数字データは、標準データ形式以外の形式でも保持できる。(後述のUSAGE(用途)句節、および COBOL言語の概念の章の文字の表現と基数の選定節を参照。)

英数字(alphanumeric)項目に関する規則

  1. 文字列に書ける記号文字は、 "A", "X", "9" だけである。結果的には、記号文字をすべて"X" と書いたように扱われる。PICTURE文字列に含まれる記号文字がすべて"A"または"9"である場合、英数字項目にならない。

  2. 標準データ形式で表わした場合、その内容は計算機の文字集合の任意の文字を含んでいてよい。

英数字編集(alphanumeric edited)項目に関する規則

  1. PICTURE文字列に書ける記号文字は、 "A", "X", " 9", "B", "0", "/" を一定の規則に従って組み合わせたものに限られる。その規則は下記の通り。

    1. PICTURE文字列には、最低1つの "B"と最低1つの"X" 、または最低1つの "0" (ゼロ)と最低1つの"X" 、または最低1つの"/" (斜線)と最低1つの"X" を含ませる。または、

    2. PICTURE文字列には、最低1つの"0" (ゼロ)と最低1つの"A" 、または最低1つの"/" (斜線)と最低1つの"A" が含まれるものとする。

  2. 標準データ形式で表わした場合、その内容は計算機の文字集合の所定の文字を含むことができる。

数字編集(numeric edited)項目に関する規則

  1. PICTURE文字列に書ける記号文字は、"B", "/", "P", "V" , "Z", "0", "9", ",", ".", "*", "+", "-", "CR", "DB", および通貨記号を、一定の規則に従って組み合わせたものに限られる。許容される記号文字の組合わせは、記号の優先順位によって決まる。その規則は下記の通り。

    1. PICTURE文字列で表わせる桁数は、1以上18以内である。

      PICTURE文字列で表わせる桁数は、31までである。

      PICTURE文字列で表わせる桁数は、38までである。

    2. PICTURE文字列には、最低1つの"0" , "B", "/", "Z", "*", "+", ",", ".", "-", "CR", "DB"、または通貨記号が含まれるものとする。

  2. 標準データ形式で表わした場合、その内容は1つの数値とする。

  3. PICTURE文字列のすべての桁位置が挿入文字によって表わされている場合、少なくとも1つの文字を小数点の左側に置く。

外部浮動小数点数

  1. PICTURE文字列は、下記の形式とする。

    仮数部(mantissa)および指数部(exponent)の前に、符号文字を置く。

    "+" 符号は、出力値が正であれば正号が付けられ、出力値が負であれば負号が付けられることを表わす。

    "-" 符号は、出力値が正であれば符号は空白とされ、出力値が負であれば負号が付けられることを表わす。

    各符号は、1バイトの記憶域を占める。

    仮数部

    仮数部には、下記の記号を含めることができる。

    9 . V

    実小数点は "."で表わし、想定小数点は "V"で表わす。仮数部には実小数点または想定小数点のどちらかがなければならない。小数点は左端にあっても、中間にあっても、右端にあってもよい。仮数部の長さは1桁以上16桁以下である。

    E

    指数を示す。

    指数部

    指数部は、PIC "99" の形式にする。

  2. 外部浮動小数点数項目には、OCCURS、REDEFINES、およびRENAMESの各句を指定できる。

  3. SIGN句は、注記としてだけ使用するものであり、符号の表現には影響しない。

  4. SYNCHRONIZED句は、注記としてだけ使用する。

  5. 外部浮動小数点数に関しては、下記の句は指定できない。

    BLANK WHEN ZERO
    JUSTIFIED
    VALUE

基本項目の大きさ

基本項目の大きさとは、標準データ形式で表わしたときの、基本項目の文字数をいう。基本項目の大きさは、文字位置を表わすのに使用できる記号の数によって決定される。記号文字 "A", ",", "X" , "9", "P", "Z", "*", "B", "/", "0", "+", "-", または通貨記号の後ろにかっこで囲んで書いた整数は、それらの記号を連続して並べる数を示す。 次の記号文字はPICTURE文字列内には1つしか書けないことに注意。

"S"、"V"、"."、

"E"、

"CR"、および"DB"

使用する記号

基本項目を表わすために使用する記号の働きを、以下に説明する。

A PICTURE文字列中の各 "A" は、1文字の英字または1つの空白だけを含むことのできる文字位置を表わす。
B PICTURE文字列中の各"B" は、空白文字を挿入できる文字位置を表わす。
E 外部浮動小数点数項目の指数部の始まりを示す。指数部は、実行時に1バイトの記憶域を占める。
P PICTURE文字列中の各"P" は、想定小数点の位置を合わせるための位取りを表わすものである。データ項目中に現れる位の中に小数点が含まれていないときに、想定小数点の位置を指定するために使用する。位取り文字である "P" は、データ項目の大きさには数えられない。数字編集項目または数字項目の最大桁数(18桁)を判定する際には、位取り文字は数に入れられる。この"P" は、PICTURE文字列の左端または右端に連続してだけ書くことができる。これは、"P" は想定小数点の位置を暗示するからである。つまり、PICTURE文字列の左端に "P" がある場合はその左に想定小数点があることになり、PICTURE文字列の右端に"P" がある場合はその右に想定小数点があることになる。"P"を含むPICTURE文字列の左端または右端に想定小数点記号の "V" を書くことは、定義の重複である。

"P" と挿入文字の"." 小数点)を、同一のPICTURE文字列に含めてはならない。データ項目の内部表現をあるものから別のものへ変換するときに、対象のデータ項目のPICTURE文字列に "P" が含まれていると、各"P" の位置に値ゼロが入っているものとみなされ、データ項目の大きさにはその桁位置も含まれる。

PICTURE文字列に記号 "P" が含まれるデータ項目を参照する処理で用いられるのは、そのデータ項目の実際の文字表現ではなく、そのデータ項目の代数値である。この代数値は、"P" の配置によって示される位置に小数点を想定し、各"P" をゼロで置き換えたものである。このデータ項目の大きさは、PICTURE文字列によって表わされる桁数となる。このような処理が行われる事例は下記のとおり。

  1. 数字の送出し側作用対象を必要とする処理

  2. 送出し側の作用対象が数字であり、そのPICTURE文字列に記号文字 "P"が含まれる場合の、基本MOVE(転記)文

  3. 送出し側の作用対象が数字編集であり、そのPICTURE文字列に記号文字"P" が含まれ、受取り側の作用対象が数字または数字編集である場合の、MOVE文

  4. 両方の作用対象が数字である場合の比較処理

上記以外のすべての処理では、記号文字 "P" は無視され、作用対象の大きさに含められない。

S PICTURE文字列中の"S" は、演算符号の存在を示す。しかし、演算符号の表現形式や位置までも示すものではない。"S"はPICTURE文字列の左端に書く。この記号文字は標準データ形式で数えた基本項目の大きさには含まれない。ただし、その記述項にSEPARATE CHARACTER句を指定した場合は、 "S" は項目の大きさに含められる。(この章のSIGN(符号)句節を参照。)
V PICTURE文字列中の "V" は想定小数点の位置を示す。この記号文字は1つのPICTURE文字列には1つだけ書ける。"V" は文字位置を表わすわけではないので、基本項目の大きさには含まれない。想定小数点がPICTURE文字列の右端の文字の右側にある場合は、"V" を書いても書かなくてもよい。
X PICTURE文字列中の各"X" は、1個の文字の位置を示す。そこには、計算機文字集合で許される任意の文字を含めることができる。
Z PICTURE文字列中の各 "Z" は、先行ゼロ列のゼロを空白に置き換えることを示す。"Z" は項目の大きさに含められる。
9 PICTURE文字列中の各 "9" は、数字を含む1個の桁位置を示す。"9" は項目の大きさに含められる。
0 PICTURE文字列中の各 "0" (ゼロ) は、数字のゼロを挿入すべき1個の桁位置を示す。"0" は項目の大きさに含められる。
/ PICTURE文字列中の各"/"(斜線)は、文字"/"を挿入すべき1個の桁位置を示す。 "/" は項目の大きさに含められる。
, PICTURE文字列中の各"," (コンマ)は、文字"," を挿入すべき1個の桁位置を示す。"," は項目の大きさに含められる。PICTURE文字列の最後には置けない。

挿入文字 "," を、PICTURE文字列の最後に置いてもよい。

. PICTURE文字列中に現れる文字"." (終止符)は、編集記号であり、桁合わせの基準とする小数点の位置を表わすとともに、文字"." を挿入する位置を表わす。"." は項目の大きさに含められる。特殊名段落にDECIMAL-POINT IS COMMAを指定すると、原始単位における終止符とコンマの機能が入れ替えられる。この場合、PICTURE句の中の終止符とコンマに関しても、終止符に関する規則がコンマに適用され、コンマに関する規則が終止符に適用される。挿入文字 " ." は、PICTURE文字列の最後には置けない。

挿入文字 "." を、PICTURE文字列の最後に置いてもよい。

+, -, CR, DB これらの記号文字は符号編集用文字であり、符号編集用文字を置く位置を示す。1つのPICTURE文字列の中では、これらの記号文字のうちのどれか1つだけ使える。これらの文字は項目の大きさに含められる。
* PICTURE文字列中の各"*" (星印)は、先行ゼロ列のゼロを星印に置き換えることを示す。"*" は項目の大きさに含められる。
通貨編集用文字 PICTURE文字列中の通貨編集用文字は、編集中に通貨編集用文字が収められる文字位置を示す。通貨編集用文字は、通貨記号または特殊名段落にCURRENCY SIGN句で指定した1文字で表わされる。

通貨編集用文字が最初に現れたときに、その文字数が項目の長さに追加される。その後、通貨編集用文字が現れるたびに、1が項目の長さに追加される。

CURRENCYコンパイラ指令も、使用される通貨編集用文字に影響を与える。

編集規則

PICTURE句の中で指定できる編集方法は、挿入およびゼロ抑制の2つである。挿入による編集には下記の4種類がある。

  1. 単純挿入(simple insertion)

  2. 特殊挿入(special insertion)

  3. 固定挿入(fixed insertion)

  4. 浮動挿入(floating insertion)

ゼロ抑制による編集には下記の2種類がある。

  1. 空白によるゼロ抑制

  2. 星印(*)によるゼロ抑制

項目に行える編集の種類は、その項類によって異なる。表 8-3 にその関係を示す。

> 表 8-3: データの項類に適用できる編集の種類
項類 編集の種類
英字 "B" による単純挿入だけ1
数字 なし
英数字 なし
英数字編集 "0", "B" "/"による単純挿入
数字編集 すべて2
2バイト文字 単純挿入
外部浮動小数点数 特殊挿入


注:

  1. ANSI '74標準では、"A" と"B" の両方が含まれるPICTURE句は英字に対する単純挿入として扱われていた。ANSI '85標準では英字に対する "B" を認めなくなり、両方が含まれるPICTURE句は、英数字編集に対する単純挿入として扱われるようになった。

  2. 1つのPICTURE句の中に、浮動挿入編集とゼロ抑制編集を同時に指定することはできない。1つのPICTURE句の中には、1種類のゼロ抑制だけを指定できる。

単純挿入編集

"," (コンマ), "B" (空白), "0" (ゼロ), " /" (斜線)は、挿入文字として使用される。挿入文字は項目中に文字を挿入すべき位置を表わし、項目の大きさに含められる。

特殊挿入編集

この種の編集は、数字編集項目または外部浮動小数点数項目に対して使用できる。

"." (終止符)は、 は挿入文字として使用されるとともに、桁合わせの基準となる小数点を表わすためにも使用される。実小数点用に使用される挿入文字は、項目の大きさに含められる。同じPICTURE文字列の中に、記号文字"V" で表わされる想定小数点と、この挿入文字で表わされる実小数点を指定することはできない。特殊挿入編集を施すと、PICTURE文字列中に指定した位置に、指定した挿入文字が挿入される。

固定挿入編集

通貨編集用文字および符号編集用文字の"+" ,"-", "CR", "DB" は、挿入文字である。1つのPICTURE文字列の中では、1つの通貨編集用文字と、符号編集用文字のどれか1つだけを使用できる。符号編集用文字の "CR" または "DB" を使用する場合は、文字列の右端に置く。これらの符号編集用文字は項目の大きさとしては2文字分に数えられる。符号編集用文字の"+" または "-" を使用する場合は、文字列の右端または左端に置く。これらの符号編集用文字は項目の大きさとして数えられる。通貨編集用記号は、文字列の左端に置く。

> 表 8-4:PICTURE 文字列における編集用記号
PICTURE句の文字列中の編集用記号 編集の結果挿入される文字
データ項目の値が正またはゼロ データ項目の値が負
+ + -
- 空白1個 -
CR 空白2個 CR
DB 空白2個 DB

浮動挿入編集

通貨編集用文字および符号編集用文字の"+"と"-" は浮動挿入文字である。これらの文字を、1つのPICTURE文字列に同時に指定することはできない。

浮動挿入編集を行うには、PICTURE文字列中に浮動挿入文字を2つ以上指定する。浮動挿入文字列の間または右隣に、単純挿入文字を書くことができる。それらの単純挿入文字は、浮動挿入文字列の一部となる。

浮動挿入文字に通貨編集用文字を使用した場合、その浮動挿入文字列の右隣に符号編集用文字の"+", "-", "CR" ,"DB" のどれか1つを書くことができる。

浮動挿入文字列の左右両端の文字はそれぞれ、データ項目中で浮動する記号の左右の限界を示す。

左端から2番目の浮動文字は、そのデータ項目の中で数字データを収めることができる左側の限界を示す。それ以降右側の浮動文字は、ゼロでない数字で置き換えられる。

PICTURE文字列の中では、浮動挿入文字を表わす方法は2通りである。1つは、小数点の左側の数字列の先頭の一部または全部を、挿入文字で書く方法である。もう1つは、PICTURE文字列の中のすべての数字位置を、挿入文字で書く方法である。

浮動挿入文字列の左右両端の文字はそれぞれ、データ項目中で浮動する記号の左右の限界を示す。

左端から2番目の浮動文字は、そのデータ項目の中で数字データを収めることができる左側の限界を示す。それ以降右側の浮動文字は、ゼロでない数字で置き換えられる。

PICTURE文字列の中では、浮動挿入文字を表わす方法は2通りである。1つは、小数点の左側の数字列の先頭の一部または全部を、挿入文字で書く方法である。もう1つは、PICTURE文字列の中のすべての数字位置を、挿入文字で書く方法である。

PICTURE文字列の中のすべての数字位置を挿入文字で書いた場合、最低限1つの数字位置を、想定小数点または実小数点の左に置く。

切捨てが起こらないようにするためには、受取り側のPICTURE句の文字列の文字数を、送出し側のデータ項目の文字数に受取り側で編集するための固定挿入文字の数と浮動挿入文字のための1字とを加えたもの以上にする。

ゼロ抑制編集

数字位置の先行ゼロ列を抑制するためには、PICTURE文字列の中で英字 "Z" または "*" (星印) を使用する。1つのPICTURE文字列の中では、どちらか一方しか指定してはならない。各抑制文字は、項目の大きさに含められる。抑制文字に "Z" を指定した場合、先行ゼロ列は空白で置き換えられる。抑制文字に"*" を指定した場合、先行ゼロ列は星印で置き換えられる。

ゼロ抑制は、PICTURE文字列の中に1つ以上の抑制文字を並べて示す。この抑制文字列は、先行ゼロ列のゼロの置き換えを行おうとする先行数字位置を示す。抑制文字列の中またはそのすぐ右に書いた単純挿入文字は、その抑制文字の一部となる。

PICTURE文字列の中では、ゼロ抑制文字を表わす方法は2通りである。1つは、小数点の左側の数字列の先頭の一部または全部を、ゼロ抑制文字で書く方法である。もう1つは、PICTURE文字列の中のすべての数字位置を、ゼロ抑制文字で書く方法である。

PICTURE文字列中の小数点の左側にだけゼロ抑制文字を書いた場合、PICTURE文字列中のゼロ抑制文字に対応するデータ中の先行ゼロ列が、置換え文字によって置き換えられる。ゼロ抑制が停止される位置は、小数点またはデータ中のゼロでない最初の数字の、どちらか先に出てきた方となる。

PICTURE文字列の中のすべての数字位置をゼロ抑制文字で書いた場合、結果はデータの値によって異なる。 値がゼロでない場合は、小数点の左側にだけゼロ抑制文字を書いた場合と同じ結果となる。値がゼロである場合は、ゼロ抑制文字に"Z" を使用していれば、そのデータ項目全体は空白で置き換えられ、ゼロ抑制文字に"*" を使用していれば、そのデータ項目全体は実小数点を除いて星印で置き換えられる。

記号文字"+", "-", "*", " Z" および通貨編集用文字は、浮動置換え文字として使用するときは、1つのPICTURE文字列の中ではどれか1つだけを書く。

順序規則

PICTURE文字列の中で記号として使用するときの、文字の順序規則を表 8-5に示す。"○" 印は、その列の上段に示した文字を、その行の左端に示した文字の前に書いてもよいことを示す。中かっこ{ }で囲んだ文字群は、その中の1つしか書けないことを示す。 " 通貨" は、通貨編集用文字を示す。PICTURE文字列の中には、文字 "A " , "○", "Z", " 9", "*", の少なくともどれか1つ、または記号文字 "+" , "-"," 通貨" の少なくともどれか2つを書く。

表 8-5の中で、固定挿入文字の"+"と"-" 、および浮動挿入文字の"Z", "*", " +","-", " 通貨", および記号文字"P" は、それぞれ2回ずつ示してある。左の列および上の行は、小数点の左側に書く場合を表わす。右の列および下の行は、小数点の右側に書く場合を表わす。

> 表 8-5:PICTURE文字列における順序規則
先行文字 固定挿入文字 浮動挿入文字 その他の文字
後続文字   B 0 / , . +
-
+
-
CR
DB
通貨 E Z
*
Z
*
+
-
+
-
通貨 通貨 9 A
X
S V P P G
固定挿入文字 B x x x x x x     x   x x x x x x x x   x   x x
0 x x x x x x     x   x x x x x x x x   x   x  
/ x x x x x x     x   x x x x x x x x   x   x  
, x x x x x x     x   x x x x x x x     x   x  
. x x x x   x     x   x   x   x   x            
+
-
                                             
+
-
x x x x x       x x x x     x x x     x x x  
CR
DB
x x x x x       x   x x     x x x     x x x  
通貨           x                                  
E       x x                       x     x      
浮動挿入文字 Z
*
x x x x   x     x   x                        
Z
*
x x x x x x     x   x x               x   x  
+
-
x x x x         x       x                    
+
-
x x x x x       x       x x           x      
通貨 x x x x   x                 x                
通貨 x x x x x x                 x x       x      
その他の文字 9 x x x x x x     x x x   x   x   x x x x x  
A
X
x x x                           x x          
S                                              
V x x x x   x     x   x   x   x   x   x   x    
P x x x x   x     x   x   x   x   x   x   x    
P           x     x                   x x   x  
G x                                           x