Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

DEFAULT

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

IBM または ANS
IBM または ANS SYSTEM のデフォルトを使用します。 IBM および ANS の場合の演算デフォルトは次のとおりです。
属性 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 | EBCDIC
このオプションは、問題プログラム文字データの内部表現に使用する 文字セットのデフォルトを設定するために使用します。

ASCII は、ASCII 文字セット照合順序に依存するプログラムを コンパイルするときにだけ使用します。 例えば、プログラムが数字のソート・シーケンスまたは小文字および大文字の アルファベット順を使用している場合に、このような依存関係が存在します。 また、高位ビットの状態を変えて大文字の英字を作成するプログラムにも、 このような依存関係が存在します。

注:
コンパイラーは、A および E を文字ストリングの 接尾部としてサポートします。 A 接尾部は、EBCDIC コンパイラー・オプションが効力を 持っている場合でも、ストリングが ASCII データを表現していることを示します。 同様に、E 接尾部は、DEFAULT(ASCII) を選択した場合でも ストリングが EBCDIC であることを示します。
  '123'A は '313233'X と同じ
  '123'E は 'F1F2F3'X と同じ

EBCDIC がデフォルトです。

ASSIGNABLE | NONASSIGNABLE
このオプションを指定すると、コンパイラーは、ASSIGNABLE 属性 または NONASSIGNABLE 属性を持つものとして宣言されていないすべての 静的変数に、指定の属性を適用します。 コンパイラーは、NONASSIGNABLE 変数が割り当てのターゲットである ステートメントにフラグを付けます。

ASSIGNABLE がデフォルトです。

BYADDR | BYVALUE
引数またはパラメーターをアドレスで渡すか値で渡すかの デフォルトを設定します。BYVALUE は、いくつかの特定の引数およびパラメーターだけに 適用されます。 詳しくは、「PL/I 言語解説書」を参照してください。

BYADDR はデフォルトです。

CONNECTED | NONCONNECTED
パラメーターの接続または非接続に関するデフォルトを設定します。 CONNECTED を指定すると、パラメーターをレコード単位の入出力の ターゲットまたはソースとして、あるいはストリング・オーバーレイ定義の 基礎として使用できます。

NONCONNECTED がデフォルトです。

DESCRIPTOR | NODESCRIPTOR
PROCEDURE ステートメントで DESCRIPTOR を使用すると、記述子リストが 渡されたことを示します。ENTRY ステートメントで DESCRIPTOR を使用すると、 記述子リストを渡す必要があることを示します。NODESCRIPTOR を使用すると、より効率的なコードになりますが、 次の制限があります。

DESCRIPTOR がデフォルトです。

NATIVE | NONNATIVE
このオプションは、固定 2 進数、序数、オフセット、エリア、および 可変ストリング・データの内部表現だけに影響します。NONNATIVE サブオプションが有効な場合、NONNATIVE 属性は、 NATIVE 属性を指定して宣言されていないこの種のすべての変数に適用されます。

NONNATIVE は、非ネイティブ・フォーマットに依存してこの種の変数を保持する プログラムをコンパイルする場合だけ指定してください。

固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。

それ以外の組み合わせを指定すると、結果は予測できません。

NATIVE がデフォルトです。

NATIVEADDR | NONNATIVEADDR
このオプションはポインターの内部表示だけに影響します。 NONNATIVEADDR サブオプションが有効な場合、NONNATIVE 属性は、 NATIVE 属性を指定して宣言されていないすべてのポインター変数に適用されます。

固定 2 進変数がポインター変数またはオフセット変数を基礎とする プログラム (あるいは逆にポインター変数またはオフセット変数が固定 2 進変数 を基礎とするプログラム) の場合は、次のどちらかを指定します。

それ以外の組み合わせを指定すると、結果は予測できません。

NATIVEADDR がデフォルトです。

INLINE | NOINLINE
このオプションは、インライン・プロシージャー・オプションの デフォルトを設定します。

INLINE を指定すると、コードの実行が高速になりますが、場合によっては 実行可能ファイルも大きくなります。 インライン化によるパフォーマンスの改善方法の詳細については、パフォーマンスの向上を参照してください。

NOINLINE がデフォルトです。

ORDER | REORDER
ソース・コードの最適化に影響します。 REORDER を指定すると、ソース・コードをさらに最適化できます。 パフォーマンスの向上を参照してください。

ORDER がデフォルトです。

LINKAGE
プロシージャー呼び出しのためのリンケージ規則は次のとおりです。
OPTLINK
Enterprise PL/I のデフォルトのリンケージ規則。 このリンケージにより最良のパフォーマンスが得られます。
SYSTEM
システム API の標準リンケージ規則。

