7.9.1 CHANGEのパラメータ

LANSA

7.9.1 CHANGEのパラメータ


FIELD

PRECISION

ROUND_UP

TO

FIELD

変更するフィールド、リスト、または拡張可能なグループ式の名前を指定します。

TO

FIELDパラメータで指定したフィールドに設定する新しい値を指定します。指定する新しい値として、別のフィールド名、英数字リテラル、数値リテラル、システム変数、プロセス・パラメータ、またはこれらを組み合わせた式を使用できます。

RDMLフィールドを使用する場合、VALUEパラメータに以下のいずれかの「特別な」値を指定することもできます。

*NULL

すべての英数字フィールドがブランクに、またすべての数値フィールドが0に設定されます。

*NAVAIL

すべての数値フィールドが0に、また3文字未満のすべての英数字フィールドがブランクに設定されます。3文字以上の英数字フィールドは、そのフィールドに収まる分の"N/AVAIL"に設定されます。

*DEFAULT

すべてのフィールドが、そのデータ・ディクショナリまたはプログラムで定義されているデフォルト値に設定されます。

*HIVAL

すべてのフィールドがそのフィールドの最大値に設定されます。すなわち、英数字フィールドの場合は、すべてのバイトが16進数X'FF'に設定され、数値フィールドの場合は、すべての桁が9に設定され、符号がプラス(+)になります。

*LOVAL

すべてのフィールドがそのフィールドの最小値に設定されます。すなわち、英数字フィールドの場合は、すべてのバイトが16進数X'00'に設定され、数値フィールドの場合は、すべての桁が9に設定され、符号がマイナス(-)に設定されます。

Visual LANSAアプリケーションでは、以下の特別なオプションを使用できます。

Changeコマンドの特別なオプション

意味

*REMEMBERED_VALUE_FOR_USER

現行のフォームまたはファンクションにおいて、現行ユーザーの指定フィールドの値を記憶します。

*REMEMBERED_VALUE_FOR_USER_IN_SYSTEM

(現在のPCシステム内の)あらゆる状況において、現行ユーザーの指定フィールドの値を記憶します。

*REMEMBERED_VALUE_FOR_FUNCTION

現行のフォームまたはファンクションにおいて、すべてのユーザーの指定フィールドの値を記憶します。

*REMEMBERED_VALUE_FOR_SYSTEM

(現在のPCシステム内の)あらゆる状況において、すべてのユーザーの指定フィールドの値を記憶します。

以下の表に、特別な値が指定された場合のRDMLXフィールドの動作について説明します(RDMLXのPackedおよびSignedフィールドの動作は、同じタイプのRDML フィールドと同じです)。

特殊値

FIELDのタイプ

*NULL

Integer、Float、またはBoolean

Signed/Packed、すなわち*ZEROとして扱われます(Booleanの場合、*ZEROはOff/Falseを意味します)。

*NULL

DateまたはDatetime

1900-01-01

*NULL

Time

午前零時(00:00:00)

*NULL

Char、String、Binary、Varbinary、CLOB、BLOB

空の文字列。比較の場合は、*BLANKSと同じと見なされます。

BLOBおよびCLOB:ファイル名は空です。

*NAVAIL

Integer、Float、Time、またはBoolean

Signed/Packed、すなわち*ZEROとして扱われます。

*NAVAIL

Date、Datetime、Binary、Varbinary

これらのフィールドには文字列を設定できないため、FFCエラーです。

*NAVAIL

Char、String、CLOB、BLOB

Alphaとして扱われます。

BLOBおよびCLOB:ファイル名は"N/AVAILABLE"です。

*DEFAULT

指定しない

フィールドのデフォルト値

*SQLNULL

指定しない

フィールドにASQN属性が割り当てられていない場合は、FFCエラーです。それ以外の場合はOKです。

*HIVAL
*LOVAL

Integer

整数の最大値(+符号)に設定されます。
整数の最小値(-符号)に設定されます。フィールドにSUNS属性が割り当てられている場合、最小値は*ZEROです。

*HIVAL
*LOVAL

Boolean

On/Trueに設定されます。
Off/Falseに設定されます。

*HIVAL

*LOVAL

Float、Date、Time

論理的な最小値または最大値が存在せず、特にDateについては、データベースによってサポートされる値が異なるため、FFCエラーです。

*HIVAL

*LOVAL

Datetime

*TIMESTAMP_HIVAL

*TIMESTAMP_LOVAL

*REMEMBERED_VALUE*

CLOB、BLOB、Date、Time、Datetime、Integer、Float、Boolean

