![]() |
データ部 - 画面節 | 手続き部 - 組み込み関数 | ![]() |
手続き部(procedure division)は、宣言しても、宣言しなくてもよい。
プログラム定義、
関数定義、
またはメソッド定義の中の手続き部は、実行されるべき手続きを含む。これらの手続きは、宣言文または非宣言文のいずれか、または両方である。
オブジェクト定義およびファクトリ定義の中の手続き部は、オブジェクトまたはファクトリオブジェクトにより起動されるメソッドを含む。
呼出しプロトタイプの中の手続き部は、手続きをまったく含まない。ただし、ENTRY文を含む場合はある。
関数プロトタイプ、メソッドプロトタイプ、またはプログラムプロトタイプの中の手続き部では、パラメータまたは戻り項目(もし、あれば)を指定する。


用語、「手続き部の見出し」については、次の手続き部の見出し節で説明する。
形式 1 および 2 は、プログラム定義中、
プログラムプロトタイプ定義、関数定義、関数プロトタイプ定義、
メソッド定義、または
呼出しプロトタイプ
でのみ使用できる。
形式 3は、ファクトリ定義またはインターフェイス定義、
またはオブジェクト定義
でのみ使用できる。
上記の宣言完結文(declarative-sentence)は、USE文である。(本書の手続き部 - SEARCH - XML PARSEの章のUSE(使用)文節、および言語リファレンス - 追加トピックの中のデバッグモジュールの章のUSE FOR DEBUGGING文節および報告書作成の章のUSE BEFORE REPORTING文節を参照)USE文は、該当する節をいつ実行するかを指定する。
手続きは、手続き部内の段落または段落集団、あるいは節または節集団から成る。手続き名は、それが使用される原始要素中の段落または節を示す語である。手続き名は段落名(修飾される場合もある)または節名から成る。
ある段落がある節内にある場合、すべての段落がその中になくてはならない。
この規則は強制しない。
段落は、段落名の後に続けて終止符(.)と空白を書き、後ろに完結文をいくつか書いたものである。段落の終了は、次の段落名または節名の直前、あるいは、手続き部の終わり、宣言部分のEND DECLARATIVESのところまでとなる。
節は、節見出しと、その後に続くいくつかの段落から成る。節の終了は、次の節名、あるいは手続き部の終わり、宣言部分のEND DECLARATIVESのところまでとなる。
しかし、宣言中の節は宣言完結文を必要としない。これはPERFORM文によって開始できる。(PERFORM文の詳細については、手続き部
- PERFORM - ROLLBACKの章のPERFORM(実行)文節を参照。)
完結文(sentence)は、上記で説明した名前付きの段落内に明示的には含まれない。名前のない暗黙的な段落内に含まれているとみなされる。段落は、節内に明示的には含まれない。名前のない暗黙的な節内に含まれているとみなされる。
プログラムの定義、
またはメソッドの定義
では、実行は、手続き部の宣言部分ではない最初の文から始まる。以降、文は記述されている順序に実行される。ただし、他の順序が示されている場合は例外である。
呼出しプロトタイプでは、手続き部は実行されない。
オブジェクトの定義では、宣言部分が、親であるメソッド定義のすべてで指定されている場合と同様に動作する。
ファクトリの定義では、宣言部分が、親であるメソッド定義のすべてで指定されている場合と同様に動作する。
ここでは、算術式と条件式、共通指定と入出力指定、組み込み関数、COBOL動詞について説明する。
手続き部の見出しは、手続き部の形式
2 では書いても書かなくてもよい。ただしこれは、、これより前に部が記述されていない場合、および手続き部がCOBOLの文で始まる場合(節見出し、段落見出し、宣言節ではなく)にだけ、任意となる。
手続き部の冒頭には、下記の見出しを付けなければならない。
呼び名は、特殊名段落で定義しなければならない。この方法、および実行時環境でサポートされる呼出し規則とのインターフェイスをCOBOLシステムで記述する方法の詳細については、環境部の章の特殊名段落節を参照。
ファイル節、または作業領域節
で、レベル01またはレベル77項目として定義されなければならない。特定のユーザ定義の語は、データ名-1として 2回以上現れてはならない。
2回以上現れてもよい。
データ名-1の記述項目は、REDEFINES句を含んではならない。
REDEFINES句を含んでもよい。
しかし、データ名-1はリンク節のどこにおいても REDEFINES句の対象にできる。
ファイル節、または作業領域節
で、レベル01またはレベル77項目として定義されなければならない。データ名-2 は、字類が数字、オブジェクト、またはポインタのデータ項目として定義しなければならない。
データ名-2の字類はどれでもかまわない。ただし、その長さは8バイト以下でなければならない。
USING句では、62までのデータ名が許される。
関数、
またはメソッドが使用する仮パラメータの名前を識別する。渡された引数は、原始要素が起動する際に、以下のいずれかにより識別される。
2つの名前リストの間の対応は、位置を元にして決められる。
起動する側のランタイム要素のリポジトリ段落に、起動される側のランタイム要素のプログラム指定子が含まれておらず、CALL文に対するNESTED指定がない場合は、この割り当てられたレコードは、引数と同じ長さとする。ここで、引数が変数反復データ項目として記述されていれば、最大長が使用される。引数は、変換されることなく、この割り当てられたレコードに転記される。このレコードはその後、起動される側のランタイム要素によって、引数として、また、参照により引き渡されるものとして扱われる。
起動される側のランタイム要素が、
のいずれかである場合、この割り当てられたレコードは、以下のいずれかとなる。
以下のいずれかで、引数が送出し側作用対象として、また、割り当てられたレコードが受取り側作用対象として使用される。
割り当てられたレコードは、その後、引数として、また、参照により引き渡されるものとして扱われる。
データ名-2、およびデータ名-3
への参照は、呼ばれるプログラムのリンク節で与えられた項目の記述に従って決定される。この記述が呼ぶプログラムの相応するデータ項目よりも多くの文字位置を定義している場合、予期せぬ結果となる。この規則の適用に失敗したり、特定のランタイム環境用のシステム領域で許される最大サイズを超えると、システムはたいへんな損害を被ることになる。
算術式(arithmetic expression)には、数字基本項目の一意名、数字定数、これらの一意名や定数を算術演算子でつないだもの、2つの算術式を算術演算子でつないだもの、算術式をかっこで囲んだものがある。算術式の前には単項演算子をつけることができる。
以下の記述における、
算術式の中に現れる一意名および定数は、算術演算を行える数字基本項目または数字定数のどちらかを表わしていなければならない。
算術式に使用できる演算子(arithmetic operator)には、5つの2項演算子(binary arithmetic operator)と、2つの単項演算子(unary arithmetic operator)がある。これらの演算子は特定の記号で表わし、前後を空白で区切る。
| 2項演算子
|
意味
|
|---|---|
| + | 加算 |
| - | 減算 |
| * | 乗算 |
| / | 除算 |
| ** | べき乗 |
| 単項演算子
|
意味
|
|---|---|
| + | 数字定数+1を掛けることと同じ |
| - | 数字定数-1を掛けることと同じ |
使用可能な変数、数字定数、算術演算子、およびかっこの組み合わせを表 10-1に示す。
| 最初の要素 | 2番目の要素 | ||||
|---|---|---|---|---|---|
| 変数 | * / ** + - | 単項 + - | ( | ) | |
| 変数 | - | P | - | - | P |
| * / ** + - | P | - | P | P | - |
| 単項 + - | P | - | - | P | - |
| ( | P | - | P | P | - |
| ) | - | P | - | - | P |
| P | 許される要素の組合わせを示す |
| - | 無効な組合わせを示す |
| 変数 | 一意名または定数を示す |
算術式には、書き方と評価について、以下の規則が適用される。
| 1番目 | 単項演算子の+と- |
| 2番目 | 指数 |
| 3番目 | 乗算と除算 |
| 4番目 | 加算と減算 |
以下に式の評価の例を示す。
1 + 2 * 3
上の式では、最初に乗算(下記)が実行される。
次に、乗算の結果、6を使用して加算が実行される。
したがって、式の結果は7となる。
式が評価されると、一つ以上の中間結果が出される。概念的に、各中間結果は、一時データ項目として格納され、その値はARITHMETIC指令で選択したパラメーターによって決まる。
ARITHMETIC"MF"指令を選んだ場合、本 COBOL システムは、各中間結果を十進40桁の浮動小数点レジスタに評価する。ゼロでない各中間結果の最上位桁はこのレジスタの最上位桁に位置付けられる。小数点位置は中間結果の値に応じて浮動する。40桁に格納できない桁は切り捨てられる。
ARITHMETIC"TRUNC20" コンパイラ指令を選択すると、Micro Focus COBOLは、ARITHMETIC"MF"を選択した場合と同じ方法で各中間結果を評価する。ただし、20桁を超える小数点の右側の数字は、式の各段階で切り捨てられる。この指令は、COBOL WorkBenchで提供されるものと同様の切り捨てが必要な場合にのみ使用すべきである。 この指令を使用する場合は、INTLEVELコンパイラ指令の初期値、"2"の設定を変えてはならない。これは、一部の新機能(全部で18桁を超える数字PICUTUREなど)をTRUNC20とともに使用できなくなることを意味する。
OS/VS COBOL, VS COBOL II, DOS/VS COBOL, COBOL/370 および OS/390 システムでは、中間結果を、式中の要素のPICTURE句によって決定される精度で計算するので、各バージョンによって多少異なってくる。詳細については、IBM VS COBOL for OS/VSマニュアル、VS COBOL II Application Programming Guide、およびCOBOL for OS/390 & VM V2R2 Programming Guideを参照。各中間結果は、PICTURE 9(n)V9(m) を持つ。n+m の最大値は、選択されたオプションによって 30 または 31 である。
中間結果用にOSVSまたはVSC2オプションを記述した場合、このシステムは以下の制限で、選択されたメインフレームの動作をその結果を適当に切捨てて想定する。
条件式(conditional expression)は、実行用プログラムの流れを制御する条件を表わす。条件を評価した結果の真理値に応じて、プログラムの処理の経路が選択される。条件式は、
EVALUATE(評価)、
IF(判断)、PERFORM(実行)、SEARCH(表引き)の各文の中に指定する。条件式は単純条件と複合条件に分類される。どちらの種類の条件も、任意の数のかっこで囲むことができる。かっこで囲んでも、条件の種類は変わらない。
OSVSシステム指令を設定した場合、条件式の中で部分参照を行うことはできない。
単純条件(simple condition)には、比較条件、字類条件、条件名条件、スイッチ状態条件、符号条件がある。単純条件は真理値として、「真」または「偽」のどちらかをとる。単純条件をかっこで囲んでも、真理値は変わらない。
比較条件(relation condition)は、2つの作用対象を比較する。各作用対象には、一意名によって参照されるデータ項目、定数、算術演算によって算出される値を使用できる。比較条件は、作用対象の間に関係が成立するときに、真理値「真」をとる。2つの数字作用対象を、それぞれのUSAGE句に指定されている形式に関係なく、比較できる。その他の比較においては、作用対象の用途は同じでなければならない。作用対象のどちらかが集団項目である場合は、文字の比較規則が適用される。
文字定数をかっこで囲むことができる。
比較条件の一般形式は下記のとおり。
比較文字の">" , "<", "=" は必要語であるが、下線が引かれていないことに注意。これは、"≧" のような他の記号との混同を避けるためである。
" = TO"と " > THAN" と " <
THAN" も使用できる。
最初の作用対象(一意名-1、定数-1、算術式-1)を、条件の左辺(subject of condition)と呼ぶ。2番目の作用対象(一意名-2、定数-2、算術式-2)を条件の右辺(object of condition)と呼ぶ。比較条件では少なくとも1つの変数を参照しなければならない。
比較演算子(relational operator)は、比較条件の中で行う比較の種類を指定する。比較演算子としての予約語は、前後を空白で区切らなければならない。 必要語または比較文字の前に"NOT" を付けたものは、1つの比較演算子である。たとえば、"NOT EQUAL" は「等しくない」ことを「真」とすることを表わし、"NOT GREATER" は「以下である」ことを「真」とすることを表わす。各比較演算子の意味を表 10-2に示す。
下記の比較演算子は同義であり、どちらを書いてもよい。:
| IS EQUAL TO | と | EQUALS; |
| IS NOT EQUAL TO | と | IS UNEQUAL TO; |
| IS GREATER THAN | と | EXCEEDS; |
| IS NOT GREATER THAN | と | IS LESS THAN OR EQUAL TO; |
| IS NOT LESS THAN | と | IS GREATER THAN OR EQUAL TO. |
| 意味
|
比較演算子 |
|---|---|
| 「より大きい」または「以下」 | ![]() |
| 「より小さい」または「以上」 | ![]() |
| 「等しい」または「等しくない」 | ![]() |
| 「より大きい」または「等しい」 | ![]() |
| 「より小さい」または「等しい」 | ![]() |
| 「等しい」 | |
| 「等しくない」 | ![]() |
| 「より大きい」 | |
| 必要な比較記号、 '<'、'>'、および '=' に下線が引かれない。 これは、"≧" (「以上」)のような他の記号との混同を避けるためである。 | |
字類が数字の作用対象に関しては、その代数値が比較される。定数または算術式を表わす数字の数は意味をもたない。ゼロは符号が付いていても付いていなくても、1つの値とみなされる。
これらの作用対象は、その用途がどのように記述されているかにかかわらず、比較することが許される。符号の付いていない数字作用対象は、比較上は、正の数として扱われる。
数字編集項目は、字類が英数字であり、これらの項目は、以下に示す文字作用対象の比較規則に従って比較される。
文字作用対象どうしの比較、または1つの数字作用対象と1つの文字作用対象の比較は、指定されている文字の照合順序に基づいて行われる。 (環境部の章の実行用計算機段落節を参照。) 一方の作用対象が数字である場合、整数データ項目または整数定数にする。そして、下記のことに注意する。
作用対象の大きさは、作用対象中の標準データ形式文字の合計数である。
表意定数を持つ数字編集データ項目を比較することができる。これは英数字比較として扱われる。
用途が違っていても、数字作用対象と文字作用対象を比較できる。数字作用対象は、標準データ形式で同じ大きさのUSAGE
DIAPLAY項目に転記されたように扱われる。そして、この内容が文字作用対象と比較される。
比較処理は2つの場合に分けられる。
不一致であった最初の対応する文字は、文字の照合順序を比較される。そして、照合順序の大きい方の文字を含む作用対象の方が大きい作用対象であるとみなされる。
下記の項目の間でだけ、比較できる。
用途が明示的にまたは暗黙的に、ポインタとされている2つのデータ項目を比較できる。ポインタの比較では、等しいか等しくないかだけを検査する比較演算子だけを使用できる。
![]()
用途が手続きポインタである、2つのデータ項目を比較できる。
2つのオブジェクト参照を比較して、同じオブジェクトを参照しているかを確認できる。
字類条件(class condition)は、作用対象が数字であるか英字であるか、
あるいは、小文字の英字であるか、大文字の英字であるか、環境部の特殊名段落中にCLASS句によって指定されている文字集合に属する文字だけが含まれるかを、判定する。
小文字のa, b, c, ...z、
または大文字
と小文字
および空白の任意の組合わせから構成される場合、作用対象は英字である。
COMPUTATIONAL、COMPUTATIONAL-X、
COMPUTATIONAL-3、
COMPUTATIONAL-5、
またはPACKED-DECIMAL
のどれかとする。
または各国語型関数
を参照しなければならない。
NOTを指定した場合、NOTとこれに続く語は、真理値を導くための字類検査を定義する 1つの字類条件となる。例えば NOT NUMERICは、作用対象が文字であるかを判断する真偽検査である。字類条件が語NOTを含んでいて、一意名-1が長さゼロの集団項目である場合、字類検査の結果は常に真となる。
NUMERIC検査を、データ記述項に演算子が記述されている基本項目から成る集団項目に対して使用できる。
および小文字の英字"a"から"z"
と空白の任意の組合わせで構成されているときだけである。
外部浮動小数点数項目(USAGE DISPLAY)および内部浮動小数点数項目(USAGE
COMP-1およびUSAGE COMP-2)には、字類条件を使用できない。
条件名条件(condition-name condition)は、条件変数(condition variable)の値が条件名に対応する値のどれかと等しいか否かを判定する。
スイッチ状態条件(switch-status condition)は、
9つある
COBOLスイッチのそれぞれが「オン」の状態にあるか「オフ」の状態にあるかを判定する。
スイッチには、順にSWITCH-0からSWITCH-8という名前が付けられている。
それらの各スイッチの値(「オン」と「オフ」)は、COBOL実行用プログラムの実行を開始するときに、操作員によって設定される。(ランタイムスイッチの詳細については、COBOLシステムのマニュアルを参照。) 条件名に対応するスイッチと「オン」または「オフ」状態は、環境部の特殊名段落の中で定義しておく。環境部の章の特殊名段落節を参照。
条件名に定義されている状態にスイッチが設定されていると、検査の結果は真となる。
コンパイラ指令 SWITCH-TYPE を初期値の 1に設定すると、スイッチを設定するランタイム要素の内部からCOBOLスイッチが設定されているかどうかをテストする以外に、スイッチ状態条件を使用することはできない。
コンパイラ指令 DIALECT が ISO2002に設定されると、コンパイラ指令 SWITCH-TYPEが 2に設定される。この場合、実行単位のいずれかのランタイム要素の内部からCOBOLスイッチが設定されているかどうかをテストする以外に、スイッチ状態条件を使用することはできない。
正負条件(sign condition)は、算術式の値が正か負かゼロかを判定する。 正負条件の一般形式は以下の通り。
正負条件の必要語に "NOT" を付けたものは、1つの正負条件である。この条件に照らして代数検査が行われ、真理値が求められる。たとえば、 "NOT ZERO" は作用対象の値がゼロでない(正または負) のときに真となる。作用対象は、値がゼロよりも大きいときに正であり、値がゼロよりも小さいときに負であり、値がゼロのときゼロである。算術式は、少なくとも1つの変数を参照しなければならない。
符号検査において、ZEROの代わりにZEROSまたはZEROESを使用できる。
省略引数条件で、関数、メソッド、またはプログラムに引数が与えられたかどうかが決定される。
データ名-1 IS [ NOT ] OMITTED
INSTANCE-OF条件は、オブジェクト参照が特定のクラスおよびインターフェイスのどちらのインスタンスであるかを決定する。

