定義の有効範囲

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

図 47. 定義の有効範囲
REQTEXT

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

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

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

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