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

DEFAULT

このオプションは、属性およびオプションのデフォルトを指定します。これらのデフォルトは、属性またはオプションがソースで明示的または 暗黙に指定されていない場合だけ適用されます。

構文図を読む構文図をスキップする>>-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

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 です。

ASCII または EBCDIC

このオプションは、問題プログラム文字データの内部表現に使用する 文字セットのデフォルトを設定するために使用します。

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

注:
コンパイラーは、A および E を文字ストリングの 接尾部としてサポートします。A 接尾部は、EBCDIC コンパイラー・オプションが効力を 持っている場合でも、ストリングが ASCII データを表現していることを示します。同様に、E 接尾部は、DEFAULT(ASCII) を選択した場合でも ストリングが EBCDIC であることを示します。
  '123'A is the same as '313133'X
  '123'E is the same as 'F1F1F3'X
ASSIGNABLE または NONASSIGNABLE
このオプションは、静的変数のみに適用されます。 コンパイラーは、NONASSIGNABLE 変数が割り当てのターゲットであるステートメントにフラグを立てます。 メインフレームにコーディングを移植する場合 (プログラムが再入可能な場合)、このオプションにより、そうしない場合に 記憶保護例外を起こす可能性のあるステートメントにフラグを立てます。
BYADDR または BYVALUE
引数またはパラメーターをアドレスで渡すか値で渡すかのデフォルトを設定します。 BYVALUE は、いくつかの特定の引数およびパラメーターだけに適用されます。 詳しくは、「PL/I 言語解説書」を参照してください。
CONNECTED または NONCONNECTED
パラメーターの接続または非接続に関するデフォルトを設定します。CONNECTED を指定すると、パラメーターをレコード単位の入出力の ターゲットまたはソースとして、あるいはストリング・オーバーレイ定義の 基礎として使用できます。
DESCRIPTOR または NODESCRIPTOR
PROCEDURE ステートメントで DESCRIPTOR を使用すると、記述子リストが 渡されたことを示します。ENTRY ステートメントで DESCRIPTOR を使用すると、記述子リストを渡す必要があることを示します。NODESCRIPTOR を使用すると、より効率の高いコーディングが生成されますが、以下の条件のもとでエラーが発生します。
NATIVE または NONNATIVE
このオプションは、固定 2 進数、序数、オフセット、エリア、および 可変ストリング・データの内部表現だけに影響します。NONATIVE サブオプションが有効な場合、NONNATIVE 属性は、NATIVE 属性を指定して宣言されていないこの種のすべての変数に適用されます。

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

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

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

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

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

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

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

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

REORDER または ORDER
ソース・コードの最適化に影響します。 REORDER を指定すると、ソース・コードの最適化が可能になります。 パフォーマンスの向上を参照してください。
ORDINAL (MAX または MIN)
ORDINAL(MAX) を指定すると、その定義が PRECISION 属性を含まない順次数すべてに、属性 PREC(31) が与えられます。これを指定しない場合は、これらの順序数には、その値の範囲を カバーする最小の精度が与えられます。
OVERLAP または NOOVERLAP
OVERLAP を指定すると、コンパイラーは、割り当てでソースとターゲットの オーバーラップが起こることがあると想定し、割り当ての結果が正しくなるよう に、必要に応じて追加のコードを生成します。パフォーマンスの向上
LINKAGE
プロシージャー呼び出しのためのリンケージ規則は次のとおりです。
OPTLINK
PL/I for Windows のデフォルトのリンケージ規則。このリンケージにより最良のパフォーマンスが得られます。
SYSTEM
パラメーターがすべてスタックに引き渡されますが、呼び出し側 関数により、スタックはクリーンアップされます。
STDCALL
Windows API の標準リンケージ規則。このリンケージ規則は、Windows 下で使用され、スタックにすべてのパラメーターを引き渡します。呼び出された側の 関数が、スタックをクリーンアップします。
CDECL
パラメーターがすべてスタックに引き渡されますが、呼び出し側 関数により、スタックはクリーンアップされます。外部名は、接頭部として _ applied を持ちます。

