数値データ項目を、変換元データ型で指定された形式の数値データから、変換先データ型で指定された形式の数値データへ変換します。同一数値データ型の形式/符号にのみ変換が可能です。異なる数値データ型への変換はできません。
変換可能な数値データ型を“表1.1 変換可能な数値データ型”に示します。
数値データ型 | 形式/符号 | 長さ(バイト) | 精度/位取り | 備考 |
---|---|---|---|---|
外部10進数 | 符号なし | 1~18 | 精度(注1) ( p [, q] ) p:桁数 (1~18) q:位取り (0~18) 省略時は0 p≧q | 符号なし、 LEADING、TRAILING、 LEADING SEPARATE、TRAILING SEPARATEの相互変換が可能(注2) 符号なしは正値として扱う |
LEADING | ||||
TRAILING | ||||
LEADING SEPARATE | (1~18)+1 | |||
TRAILING SEPARATE | ||||
内部10進数 | 符号なし 符号つき | 1~10 | 符号なし、符号ありの相互変換が可能(注2) 符号なしは正値として扱う | |
整数(注3) | 符号つき | 1,2,4,8 | 固定小数点 | 変換元/変換先で精度の 異なる変換は不可 |
内部浮動小数点 | M形式 | 4 | 単精度 | |
8 | 倍精度 | |||
IEEE形式 | 4 | 単精度 | ||
8 | 倍精度 |
注1)位取りの指定はできません。
注2)変換先の長さは変換元の精度と変換先の符号形式から決まる長さです。
注3)整数にはバイト順序の違いによりビックエンディアン/リトルエンディアンの二種類があります。
外部10進数のデータ形式の変換例を“表1.2 外部10進数のデータ形式”に示します。
Windows/UNIX系サーバ の数値データをグローバルサーバの数値データに変換する場合、符号値は代表符号値(網がけのしてある符号値)へ変換されます。
外部10進数のデータ形式 | 符号の表現 | サーバ種別 | グローバルサーバ | サーバ種別 | UNIXサーバ、 | ||
---|---|---|---|---|---|---|---|
符号値 | 例)‘123’ | 符号値 | 例)‘123’ | ||||
符号なし | 符号は表現しない | - | ‘F1F2F3’X | - | ‘313233’X | ||
LEADING | 先頭桁の先頭4ビットで符号を表現 | 正 | C | ‘C1F2F3’X | 正 | 4 | ‘413233’X |
A | ‘A1F2F3’X | ||||||
E | ‘E1F2F3’X | ||||||
負 | D | ‘D1F2F3’X | 負 | 5 | ‘513233’X | ||
B | ‘B1F2F3’X | ||||||
TRAILING | 最終桁の先頭4ビットで符号を表現 | 正 | C | ‘F1F2C3’X | 正 | 4 | ‘313243’X |
A | ‘F1F2A3’X | ||||||
E | ‘F1F2E3’X | ||||||
負 | D | ‘F1F2D3’X | 負 | 5 | ‘313253’X | ||
B | ‘F1F2B3’X | ||||||
LEADING SEPARATE | 先頭桁の直前1バイトで符号文字(+/-)を表現 | 正 | 4E | ‘4EF1F2F3’X | 正 | 2B | ‘2B313233’X |
負 | 60 | ‘60F1F2F3’X | 負 | 2D | ‘2D313233’X | ||
TRAILING SEPARATE | 最終桁の 直後1バイトで符号文字(+/-)を表現 | 正 | 4E | ‘F1F2F34E’X | 正 | 2B | ‘3132332B’X |
負 | 60 | ‘F1F2F360’X | 負 | 2D | ‘3132332D’X |
備考)表中の数値は16進表現です。
なお、変換元の外部10進数の符号部および数字部が不正の場合、エラーとなります。
内部10進数のデータ形式の変換例を“表1.3 内部10進数のデータ形式”に示します。
Windows/UNIX系サーバの数値データをグローバルサーバの数値データに変換する場合、符号値は代表符号値(網がけのしてある符号値)へ変換されます。
内部10進数のデータ形式 | 符号の表現 | サーバ種別 | グローバルサーバ | サーバ種別 | UNIXサーバ、 | ||
---|---|---|---|---|---|---|---|
符号値 | 例)‘123’ | 符号値 | 例)‘123’ | ||||
符号なし (絶対値) | 最終4ビットで符号なしを表現 | 無 | F | ‘123F’X | 無 | F | ‘123F’X |
符号あり | 最終4ビットで符号を表現 | 正 | C | ‘123C’X | 正 | C | ‘123C’X |
A | ‘123A’X | ||||||
E | ‘123E’X | ||||||
負 | D | ‘123D’X | 負 | D | ‘123D’X | ||
B | ‘123B’X |
備考)表中の数値は16進表現です。
なお、変換元の内部10進数の符号部および数字部が不正の場合、エラーとなります。
また、数値0が格納されている場合は、符号なし/符号ありにかかわらず、符号値を'0'としてください。
整数
整数にはバイト順序の違いによりビッグエンディアン/リトルエンディアンの二種類があります。変換時にバイト順序(ビッグエンディアン/リトルエンディアン)を指定できます。
ビッグエンディアン/リトルエンディアンの例を“表1.4 ビッグエンディアン/リトルエンディアン”に示します。
バイト順序 | 例) '12345678'X の場合 |
---|---|
ビッグエンディアン | '12345678'X |
リトルエンディアン | '78563412'X |
備考.整数は最上位ビットが符号(0=正、1=負)を現します。
負の値は2の補数で表現されます。
浮動小数点の形式にはM形式とIEEE形式があり、IEEE形式にはバイト順序の違いによりビッグエンディアン/リトルエンディアンの二種類があります。
変換時に形式とバイト順序を指定できます。
浮動小数点のデータ形式の例を“表1.5 浮動小数点のデータ形式”に示します。
浮動小数点の形式 | 例)単精度の場合 |
---|---|
M形式 | '433E8000'X |
IEEE形式(ビッグエンディアン) | '447A0000'X |
IEEE形式(リトルエンディアン) | '00007A44'X |
備考.浮動小数点形式の概要は以下のとおり。
M形式は、グローバルサーバ上の浮動小数点の形式です。
M形式の浮動小数点の形式を“図1.2 M形式の浮動小数点の形式”に示します。
s:符号部(0=正、1=負)
e:指数部(16e-64)
f:仮数部(単精度で16進数6桁、倍精度で16進数14桁)
IEEE形式(ビッグエンディアン)の浮動小数点の形式を“図1.3 IEEE形式(ビッグエンディアン)の浮動小数点の形式”に示します。
s:符号部(0=正、1=負)
e:指数部(2e-127)
f:仮数部(23ビットの2進固定小数実数)
s:符号部(0=正、1=負)
e:指数部(2e-1023)
f:仮数部(52ビットの2進固定小数実数)
備考)IEEE形式のリトルエンディアンはビッグエンディアンのバイト順序が逆転した形式です。
M形式、IEEE形式それぞれの浮動小数点の表現形式の違いから、変換結果の数値に精度誤差が生じることがあります(備考:仮数部の3ビットの範囲でビット損失)。
変換元の浮動小数点の形式が不正(非数値データ)の場合、また変換時に指数部の表現形式(桁数の有効範囲)の違いによるオーバーフロー/アンダーフローとなる場合、エラーとなります。