このオプションは、属性およびオプションのデフォルトを指定します。これらのデフォルトは、属性またはオプションがソースで明示的または 暗黙に指定されていない場合だけ適用されます。
>>-DEFAULT--(--+----------------------------------------+--)--->< | .-+---+------------------------------. | | | '-,-' | | | V .-IBM--. | | '---+-+- ANS-+-----------------------+-+-' | .-ASCII--. | +-+-EBCDIC-+---------------------+ | .-ASSIGNABLE----. | +-+-NONASSIGNABLE-+--------------+ | .-BYADDR--. | +-+-BYVALUE-+--------------------+ | .-NONCONNECTED-. | +-+-CONNECTED----+---------------+ | .-DESCRIPTOR---. | +-+-NODESCRIPTOR-+---------------+ | .-NATIVE----. | +-+-NONNATIVE-+------------------+ | .-NATIVEADDR----. | +-+-NONNATIVEADDR-+--------------+ | .-NOINLINE-. | +-+-INLINE---+-------------------+ | .-REORDER-. | +-+-ORDER---+--------------------+ | .-OPTLINK-. | +-LINKAGE--(--+---------+--)-----+ | +-SYSTEM--+ | | +-CDECL---+ | | '-STDCALL-' | | .-IEEE----. | +-+-HEXADEC-+--------------------+ | .-EVENDEC----. | +-+- NOEVENDEC-+-----------------+ | .-INITFILL----. | +-+-(--'nn'x--)-+----------------+ | '-NOINITFILL--' | | .-NULLSTRADDR---. | +-+-NONULLSTRADDR-+--------------+ | .-NULL----. | +-NULLSTRPTR--(--+---------+--)--+ | '-SYSNULL-' | | .-NULLSYS-. | +-+-NULL370-+--------------------+ | .-BIN1ARG---. | +-+-NOBIN1ARG-+------------------+ | .-NONRECURSIVE-. | +-+-RECURSIVE----+---------------+ | .-NOOVERLAP-. | +-+-OVERLAP---+------------------+ | .-DESCLIST----. | +-+-DESCLOCATOR-+----------------+ | .-BYVALUE----. | +-RETURNS--(--+-+--------+-+--)--+ | '-BYADDR-' | | .-HEXADEC--. | +-SHORT--(--+-+------+-+--)------+ | '-IEEE-' | | .-ALIGNED-------. | +-DUMMY--(--+-+-----------+-+--)-+ | '-UNALIGNED-' | | .-LOWERINC-. | +-+-UPPERINC-+-------------------+ | .-NORETCODE-. | +-+-RETCODE---+------------------+ | .-MIN-----. | +-ORDINAL--(--+-+-----+-+--)-----+ | '-MAX-' | | .-IEEE--------. | +-E--(--+-+---------+-+--)-------+ | '-HEXADEC-' | | .-NORETCODE-. | +-+-RETCODE---+------------------+ | .-ALIGNED---. | '-+-UNALIGNED-+------------------'
省略形: DFT、ASGN、NONASGN、CONN、NONCONN
| 属性 | 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 です。
このオプションは、問題プログラム文字データの内部表現に使用する 文字セットのデフォルトを設定するために使用します。
EBCDIC は、EBCDIC 文字セット照合順序に依存するプログラムを コンパイルするときにだけ使用します。例えば、プログラムが数字のソート順序または小文字および大文字の アルファベット順を使用している場合に、このような依存関係が存在します。また、高位ビットの状態を変えて大文字の英字を作成するプログラムにも、このような依存関係が存在します。
'123'A is the same as '313133'X '123'E is the same as 'F1F1F3'X
NONNATIVE は、非ネイティブ・フォーマットに依存してこの種の変数を保持する プログラムをコンパイルする場合だけ指定してください。
固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。
それ以外の組み合わせを指定すると、結果は予測できません。
固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。
それ以外の組み合わせを指定すると、結果は予測できません。
INLINE を指定すると、コードの実行が高速になりますが、場合によっては実行可能ファイルも大きくなります。 インライン化によるアプリケーションのパフォーマンスの改善方法の詳細については、パフォーマンスの向上を参照してください。
OPTIONS(COBOL) は、リンケージがエントリーの DCL ステートメントまたは PROC ステートメントで指定されていない場合、LINKAGE(SYSTEM) を暗黙指定します。
リンケージ規則の詳細については、呼び出し規則を参照してください。
IEEE を指定すると、浮動小数点データは、ネイティブ IEEE フォーマットで記憶装置に格納されます。 HEXADEC は、浮動小数点データの保管がメインフレーム環境と同じにすることを指示します。
NOEVENDEC のもとでは、固定小数点変数の精度は次の最大の奇数に 切り上げられます。
EVENDEC を指定して FIXED DEC(2) 変数に 123 を割り当てると、SIZE 条件 が発生します。NOEVENDEC を指定すると、(メインフレーム PL/I を使用している場合とまったく同様に) 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 がデフォルトです。
16 進数値 (nn) とともに INITFILL を指定すると、16 進数値は複製され、すべての自動変数の記憶域がその値で充てんされます。16 進値を入力しない場合、デフォルトは '00'x です。NOINITFILL では、自動変数の初期化は行われません。INITIFILL を指定するとプログラムの実行速度が大幅に低下する可能性が あるので、実動プログラム内では指定しないでください。ただし、プログラム開発時には、未初期化の自動変数の検出に役立ちます。
NOINITIFILL がデフォルトです。
LOWERINC がデフォルトです。
NULLSTRADDR を指定した場合、入り口の呼び出し時に引数としてヌル・ストリングが指定されると、コンパイラーによって、自動ストレージの初期化部分のアドレスが渡されます。 これは、OS PL/I コンパイラーおよび PL/I for MVS コンパイラーの動作と互換性があります。
ただし、NONULLSTRADDR を指定した場合、入り口の呼び出し時に引数としてヌル・ストリングが指定されると、コンパイラーによって、NULL ポインターが引数のアドレスとして渡されます。 これは、Enterprise PL/I コンパイラーの初期リリースの動作と互換性があります。
NULLSTRADDR がデフォルトです。
NULLSTRPTR( SYSNULL ) を指定した場合、'' を POINTER に割り当てると、結果は、SYSNULL() をそのポインターに割り当てた場合と同じになります。
NULLSTRPTR( NULL ) を指定した場合、'' を POINTER に割り当てると、結果は、NULL() をそのポインターに割り当てた場合と同じになります。
NULLSTRPTR(NULL) がデフォルトです。
NULLSYS がデフォルトです。
NONRECURSIVE がデフォルトです。
DEFAULT(DESCLOCATOR) を指定すると、記述子を必要とするパラメーターは、メインフレーム PL/I と同じ方法で、ロケーターまたは記述子を使用して引き渡されます。この方法によって、古いコーディングが、ポインターの受け取りを期待しているルーチン間で構造体を引き渡す場合でも、機能することが可能になります。
DESCLIST がデフォルトです。
RETURNS(BYVALUE) がデフォルトです。アプリケーションに ENTRY ステートメントが含まれていて、その ENTRY ステートメントまたはそのステートメントを含む プロシージャー・ステートメントに RETURNS オプションが指定されている 場合は、RETURNS(BYADDR) を指定してください。また、それらのエントリーのエントリー宣言でも、RETURNS(BYADDR) を 指定する必要があります。
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) がデフォルトです。
NORETCODE を指定すると、RETURNS 属性を持たないプロシージャーから、特別なコードは生成されなくなります。
ALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメント により暗黙に UNALIGNED 属性が指定されていない限り、文字、ビット、グラフィック、およびピクチャーを除くすべての変数 に ALIGNED 属性が与えられます。
UNALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメントに より暗黙に ALIGNED 属性が指定されていない限り、すべての 変数に UNALIGNED 属性が与えられます。
ALIGNED がデフォルトです。
E(IEEE) を指定すると、E 形式項目の指数として 4 桁の数字が使用されます。
E(HEXADEC) を指定すると、E 形式項目の指数として 2 桁の数字が使用されます。
DFT( E(HEXADEC) ) を指定した場合は、99 より大きい絶対値を持つ指数がある式の使用を試みると、SIZE 条件が発生します。
DFT( E(HEXADEC) ) は、ワークステーション上で 390 アプリケーションの開発とテストを行う場合に役立ちます。 ステートメント "put skip edit(x) ( e(15,8));" は、390 上では何のメッセージも生成しませんが、デフォルトでは、Intel と AIX のもとで、フラグが立てられます。 DFT(E(HEXADEC)) を指定すると、この状態が修正されます。
IEEE がデフォルトです。
DEFAULT (IBM ASCII ASSIGNABLE BYADDR NONCONNECTED DESCRIPTOR NATIVE NATIVEADDR NOINLINE REORDER LINKAGE(OPTLINK) IEEE EVENDEC BIN1ARG NOINITFILL ORDINAL(MIN) NOOVERLAP NULLSTRADDR NULLSTRPTR(NULL) NULLSYS NONRECURSIVE DESCLIST RETURNS(BYVALUE) SHORT(HEXADEC) DUMMY(ALIGNED) LOWERINC NORETCODE ALIGNED E(IEEE)).