データ属性を指定しないで宣言された変数には、 デフォルトにより算術属性が与えられます。 モード、スケール、基数が DECLARE ステートメントまたは DEFAULT ステートメントによって 指定されていない場合は、DEFAULT コンパイラー・オプションが これらの属性を次のように決定します。
スケール因数が精度属性に指定されていない場合、 ほかのすべての属性に先行して、FIXED 属性が適用されます。 したがって、BINARY (p,q) 属性を指定した宣言は、 常に FIXED BINARY (p,q) 属性を指定した宣言と同じになります。
算術宣言で精度が指定されていない場合、 DEFAULT コンパイラー・オプションにより、表 27 に従って精度が決定されます。 有効範囲、ストレージ、および位置合わせ属性に関する言語に固有のデフォルトは、 表 8 と 表 7 に示されています。
ENTRY 宣言で記述リストが指定されていない場合、引数の属性は、 呼び出されたプロシージャー内のパラメーターの属性と一致しなければなりません。 例えば、下記の宣言の場合、
dcl X entry; call X( 1 );
引数は属性 REAL FIXED DECIMAL(1,0) を持っています。 次の例に示すように、プロシージャー x がそのパラメーターを別の属性で宣言した場合には、 エラーが発生します。
X: proc( Y );
dcl Y fixed bin(15);
入り口宣言によってすべてのパラメーターの属性を指定すれば、 こうしたエラーの可能性を回避することができます。
| 属性 | DEFAULT(IBM) | DEFAULT(ANS) |
|---|---|---|
| DECIMAL FIXED | (5,0) | (10,0) |
| BINARY FIXED | (15,0) | (31,0) |
| DECIMAL FLOAT | (6) | (6) |
| BINARY FLOAT | (21) | (21) |