数値データの形式
数値データに使用できる形式には幾つかあります。
外部 10 進数 (DISPLAY および NATIONAL) 項目
USAGE
DISPLAY が カテゴリー数値 データ項目に対して有効な場合 (ユーザーがコーディングしたか、デフォルトにより)、ストレージの各位置 (バイト) には 1 桁の 10 進数が入ります。 項目は表示可能な形式で保管されます。 USAGE
DISPLAY を持つ外部 10 進数項目は、 ゾーン 10 進数 データ項目と呼ばれます。
USAGE
NATIONAL がカテゴリー数値データ項目に対して有効な場合、各 10 進数字ごとに 2 バイトのストレージが必要です。 項目は UTF-16 形式で保管されます。 USAGE NATIONAL のある外部 10 進数項目には、有効な UTF-16 数字のみが含まれていなければなりません。 そうでない場合、データは正しくないものになり、生成されるコードの動作は不確定になります。 USAGE
NATIONAL を持つ外部 10 進数項目は、 国別 10 進数 データ項目と呼ばれます。
国別 10 進数データ項目は、符号付きの場合には、SIGN SEPARATE 節が有効になっている必要があります。 ゾーン 10 進数項目のその他の規則すべてが国別 10 進数項目に適用されます。 国別 10 進数項目は、他のカテゴリー数値データ項目を使用できる場所ならどこででも使用できます。
外部 10 進数 (ゾーン 10 進数と国別 10 進数の両方) データ項目は 、プログラムとファイル、端末、またはプリンターとの間で数値をやり取りすることを主な目的としています。 外部 10 進数項目は、算術処理で、オペランドおよび受け取り側として使用することもできます。 ただし、プログラムで多数の算術計算を集中的に実行し、効率を優先させるのであれば、算術計算で使用するデータ項目には、COBOL の計算数値タイプを使用した方がよい場合もあります。
外部浮動小数点 (DISPLAY および NATIONAL) 項目
浮動小数点データ項目で USAGE DISPLAY が (コーディングされているため、あるいはデフォルトにより) 有効である場合、それぞれの PICTURE 文字位置 (使用されている場合、暗黙の小数点である v を除く) は 1 バイトのストレージを占有します。 項目は表示可能な形式で保管されます。 USAGE DISPLAY を持つ外部浮動小数点項目は、 USAGE NATIONALを持つ外部浮動小数点項目と区別するために必要に応じて、本書では 表示浮動小数点 データ項目と呼びます。
以下の例では、Compute-Result が暗黙的に表示浮動小数点項目として定義されています。
05 Compute-Result Pic -9v9(9)E-99.
負符号 (-) は、仮数および指数が必ず負の数値でなければならないことを意味するものではありません。 負符号は、数値が表示されるときに、正数であれば符号がブランクとなり、負数であれば符号が負符号となることを意味しています。 正符号 (+) をコーディングすると、符号は、正数であれば正符号となり、負数であれば負符号となります。
浮動小数点データ項目で USAGE NATIONAL が有効である場合、それぞれの PICTURE 文字位置 (使用されている場合、v を除く) は 2 バイトのストレージを占有します。 項目は国別文字 (UTF-16) として保管されます。 USAGE NATIONAL を持つ外部浮動小数点項目は、 国別浮動小数点 データ項目と呼ばれます。
表示浮動小数点項目の既存の規則は、国別浮動小数点項目に適用されます。
以下の例では、Compute-Result-N は国別浮動小数点項目です。
05 Compute-Result-N Pic -9v9(9)E-99 Usage National.
Compute-Result-N が表示される場合、Compute-Result について上述したように符号が表示されますが、国別文字で表示されます。 代わりに Compute-Result-N を EBCDIC 文字で表示するには、それをコンソールに送ってください。
Display Compute-Result-N Upon Console
外部浮動小数点項目に VALUE 節を使用することはできません。
浮動小数点数は、外部 10 進数と同様、(コンパイラーによって) 数値の内部表現に変換しなければ、算術演算で使用することはできません。 デフォルト・オプションの ARITH (COMPAT) を使用してコンパイルした場合、外部浮動小数点数は長精度 (64 ビット) の浮動小数点形式に変換されます。 ARITH (EXTEND)でコンパイルすると、代わりに拡張精度 (128 ビット) 浮動小数点形式に変換されます。
2 進数 (COMP) 項目
BINARY、COMP、および COMP-4 は同義語です。 2 進数形式の数値は、2、4、または 8 バイトのストレージを占めます。 PICTURE 文節で項目が符号付きであることが指定されている場合は、左端のビットが演算符号として使用されます。
2 進数は、付随する PICTURE 記述が 4 個以下の 10 進数字であれば 2 バイトを占め、5 個から 9 個の 10 進数字であれば 4 バイトを占め、10 個から 18 個の 10 進数字であれば 8 バイトを占めます。 9 桁以上の 2 進数項目には、コンパイラーによる余分な処理が必要となります。 それらを SIZE ERROR 条件についてテストしたり、丸めたりするのは、他のタイプに比べて非効率的です。
2 進数項目には、例えば、指標、添え字、スイッチ、および算術オペランドや結果を入れることができます。
2 進データ (BINARY、COMP、または COMP-4) の切り捨て方法を指定するには、TRUNC(STD|OPT|BIN) コンパイラー・オプションを使用してください。
固有 2 進数 (COMP-5) 項目
USAGE COMP-5 として 定義 したデータ項目は、ストレージ内でバイナリー・データとして表されます。 ただし、 USAGE
COMP 項目とは異なり、これらの項目には、 PICTURE 節内の 9の数によって暗黙に指定される値に制限されるのではなく、ネイティブ・バイナリー表現の容量 (2、4、または 8 バイト) までの大きさの値を含めることができます。
数値データを COMP-5 項目に移動または保管すると、COBOL PICTURE サイズ制限ではなく、2 進数フィールド・サイズで切り捨てが行われます。 COMP-5 項目を参照する場合、演算では完全な 2 進数フィールド・サイズが使用されます。
したがって、COMP-5 は、データが COBOL PICTURE 節に適合しない可能性のある非 COBOL プログラムから生じる 2 進データ項目の場合に特に有用です。
次の表は、COMP-5 データ項目に指定可能な値の範囲を示しています。
PICTURE |
ストレージ表記 | 数値 |
|---|---|---|
S9(1) から S9(4) |
2 進数ハーフワード (2 バイト) | -32768 から +32767 |
S9(5) から S9(9) |
2 進数フルワード (4 バイト) | -2,147,483,648 から +2,147,483,647 |
S9(10) から S9(18) |
2 進数ダブルワード (8 バイト) | -9,223,372,036,854,775,808 から +9,223,372,036,854,775,807 |
9(1) から 9(4) |
2 進数ハーフワード (2 バイト) | 0 から 65535 |
9(5) から 9(9) |
2 進数フルワード (4 バイト) | 0 から 4,294,967,295 |
9(10) から 9(18) |
2 進数ダブルワード (8 バイト) | 0 から 18,446,744,073,709,551,615 |
COMP-5 項目の PICTURE 節に、スケーリング (すなわち、小数部の桁数または暗黙の整数桁数) を指定することができます。 その場合は、上記にリストされた最大容量とほぼ同じ大きさをスケーリングする必要があります。 例えば、 PICTURE S99V99 COMP-5 として記述するデータ項目は、ストレージ内ではバイナリー・ハーフワードとして表され、 -327.68 から +327.67までの範囲の値をサポートします。
VALUE 節のラージ・リテラル: COMP-5 項目の VALUE 節に指定されたリテラルは、一部の例外を除いて、固有 2 進数表現の容量までの大きさの値を含むことができます。 例外については 、 Enterprise COBOL for z/OS® 言語リファレンスを参照してください。
TRUNC コンパイラー・オプションの設定に関係なく、COMP-5 データ項目は、TRUNC(BIN) でコンパイルされたプログラムでは、2 進データのように動作します。
パック 10 進数 (COMP-3) 項目
PACKED-DECIMAL と COMP-3 は同義語です。 パック 10 進数項目は、PICTURE 記述でコーディングされる 2 つの 10 進数字ごとに 1 バイトのストレージを占めます。ただし、右端のバイトだけが例外で、右端のバイトには 1 つの数字と符号が入ります。 この形式が最も効率的に使用されるのは、PICTURE 記述で奇数の桁をコーディングして、左端のバイトが完全に使用されるようにするときです。 パック 10 進数項目は、算術演算の目的では固定小数点数として扱われます。
内部浮動小数点 (COMP-1 および COMP-2) 項目
COMP-1 は単精度浮動小数点形式を指し、COMP-2 は長精度浮動小数点形式を指します。これらの形式は、それぞれ 4 バイトと 8 バイトのストレージを占めます。左端のビットには符号が入り、次の 7 つのビットには指数が入り、残りの 3 または 7 バイトには仮数が入ります。
COMP-1 および COMP-2 のデータ項目は、System z ® 16 進形式で保管されます。
文字データの保存
TRUNC
データの種類とクラス( Enterprise COBOL for z/OS 言語リファレンス )
SIGN 節( Enterprise COBOL for z/OS 言語リファレンス )
VALUE 節( Enterprise COBOL for z/OS 言語リファレンス )