OPTIONS(COBOL) は、リンケージがエントリーの DCL ステートメントまたは PROC ステートメントで指定されていない場合、LINKAGE(SYSTEM) を暗黙指定します。

リンケージ規則の詳細については、呼び出し規則を参照してください。

IEEE または HEXADEC

IEEE を指定すると、浮動小数点データは、ネイティブ IEEE フォーマットで記憶装置に格納されます。 HEXADEC は、浮動小数点データの保管がメインフレーム環境と同じにすることを指示します。

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

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

EVENDEC を指定して FIXED DEC(2) 変数に 123 を割り当てると、SIZE 条件 が発生します。NOEVENDEC を指定すると、(メインフレーム PL/I を使用している場合とまったく同様に) 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 がデフォルトです。

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

16 進数値 (nn) とともに INITFILL を指定すると、16 進数値は複製され、すべての自動変数の記憶域がその値で充てんされます。16 進値を入力しない場合、デフォルトは '00'x です。NOINITFILL では、自動変数の初期化は行われません。INITIFILL を指定するとプログラムの実行速度が大幅に低下する可能性が あるので、実動プログラム内では指定しないでください。ただし、プログラム開発時には、未初期化の自動変数の検出に役立ちます。

NOINITIFILL がデフォルトです。

LOWERINC または UPPERINC
LOWERINC を指定すると、コンパイラーは、INCLUDE ファイルとして、小文字のファイル名を受け入れます。UPPERINC を指定すると、コンパイラーは、INCLUDE ファイルとして、大文字のファイル名を受け入れます。

LOWERINC がデフォルトです。

NULLSTRADDR または NONULLSTRADDR
このサブオプションは、ヌル・ストリングが引数として渡されるときに、コンパイラーがそのヌル・ストリングを処理する方法を制御します。

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

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

NULLSTRADDR がデフォルトです。

NULLSTRPTR
このサブオプションは、ヌル・ストリングが POINTER に割り当てられるときに、コンパイラーがそのヌル・ストリングを処理する方法を制御します。

NULLSTRPTR( SYSNULL ) を指定した場合、'' を POINTER に割り当てると、結果は、SYSNULL() をそのポインターに割り当てた場合と同じになります。

NULLSTRPTR( NULL ) を指定した場合、'' を POINTER に割り当てると、結果は、NULL() をそのポインターに割り当てた場合と同じになります。

NULLSTRPTR(NULL) がデフォルトです。

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

NULLSYS がデフォルトです。

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

NONRECURSIVE がデフォルトです。

DESCLIST または DESCLOCATOR
DEFAULT(DESCLIST) を指定すると、コンパイラーは、以前のワークステーション製品リリースとまったく同じようにして、コーディングを生成します (すべての記述子が、「隠れた」最後のパラメーターとしてリストで引き渡されます)。

DEFAULT(DESCLOCATOR) を指定すると、記述子を必要とするパラメーターは、メインフレーム PL/I と同じ方法で、ロケーターまたは記述子を使用して引き渡されます。この方法によって、古いコーディングが、ポインターの受け取りを期待しているルーチン間で構造体を引き渡す場合でも、機能することが可能になります。

DESCLIST がデフォルトです。

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

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

SHORT (HEXADEC または IEEE)
このサブオプションは、他の UNIX PL/I コンパイラーとの互換性を向上させます。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) がデフォルトです。

RETCODE または NORETCODE
RETCODE を指定すると、RETURNS 属性を持たない外部プロシージャーに対しても、整数値を戻すように指示できます。外部プロシージャーは、戻る直前に PLIRETV 組み込み関数を呼び出して取得した整数値を戻します。この指定により、外部プロシージャーを、メインフレーム上で COBOL から呼び出される似たようなプロシージャーのように動作させることができます。

NORETCODE を指定すると、RETURNS 属性を持たないプロシージャーから、特別なコードは生成されなくなります。

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

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

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

ALIGNED がデフォルトです。

E(IEEE または HEXADEC)
E サブオプションは、E 形式項目の指数として使用する数字の桁数を指定します。

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


Terms of use | Feedback

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