プログラム内で使用する名前を明示的に宣言しなかった場合、その名前は暗黙のうちに宣言されます。
暗黙宣言の有効範囲は、その名前が使われている外部プロシージャーの PROCEDURE ステートメントのすぐあとで DECLARE ステートメントによってその名前を宣言した場合と同様にして決まります。
ファイル、入り口、組み込み関数を除き、暗黙宣言は、名前が最外部の
プロシージャーで宣言された場合と同様の効果を持ちます。
ファイルと組み込み関数については、暗黙宣言は、名前が任意の
プロシージャーの外側の論理パッケージに宣言された場合と同様の効果を持ちます。
注:
組み込み関数およびファイル SYSIN と SYSPRINT 以外のものに
暗黙宣言を使用するのは、1987 ANSI 規格に対する違反であり、
避けなければなりません。
暗黙のうちに宣言された名前の属性の中には、その名前が使われているコンテキスト上から判定することができます。
これはコンテキスト宣言 と呼ばれ、次のような場合です。
- 組み込み関数の名前。
- CALL ステートメント、または INITIAL の CALL オプション内に示される名前、
あるいは引数リストの前にくる名前には、
ENTRY 属性と EXTERNAL 属性が与えられます。
- PROCEDURE ステートメントまたは ENTRY ステートメントの
パラメーター・リストに示される名前には、
パラメーター属性が与えられます。
- FILE または COPY オプションにおいて示される名前、もしくはファイル名が
必要な条件に対するステートメント ON、SIGNAL または REVERT に示される
名前には、FILE 属性が与えられます。
- ステートメント ON CONDITION、SIGNAL CONDITION、または REVERT
CONDITION に示される名前には、CONDITION 属性が与えられます。
- BASED 属性、SET オプションに示される名前、またはロケーター修飾記号の左側に
現れる名前には、POINTER 属性が与えられます。
- IN オプションまたは OFFSET 属性に示される名前には、AREA 属性が与えられます。
コンテキスト宣言の例は、以下のとおりです。
read file (PREQ) into (Q);
allocate X in (S);
これらのステートメントでは、PREQ に FILE 属性、
S に AREA 属性が与えられます。
コンテキスト宣言ではない暗黙宣言は、属性のデフォルトに示すように、
すべてデフォルトによって属性を取得します。
コンテキスト宣言は明示宣言の有効範囲内には存在することができないため、
明示宣言内の名前について確立された属性に、
名前のコンテキストが別の属性を追加することはできません。
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)