現行フィールドに従ってレジストリに文字列として保管されます。

*REMEMBERED_VALUE*

Char、String

保管できる文字列のサイズに制限がある場合があります(Char/Stringは最大64Kb)。制限があり、フィールド・サイズがその制限を超えた場合は、FFCエラーです。制限がないか、フィールド・サイズが制限内の場合は、現行フィールドに従ってレジストリにStringとして保管されます。

*REMEMBERED_VALUE*

Binary、Varbinary

保管できる文字列のサイズに制限がある場合があります(Binary/Varbinaryは最大32Kb)。制限があり、フィールド・サイズがその制限を超えた場合は、FFCエラーです。制限がないか、フィールド・サイズが制限未満の場合は、レジストリにBinaryとして保管されます。

PRECISION

数式に対してのみ使用し、RDMLコンパイラーによって生成される中間作業フィールドに使用する精度を指定します。

数式の評価時に、RDMLコンパイラーはデフォルトで、中間作業フィールドの精度を計算しようとします。この処理は、このパラメータが指定されなかった場合や、デフォルト値が指定された場合に実行されます。

このロジックでは、先頭(または有効)桁の精度が優先されるため、場合によっては、小数部の精度が失われることがあります。PRECISIONパラメータは、中間作業フィールドで必要な精度を手作業で指定するために用意されています。

例えば、数値9,2と数値15,9を掛け合わせる場合、このロジックでは、一方の数値(9,2)の先頭桁が7桁であると判断されます。そのため、中間計算では、同じく先頭桁が7である15,8の作業フィールドが使用され、これによって小数部の精度が失われる可能性があります。

この問題を解決し、中間作業フィールドで強制的に定義済みの精度が使用されるようにするには、PRECISIONパラメータを使用します。

このパラメータでは、2つの値を指定します。最初の値では、すべての中間作業フィールドに保持する合計桁数(小数部を含む)を指定し、2番目の値では、その合計桁数のうち小数点以下桁数は何桁かを指定します。PRECISIONパラメータを指定するときは、合計桁数と小数点以下桁数の両方を指定してください。

例えば、PRECISION(15 6)は、合計桁数が15桁で、そのうち6桁が小数点以下であることを示します。すなわち、作業フィールドの先頭桁は9桁、小数点以下は6桁です。

通常、必要な小数点以下桁数が、式に含まれるどのフィールドの小数点以下桁数よりも小さい場合に、PRECISIONパラメータをコード化することは稀です。

参照

フィールド・タイプ

ROUND_UP

数式およびdatetime式に対してのみ使用し、FIELDパラメータで指定された結果フィールドに保管する前に、式の結果を「切り上げる」かどうかを指定します。

このパラメータを指定しないか、値*NOを指定すると、結果フィールドに収まらない小数部は切り捨てられます。

例えば、整数値3を整数値2で割り、その結果を整数フィールドに保管すると、結果は1になります。

ただし、ROUND_UPパラメータと適切なPRECISIONパラメータを使用すれば、結果は整数値2になります。

PRECISIONパラメータは、必ずROUND_UPパラメータと組み合わせて使用してください。こうすることで、式の評価に使用されるすべての中間作業フィールドの小数点以下桁数が、FIELDパラメータで指定されたフィールドよりも1桁以上大きくなります。

関連する中間作業フィールドの小数点以下桁数が、FIELDパラメータで指定されたフィールドより1桁以上大きくない場合、ROUND_UPパラメータは無視され、ROUND_UP(*NO)が指定されたかのように扱われます。

Datetimeフィールドの秒の小数部は0〜9です。長いDatetimeを短いDatetimeに割り当てる場合、デフォルトでは、秒の小数部が切り捨てられます。ROUND_UPを指定すると、適切な場合に、秒の小数部が切り上げられます。

ROUND_UPパラメータを使用した場合、RPGの「四捨五入」機能を使用した場合と同じ結果になります。実際、ROUND_UPパラメータを使用すると、中間作業フィールドから(変換されたRPG内の)結果フィールドに最終的にマッピングするときに、(中間作業フィールドの小数点以下桁数が結果フィールドより大きい場合は)RPGの「四捨五入」オプションが使用されます。

「四捨五入」機能の仕組みの詳細については、適切なRPGマニュアルで参照できます。

移植性に関する考慮事項

この値として*YESを指定する場合、プラットフォーム間で一貫性のある結果を得るために、適切なPRECISION値を指定してください。この規則に従わないと、コードを複数のプラットフォームに移植したときに、丸めた値にばらつきが生じる可能性があります。