DEFAULT オプションは、属性およびオプションのデフォルトを指定します。 これらのデフォルトは、属性またはオプションがソースで明示的または 暗黙に指定されていない場合だけ適用されます。
>>-DEFAULT--(---------------------------------------------------> >--+------------------------------------------------+--)------->< | .-+---+--------------------------------------. | | | '-,-' | | | V .-IBM--. | | '---+-+- ANS-+-------------------------------+-+-' | .-EBCDIC-. | +-+-ASCII--+-----------------------------+ | .-ASSIGNABLE----. | +-+-NONASSIGNABLE-+----------------------+ | .-BYADDR--. | +-+-BYVALUE-+----------------------------+ | .-NONCONNECTED-. | +-+-CONNECTED----+-----------------------+ | .-DESCRIPTOR---. | +-+-NODESCRIPTOR-+-----------------------+ | .-NATIVE----. | +-+-NONNATIVE-+--------------------------+ | .-NATIVEADDR----. | +-+-NONNATIVEADDR-+----------------------+ | .-NOINLINE-. | +-+-INLINE---+---------------------------+ | .-ORDER---. | +-+-REORDER-+----------------------------+ | .-OPTLINK----. | +-LINKAGE--(--+-+--------+-+--)----------+ | '-SYSTEM-' | | .-EVENDEC----. | +-+- NOEVENDEC-+-------------------------+ | .-NULL370-. | +-+-NULLSYS-+----------------------------+ | .-BIN1ARG---. | +-+-NOBIN1ARG-+--------------------------+ | .-NULLSTRADDR---. | +-+-NONULLSTRADDR-+----------------------+ | .-NONRECURSIVE-. | +-+-RECURSIVE----+-----------------------+ | .-DESCLOCATOR-. | +-+-DESCLIST----+------------------------+ | .-BYADDR------. | +-RETURNS--(--+-+---------+-+--)---------+ | '-BYVALUE-' | | .-NOINITFILL-------------------------. | +-+-INITFILL--+----------------------+-+-+ | '-(----init_value----)-' | | .-HEXADEC--. | +-SHORT--(--+-+------+-+--)--------------+ | '-IEEE-' | | .-ALIGNED-------. | +-DUMMY--(--+-+-----------+-+--)---------+ | '-UNALIGNED-' | | .-UPPERINC-. | +-+-LOWERINC-+---------------------------+ | .-NORETCODE-. | +-+-RETCODE---+--------------------------+ | .-ALIGNED---. | +-+-UNALIGNED-+--------------------------+ | .-MIN-. | +-ORDINAL--(--+-MAX-+--)-----------------+ | .-NOOVERLAP-. | +-+-OVERLAP---+--------------------------+ | .-HEXADEC--. | +-+-+------+-+---------------------------+ | '-IEEE-' | | .-HEXADEC--. | '-E--(--+-+------+-+--)------------------' '-IEEE-'
省略形: DFT、ASGN、NONASGN、NONCONN、CONN、INL、NOINL
| 属性 | DEFAULT(IBM) | DEFAULT(ANS) |
|---|---|---|
| FIXED DECIMAL | (5,0) | (10,0) |
| FIXED BINARY | (15,0) | (31,0) |
| FLOAT DECIMAL | (6) | (6) |
| FLOAT BINARY | (21) | (21) |
IBM サブオプションのもとでは、名前が I から N までの文字で始まる 変数のデフォルトは FIXED BINARY であり、それ以外の変数のデフォルト は FLOAT DECIMAL です。ANS サブオプションを選択した場合は、すべての変数のデフォルト は FIXED BINARY です。
IBM がデフォルトです。
ASCII は、ASCII 文字セット照合順序に依存するプログラムを コンパイルするときにだけ使用します。 例えば、プログラムが数字のソート・シーケンスまたは小文字および大文字の アルファベット順を使用している場合に、このような依存関係が存在します。 また、高位ビットの状態を変えて大文字の英字を作成するプログラムにも、 このような依存関係が存在します。
'123'A は '313233'X と同じ '123'E は 'F1F2F3'X と同じ
EBCDIC がデフォルトです。
ASSIGNABLE がデフォルトです。
BYADDR はデフォルトです。
NONCONNECTED がデフォルトです。
DESCRIPTOR がデフォルトです。
NONNATIVE は、非ネイティブ・フォーマットに依存してこの種の変数を保持する プログラムをコンパイルする場合だけ指定してください。
固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。
それ以外の組み合わせを指定すると、結果は予測できません。
NATIVE がデフォルトです。
固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。
それ以外の組み合わせを指定すると、結果は予測できません。
NATIVEADDR がデフォルトです。
INLINE を指定すると、コードの実行が高速になりますが、場合によっては 実行可能ファイルも大きくなります。 インライン化によるパフォーマンスの改善方法の詳細については、パフォーマンスの向上を参照してください。
NOINLINE がデフォルトです。
ORDER がデフォルトです。
LINKAGE(OPTLINK) は、JAVA によって呼び出されるか、JAVA の 呼び出しを行うルーチンすべてに対して使用する必要があります。 また、C によって呼び出されるか、C の呼び出しを行うルーチンすべてに 対しても使用する必要があります (C コードがデフォルト 以外のリンケージを使用してコンパイルされた場合を除く)。
LINKAGE(SYSTEM) は、最後の (かつ最後だけの) パラメーターのアドレス内 で高位ビットがオンになっていることを予期する、非 PL/I ルーチンすべてに 対して使用する必要があります。
LINKAGE(OPTLINK) がデフォルトです。
NOEVENDEC のもとでは、固定小数点変数の精度は次の最大の奇数に 切り上げられます。
EVENDEC を指定して FIXED DEC(2) 変数に 123 を割り当てると、SIZE 条件 が発生します。NOEVENDEC を指定した場合は、SIZE 条件は発生しません。
EVENDEC がデフォルトです。
BIN1ARG の場合、コンパイラーはプロトタイプ化されていない関数に FIXED BIN 引数を現状のままで渡します。
しかし NOBIN1ARG の場合、コンパイラーは、プロトタイプ化されていない関数に渡された 1 バイトの REAL FIXED BIN 引数を 2 バイトの FIXED BIN に一時的に代入してから、代わりにそれを渡します。
次の例を考えてみてください。
dcl f1 ext entry; dcl f2 ext entry( fixed bin(15) ); call f1( 1b ); call f2( 1b );
DEFAULT(BIN1ARG) を指定した場合、コンパイラーは 1 バイトの FIXED BIN(1) 引数のアドレスをルーチン f1 に渡し、2 バイトの FIXED BIN(15) 引数のアドレスをルーチン f2 に渡します。 しかし DEFAULT(NOBIN1ARG) を指定した場合には、コンパイラーはどちらのルーチンに対しても、2 バイトの FIXED BIN(15) 引数のアドレスを渡します。
ルーチン f1 が COBOL ルーチンの場合、そのルーチンに対して 1 バイトの整数引数を渡すと、COBOL は 1 バイトの整数をサポートしていないため問題が生じることに注意してください。 この場合、DEFAULT(NOBIN1ARG) を使用するのも有用ですが、エントリー宣言で引数属性を指定する方が良いでしょう。
BIN1ARG がデフォルトです。
NULLSTRADDR では、ヌル・ストリングが入り口呼び出しで引数として指定された場合、コンパイラーは自動ストレージの初期化部分のアドレスを渡します。 これは、OS PL/I および PL/I for MVS コンパイラーの動作と互換性があります。
しかし、NONULLSTRADDR では、ヌル・ストリングが入り口呼び出しで引数として指定されると、コンパイラーは引数のアドレスとして NULL ポインターを渡します。 これは、Enterprise PL/I コンパイラーの早期リリースの動作と互換性があります。
NULLSTRADDR がデフォルトです。
NULL370 がデフォルトです。
NONRECURSIVE がデフォルトです。
DEFAULT(DESCLOCATOR) を指定すると、以前のリリースの PL/I の場合と 同様に、記述子を必要とするパラメーターが記述子またはロケーターを使用して 渡されます。 したがって、古いコードで、1 つのルーチンからポインターを受け取ることを予想 しているルーチンへ構造体を渡していた場合も、その古いルーチンは引き続き有効です。
DFT(DESCLIST) オプションは、CMPAT(V*) オプションと対立するため、 そのいずれかのオプションとともに指定された場合、メッセージが出されて、DFT(DESCLOCATOR) オプションとしてとられます。
DESCLOCATOR がデフォルトです。
アプリケーションに ENTRY ステートメントが含まれていて、 その ENTRY ステートメントまたはそのステートメントを含む プロシージャー・ステートメントに RETURNS オプションが指定されている 場合は、RETURNS(BYADDR) を指定してください。 また、それらのエントリーのエントリー宣言でも、RETURNS(BYADDR) を 指定する必要があります。
RETURNS(BYADDR) がデフォルトです。
INITFILL に 16 進値 (nn) を指定した場合は、ブロックに入るたびに、 ブロック内のすべての自動変数によって使用されるストレージが、 その値を使用して初期化されます。16 進値を入力しない場合、デフォルトは '00' です。
16 進値は引用符を付けても付けなくても指定できますが、 引用符を付けて指定する場合は、ストリングに X 接尾部を付けてはなりません。
NOINITFILL を指定した場合は、変数が明示的に初期化されない限り、 自動変数によって使用されるストレージには任意のビット・パターン を保持することができます。
INITFILL を指定するとプログラムの実行速度が大幅に低下する可能性があるので、実動プログラム内では指定しないでください。 ただし、INITFILL オプションの生成するコードは、LE STORAGE オプション よりも高速に実行されます。 またこのオプションは、プログラム開発時に、未初期化自動変数を 検出するために役立ちます。DFT(INITFILL('00')) と DFT(INITFILL('ff')) を 指定してプログラムが正しく実行されれば、未初期化自動変数はおそらく 存在しません。
NOINITFILL がデフォルトです。
SHORT (HEXADEC) がデフォルトです。
DUMMY(ALIGNED) は、引数が位置合わせにおいてのみパラメーター と相違している場合にも、仮引数を作成するべきであることを示します。 DUMMY(UNALIGNED) は、スカラー (不変ビットを除く) または スカラーの配列が位置合わせにおいてのみパラメーターと相違している場合に、 そのスカラーまたはスカラーの配列には仮引数を作成してはならないことを示します。
次の例を考えてみてください。
dcl
1 a1 unaligned,
2 b1 fixed bin(31),
2 b2 fixed bin(15),
2 b3 fixed bin(31),
2 b4 fixed bin(15);
dcl x entry( fixed bin(31) );
call x( b3 );DEFAULT(DUMMY(ALIGNED)) を指定すると仮引数が作成されますが、 DEFAULT(DUMMY(UNALIGNED)) を指定すると仮引数は作成されません。
DUMMY(ALIGNED) がデフォルトです。
z/OS UNIX 環境では、インクルード名は拡張子「.inc」を使用して作成されます。 したがって、例えば DFT(LOWERINC) オプションを指定して、%INCLUDE STANDARD; ステートメントを使用すると、コンパイラーは standard.inc の組み込みを試みます。一方 DFT(UPPERINC) オプションを指定して %INCLUDE STANDARD; ステートメントを使用すると、コンパイラーは STANDARD.INC の組み込みを試みます。
UPPERINC がデフォルトです。
NORETCODE を指定すると、RETURNS 属性を持たないプロシージャーに対して 特別なコードは生成されません。
NORETCODE がデフォルトです。
ALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメント により暗黙に UNALIGNED 属性が指定されていない限り、 文字、ビット、グラフィック、およびピクチャーを除くすべての変数 に ALIGNED 属性が与えられます。
UNALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメントに より暗黙に ALIGNED 属性が指定されていない限り、すべての 変数に UNALIGNED 属性が与えられます。
ALIGNED がデフォルトです。
ORDINAL(MIN) がデフォルトです。
NOOVERLAP を使用すると、パフォーマンスの優れたコードが生成されます。しかし、NOOVERLAP を使用する場合は、 ソースとターゲットが決してオーバーラップしないようにしなければなりません。
NOOVERLAP がデフォルトです。
JAVA とやり取りするプログラムは IEEE オプションを使用する 場合が多く、浮動小数点データのデフォルト表現として IEEE を 使用するプラットフォームとの間でデータの受け渡しをする プログラムも、IEEE オプションを使用する場合があります。
HEXADEC がデフォルトです。
E(IEEE) を指定すると、E フォーマット項目の指数として 4 桁の数字が使用されます。
E(HEXADEC) を指定すると、E フォーマット項目の指数として 2 桁の数字が使用されます。
DFT( E(HEXADEC) ) を指定した場合は、99 より大きい絶対値を持つ指数がある 式の使用を試みると、SIZE 条件が発生します。
コンパイラー・オプション DFT(IEEE) が有効になっている場合、 通常はオプション DFT( E(IEEE) ) も使用する必要があります。ただし このオプションを指定すると、DFT( E(HEXADEC) ) を指定した場合には 有効になる E フォーマット項目のいくつかが無効になります。 例えば、DFT( E(IEEE) ) を指定すると、E フォーマットが無効であるために ステートメント "put skip edit(x) ( e(15,8));" にフラグが立てられます。
E(HEXADEC) がデフォルトです。
デフォルト: DEFAULT( IBM EBCDIC ASSIGNABLE BYADDR NONCONNECTED DESCRIPTOR NATIVE NATIVEADDR NOINLINE ORDER LINKAGE(OPTLINK) EVENDEC NOINITFILL UPPERINC NULL370 BIN1ARG NULLSTRADDR NONRECURSIVE DESCLOCATOR RETURNS(BYADDR) SHORT(HEXADEC) DUMMY(ALIGNED) NORETCODE ALIGNED ORDINAL(MIN) NOOVERLAP HEXADEC E(HEXADEC) )