DEFAULT

目的

属性セットが不完全な場合のデータ属性のデフォルトを指定します。

構文

DEFAULT simple-spec|factored-spec[,simple-spec|factored-spec]…;

simple-spec は次のとおりです。

RANGE(letters[,letters]…)attribute-spec;

または

RANGE(*)[attribute-spec];

letters は次のとおりです。

letter [letters]…

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])]

省略形:

  • AUTOMATIC は AUTO
  • BINARY は BIN
  • CHARACTER は CHAR
  • CONTROLLED は CTL
  • DECIMAL は DEC
  • DEFAULT は DFT
  • EXTERNAL は EXT
  • GRAPHIC は G
  • INITIAL は INIT
  • INTERNAL は INT
  • PICTURE は PIC
  • POINTER は PTR
  • VARYING は VAR
  • WIDECHAR は WCHAR

パラメーター

RANGE (letter:letter)
最初の文字が指定した 2 つの文字かアルファベット順で 2 つの文字の間にあるいずれかの文字に対応する名前にデフォルトを適用するように指定します。指定に使用する文字はアルファベット順に並べる必要があります。
RANGE (letter)
指定した文字で始まる名前にデフォルトを適用するように指定します。
RANGE (letters)
照合シーケンスで指定した文字で始まる名前にデフォルトを適用するように指定します。
RANGE (*)
すべての名前にデフォルトを適用するように指定します。
VALUE
文字列の長さおよび数値の精度に関するデフォルトの規則を設定します。VALUE オプションが影響する属性は、長さと精度だけです。FIXED や DECIMAL など、オプションの他の属性は、値がどの属性に関連付けられているかのみを示します。
注:

長さまたは精度の指定は、VALUE 句でのみ行うことができます。attribute-list の属性で指定することはできません。

説明

宣言された属性セットが不完全な場合のデータ属性のデフォルトを指定します。不完全な明示的、文脈的、または暗黙的な宣言に対して DEFAULT 文でサポートされていない属性については、Open PL/I のデフォルトの規則に従って提供されます(「宣言と属性」の章の「コンパイラによって提供されるデフォルト値」のセクションを参照してください)。

構造体の要素には、修飾された構造体要素名ではなく、要素の名前に応じてデフォルトの属性が指定されます。DEFAULT 文は構造体の宣言には使用できません。

1 つのブロック内で複数の DEFAULT 文を使用できます。DEFAULT 文の範囲には、その文が含まれているブロックと、入れ子になったすべてのブロック (同じ範囲の別の DEFAULT 文を含むブロックや同じ範囲の DEFAULT 文を含むブロックに含まれるブロックは除く) が含まれます。

DEFAULT 文の特殊なケースとして、包含ブロックで言語固有のデフォルトに戻すために使用される次のような文に注意してください。

MAIN: PROCEDURE;
DEFAULT RANGE (a:d) FIXED DECIMAL
   VALUE (FIXED DECIMAL(10,2));
DCL CL_INDEX;
   BEGIN;
   DEFAULT RANGE (*);
   DCL C_INTERNAL FIXED DECIMAL;
   END;
END MAIN:

この例では、MAIN ルーチンの CL_INDEX の精度およびスケールは DEFAULT 文の指定に従って (10,2) となりますが、C_INTERNAL 変数の精度は言語のデフォルトの (5,0) となります。

次の文では、名前が文字 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];