LINKAGE(OPTLINK) は、JAVA によって呼び出されるか、JAVA の 呼び出しを行うルーチンすべてに対して使用する必要があります。 また、C によって呼び出されるか、C の呼び出しを行うルーチンすべてに 対しても使用する必要があります (C コードがデフォルト 以外のリンケージを使用してコンパイルされた場合を除く)。

LINKAGE(SYSTEM) は、最後の (かつ最後だけの) パラメーターのアドレス内 で高位ビットがオンになっていることを予期する、非 PL/I ルーチンすべてに 対して使用する必要があります。

LINKAGE(OPTLINK) がデフォルトです。

EVENDEC | NOEVENDEC
このサブオプションは、偶数精度を指定して宣言された固定小数点変数 に関するコンパイラーの許容度を制御します。

NOEVENDEC のもとでは、固定小数点変数の精度は次の最大の奇数に 切り上げられます。

EVENDEC を指定して FIXED DEC(2) 変数に 123 を割り当てると、SIZE 条件 が発生します。NOEVENDEC を指定した場合は、SIZE 条件は発生しません。

EVENDEC がデフォルトです。

BIN1ARG | NOBIN1ARG
このサブオプションは、非プロトタイプ関数に渡される 1 バイト REAL FIXED BIN 引数をコンパイラーがどのように扱うかを制御します。

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 | NONULLSTRADDR
このサブオプションは、コンパイラーが引数として渡されたヌル・ストリングをどのように処理するのかを制御します。

NULLSTRADDR では、ヌル・ストリングが入り口呼び出しで引数として指定された場合、コンパイラーは自動ストレージの初期化部分のアドレスを渡します。 これは、OS PL/I および PL/I for MVS コンパイラーの動作と互換性があります。

しかし、NONULLSTRADDR では、ヌル・ストリングが入り口呼び出しで引数として指定されると、コンパイラーは引数のアドレスとして NULL ポインターを渡します。 これは、Enterprise PL/I コンパイラーの早期リリースの動作と互換性があります。

NULLSTRADDR がデフォルトです。

NULLSYS | NULL370
このサブオプションは、NULL 組み込み関数によって戻される値を決定します。NULLSYS を指定すると、binvalue(null()) は 0 に等しくなります。以前の PL/I のリリースの場合と同じく binvalue(null()) を 'ff_00_00_00'xn に等しくしたい場合は、NULL370 を指定します。

NULL370 がデフォルトです。

RECURSIVE | NONRECURSIVE
DEFAULT(RECURSIVE) を指定すると、コンパイラーはすべてのプロシージャー に RECURSIVE 属性を適用します。DEFAULT(NONRECURSIVE) を指定すると、RECURSIVE 属性を持つプロシージャー 以外のすべてのプロシージャーが非再帰的になります。

NONRECURSIVE がデフォルトです。

DESCLIST | DESCLOCATOR
DEFAULT(DESCLIST) を指定すると、コンパイラーはリストの中のすべての 記述子を「隠れた」最後のパラメーターとして渡します。

DEFAULT(DESCLOCATOR) を指定すると、以前のリリースの PL/I の場合と 同様に、記述子を必要とするパラメーターが記述子またはロケーターを使用して 渡されます。 したがって、古いコードで、1 つのルーチンからポインターを受け取ることを予想 しているルーチンへ構造体を渡していた場合も、その古いルーチンは引き続き有効です。

DFT(DESCLIST) オプションは、CMPAT(V*) オプションと対立するため、 そのいずれかのオプションとともに指定された場合、メッセージが出されて、DFT(DESCLOCATOR) オプションとしてとられます。

DESCLOCATOR がデフォルトです。

RETURNS (BYVALUE | BYADDR)
関数が値を戻す方法のデフォルトを設定します。 詳しくは、「PL/I 言語解説書」を参照してください。

アプリケーションに ENTRY ステートメントが含まれていて、 その ENTRY ステートメントまたはそのステートメントを含む プロシージャー・ステートメントに RETURNS オプションが指定されている 場合は、RETURNS(BYADDR) を指定してください。 また、それらのエントリーのエントリー宣言でも、RETURNS(BYADDR) を 指定する必要があります。

RETURNS(BYADDR) がデフォルトです。

INITFILL | NOINITFILL
このサブオプションは、自動変数のデフォルト初期化を制御します。

INITFILL に 16 進値 (nn) を指定した場合は、ブロックに入るたびに、 ブロック内のすべての自動変数によって使用されるストレージが、 その値を使用して初期化されます。16 進値を入力しない場合、デフォルトは '00' です。

16 進値は引用符を付けても付けなくても指定できますが、 引用符を付けて指定する場合は、ストリングに X 接尾部を付けてはなりません。

NOINITFILL を指定した場合は、変数が明示的に初期化されない限り、 自動変数によって使用されるストレージには任意のビット・パターン を保持することができます。

