![]() |
データ部 | データ部 - 画面節 |
データ記述項は、個々のデータ項目の特徴を指定する。
またはプログラマが定義したデータ型の特徴を記述して、複数のデータ項目の記述を指定するのに使用する。
作業場所節またはファイル節内の01レベルのデータ記述項によって、データ・レコードおよびその下位のデータ項目に局所名(local name)または大域名(global name)が含まれるか否かが決まる。
作業場所節内の01レベルのデータ記述によって、データ・レコードとその下位のデータ項目の内部属性または外部属性が決まる。
を指定するとき
は、それらはレベル番号の直後に書く。REDEFINES(再定義)句を指定するときは、データ名-1またはFILLER句
が指定してあれば
直後に書く。指定がなければ、レベル番号の直後に書く。
オブジェクト参照、
手続きポインタ、
ポインタ、
COMPUTATIONAL-1か、
COMPUTATIONAL-2か、
FLOAT-SHORTか、
FLOAT-LONG は例外とする。それらに対しては、PICTURE句を指定することは禁止されている。
EXTERNAL句を指定できるのは、作業場所節内の01レベルのデータ記述項の中だけである。
EXTERNAL句とREDEFINES句は、同じデータ記述項の中には指定できない。
GLOBAL(大域)句は、01レベルのデータ記述項の中でだけ指定できる。
GLOBAL句またはEXTERNAL句を含む記述項、またはGLOBAL句またはEXTERNAL句を含むファイル記述項に関連するレコード記述に対しては、データ各-1を指定する。
TYPEDEF句は、レベル番号01のデータ記述項にだけ記述できる。
TYPEDEF句は、データ名-1が記述されている時にだけ使用できる。他の語では、明示的または暗黙的な FILLER句のデータ記述項と同じものを使用できない。
TYPEDEF句を集団項目に対して指定した場合、従属するデータ記述は明示的または暗黙的なFILLER句で定義できるので注意が必要である。
SYNCHRONIZED句は、集団項目に指定できる。
定数-5と整数-1は、浮動点小数値あるいは負数の値であってはならず、18桁を超えてはならない。
データ名-2およびデータ名-3は、暗黙的に修飾できる。
VALUE句は、字類が指標、オブジェクト、ポインタのデータ項目には指定できない。
条件名を、内部浮動小数点数項目と関連付けることができる。
条件名を、外部浮動小数点数項目と関連付けることができる。
書き方4では、定数名を定義する。定数名(constant-name)とは、定数値を表わす記号名である。COBOLシステムは定数名を対応する値で置き換える。
TYPEDEF句を使用すると、基本データ記述の集団を型定義として宣言できる。そして、USAGE句内でデータ名-1を型定義名-1として使用して、そのデータ記述のインスタンスを宣言できる。型定義自体は記憶領域を割り当てられたデータ項目ではない。
TYPEDEF句を集団のレベルで指定した場合、その型の任意のデータ項目に関してその型定義の構成要素が暗黙的に宣言される。その構成要素を参照するには、データ項目の修飾に関するCOBOLの通常の規則を適用する。 BLANK WHEN ZERO(ゼロならば空白)句は、項目の値がゼロのときにそれを空白に変える。
両方を同時に指定してもよい。ただし、ゼロ抑制の方がBLANK WHEN ZERO句に優先する。
BLOCK CONTAINS句は物理レコードの大きさを指定する。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、この機能は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
BLOCK CONTAINS句は注記になる。CODE-SET句は外部媒体上のデータを表現するために使用される符号系を指定する。
CODE-SET句を指定できるのは、レコード順編成
および行順編成の
ファイルに対してだけである。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、この機能は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
上記の制限は適用しない。
上記の制限は適用しない。
一意名-1は修飾してもよいが、添字は付けられない。
各一意名-1は、該当するファイルのレコード記述中に記述したデータ項目とする。しかし、それ自体がレコード記述であってはならない。すべての一意名-1は、同じレコード記述内に含まれていなければならない。
FORを指定すると、その対象のデータ項目にCODE-SET句に指定した符号系が適用される。FORを指定しないと、該当するファイル全体にCODE-SET句に指定した符号系が適用される。
レコード領域中のデータは、つねにASCIIコードで書かれる。特殊名段落において符号系名がEBCDICに設定されていると、CODE-SET句の影響を受けるデータは、ファイルに書かれるときにASCIIからEBCDICにコード変換される。特殊名段落において符号系名がSTANDARD-1, STANDARD-2, NATIVE, ASCIIのどれかに設定されている場合は、コード変換は必要ない。
上記のコード変換に際しては、
CODE-SET句が適用されるデータ項目はどれも英数字として扱われる。そのデータ記述に字類または項類がどのように記述されているかは考慮されない。
一意名-1にOCCURS句が指定してある場合、CODE-SET句はその最初の要素に対してだけ適用される。一意名-1の下位に属する項目にOCCURS句が指定してある場合、COSE-SET句は一意名-1全体に適用される。 DATA RECORDS句は、ファイルを構成するデータレコードの名前を書き記すだけである。
ファイル記述項のDATA RECORDS句は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に、削除される予定である。
この構文は、このCOBOL処理系に組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、この機能は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
これらのデータ名は、プログラム中のデータ記述項と対応する必要はない。
注: FD中で複数の01レベル項目の使用時に、SELECT文がキー定義を含んでいる場合、キーの大きさは、そのFDの最小レコード長の範囲内になければならない。
データ名(data-name)は、記述する対象のデータの名前を表わす。語FILLERは、レコード中の明示的に参照しない基本項目を指定するために使用する。
のどちらかを指定する場合、
データ記述項のレベル番号の直後に書く。
この句を省略すると、記述対象の項目はFILLERを指定したように扱われる。
EXTERNAL(外部)句は、データ項目またはファイル結合子に外部属性を指定する。外部データ・レコードを構成するデータ項目および集団項目は、そのレコードを記述している実行単位に含まれるすべての実行時要素 から利用できる。
定数-1は文字または各国語型とし、表意定数としてはならない。
EXTERNAL句は字類オブジェクトのデータ項目用に指定してはならない。
EXTERNAL属性を持つファイルの詳細については、ファイル処理に関するCOBOLシステムのマニュアルを参照。
定数-1は外部データ項目またはファイル結合子の外部名を定義する。同じ外部データ項目またはファイル結合子を参照するすべての原始要素で、 同じ外部名を使用しなければならない。
GLOBAL(大域)句は、データ名やファイル名や報告書名が大域名であることを指定する。大域名は、それを定義しているプログラムに含まれるすべてのプログラムで利用できる。
連絡節においても、GLOBAL句を指定できる。
JUSTIFIED(桁寄せ)句は、受取り側データ項目における標準的でない桁寄せを指定する。
またはポインタ・データ項目には、
JUSTIFIED句を指定できない。
外部浮動小数点数項目または内部浮動小数点数項目には、JUSTIFIED句を指定できない。
送出し側データ項目の内容は考慮されない(後部の空白は抑制されない)ので、注意する必要がある。
たとえば、PIC X(4)のデータ項目があり、その値が"A "(Aの後ろに空白が3つ) であるとする。これを、PIC X(6)JUSTIFIEDのデータ項目に転記すると、結果は" A "となる。同じデータ項目をPIC X(3)JUSTIFIEDのデータ項目に転記すると、左端の文字が切り落とされて、結果は" "(空白が3つ)となる。
LABEL RECORDS句は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に、削除される予定である。
この構文は、このCOBOL処理系に組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、この機能は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
LABEL RECORDS句は必要ない。
データ名-1は、ラベルレコードの名前である。この名前で、01レベルのレコード記述を用意しておく。
データ名-1は、該当するファイルのDATA RECORDS句には指定できない。
LABEL RECORD ISとLABEL RECORDS AREはどちらも正しい構文として受け入れられる。
LABEL RECORDS句は注記にとどまる。レベル番号(level-number)は、レコード内のデータの階層を示す。さらに、作業場所項目、連絡項目、条件名、
RENAMES(再命名)句の記述項にも、レベル番号を使用する。
78、
88のどれかとする。(前述のファイル記述の節を参照。)
または78とする。
局所記憶節、
レベル番号78は、定数名を定義する記述項を示すために使用する。このレベル番号には、先に示したデータ記述項の骨組みの書き方4だけが適用できる。予約語のLINAGE-COUNTERは、特殊レジスタの名前である。レコード順ファイルのファイル記述項にLINAGE句を指定すると、この特殊レジスタが生成される。このレジスタには、LINAGE句中の整数-1またはデータ名-1の大きさに等しい、符号なしの整数が暗黙的にとられる。
LINAGE句を指定することによって、利用者は論理ページの行数を設定できる。利用者はまた、論理ページ上の上下の余白(top margin, bottom margin)およびページ本体(page body)中の脚書領域(footing area)の開始行を指定することもできる。
LINAGE句を指定することができるのは、レコード順編成のファイルに対してだけである。
論理ページと物理ページの大きさの間には、必ずしも関係がある必要はない。
脚書領域となるのは、整数-2またはデータ名-2のデータ項目の値以上、整数-1またはデータ名-1のデータ項目の値以下の、論理ページ中の行の部分である。
整数-4またはデータ名-4のデータ項目の値は、論理ページ上の下の余白行数を表わす。この値はゼロでもよい。
データ名-2を指定すると、OPEN文を用いて該当ファイルを出力モードで開いたときに、この値に基づいて最初の論理ページの脚書領域が決定される。
OCCURS(反復)句は、同じデータ項目が繰り返されるとき、その記述項をいちいち指定する手間を省き、添字(subscript)や指標(index)を付けるために必要な情報を与える。
または0に等しく、
整数-2は整数-1よりも大きいか、
または等しく
する。
書き方2において、" 整数-1 TO " を省略すると、省略時解釈として1がとられる。
この制限は無視してよい。
この制限は無視してよい。
ただし、他の表用に定義した指標を使用する場合は、その必要はない。( COBOL言語の概念の章の指標付けの節を参照。)
ここに指定する指標名はデータとして扱われず、データの階層にも属さない。
レコード記述内で、書き方2のOCCURS句が含まれるデータ記述項の後ろに、その下位に属さないデータ記述項を続けることができる。その記述項がそのレコード内で占める位置は、
DEPENDING ON指定によって参照されるデータ項目の実行時の値によって変わる。
ただし、NOODOSLIDEシステム指令を設定した場合は例外である。この場合は、データ名-1の値にかかわらず、そのレコードに含まれる要素は常に最大の回数だけ反復されるものとみなされる。
ODOSLIDEシステム指令を設定した場合は、
表の後ろに続く表に属さない一意名によって参照される位置は、データ名-1の値に応じて変動する。その際、表の後ろに続くデータの内容が失われることがある。
この制限は無視してよい。
OCCURS DEPENDING ON Slide指令を設定した場合は、データ名-1は固定位置であること。
指標名-1、指標名-2などは一意である必要はなく、この記述項の左辺のデータ名によって修飾できる。
外部浮動小数点数データ項目および内部浮動小数点数データ項目に対して、
OCCURS句を指定できる。
KEY句は、字類がオブジェクトのデータ項目に対して記述してはならない。
, SORT
USE FOR DEBUGGINGの各文は例外である。さらに、この記述項の左辺が集団項目の名前である場合、その集団に属するデータ項目を作用対象として使用するときには、すべて添字または指標を付ける。ただし、REDEFINES句の作用対象として用いる場合は例外である。 (COBOL言語の概念の章の 添字付け 指標付け 一意名の各節を参照。)
定数名以外のデータ記述項の一般規則20の制限事項を参照。)
この書き方は、この記述項の左辺の反復回数が可変であることを表わす。整数-2の値は最大反復回数を表わし、整数-1の値は最小反復回数を表わす。このことは必ずしもこの記述項の左辺の長さが可変であることを意味するのではなく、反復回数が可変であることを意味する。
データ名-1によって参照されるデータ項目の値は、整数-1から整数-2の範囲に入らなければならない。データ名-1のデータ項目の値を小さくすると、それよりも出現番号の大きいデータ項目の内容は保証されない。
書き方2の
OCCURS句で記述された項目を含む集団項目を参照すると、使用される
表の領域は下記のように決定される。
PICTURE(形式)句は、基本項目の一般的性質と編集の形式を示す。
ゼロ抑制記号としての星印(*)とBLANK WHEN ZERO句を同じ記述項に指定してもよい。ただし、ゼロ抑制の方がBLANK WHEN ZERO句に優先する。
PICTURE句に書けるデータは、6種類の項類に分かれる。英字、数字、英数字、英数字編集、数字編集、
内部浮動小数点数
である。以下に、各項類ごとに分けて一般規則を記す。
PICTURE文字列に書ける記号文字は、"A"だけである。
PICTURE文字列で表わせる桁数は、31までである。
PICTURE文字列で表わせる桁数は、38までである。
数字データは、標準データ形式以外の形式でも保持できる。(後述のUSAGE文の節、および COBOL言語の概念の章の文字の表現と基数の選定の節を参照。)
PICTURE文字列で表わせる桁数は、31までである。
PICTURE文字列で表わせる桁数は、38までである。
仮数部(mantissa)および指数部(exponent)の前に、符号文字を置く。
"+" 符号は、出力値が正であれば正号が付けられ、出力値が負であれば負号が付けられることを表わす。
"-" 符号は、出力値が正であれば符号は空白とされ、出力値が負であれば負号が付けられることを表わす。
各符号は、1バイトの記憶域を占める。
仮数部
仮数部には、下記の記号を含めることができる。
9 . V
実小数点は "."で表わし、想定小数点は "V"で表わす。仮数部には実小数点または想定小数点のどちらかがなければならない。小数点は左端にあっても、中間にあっても、右端にあってもよい。仮数部の長さは1桁以上16桁以下である。
E
指数を示す。
指数部
指数部は、PIC "99" の形式にする。
BLANK WHEN ZERO
JUSTIFIED
VALUE
基本項目の大きさとは、 標準データ形式で表わしたときの、基本項目の文字数をいう。基本項目の大きさは、 文字位置を表わすのに使用できる記号の数によって決定される。記号文字 "A", ",", "X" , "9", "P", "Z", "*", "B", "/", "0", "+", "-", または通貨記号の後ろにかっこで囲んで書いた整数は、それらの記号を連続して並べる数を示す。 次の記号文字はPICTURE文字列内には1つしか書けないことに注意。"S", "V", ".",
"E",
基本項目を表わすために使用する記号の働きを、以下に説明する。
PICTURE句の中で指定できる編集方法は、 挿入と ゼロ抑制の2通りある。挿入編集には下記の4種類がある。
ゼロ抑制編集には下記の2種類がある。
項目に行える編集の種類は、その項類によって異なる。表8-1 にその関係を示す。
表 8-1: データの項類に適用できる編集の種類
| 項類 | 編集の種類 |
|---|---|
| 英字 | "B" による単純挿入だけ1 |
| 数字 | なし |
| 英数字 | なし |
| 英数字編集 | "0", "B" "/"による単純挿入 |
| 数字編集 | すべて2 |
| 2バイト文字 | 単純挿入 |
| 外部浮動小数点数 | 特殊挿入 |
注:
ANSI '74標準では、"A" と"B" の両方が含まれるPICTURE句は英字に対する単純挿入として扱われていた。ANSI '85標準では英字に対する "B" を認めなくなり、両方が含まれるPICTURE句は、英数字編集に対する単純挿入として扱われるようになった。
"," (コンマ), "B" (空白), "0" (ゼロ), " /" (斜線)は、挿入文字として使用される。挿入文字は項目中に文字を挿入すべき位置を表わし、項目の大きさに含められる。
この種の編集は、数字編集項目または外部浮動小数点数項目に対して使用できる。
"." (終止符)は、 は挿入文字として使用されるとともに、桁合わせの基準となる小数点を表わすためにも使用される。実小数点用に使用される挿入文字は、項目の大きさに含められる。同じPICTURE文字列の中に、記号文字"V" で表わされる想定小数点と、この挿入文字で表わされる実小数点を指定することはできない。特殊挿入編集を施すと、PICTURE文字列中に指定した位置に、指定した挿入文字が挿入される。
通貨編集用文字および符号編集用文字の"+" ,"-", "CR", "DB" は、挿入文字である。1つのPICTURE文字列の中では、1つの通貨編集用文字と、符号編集用文字のどれか1つだけを使用できる。符号編集用文字の "CR" または "DB" を使用する場合は、文字列の右端に置く。これらの符号編集用文字は項目の大きさとしては2文字分に数えられる。符号編集用文字の"+" または "-" を使用する場合は、文字列の右端または左端に置く。これらの符号編集用文字は項目の大きさとして数えられる。通貨編集用記号は、文字列の左端に置く。
表 8-2 : PICTURE 文字列における編集用記号
| PICTURE句の文字列中の編集用記号 | 編集の結果挿入される文字 | |
|---|---|---|
| データ項目の値が正またはゼロ | データ項目の値が負 | |
| + | + | - |
| - | 空白1個 | - |
| CR | 空白2個 | CR |
| DB | 空白2個 | DB |
通貨編集用文字および符号編集用文字の"+"と"-" は浮動挿入文字である。これらの文字を、1つのPICTURE文字列に同時に指定することはできない。
浮動挿入編集を行うには、PICTURE文字列中に浮動挿入文字を2つ以上指定する。浮動挿入文字列の間または右隣に、単純挿入文字を書くことができる。それらの単純挿入文字は、浮動挿入文字列の一部となる。
浮動挿入文字に通貨編集用文字を使用した場合、その浮動挿入文字列の右隣に符号編集用文字の"+", "-", "CR" ,"DB" のどれか1つを書くことができる。
浮動挿入文字列の左右両端の文字はそれぞれ、データ項目中で浮動する記号の左右の限界を示す。
左端から2番目の浮動文字は、そのデータ項目の中で数字データを収めることができる左側の限界を示す。それ以降右側の浮動文字は、ゼロでない数字で置き換えられる。
PICTURE文字列の中では、浮動挿入文字を表わす方法は2通りである。1つは、小数点の左側の数字列の先頭の一部または全部を、挿入文字で書く方法である。もう1つは、PICTURE文字列の中のすべての数字位置を、挿入文字で書く方法である。
PICTURE文字列中の小数点の左側にだけ挿入文字を書いた場合、単一の浮動挿入文字が挿入される。その位置は、小数点のすぐ左、または挿入文字列が表わすデータのゼロでない最初の数字のすぐ左の、どちらか左よりの方となる。実際に挿入される挿入文字よりも左側の文字位置は、空白で置き換えられる。
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-3に示す。"○" 印は、その列の上段に示した文字を、その行の左端に示した文字の前に書いてもよいことを示す。中かっこ{ }で囲んだ文字群は、その中の1つしか書けないことを示す。 " 通貨" は、通貨編集用文字を示す。PICTURE文字列の中には、文字 "A " , "○", "Z", " 9", "*", の少なくともどれか1つ、または記号文字"+" , "-"," 通貨" の少なくともどれか2つを書く。
表8-3の中で、固定挿入文字の"+"と"-" 、および浮動挿入文字の"Z", "*", " +","-", " 通貨", および記号文字"P" は、それぞれ2回ずつ示してある。 左の列および上の行は、小数点の左側に書く場合を表わす。右の列および下の行は、小数点の右側に書く場合を表わす。
表 8-3: PICTURE 文字列における順序規則
| 先行文字 | 固定挿入文字 | 浮動挿入文字 | その他の文字 | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 後続文字 | B | 0 | / | , | . | + - |
+ - |
CR DB |
通貨 | E | Z * |
Z * |
+ - |
+ - |
通貨 | 通貨 | 9 | A ○ |
S | V | P | P | G | |
| 固定挿入文字 | B | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||
| 0 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||
| / | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||
| , | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||
| . | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||||
| + - |
||||||||||||||||||||||||
| + - |
○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||||
| CR DB |
○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||
| 通貨 | ○ | |||||||||||||||||||||||
| E | ○ | ○ | ○ | ○ | ||||||||||||||||||||
| 浮動挿入文字 | Z * |
○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||||||
| Z * |
○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||||||||
| + - |
○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||||||||
| + - |
○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||||||||||
| 通貨 | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||||||||
| 通貨 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||||||||||
| その他の文字 | 9 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||||||
| A ○ |
○ | ○ | ○ | ○ | ○ | |||||||||||||||||||
| S | ||||||||||||||||||||||||
| V | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||
| P | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||||||||||||
| P | ○ | ○ | ○ | ○ | ○ | |||||||||||||||||||
| G | ○ | ○ | ||||||||||||||||||||||
PROPERTY句はこのデータ項目がオブジェクトの属性であることおよび状況に応じてGETメソッドとSETメソッドのどちらか一方または両方を生成すべきことを指定する。
注: スーパークラス内に属性名を定義できる。その方法は2通りある。ひとつは、PROPERTY指定を記述したひとつまたは一組のメソッドを定義することである。もうひとつは、PROPERTY句を指定したデータ記述項を記述することである。
その記述項の左辺の字類が指標、オブジェクト、ポインタのいずれかである場合、そのメソッドは暗黙的に下記のように定義される。
METHOD-ID. GET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION RETURNING LSデータ名. パラメータ名. SET LSデータ名 TO データ名 EXIT METHOD. END METHOD.
その記述項の左辺の項類が英数字編集、国別編集、数字編集のいずれかである場合、そのメソッドは暗黙的に下記のように定義される。
METHOD-ID. GET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION RETURNING LSデータ名. パラメータ名. MOVE データ名 TO LSデータ名 (1:). EXIT METHOD. END METHOD.
注: その記述項の左辺が編集されている場合、受取り側の項目全体を部分参照したときに、そのデータに編集規則が再び適用されることはない。
そうでない場合、このメソッドの暗黙的な定義は下記のようになる。
METHOD-ID. GET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION RETURNING LSデータ名. パラメータ名. MOVE データ名 TO LSデータ名 EXIT METHOD. END METHOD.
ここで、LSデータ名のデータ記述には、その記述項の左辺およびその下位のデータ項目が含まれる。ただし、下記のものは例外である。
その記述項の左辺の字類が指標、オブジェクト、ポインタのいずれかである場合、そのメソッドは暗黙的に下記のように定義される。
METHOD-ID. SET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION USING LSデータ名. パラメータ名. SET データ名 TO LSデータ名 EXIT METHOD. END METHOD.
その記述項の左辺の項類が英数字編集、国別編集、数字編集のいずれかである場合、そのメソッドは暗黙的に下記のように定義される。
METHOD-ID. SET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION USING LSデータ名. パラメータ名. MOVE LSデータ名 TO データ名 (1:). EXIT METHOD. END METHOD.
注: その記述項の左辺が編集されている場合、受取り側の項目全体を部分参照したときに、そのデータに編集規則が再び適用されることはない。
そうでない場合、このメソッドの暗黙的な定義は下記のようになる。
METHOD-ID. SET PROPERTY データ名. DATA DIVISION. LINKAGE SECTION. 01 LSデータ名 データ記述. PROCEDURE DIVISION USING LSデータ名. par-name. MOVE LSデータ名 TO データ名 EXIT METHOD. END METHOD.
ここで、LSデータ名のデータ記述には、その記述項の左辺およびその下位のデータ項目が含まれる。ただし、下記のものは例外である。
RECORD句は、固定長レコード内の文字数または可変長レコード内の文字数の範囲を指定する。可変長レコードに関しては、最小文字数と最大文字数とを指定する。
固定形式のファイルおよび
可変形式のファイル
の概念は、この節全体を通じて、行順ファイルには適用しない。使用するCOBOL での行順ファイルの使用についての詳細は、COBOLシステムのマニュアルを参照。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、RECORD CONTAINS句は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
該当するファイルのレコード記述項に記述する文字数は、整数-2に指定する文字数より少なくても、整数-3に指定する文字数より多くてもいけない。
整数-3は、整数-2よりも大きくする。
データ名-1は、作業場所節または連絡節中で符号なしの整数の基本項目として記述しておく。
対応するファイル結合子が外部ファイル結合子である場合、そのファイル結合子と関連する実行単位中のすべてのファイル記述項において、整数-1、整数-2、整数-3に同じ値を指定しなければならない。RECORD句を指定しない場合、そのファイル結合子に関連するレコード記述項は、すべて同じ長さにする。
行順ファイルは、固定形式ファイルでも可変形式ファイルでもない。このため、RECORDING MODE、RECORD CONTAINS、RECORD VARYING IN SIZE句のどれかを書いても書かなくても、その性能には影響しない。
書き方2は、可変長レコードを定義するために使用する。整数-2には、ファイル中のレコードの中で最短のものの文字数を指定する。整数-3には、ファイル中のレコードの中で最長のものの文字数を指定する。
レコードの文字数は、その中に含まれる基本データ項目の文字数を合計することによって決まる。ただし、再定義および再命名分を除く。また、桁詰めによって暗黙のFILLERがとられている場合は、それも数に含める。表を指定した場合は、下記のように扱われる。
整数-3を指定しないと、該当するファイルのレコードの最長文字数は、そのファイルのレコード用に記述した最大の文字数に等しいものとされる。
データ名-1を指定した場合、該当するファイルに対してRELEASE文、REWRITE文、WRITE文を実行する前に、該当するレコードの文字数をデータ名-1のデータ項目に設定する。
データ名-1を指定した場合、DELETE文、RELEASE文、REWRITE文、START文、WRITE文を実行しても、データ名-1のデータ項目の内容は変わらない。READ文またはRETURN文の実行が不成功に終わった場合も、データ名-1のデータ項目の内容は変わらない。
RELEASE文、REWRITE文、WRITE文を実行する間、該当するレコード中の文字数は、下記の条件によって決定される。
書き出す論理レコードの文字数が、整数-2よりも少ないか整数-3よりも多いと、出力文は不成功に終わる。そして、対応する入出力状態に、その原因となった条件を示す値が設定される。ただし、RELEASE文の実行中は除く。
データ名-1を指定した場合、該当するファイルに対するREAD文またはRETURN文の実行が正常に終了すると、データ名-1のデータ項目の内容は、読み込んだばかりのレコードの文字数を示すように変更される。
READ文またはRETURN文の中にINTOを指定すると、暗黙のMOVE文の送出し側データ項目となる現在レコード中の文字数は、下記の条件によって決定される。
RECORDING MODE句は、ファイル中の論理レコードの形式を指定する。
FとFIXEDは同義語である。
V と VARIABLは同義語である。
"U" 指定は注記になる。
行順ファイルは、固定形式ファイルでも可変形式ファイルでもない。このため、RECORDING MODE、RECORD CONTAINS、RECORD VARYING IN SIZE句のどれかを書いても書かなくても、その性能には影響しない。REDEFINES(再定義)句は、同一の計算機記憶領域を別のデータ記述項によって記述する。
上記のレベル番号とデータ名-1
またはFILLER
は書き方を明確にするために示してある。レベル番号とデータ名-1
またはFILLER
は、REDEFINES句の一部を構成するわけではない。
またはFILLERの直後に書く。
あるいは、PICTURE句またはUSAGE句の後ろにREDEFINES句を書くことができる。
78,
88は使用できない。
この句を、ファイル節内の01レベルの記述項内で使用してもよい。
データ名-2のデータ記述項に、REDEFINES句が含まれていてもよい。
データ名-2は、REDEFINES句が含まれている記述項の下位に属していてもよい。データ名-2のデータ記述項には、OCCURS句が含まれていてはならない。しかし、OCCURS句が含まれているデータ記述項の下位に、データ名-2が属していても構わない。この場合、REDEFINES句の中でデータ名-2を参照するときに、添字または指標は指定できない。元の定義および再定義のどちらも、OCCURS句で指定される可変反復データ項目を含んでいてはならない。(この章のOCCURS句の節を参照。)
データ名-2のデータ記述項に、OCCURS句が含まれていてもよい。
レベル番号が01の場合、元の定義と再定義は、OCCURS句で定義したサイズが可変の項目を含むことができる。
外部浮動小数点数データ項目または内部浮動小数点数データ項目を、REDEFINES句の左辺または右辺に置いてもよい。
データ名-2が一意でない場合でも、データ名-2を修飾してはならない。この場合は、REDEFINES句の配置に関する規則上、データ名-2に曖昧さはないからである。
データ名-2を修飾してもよいが、記述した修飾は無視される。
REDEFINES句は、字類オブジェクトのデータ項目に指定してはならない。
REDEFINES句を、字類オブジェクトのデータ項目に指定してもよい。
データ名-2は、字類オブジェクトであってはならない。
データ名-2は、字類オブジェクトでもよい。
ただし、データ名-1の領域が、データ名-2の領域よりも小さくてもよい場合を除く。
ただし、データ名-1の領域がデータ名-2の領域よりも大きくてもよい場合を除く。この場合、再定義する項目と再定義される項目の大きい方を収められるだけの記憶領域がとられる。
REDEFINES句は記憶領域を再定義するのであって、記憶されているデータ項目を再定義するのではないことを、認識することが重要である。
または、先行する再定義記述項のデータ名を使用してもよい。
RENAMES(再命名)句は、基本項目を組み合わせて新たな集団を作る。組合わせは互いに重ね合わせることができる。
上記のレベル番号66とデータ名-1は書き方を明確にするために示してあるだけで、レベル番号とデータ名-1はRENAMES句の一部を構成するわけではない。
78レベル、
88レベル、01レベルまたは別の66レベルの記述項を再命名することはできない。
データ名-2およびデータ名-3を明示的に修飾しなかった場合、参照の暖味性がなければ、01レベルの項目による暗黙の修飾がなされる。
SIGN(符号)句は、演算符号の特性を明示的に記述する必要がある場合に、その演算符号の位置と表現形式を指定する。
この規則は廃止する。
この規則は強制しない。(前述のCODE-SET句を参照。)
SIGN句付の集団項目の下位に属する項目(基本数字項目でも集団項目でも)にSIGN句を指定すると、下位の項目に指定したSIGN句が優先する。
外部浮動小数点数項目に関しては、SIGN句は注記としてだけ用いられる。 内部浮動小数点数項目に対しては、SIGN句は無効であり、使用すると診断メッセージが出される。SYNCHRONIZED(桁詰め)句は、計算機記憶の固有の境界に従い、基本項目の配置を指定する。
標準COBOL定義の一部を構成するにもかかわらず、X/Open COBOL言語定義では、この機能は明示的に除外されている。したがって、X/Openに準拠するCOBOL原始プログラムにおいてはこの機能を使用するべきではない。
割付対象のデータ項目を格納するために必要な文字位置の個数が、計算機の語の左右の境界の間の文字位置の個数よりも少ないとき、使用されない文字位置は他のデータ項目のためには使われない。しかし、この使用されない文字位置は、下記のようになる。
SYNCHRONIZED句によって基本項目の大きさが変更されることはないが、余分の文字位置が割り当てられる。
集団項目にSYNCHRONIZED句を指定すると、その集団項目に属するすべての項目に適用される。
TYPEDEF句は、プログラマによって定義された構造体または使用法としてレコードを定義する。
集団項目にTYPEDEF句が指定されると、従属項目はOCCURSまたはREDEFINES句を使用して指定できる。
VALUE句は、TYPEDEF句を指定するデータ記述項目にも、また、TYPEDEF構造体内の条件名(88レベル項目)を除く、どの従属項目にも指定できない。
USAGE(用途)句は、計算機記憶内の データ項目の表現形式を指定する。
, BINARY, PACKED-DECIMAL
, COMPUTATIONAL-3
, COMPUTATIONAL-4
, COMPUTATIONAL-5
のどれかを記述している場合、数字項目を定義するPICTURE文字列で記述しなければならない。 (たとえば、PICTURE文字列が記号 "P", "S", "V", "9" だけを含んでいること。)詳細は、前述のPICTURE句の節を参照。
宣言にUSAGE句を持たない基本データ項目が、宣言にUSAGE句を持つ集団項目に従属する場合、そのUSAGE句は、英字、英数字、英数字編集、数字編集のデータ項目を定義したPICTURE文字列で記述されたリストの形式で記述してもよい。
宣言にUSAGE句を持つ基本データ項目、または宣言にUSAGE句を持つ集団項目に従属する基本データ項目は、USAGE句が
COMPUTATIONAL-5
または COMPUTATIONAL-X
を記述している場合、数字項目を定義するPICTURE文字列で記述しなければならない。
または、サイズが1から8バイトの数字項目を定義するPICTURE文字列で記述しなければならない。サイズが 1, 2, 3, 4, 5, 6, 7, 8 バイトの数字項目の場合、これはそれぞれ2, 4, 7, 9, 12, 14, 16, 18 の小数点位置である整数項目を記述したことと同じである。
COMPUTATIONAL-X を指定し、PICTURE文字列が数字項目
定義している場合、その項目には符号を付けてはならない。
SYNCHRONIZED句は、用途がINDEXのデータ項目に指定してもよい。
COMP-1 はCOMPUTATIONAL-1の省略形である。
COMP-2 はCOMPUTATIONAL-2の省略形である。
COMP-3は、COMPUTATIONAL-3の省略形である。
COMP-4は、COMPUTATIONAL-4の省略形である。
COMP-5 はCOMPUTATIONAL-5の省略形である。
COMP-X はCOMPUTATIONAL-Xの省略形である。
ENTRY(導入)文のUSING句、
またはCALL(呼ぶ)文のUSING句だけである。
ポインタ
または手続きポインタ
項目を明示的に参照できるのは、SET(設定)文、比較条件、CALL(呼ぶ)文のUSING句、手続き部の見出しのUSING(使用)句、ENTRY(導入)文のUSING句、
または CALL(呼ぶ)文のGIVING 句だけである。
USAGE IS OBJECT,
USAGE IS POINTER,
USAGE IS
PROCEDURE-POINTER
句のどれかで定義された基本データ項目は、条件変数であってはならない。
型定義名-1は、
TYPEDEF句のレコードと同じ原始ファイル内で前に定義しなければならない。
USAGE 型定義名-1を指定した場合、以下の句は指定できない。
同じ階層の高位レベルに明示的なUSAGE 句がある場合、USAGE 型定義名-1の指定はエラーとなる。
USAGE 型定義名-1を指定した項目の直後に、従属する項目(78以外の高位レベル番号の項目)を記述した場合、エラーとなる。
USAGE OBJECT REFERENCE句は、集団項目用のデータ記述項に指定してはならないが、従属する基本データ項目には指定してもよい。
USAGE OBJECT REFERENCE句をファイル節に記述してはならない。
USAGE OBJECT REFERENCE句をファイル節に記述してもよい。
注:オブジェクト参照が、アプリケーションロジックのアクティブなオブジェクトを参照しているかどうかによる。
ACTIVE-CLASS指定は、ファクトリ定義、オブジェクト定義、メソッド定義にだけ記述できる。
ただし、PICTURE句があり、データ項目の定義が文字である場合を除く。
USAGE IS PACKED-DECIMAL句は、USAGE IS COMPUTATIONAL-3と同義語である。
USAGE IS DISPLAY句は、下記の種類の項目に適用できる。
ポインタ・データ項目、
手続きポインタ・データ項目
が含まれていてもよい。この場合、指標データ項目、
ポインタ・データ項目、
手続きポインタ・データ項目
の変換は行われない。
USAGE IS COMPUTATIONAL-4は、USAGE IS COMPUTATIONALと同義語である。
USAGE IS POINTER句を指定すると、対象データ項目の番地を記憶できる。 (SET文の節を参照。)
USAGE IS
は、データ項目が
手続きの番地を記憶する手続きポインタであることを指定する。(
SET文の節を参照。) 参照する対象の手続きはどんな言語で書いてあってもよい。COBOLの場合、それは入れ子になっていないポインタの手続き部を表わす。下記のどちらかによって識別する。
型定義名-1を
基本項目として指定した場合、「USAGE 型定義名-1」句は、型定義名-1によって参照されるプログラマによって定義された用途と同じ属性を、基本項目に指定することになる。
型定義名-1を集団項目として指定した場合、「USAGE 型定義名-1」句は同一の構造をした集団項目を指定する働きをする。その効果は、型定義名-1によって識別されるデータ記述項の下位に属する複数のデータ宣言が、「USAGE 型定義名-1」句で宣言された項目の下位に、まったく同様に指定されたかのようになる。下位のデータ項目のデータ名は、型定義名-1によって参照されるプログラマによって定義された構造体の中に宣言されているものと同じになる。それらを一意に参照するには、データ名の修飾を行う。
USAGE
OBJECT REFERENCE句を用いて記述したデータ項目をオブジェクト参照と呼ぶ。オブジェクト参照は字類がオブジェクトであり項類がオブジェクト参照であるデータ項目である。オブジェクト参照の内容はオブジェクトの参照先または空である。ただし、下記の規則に従う。
VALUE(値)句は、定数の値、作業場所項目の初期値、条件名に関連する値を定義する。
書き方1で、VALUES AREを使用できる。
外部浮動小数点数データ項目には、VALUE句を指定できない。
外部浮動小数点数データ項目に、VALUE句を指定できる。
USAGE COMP-1 または USAGE COMP-2を指定した内部浮動小数点数データ項目に、VALUE句を指定できる。この場合の定数-1は、浮動小数点定数、表意定数ZERO、値ゼロを表す数字定数のどれかとする。
書き方2は、内部浮動小数点数データ項目に対応する条件変数を定義するのに使用する。外部浮動小数点数データ項目には使用できない。この場合、定数-2 および定数-3は、浮動小数点定数、表意定数ZERO、値ゼロを表す数字定数のどれかとする。
書き方2を、外部浮動小数点数データ項目に対応する条件変数を定義するのに使用できる。
定数-4は、定数-2から定数-3の範囲内のどの値とも等しくてはならない。つまり、定数-4は定数-2以上かつ定数-3以下であってはならない。書き方3
一意名は、78レベル項目の宣言の前に、すべて定義しておく。一意名-1または一意名-3(LENGTHパラメータ)のどちらかが集団項目である場合、その集団の定義は、78レベル項目の宣言の前に、レベル番号がそれ以下の別のデータ項目が次にくることによって完結されていること。
項目の項類が数字編集である場合、VALUE句内の定数は数字定数でも文字定数でもよい。VALUE句内の定数が数字定数である場合、項目に収められる値は数字定数を数字編集項目に転記したのと同じとなる。
ファイル節、連絡節および
局所記憶節内
のデータ記述項の中で、VALUE句を使用できる。ただし、注記にとどまる。
表意定数の
NULLは、USAGE POINTERまたはUSAGE PROCEDURE-POINTERを指定したデータ項目のVALUE句内にだけ指定できる。この種のデータ項目のVALUE句内に指定できる値は、このNULLだけである。NULLを指定すると、ポインタは他のデータ項目を指さないことが保証される。
OCCURS句が含まれるデータ記述項またはその下位に属するデータ記述項の中でVALUE句を使用すると、反復される各データ項目に指定した値が割り当てられる。
可変反復データ項目に関連するデータ項目のデータ記述項の中で、VALUE句を指定すると、DEPENDING ON指定によって参照されるデータ項目の値がOCCURS句によって指定される反復回数の最大値と等しいものとして、そのデータ項目が初期化される。下記の場合に、データ項目は可変反復データ項目と関連する。
DEPENDING ON指定によって参照されるデータ項目にVALUE句が関連する場合、可変反復データ項目が初期化された後で、VALUE句で指定された値がそのデータ項目に入られるものとみなされる。
字類が
オブジェクトのデータ項目は、ヌルに初期化される。初期値は、VALUE句が効力を持つ時、およびデータ項目の記憶域が割り当てられた時に効力を持つ。
字類がポインタのデータ項目は、ヌルに初期化される。初期値は、VALUE句が効力を持つ時、およびデータ項目の記憶域が割り当てられた時に効力を持つ。
書き方3は、定数名記述項にだけ使用できる。
定数-5を指定して演算子が続かない場合、 定数名の性質は定数-5と同様となる。そうでない場合、定数名の性質は整数と同様となる。
任意の数の算術演算子または
論理演算子を使用できる。式は左から右へ整数演算として評価される。式の中にかっこは使用できない。中間結果にゼロ未満のものがあると、最終結果はどうなるかわからない。整数-1の代わりに定数名を使用できる。
論理演算のANDとORは、2進表現のビットごとに作用する。
一意名-1 または一意名-3のLENGTHは、一意名-1または一意名-3に割り当てられた記憶領域の大きさである。一意名が集団項目である場合、その長さは下位のデータ項目をすべて含んだものである。
NEXTから返される値は、前のデータ宣言の後にある記憶域の次のバイトの相対番地である。このデータ宣言がOCCURS句によって定義された表のものであると、NEXTから返される値は、表の最初の要素の後に起こる記憶域の次のバイトの相対番地である。
一意名-2 または一意名-4のSTARTは、一意名-2または一意名-4が始まる相対番地である。
規則18と19に関して、相対番地を下記のように定義する。
相対番地は別のCOBOL製品との間で移植性がない。相対番地は翻訳単位を超えた特定の値に依存すべきではない。VALUE OF句はファイルのラベル・レコード中の項目の内容を指定する。
ファイル記述項のVALUE OF句は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に、削除される予定である。
この構文は、このCOBOL処理系に組み込まれているすべての方言で全面的に使用することができる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を洗い出すことができる。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、この機能は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
データ名-2は、作業場所節内に記述しておく。
定数-2は文字定数とする。表意定数であってはならない。
ファイル管理記述項のASSIGN句の中で、外部ファイル参照、データ名-1、定数-1のどれかを指定した場合、
VALUE OF
FILE-ID句は使用できない。(前述のファイル管理記述項の節を参照。)
VALUE OF句は注記になる。
定数-2またはデータ名-2に指定した文字列は、外部ファイル名と解釈される。
Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名 は国際法によって保護されています。
![]() |
データ部 | データ部 - 画面節 | ![]() |