定義の有効範囲

定義がどこにあるかによって、有効範囲が異なります。 有効範囲は、名前が認識されるソース行の範囲のことを表します。 有効範囲には、図 1 に示されているように、グローバルとローカルの 2 つのタイプがあります。

図 1. 定義の有効範囲
この図には、2 つのタイプの有効範囲 (グローバルとローカル) が示されています。

一般に、メイン・ソース・セクションに定義されたすべての項目はグローバルであり、し たがって、モジュール全体で認識されます。 グローバル定義とは、モジュール内のサイクル・メイン・プロシージャーと任意のサブプロシージャーの両方で使用することができる定義のことです。 それらはエクスポートすることもできます。

他方、サブプロシージャー内の項目はローカルです。 ローカル定義は、そのサブプロシージャーの内部でのみ認識される定 義です。項目がグローバル項目と同じ名前で定義された場合には、サブプロシージャー内 部でのその名前に対する参照ではローカル定義が使用されます。

ただし、以下の例外に注意してください。

場合によっては、グローバル定義とローカル定義を混合させることができます。 たとえば、KLIST および PLIST はグローバルにもローカルにもすることができます。 グローバル KLIST および PLIST と関連付けられたフィールドには、 グローバル・フィールドだけが入れられます。 ローカル KLIST および PLIST と関連付けられたフィールドには、グ ローバルとローカルの両方のフィールドを入れることができます。 サブプロシージャー内部での KLIST と KFLD の働きの詳細については、定義の有効範囲を参照してください。