2 進形式は、符号 (正または負) がフィールドの 左端ビットに入り、そのフィールドの残りのビットに 数値が入ることを意味します。正数は符号ビットがゼロになり、負数は符号ビットが 1 で、2 の補数形式となります。 2 進フィールドは、1 から 9 桁の長さにすることができ、小数点以下の桁数付きと して定義することができます。 フィールドの長さが 1 から 4 桁であった場合には、コンパイラーは 2 バイトの 2 進フィールド長と見なします。 フィールドの長さが 5 から 9 桁であった場合には、コンパイラーは 4 バイトの 2 進フィールド長と見なします。
2 進形式で読み取られたすべての入力フィールドには、コンパイラーによって フィールド長 (桁数) が割り当てられます。 フィールドがプログラム内の別の場所で定義されていない場合には、 2 バイトの 2 進フィールドには長さ 4 が割り当てられ、 4 バイトの 2 進フィールドには長さ 9 が割り当てられます。 これらの長さの制約事項のために、 2 バイトの 2 進フィールドに割り当ていることができる最高の 10 進値は 9999 となり、 4 バイトの 2 進フィールドに割り当ていることができる最高の 10 進値は 999 999 999 となります。 一般に、n 桁の 2 進フィールドには、nx9 の最大値を持たせることができます。 この説明は、小数点以下の桁数はないことを前提としています。
2 進形式の 2 バイト・フィールドはコンパイラーによって 1 から 4 桁の 10 進 フィールドに変換されるので、入力値が大きすぎることがあります。 その場合には、数値の左端桁が除去されます。 たとえば、4 桁の 2 進入力フィールドに 16 進 6000 の 2 進値が入っている場合には、 コンパイラーはこれを 10 進の 24 576 に変換します。 この 2 が除去され、結果は 4576 になります。 同様に、入力値が 2 進形式の 4 バイト・フィールドには大きすぎることがあります。 2 進フィールドの小数点以下の桁数がない (0) の場合には、2 進フィールド の代わりに整数フィールドを定義することによって、この変換の問題を避けるこ とができます。
2 進フィールドの桁数は、DDS 記述の長さと正確に同じで なければなりません。 たとえば、2 進フィールドが 7 桁で小数点以下の桁数はないことを DDS 仕様に定義した場合には、RPG IV コンパイラーはこのデータを以下のように処理します。
2 進フィールドの完全な情報を保存したい場合には、フィールドをデータ構造 内の 2 進サブフィールドとしてか、または独立した 2 進フィールドとして再 定義してください。
外部記述 2 進フィールドは、RPG IV の 2 進フィールドに使用できる範囲外の値を持つことがある点に注意してください。 外部記述 2 進フィールドの小数点以下の桁数がない (0) 場合には、この問題を 避けることができます。 そうするためには、外部記述 2 進フィールドを定義仕様書に定義 し、制御仕様書には EXTBININT キーワードを指定して ください。 これによって、外部記述フィールドの外部形式が符号付き整数の形式に変更され ます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.