複合条件は、論理的結合子(論理演算子、"AND" および "OR")による単純条件、組み合わせ条件、および複合条件の結合、または、これらの条件の論理否定(論理演算子、"NOT")による否定で形成される。複合条件の真の値は、かっこに囲まれているかどうかにかかわらず、単純条件の個々の真の値に関する、記述されたすべての論理演算子の連携、または、論理的に結合または否定された条件の中間の真の値の結果である真の値である。
論理演算子およびその意味は以下のとおりである。
| 演算子
|
意味
|
|---|---|
| AND | 論理的な結合。真の値は、結合されている条件が真であれば、"真"。結合されている条件の片方または両方が偽であれば、 "偽"。 |
| OR | 論理的な包含。真の値は、包含されている条件の片方または両方が真であれば、、"真"。包含されている条件の両方が偽であれば、 "偽"。 |
| NOT | 論理的な否定、または真の値の逆。 真の値は、条件が偽であれば、"真"。条件が真であれば、 "偽"。 |
論理演算子の前後には、空白を入れなければならない。
否定単純条件(negated simple condition)は、単純条件に論理演算子の"NOT" を付けたものである。否定単純条件は、単純条件の真理値を逆転させる働きをする。したがって、単純条件の真理値が「偽」のときに否定単純条件の真理値は「真」となり、単純条件の真理値が「真」のときに否定単純条件の真理値は「偽」となる。否定単純条件は、単純条件の真理値を逆転させる働きをする。したがって、単純条件の真理値が「偽」のときに否定単純条件の真理値は「真」となり、単純条件の真理値が「真」のときに否定単純条件の真理値は「偽」となる。否定単純条件をかっこで囲んでも真理値は変わらない。
組合せ条件(combined condition)は、論理演算子の"AND" または "OR" で条件をつないだものである。
表 10-3に、条件と条件演算子を結び付け、かっこで囲む有効な組合せを示す。左かっこと右かっこは1対1で対応し、左かっこが右かっこよりも左側にこなければならない。
| 要 素 | 条件式中の位置 | 直前にきてよい要素 | 直後にきてよい要素 |
|---|---|---|---|
| 単純条件 | どこでも可 | OR, NOT, AND, ( | OR, AND, ) |
| OR または AND | 最初と最後は不可 | 単純条件, ) | 単純条件, NOT, ( |
| NOT | 最後は不可 | OR, AND, ( | 単純条件, ( |
| ( | 最後は不可 | OR, NOT, AND, ( | 単純条件, NOT, ( |
| ) | 最初は不可 | 単純条件, ) | OR, AND, ) |
表 からわかるとおり、"OR NOT" は許される組合せであるが、"NOT OR" は許されない組合せである。また、"NOT ( " は許されるが、 "NOT NOT " は許されない)。
単純比較条件または否定単純比較条件を、論理結合語で組み合わせていくつも続けて書く場合、先行する比較条件と共通の左辺または左辺と比較演算子があり、かつかっこを使用していなければ、最初のものを除く共通の比較条件を省略できる。下記の2通りの方法がある。
一続きの比較条件の中で、上記の両方の形の省略方法を使用できる。略記した場合、先行する明記した最後の左辺が省略した左辺を補うように挿入され、先行する明記した最後の比較演算子が省略した比較演算子を補うように挿入される。 このように暗黙的に左辺および比較演算子が挿入された結果は、表 10-3の規則に合わなければならない。省略した左辺や比較演算子が補われるこの処理は、組合せ条件の中に略記しない単純条件が出てくると終了する。
条件が評価される順序を、かっこを使用することによって変更できる。(下記の例を参照)
略記組合せ比較条件の中で"NOT" を使用した場合、下記のように解釈される。
略記組合せ比較条件および略記否定組合せ条件と、それに相当する略さない形の例をいくつか下に示す。
| 略記組合せ比較条件
|
略さずに書いた場合
|
|---|---|
| a > b AND NOT < c OR d |
((a > b) AND (a NOT < c)) OR (a NOT < d) |
| a NOT EQUAL b OR c |
(a NOT EQUAL b) OR (a NOT EQUAL c) |
| NOT a = b OR c |
(NOT (a = b)) OR (a = c) |
| NOT (a GREATER b OR < c) |
NOT ((a GREATER b) OR (a < c)) |
| NOT (a NOT > b AND c AND NOT d |
NOT ((((a NOT > b) AND (a NOT > c)) AND (NOT (a
NOT > d)))) |
| x > a OR y AND z |
x > a OR (x > y AND x > z) |
|
|
x > a OR (x > y AND x > z) |
|
|
(x > a OR x > y) AND x > z |
|
|
x = a OR x > b |
|
|
x = a AND ( x > b OR x < z ) |
| a EQUAL b OR NOT GREATER OR EQUAL c OR d
|
(a EQUAL b) OR (NOT (a GREATER OR EQUAL c)) OR (a
GREATER OR EQUAL d) |
| a EQUAL b OR NOT >=c OR d |
(a EQUAL b) OR (NOT (a >= c)) OR (a >= d) |
暗黙的な評価順序を変更する必要があるときは、かっこを使用して、組合せ条件の個々の条件が評価される順序を指定できる。
かっこ内の条件が先に評価される。かっこが入れ子になっている場合は、最も内側のかっこから順次外側へと評価が進められる。かっこが使用されていないかまたはかっこ内の条件が同じレベルにあるときは、下記の暗黙的な階層順序に従って論理評価が進められ、最終的な真理値が決定される。
比較(略記比較条件があれば、通常の形に展開してから)
字類
条件名
スイッチ状態
正負
以降に説明する各文において、次のような指定が頻繁に出てくる。ROUNDED(四捨五入)指定、ON SIZE ERROR(桁あふれ)指定、
NOT ON SIZE ERROR(桁あふれなし)指定、
CORRESPONDING(対応)指定などである。以下に、これらを個々に説明する。
以降の説明の中で、「結果の一意名」という用語を使用する。これは算術演算の結果を入れる一意名を表わす。
小数点の位置をそろえたとき、算術演算の結果の小数部の桁数が結果の一意名の小数部の桁数よりも大きいと、結果の一意名の大きさに応じて切捨てが発生する。四捨五入が要求されると、あふれる桁の最上位の値が5以上であると、結果の一意名の最下位の桁の絶対値に1が加えられる。
結果の一意名の整数部分の下位がPICTURE文字の "P" を用いて表わされているときには、四捨五入や切捨ては、実際に記憶場所を割り当てられている部分の右端の整数部に対して行われる。
浮動小数点数の算術演算においては、ROUNDED指定は注記として扱われる。浮動小数点数の演算結果は、つねに四捨五入される。
小数点の位置をそろえたとき、算術演算の結果の絶対値が対応する結果の一意名がとる最大値を超えると、桁あふれ条件が発生する。除数がゼロである除算が行われると、つねに桁あふれ条件が発生する。ON SIZE ERROR指定を指定しなかったときのゼロによる除算の結果はどうなるかわからないので、注意する必要がある。一般に、桁あふれ条件は最終結果に対してだけ適用される。ただし、MULTIPLY(乗算)文およびDIVIDE(除算)文の場合は、中間結果に対しても桁あふれ条件が適用される。
指数の評価規則から外れると、つねに、算術演算は停止され、桁あふれ条件が発生する。
ROUNDED指定を書くと、四捨五入の後で桁あふれの検査が行われる。その結果桁あふれ条件が発生すると、ON SIZE ERROR指定を指定してあったか否かによって、下記のように処理が分かれる。
桁あふれ条件が発生すると、対応する結果の一意名の値はどうなるかわからない。この演算処理が実行される間に、桁あふれ条件が発生しなかった結果の一意名の値が、他の結果の一意名に対して発生した桁あふれ条件の影響を受けることはない。
算術演算が終了すると、制御は算術文の末尾に移される。NOT ON
SIZE ERROR指定は指定されていても無視される。
除数がゼロの除算の結果は、ON SIZE ERRORを指定していないと、どうなるかわからない。それを避けるためには、CHECKDIVコンパイラ指令と O ランタイムスイッチを使用するとよい。
桁あふれ条件が発生すると、桁あふれの影響を受ける結果の一意名の値は変更されない。桁あふれ条件の発生しなかった結果の一意名の値が、この演算処理が実行される間に他の結果の一意名に対して発生した桁あふれ条件の影響を受けることはない。 この演算処理が終了すると、ON SIZE ERROR指定内の無条件命令が実行される。
CORRESPONDING指定を伴うADD(加算)文およびSUBTRACT(減算)文に関しては、個々の演算処理において桁あふれ条件が発生しても、その時点ではON SIZE ERROR指定内の無条件命令は実行されない。個々の加算または減算がすべて終了した後に、ON SIZE ERROR指定内の無条件命令が実行される。
桁あふれ条件が発生すると、ON SIZE ERROR指定が指定されていても指定されていなくても、NOT
ON SIZE ERROR指定は無視される。
ON SIZE ERROR指定とNOT ON SIZE ERROR指定の両方を指定したときに、実行された方の指定の中に制御を明示的に移す文が含まれていないと、必要があればその指定の実行が終わった時点で、その算術文の末尾に制御が暗黙的に移される。
![]()
算術演算文を実行したときに桁あふれ条件が発生しなかった場合にNOT ON SIZE ERROR指定が指定されていれば、その中に記述されている無条件命令が実行される。この場合、ON SIZE ERROR指定が指定されていても無視され、その中に記述されている無条件命令は実行されない。
以下の説明で、d1とd2という記号を使用する。このd1とd2はそれぞれ別々の集団項目を指す一意名を表わす。d1とd2から1つずつ取った一組のデータ項目は、下記の条件が満たされるとき対応するという。
78
または88、USAGE IS INDEX句、
またはUSAGE IS OBJECT句
USAGE IS
PROCEDURE-POINTER、
USAGE IS POINTER、
またはUSAGE IS OBJECT
の各句が含まれるものは無視される。また、REDEFINES、RENAMES、OCCURS、USAGE IS INDEX、
USAGE IS
PROCEDURE-POINTER、
USAGE IS POINTER、
またはUSAGE IS OBJECT
の各句が含まれるデータ項目の下位に属するデータ項目も同様に無視される。しかし、d1およびd2のデータ記述中にREDEFINES句またはOCCURS句が含まれていてもよい。あるいは、データ記述中にREDEFINES句またはOCCURS句が含まれるデータ項目の下位にd1およびd2が属していてもよい。
d1もd2も、部分参照できない。
算術文には、ADD、COMPUTE、DIVIDE、MULTIPLY、SUBTRACTがある。これらの文には、下記の共通の特徴がある。
作用対象の合成とは、指定された各作用対象の小数点の位置を合わせて重ね合わせできる、仮想のデータ項目である。
ADD、DIVIDE、MULTIPLY、およびSUBTRACT文の作用対象の合成は、18桁を超えてはならない。
作用対象の合成についての制限はない。
ある文の送出し側項目と受取り側項目とが記憶領域の一部を共有するときで、
同じデータ記述項目によってまだ定義されていない場合、
その文を実行した結果はどうなるかわからない。
重なりの転記は、MOVE文が使用され、作用対象が部分参照も添え字も使用していない場合にだけ、翻訳時に検出される。コンパイラ指令WARNING"3"を設定してある場合、前方への重なりの転記があると警告メッセージが出される。
コンパイラ指令FLAG"方言"を設定してある場合、その他のタイプであればフラグメッセージが出される。ただし、OSVS以外の"方言"とする。同じ記憶域を共有する項目を送受信する他の操作は、検出されない。
COBOL原始コードの移植性は、原始プログラム内でMOVE文の重なりが起きない時にだけ保証されるが、このCOBOLシステムはこのような文を認めていない。このような文の動作は、BYTE-MODE-MOVE指令の指定により変わる。
ADD、COMPUTE、DIVIDE、MULTIPLY、SUBTRACTの各文は複数個の答をもつことがある。これらの文は、下記のように書かれたものとして実行される。
例1:
ADD a, b, c TO c, d (c), e
は、下記のように書いたのと等しい。
ADD a, b, c GIVING temp ADD temp TO c ADD temp TO d (c) ADD temp TO e
例2:
MULTIPLY a(i) BY i, a(i)
は、下記のように書いたのと等しい。
MOVE a(i) to temp MULTIPLY temp by i MULTIPLY temp BY a(i)
ここで、temp はCOBOLコンパイラによって使用される、中間結果を一時的に記憶する場所である。
字類条件 (前述の字類条件節を参照) の中で参照された場合は除いて、手続き部で参照されたデータ項目の内容が、そのデータ項目のPICTURE句)、
または関数定義
に指定されている字類と合わないと、そのデータ項目を参照した結果はどうなるかわからない。
数字項目を参照したところ、その項目に文字または無効なデータが含まれていた場合、結果はどうなるかわからない。このような条件は、実行時に検出されてエラーとされる。この動作は、F
ランタイムスイッチの影響を受ける。
英字項目を参照したところ、その項目に英字でないデータが含まれていた場合、プログラムの実行は続けられるが、結果はどうなるかわからない。
算術文またはMOVE文中の受取り側項目が、符号付きの数字または数字編集項目である場合、受取り側項目に符号が転記される。この符号の転記は、数字データの絶対値が切り捨てられたか否かに関係なく行われる。したがって、数値はゼロであるが、符号が負ということが起こり得る。
ファイル位置指示子(file position indicator)は、ファイルに一連の入出力操作を施している際に、次に呼び出されるレコードを指す働きをする。ファイル位置指示子の設定に影響する文は、CLOSE, OPEN, START, READだけである。出力モードまたは拡張モードで開かれたファイルに対しては、ファイル位置指示子は影響を及ぼさない。
ファイル管理記述項にFILE STATUS句を指定すると、ファイル入出力操作の結果を示す2文字のデータ項目がとられる。OPEN, CLOSE, READ, WRITE, DELETE, UNLOCK, STARTの各文を実行すると、その 結果を示す値がこのデータ項目に設定される。実行する条件に該当するUSE手続きがある場合、それが実行される前にこの値が設定される。
以下に記述するファイル状態キーは、ANSI標準に全面的に準拠したものであるとともに、このCOBOLシステムで使用できる拡張機能を、何も使用していないファイルに関するものである。
たとえば、拡張機能を使用してファイルをLINE SEQUENTIALと指定すると、返される状態キーに影響が出る。詳しいことは関連する動詞の箇所に説明してある。
FILE STATUSデータ項目の左端の文字を、状態キー1という。どのような編成のものでも、ファイルの入出力操作が終了すると、このデータ項目に下記の条件のどれかを示す値が設定される。
| "0" | - 正常終了(successful completion) |
| "1" | - ファイル終了(at end) |
| "2" | - 無効キー(invalid key) |
| "3" | - 永続誤り(permanent error) |
|
"4" |
- |
| "9" | - ランタイム・システム・エラーメッセージ(run-time system error message) |
上記の各条件の意味は下記のとおり。
FILE STATUSデータ項目の右端の文字を、状態キー2という。状態キー2は入出力操作の結果の、さらに詳細を示すために使用される。
状態キー1と状態キー2の組合せによって、入出力操作の結果が下記のように細かく定義される。
正常終了
状態キー1の値が"0" で、入出力操作が正常に終了したことが示されている場合、状態キー2にはその原因を示す下記のどれかの値が設定される。
| "0" | (すべてのファイル)それ以上詳しい情報はない。 |
| "2" | (索引ファイルだけ)下記の2通りの可能性を示す。
|
| "4" |
|
| "5" |
|
| "7" |
|
状態キー1の値が"1" で、ファイル終了条件(at end condition)が発生したことが示されている場合、状態キー2にはその原因を示す下記のどれかの値が設定される。
| "0" | (すべてのファイル)次の論理レコードが存在しないことを示す。この条件が発生する場合は下記の2通りある。
|
| "4" |
|
状態キー1の値が "2" で、無効キー条件(invalid key condition)が発生したことが示されている場合、状態キー2にはその原因を示す下記のどれかの値が設定される。
| "1" | 索引ファイルを順呼び出しした場合)順序誤り(sequence error)があったことを示す。その原因は、次の2通りある。連続するキーの値が昇順になっていなかった。 (手続き部 - SEARCH - XML PARSEの章のWRITE(書き出し)文節を参照。)または、READ文が正常に実行されてからREWRITE文が実行されるまでの間に、そのファイルの主レコードキーが変更された。 |
| "2" | (相対ファイルおよび索引ファイルだけ)キーの値が重複することを示す。その原因は、次の2通りある。主レコードキーの値が重複になるレコードを書き込もうとした。または、副レコードキーにDUPLICATES指定がなされていないのに、副レコードキーの値が重複になるレコードを書き込みまたは書き換えようとした。 |
| "3" | (相対ファイルおよび索引ファイルだけ)レコードが見つからなかったことを示す。その原因は、次の2通りある。レコードを呼び出すときに指定したキーに対応するレコードが、ファイル中に存在しなかった。または、不定入力ファイルに対してSTART文またはREAD文を実行したが、対象とするファイルが存在しなかった。 |
| "4" |
|
状態キー1の値が"3" で、永続誤り条件(permanent error condition)が発生したことが示されている場合、状態キー2にはその原因を示す下記のどれかの値が設定される。
| "0" | (すべてのファイル)誤りの原因について、それ以上詳しい情報はないことを示す。 |
| "4" | (順ファイルだけ)区域外書き出し条件が発生したことを示す。つまり、外部的に定義されているファイル境界を超えて、レコードを書き込もうとした。 |
| "5" |
|
| "7" |
|
| "8" |
|
| "9" |
|
状態キー1の値が "4" で、論理誤り条件(logic error condition)が発生したことが示されている場合、状態キー2にはその原因を示す下記のどれかの値が設定される。
| "1" | (すべてのファイル)既に開かれているファイルに対して、OPEN文を実行しようとしたことを示す。 |
| "2" | (すべてのファイル)開かれていないファイルに対して、CLOSE文を実行しようとしたことを示す。 |
| "3" | (すべてのファイルに関して、順呼出しの場合だけ)DELETE文またはREWRITE文を実行しようとしたが、その直前の入出力操作としてREAD文が実行され正常終了していない。 |
| "4" | (レコード順ファイルだけ)区域外書き出しが発生したことを示す。その原因として考えられるのは、対象のファイルのRECORD IS VARYING句によって認められている最大レコードよりも長いか最小レコードよりも短いレコードを、WRITEまたはREWRITEしようとしたことである。 |
| "5" | (すべてのファイル)ファイルのレコードをREWRITEしようとしたが、元のレコードの大きさと書き換えレコードの大きさが等しくない。
|
| "6" | (すべてのファイル)入力モードまたは入出力両用モードで開かれているファイルに対して、順呼出しのREAD文を実行しようとしたが、有効な次のレコードが存在しないことを示す。その原因としては、下記のものがある。
|
| "7" | (すべてのファイル)入力モードまたは入出力両用モードで開かれていないファイルに対してREAD文またはSTART文を実行しようとしたことを示す。 |
| "8" | (すべてのファイル)入出力両用モード、出力モード、拡張モードのどれかで開かれていないファイルに対してWRITE文を実行しようとしたか、または順呼出し法の入出力両用モードで開かれたファイルに対してWRITE文を実行しようとしたことを示す。 |
| "9" | (すべてのファイル)入出力両用モードで開かれていないファイルに対して、DELELTE文またはREWRITE文を実行しようとしたことを示す。 |
状態キー1の値が" 9" で、作成者が定義したエラーメッセージが発生したことが示されている場合、 状態キー2には該当するエラーメッセージ番号が2進数で設定される。エラーメッセージについて詳しくは、使用しているCOBOLシステムのマニュアルを参照。
以下の表で、 "S" はレコード順ファイル、
"L " は行順ファイル、
"R" は相対ファイル、"I" は索引ファイルを示す。
表 10-4中の状態キー1の行と状態キー2の列が交差する部分に文字が記されている場合に、そのファイル編成に関してその状態キー1と状態キー2の組合せが有効である。
| 状態キー 1 | 状態キー 2 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||
| 正常終了 | 0 | SRIL | I | SRIL | SRIL | S | |||||
| ファイル終了 | 1 | SRIL | R | ||||||||
| 無効キー | 2 | I | RI | RI | RI | ||||||
| 永続誤り | 3 | SRIL | SL | SRIL | SRIL | SRIL | SRI | ||||
| 論理誤り | 4 | SRIL | SRIL | SRIL | SRIL | SRIL | SRIL | SRIL | SRIL | ||
| 作成者定義 | 9 | ランタイムシステムのエラーメッセージ (SRIL) | |||||||||
READ文を実行した結果、ファイル終了条件が発生することがある。その原因の詳細については、手続き部 - PERFORM - ROLLBACK の章のREAD(読み込み)文節を参照。
START文、READ文、WRITE文、REWRITE文、DELETE文を実行した結果、無効キー条件が発生することがある。その原因の詳細については、手続き部 - PERFORM - ROLLBACK の章のREAD(読み込み)文 およびREWRITE(書き換え)文、手続き部 - SEARCH - XML PARSEの章のSTART(開始)文 および WRITE(書き出し)文の各節を参照。
入出力文に指定された入出力操作が実行された後で無効キー条件が発生すると、下記の動作が記してある順に行われる。
無効キー条件が発生すると、そのことを認識する入出力文は不成功となる。この場合、ファイルは影響を受けない。
状態キー1に"9" が設定されたときは、INVALID KEY指定によって誤りが捕らえられるのではないことに注意。この場合は、明示的に状態キーを検査するか、または宣言部分を使用して、別途誤りを捕られなければならない。
ランタイムシステム(RTS)では、このCOBOLシステムのマルチユーザー機能をサポートしている。このマルチユーザー機能によって、マルチユーザー環境下で利用者がファイルを共有すること、あるプログラムがデータを更新する間は他のプログラムが該当するファイル全体またはそのレコードをアクセスできないようにすることが可能になる。
シングルユーザー環境下では、マルチユーザー用の構文は実行時に効力を発揮しない。しかし、シングルユーザーとマルチユーザーの両方の環境で使用できるように、プログラムを作成しておくことができる。
ファイルはアクティブか非アクティブのどちらかの状態をとる。アクティブ・ファイルとはいくつかの実行単位に対して開かれているものである。非アクティブ・ファイルとはどの実行単位に対しても開かれていないものである。
アクティブ・ファイルには、排他モード(exclusive mode)と共有モード(sharable mode)の2つのモードがある。
排他モードにあるファイルは、1つの実行単位にだけ開かれている。他の実行単位はそのファイルにアクセスしようとすると、「ファイルロック」誤りを引き起こし、アクセスを拒否される。排他モードということは、1つの実行単位だけがファイルの鍵(ファイルロック)を保持していて、そのファイルにアクセスできるということである。実行単位においてそのファイルが閉じられると、そのファイルのロックが解除(release)される。
共有モードにあるファイルは、任意の数の実行単位に開かれている。各実行単位は、ファイルを使用する間その中のレコードを一時に何件かロック(施錠)することによって、データを保護できる。他の実行単位は、ロック(施錠)されている個々のレコードの鍵(レコードロック)を取得できなくなる。しかし、その点を除けば、他の実行単位がファイルにアクセスできなくなるわけではない。ファイルの編成によって、ファイルを共有できる形態に違いが生じる。
ファイルの共有方法は、以下に示すファイル構成に影響される。
入力用に開かれたレコード順ファイルは、いくつかの実行単位で共有できる。しかし、そのファイル中のレコードをロックすることはできない。入出力両用または拡張用に開かれたファイルもまた、いくつかの実行単位で共有することができる。この場合は、各実行単位はそのファイルに関してレコードロックをいくつか保持できる。出力用に開かれたファイルは、常に排他的にロックされている。
入力用または拡張用に開かれた行順ファイルは、いくつかの実行単位で共有できる。しかし、そのファイル中のレコードをロックすることはできない。出力用に開かれたファイルは、常に排他的にロックされている。
入力モードで開かれた行順ファイルは、いくつかの実行単位で共有できる。しかし、そのファイル中のレコードをロックすることはできない。入出力両用モードで開かれたファイルも、共有できる。しかし、出力用または拡張用に開かれたファイルは、排他的である。
ファイルへのアクセスを共有する各実行単位は、そのファイル中の単一のレコードまたは複数のレコードをロックすることができる。ただし、1つの実行単位が同じファイルに対して、単一レコードのロックと複数レコードのロックの両方を選択することはできない。
あるファイルに対して(明示的にまたは暗黙的に)単一レコードのロックを指定した実行単位は、一時点ではそのファイル中の1レコードだけをロックできる。実行単位がレコードロックを獲得する方法には、手動と自動の2通りがある。
READ WITH LOCK文によってレコードを呼び出した場合にだけ、実行単位はレコードロックを取得できる。
ファイル中のレコードを読むときに、実行単位はレコードロックを自動的に取得する。ただし、READ WITH NO LOCK文を使用した場合は、例外である。
ロック解除はロックした実行単位によって、下記のどれかの方法によって行われる。
ファイル編成が相対か索引かレコード順の場合にだけ、複数レコードをロックできる。
複数レコードをロックすることを指定した実行単位は、1つのファイル中で同時に何件ものレコードロックを保持できる。他の実行単位は、ロックされているレコードを更新したりロックしたりすることができなくなる。しかし、他の実行単位がロックされていないレコードへのアクセスを拒否されるわけではない。実行単位がレコードロックを獲得する方法には、手動と自動の2通りがある。
READ WITH LOCK文 またはREAD WITH KEPT LOCK文によってレコードを呼び出した場合にだけ、実行単位はレコードロックを取得できる。
ファイル中のレコードを読むときに、実行単位はレコードロックを自動的に取得する。ただし、ロックしないことを明示的に指定した場合は、例外である。プログラムをCOBOLシステムに投入したときにWRITELOCK指令を設定しておくと、WRITE文またはREWRITE文によって実行単位がファイルにアクセスすると、ロックされる。
ロック解除はロックした実行単位によって、下記のどれかの方法によって行われる。
表 10-5、10-6、および10-7 に、ファイル編成別にファイルをオープンするモードごとの省略時解釈のロック型を示す。 この省略時解釈のロック型は、 プログラムをCOBOLに投入するときにAUTOLOCK指令を設定することによって、変更できる 。また、表には、個々のファイルごとに、省略時解釈のロック型を変更することができるか否かについても示す。ファイルごとにロック型を変更するには、そのファイルのSELECT句中に適切な句を挿入する 。(構文の詳細については、環境部の章のファイル管理記述項節を参照。)
X/Open では、自動ロックでの単一レコードロック、またはマニュアルロックでの複数レコードロックのどちらかを使用する原始プログラムに従う
X/Open を制限している。
| 開くモード | 指令なし | AUTOLOCKコンパイラ 指令 |
SELECT文での変更 |
| INPUT | ロックなし | ロックなし | 可、ただし排他へだけ |
| I-O | 排他 | 単一レコードのロック | 可 |
| OUTPUT | 排他 | 排他 | 不可 |
| EXTEND | 排他 | ロックなし | 可、ファイルを共有可できるがレコードはロックできない |
| 開くモード | 指令なし | AUTOLOCKコンパイラ指令 |
SELECT文での変更 |
| INPUT | ロックなし | ロックなし | 不可 |
| I-O | 排他 | ロックなし | 不可 |
| OUTPUT | 排他 | 排他 | 不可 |
| EXTEND | 排他 | ロックなし | 不可 |
| 開くモード | 指令なし | AUTOLOCKコンパイラ指令 |
SELECT文での変更 |
| INPUT | ロックなし | ロックなし | 可、ただし排他へだけ |
| I-O | 排他 | 単一レコードの自動ロック | 可 |
| OUTPUT | 排他 | 排他 | 不可 |
| EXTEND | 排他 | 排他 | 不可 |
注:
パラメータと戻り項目の適合規則は、構文規則から明示的な参照が行われる翻訳時に適用される。
注:翻訳時にパラメータと戻り項目の適合規則におり、以下がチェックされる。
起動する側の要素の中の引数の数は、起動される側の要素の中の仮パラメータの数と同じでなければならない。
ただし、後に置かれる仮パラメータで、起動される側の要素の手続き部見出しでOPTIONALにより指定され、起動する側の要素の引数のリストでは省かれているものを除く。
作業対象の数が同じではなく、起動する側の文の方がその数が多い場合は、それらは無視される。また、手続き部見出しの方が作用対象の数が多い場合は、ランタイム要素の中でそれらが参照されなければならない。位置的な対応関係は、呼び名で暗黙的に指定されるCOBOL以外の呼出し規則により異なる。作用対象の数の相違は、実行時以外にはわからないため、指令
FLAG によりこの拡張にフラグがつけられることはない。
引数と仮パラメータの適合規則は、仮パラメータまたはそれに対応する引数が集団項目であるか、またはその両方が基本項目であるかどうかにより異なる。
仮パラメータまたは引数が集団項目である場合、対応する引数または仮パラメータは集団項目、または項類が英数字の基本項目でなければならない。さらに、仮パラメータは、対応する引数と同じか、それより少ない文字位置で記述されなければならない。
基本項目の適合規則は、引数が参照、内容、および値のどれにより渡されるかにより異なる。
仮パラメータまたはそれに対応する引数がオブジェクト参照の場合、対応する引数または仮パラメータは、以下の規則に従うオブジェクト参照でなければならない。
引数または仮パラメータがクラスポインタのものである場合、対応する仮パラメータまたは引数はクラスポインタのものでなければならない。さらに、対応する項目は同じ項類でなければならない。どちらかのポインタが制限付きポインタであれば、両方とも制限付きで同じ種類のポインタでなければならない。特殊レジスタ ADDRESSは、クラスポインタのもので、かつ、項類データポインタと見なされる。
引数または仮パラメータのどちらもクラスオブジェクトのものでもクラスポインタのものでない場合の適合規則は以下の通り。
ただし、以下の場合は例外とする。
さらに、以下の規則が適用される。
仮パラメータが、ACTIVE-CLASS指定で記述されたオブジェクト参照の場合、以下の条件のいずれかが真でなければならない。
仮パラメータがクラスポインタのもの、またはACTIVE-CLASS指定を用いずに記述されたオブジェクト参照である場合、その適合規則は、SET文が、実行する側のランタイム要素で実行されたときと同じとなる。このとき、送出し側作用対象は引数とし、受取り側作用対象は対応する仮パラメータとする。
仮パラメータがクラスオブジェクトのものでもクラスポインタのものでない場合の適合規則は以下の通り。
仮パラメータの種類と各適合規則は以下の通り。
戻り項目は、起動する側の文で指定しなければならない。ただし、戻り項目が、起動される側の要素の手続き部見出し、
またはENTRY文
で指定される場合に限る。関数または行内メソッド呼出しが参照されるときは、戻り値が、起動する側の要素で暗黙的に指定される。
起動される原始要素中の戻り値は送出し側の作用対象であり、起動する側の原始要素中の対応する戻り値が受取り側作用対象である
送出し側の作用対象と受取り側作用対象の間の適合規則は、それらの作用対象の少なくとも1つが英数字集団項目であるか、または両方が基本項目であるかどうかにより異なる。
送出し側と受取り側作用対象のどちらかが集団項目の場合、対応する戻り項目は集団項目、または項類が英数字の基本項目でなければならない。また、受取り側作用対象は、送出し側作用対象と同じ数の文字位置で記述しなければならない。
注:起動する側の要素中の戻り項目が1以外のレベル番号の集団項目で、その下位の項目の記述により、使用されると意味のないビットまたはバイトが挿入される場合は、下位の基本項目の配置が、起動する側のランタイム要素中の戻り項目と起動されるランタイム要素中の戻り項目の間で対応しない場合がある。
変数反復データ項目として記述された作用対象には、最大長が使用される。
変数反復データ項目として記述された作用対象については、最大長が使用される。
またはSELFCLASS
で呼ばれる場合、送出し側作用対象はACTIVE-CLASS指定で記述される。
送出し側作用対象がオブジェクト参照でない場合、受取り側作用対象は同じPICTURE、USAGE、SIGN、SYNCHRONIZED、JUSTIFIED、およびBLANK句を含むものとする。ただし、以下の例外がある。
さらに、以下の規則が適用される。
Copyright © 2002 Micro
Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標および商品名は国際法によって保護されています。
![]() |
データ部 - 画面節 | 手続き部 - 組み込み関数 | ![]() |