![]() |
デバッグ機能単位 | 2バイト文字支援機能 | ![]() |
区分化機能単位(segmentation module)は、実行用プログラムのオーバレイに必要な情報をコンパイラに与える。
区分化(segmentation)機能を利用することによって、常駐区分(permanent segment)および独立区分(independent segment)を指定できる。また、区分番号(segment-number)が異なる節を混在させたり、原始プログラムの固定部分(fixed portion)にオーバレイされてもよい区分(segment)を含めたりすることができる。
区分化機能単位は、ANSI '85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に削除される予定である。
この構文は、Micro Focus COBOLに組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、区分化機能単位は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの機能単位を使用するべきではない。
COBOLの区分化は、ユーザーが実行用プログラムのオーバレイに必要な情報をコンパイラに与えることができるようにする機能である。
COBOLでの区分化は、手続きだけを対象にしている。したがって、実行用プログラムを区分化するのに必要な事項は、手続き部に関してだけ規定する。
原始プログラムの手続き部は、必ずしも節に分けて構成する必要はない。しかし、手続き部をいくつかの節の集団を連続して記述したものとして構成することはよく行われる。この場合、各集団は、密接に関連する一連の処理を集めて、全体として所定の機能を果たすように設計される。一方、区分化を適用するときは、手続き部全体をいくつかの節に分け、各節が実行用プログラムの固定部分または独立区分のどちらに入るのかを区別しておかなければならない。区分化をしても、手続き名を一意にするための修飾の必要性は変わらない。
固定部分とは、実行用プログラムのうちの、論理的に常に記憶領域にあるように扱われる部分である、と定義される。固定部分は、 常駐区分とオーバレイ可能な固定区分(fixed overlayable segment)から成る。
常駐区分とは、固定部分のうちで、プログラムの他のどの部分によってもオーバレイされない区分を言う。
オーバレイ可能な固定区分とは、固定部分のうちで、論理的には常に記憶領域中にあるように扱われるが、記憶領域の利用を最適化するために他の区分によってオーバレイされてもよいものを言う。
独立区分とは、実行用プログラムのうちで、オーバレイ可能な独立区分や他の独立区分と、オーバレイしたりオーバレイされたりする部分である、と定義される。独立区分は、プログラムの実行中に初めて(明示的または暗示的に)その区分に制御が移されたときには、初期状態にある。また、以降その区分に制御が移されたときにも、下記の場合には独立区分は初期状態にある。
独立区分に2回目移行に制御が移されたとき、下記の場合は、最後に使用された状態になっている。
またはGOBACK(復帰)文
の結果として、明示的に制御が移された場合。
区分化される節は、節番号および下記の基準に基づいて、分類される。
常に参照可能でなければならない節、または頻繁に参照される節は、オーバレイ可能な固定区分または常駐区分とするのが普通である。あまり使用されない節は、独立区分にするのが普通である。
一般に、節を参照する頻度が高ければ高いほど節番号を小さくし、参照する頻度が低ければ低いほど節番号を大きくする。
頻繁に連絡をとる節同士には、同じ節番号を与える。
プログラムの論理的な順序は、通常は物理的な順序と同じである。ただし、制御の移行が行われたときは、両者の間にずれが生じる。原始プログラム中で制御を移す先は、節内の任意の段落とすることができる。これは、必ずしも節の先頭へ制御を移す必要はない、ということである。
節の分類は、区分番号によって行われる。区分番号は、 節の見出しに含まれる。
SEGMENT-LIMIT(常駐区分の範囲)句は、実行用計算機段落中に下記の形式で書く。
区分化を行うときは、ALTER, PERFORM, MERGE, SORTの各文に関して、下記の制限が課される。
区分番号が50以上の節内にあるGO TO文は、別の区分番号に属する節内のALTER文によって参照されてはならない。
それ以外のALTER文の使用法はすべて有効であり、ALTER文が参照するGO TO文がオーバレイ可能な固定区分中にあっても実行される。
PERFORM文が固定区分中の節にある場合、これは範囲を持つ。その範囲内の文を実行することによって実行される宣言節の他に、下記の範囲がある。
PERFORM文が独立区分中の節にある場合、これはその中に範囲を持つ。その範囲内の文を実行することによって実行される宣言節の他に、下記の範囲がある。
固定区分中の節に書いたMERGE文によって参照される出力手続きは、下記の範囲になければならない。
独立区分中に書いたMERGE文によって参照される出力手続きは、下記の範囲になければならない。
固定区分中の節に書いたSORT文によって参照される出力手続きは、下記の範囲になければならない。
独立区分中に書いたSORT文によって参照される出力手続きは、下記の範囲になければならない。
Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名 は国際法によって保護されています。
![]() |
デバッグ機能単位 | 2バイト文字支援機能 | ![]() |