属性セットが不完全な場合のデータ属性のデフォルトを指定します。
DEFAULT simple-spec|factored-spec[,simple-spec|factored-spec]…;
simple-spec は次のとおりです。
RANGE(letters[,letters]…)attribute-spec;
または
RANGE(*)[attribute-spec];
letters は次のとおりです。
letter [letters]…
または
RANGE(identifier:identifier)
factored-spec は次のとおりです。
(simple-spec|factored-spec[,simple-spec|factored-spec]…)[attribute-spec]
attribute-spec は次のとおりです。
[attribute-list][VALUE(value-spec[,value-spec]…)
attribute-list は 1 つ以上の空白文字で区切られた属性のリストです。
attribute[ attribute]…
attribute は次のとおりです。
ALIGNED | AREA | AUTOMATIC | BASED | BIGENDIAN | BINARY | BIT | CHARACTER | CONTROLLED | DECIMAL | DEFINED | DIMENSION | ENTRY | EXTERNAL | FILE | FIXED | FLOAT | GRAPHIC | INITIAL | INTERNAL | LABEL | NATIVE | NONNATIVE | OFFSET | PARAMETER | PICTURE | POINTER | STATIC | VARYING | UNALIGNED | VARIABLE | WIDECHAR
value-spec は次のとおりです。
CHARACTER(length)|BIT(length)|AREA(size)|numeric-spec
numeric-spec は次のとおりです。
FIXED|FLOAT|BINARY|DECIMAL[(precision[,scale])]
省略形:
長さまたは精度の指定は、VALUE 句でのみ行うことができます。attribute-list の属性で指定することはできません。
次の文では、名前が文字 t で始まるすべての文字変数の長さを 10 文字にするように指定しています。ここで、tony の長さは 6 となりますが、tiger の長さは明示的に指定された 20 となります。
DEFAULT RANGE (l:m) FLOAT; DECLARE (low, medium) BINARY; /*In this case both variables, low and medium, will be declared as FLOAT BINARY(23).*/ DFT RANGE (*) STATIC; DECLARE (x,y) FIXED BINARY(15) INITIAL (0); DECLARE t FLOAT DECIMAL AUTOMATIC; /* In this example both x and y will have STATIC storage class, while t will have AUTOMATIC storage class due to its explicit storage class declaration. */ DEFAULT RANGE (t) VALUE (CHARACTER(6)); DCL tony CHAR; DCL tiger CHAR(20);
次の例では、RANGE (letters) を使用して、2 つの宣言のうちの 2 番目の宣言 (ストレージ クラスが STATIC) と一致する照合シーケンスを設定しています。
DEFAULT RANGE(SCH) STATIC; DCL SBCHX CHAR ; /* not a match */ DCL SCHBX CHAR ; /* storage class will be STATIC */
DEFAULT 文での属性式の使用はサポートされていません。ただし、Open PL/I コンパイラでは次の構文を使用できます。
DEFAULT (RANGE(simple-spec) & ^PARAMETER) [attribute-list];
説明
宣言された属性セットが不完全な場合のデータ属性のデフォルトを指定します。不完全な明示的、文脈的、または暗黙的な宣言に対して DEFAULT 文でサポートされていない属性については、Open PL/I のデフォルトの規則に従って提供されます(「宣言と属性」の章の「コンパイラによって提供されるデフォルト値」のセクションを参照してください)。
構造体の要素には、修飾された構造体要素名ではなく、要素の名前に応じてデフォルトの属性が指定されます。DEFAULT 文は構造体の宣言には使用できません。
1 つのブロック内で複数の DEFAULT 文を使用できます。DEFAULT 文の範囲には、その文が含まれているブロックと、入れ子になったすべてのブロック (同じ範囲の別の DEFAULT 文を含むブロックや同じ範囲の DEFAULT 文を含むブロックに含まれるブロックは除く) が含まれます。
DEFAULT 文の特殊なケースとして、包含ブロックで言語固有のデフォルトに戻すために使用される次のような文に注意してください。
この例では、MAIN ルーチンの CL_INDEX の精度およびスケールは DEFAULT 文の指定に従って (10,2) となりますが、C_INTERNAL 変数の精度は言語のデフォルトの (5,0) となります。