はじめに

Open PL/I プログラムでは、すべての変数 (DEFAULT 文の制御下にあるものを除く) を宣言する必要があります。組み込み関数の名前を除くすべての名前を、DECLARE 文を使用して (ラベルの場合はそのラベルを文プレフィックスとして使用して) 宣言する必要があります。

各宣言には、関連付けられた名前への参照が有効となるプログラムの範囲 (領域) が関連付けられます。宣言の範囲には、宣言されたブロック、および入れ子になったすべてのブロック (名前が再宣言されたブロックを除く) が含まれます。

DECLARE 文で使用する識別子属性は、キーワードまたは構文のいずれかで指定します。EXTERNAL 属性を使用して宣言した名前の範囲の規則は、その名前で識別されるオブジェクトがプログラム全体で一意であるという点を除いて、他の名前と同じです。ある名前のすべての宣言に EXTERNAL 属性が使用されている場合、それらはすべて同じオブジェクトを識別します。EXTERNAL 属性を使用できるのは、ファイル、静的変数、および外部プロシージャ名のみです。ファイルおよびプロシージャにはデフォルトで EXTERNAL 属性が適用されますが、静的変数は、明示的に EXTERNAL 属性で宣言されない限り内部範囲になります。

特定の名前を同じブロック内で複数回宣言することはできません。ただし、構造体メンバーの名前として宣言する場合を除きます。その場合は、同じ構造体の同じレベルに同じ名前のメンバーがない限り、同じブロック内で名前を再宣言できます。詳細については、ヘルプ トピックの「範囲」を参照してください。