INITFILL を指定するとプログラムの実行速度が大幅に低下する可能性があるので、実動プログラム内では指定しないでください。 ただし、INITFILL オプションの生成するコードは、LE STORAGE オプション よりも高速に実行されます。 またこのオプションは、プログラム開発時に、未初期化自動変数を 検出するために役立ちます。DFT(INITFILL('00')) と DFT(INITFILL('ff')) を 指定してプログラムが正しく実行されれば、未初期化自動変数はおそらく 存在しません。

NOINITFILL がデフォルトです。

SHORT (HEXADEC | IEEE)
このサブオプションは、IBM 以外の UNIX コンパイラーとの互換性を 向上させます。SHORT (HEXADEC) は、p <= 21 の場合に FLOAT BIN (p) を 短い (4 バイトの) 浮動小数点数にマップします。SHORT(IEEE) は、p <= 24 の場合に FLOAT BIN (p) を 短い (4 バイトの) 浮動小数点数にマップします。

SHORT (HEXADEC) がデフォルトです。

DUMMY (ALIGNED | UNALIGNED)
このサブオプションは、仮引数が作成される状態の数を減らします。

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) がデフォルトです。

LOWERINC | UPPERINC
LOWERINC を指定した場合は、コンパイラーは INCLUDE ファイルの実際のファイル名が 小文字であることを要求します。UPPERINC を指定した場合は、コンパイラーはこの名前が 大文字であることを要求します。
注:
このサブオプションは、z/OS UNIX 環境でのコンパイルにだけ適用されます。

z/OS UNIX 環境では、インクルード名は拡張子「.inc」を使用して作成されます。 したがって、例えば DFT(LOWERINC) オプションを指定して、%INCLUDE STANDARD; ステートメントを使用すると、コンパイラーは standard.inc の組み込みを試みます。一方 DFT(UPPERINC) オプションを指定して %INCLUDE STANDARD; ステートメントを使用すると、コンパイラーは STANDARD.INC の組み込みを試みます。

UPPERINC がデフォルトです。

RETCODE | NORETCODE
RETCODE を指定すると、コンパイラーは、RETURNS 属性を持たない外部プロシージャーに対して 余分のコードを追加して、そのプロシージャーが、 プロシージャーからの戻りの直前に PLIRETV 組み込み関数を 呼び出して取得した整数値を戻すようにします。

NORETCODE を指定すると、RETURNS 属性を持たないプロシージャーに対して 特別なコードは生成されません。

NORETCODE がデフォルトです。

ALIGNED | UNALIGNED
このサブオプションにより、すべてのユーザー変数でバイト位置合わせを 強制できます。

ALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメント により暗黙に UNALIGNED 属性が指定されていない限り、 文字、ビット、グラフィック、およびピクチャーを除くすべての変数 に ALIGNED 属性が与えられます。

UNALIGNED を指定すると、明示的に (おそらく親構造体で) または DEFAULT ステートメントに より暗黙に ALIGNED 属性が指定されていない限り、すべての 変数に UNALIGNED 属性が与えられます。

ALIGNED がデフォルトです。

ORDINAL(MIN | MAX)
ORDINAL(MAX) を指定すると、定義に PRECISION 属性が含まれていない すべての順序数に、属性 PREC(31) が与えられます。 これを指定しない場合は、これらの順序数には、その値の範囲を カバーする最小の精度が与えられます。

ORDINAL(MIN) がデフォルトです。

OVERLAP | NOOVERLAP
OVERLAP を指定すると、コンパイラーは、割り当てでソースとターゲットの オーバーラップが起こることがあると想定し、割り当ての結果が正しくなるよう に、必要に応じて追加のコードを生成します。

NOOVERLAP を使用すると、パフォーマンスの優れたコードが生成されます。しかし、NOOVERLAP を使用する場合は、 ソースとターゲットが決してオーバーラップしないようにしなければなりません。

NOOVERLAP がデフォルトです。

HEXADEC | IEEE
このサブオプションを使用すると、FLOAT 変数すべて、および浮動小数点の 中間結果すべての保管に使用するデフォルト表現を指定できます。 また、このサブオプションは、コンパイラーが浮動小数点の式を評価するときに、16 進の命令と数学ルーチンを使用するか、IEEE 浮動小数点の命令と数学ルーチンを使用するかを決定します。

JAVA とやり取りするプログラムは IEEE オプションを使用する 場合が多く、浮動小数点データのデフォルト表現として IEEE を 使用するプラットフォームとの間でデータの受け渡しをする プログラムも、IEEE オプションを使用する場合があります。

HEXADEC がデフォルトです。

E (HEXADEC | IEEE)
E サブオプションは、E フォーマット項目の指数として使用する数字の桁数を 指定します。

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


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)