15 UNICODENUMBER PIC S9(11)V9(04) USAGE NATIONAL SIGN IS LEADING, SEPARATE.
sysLib.convertNumberToUnicodeNum() システム関数は、ソース数値の数字を、先頭に UNICODE 符号文字を持つ UNICODE 文字に変換します。先行ゼロは整数部分に組み込まれ、後続ゼロは小数部分に組み込まれます。小数点文字は組み込まれません。
sysLib.convertNumberToUnicodeNum(
source SMALLINT | INT | BIGINT | DECIMAL in,
target UNICODE out] )
UNICODE 変数に必要な長さは、数値フィールドのデータ型の指定、および変換が符号付きか符号なしかによって決まります。 必要な長さを使用しているか、検証が行われます。 NUM および DECIMAL の場合、符号付き変換の実行時には、奇数の長さおよび偶数の長さの両方が次に大きい偶数の長さに切り上げられることに注意してください。 このように、NUM(10) または NUM(11) 変数の符号付き UNICODE 変数への変換には、UNICODE(12) 変数が必要です。
| 数値データ型 | UNICODE 数値の長さ (符号付き変換) | UNICODE 数値の長さ (符号なし変換) |
|---|---|---|
| SMALLINT、BIN(4,x) | 6 | 5 |
| INT、BIN(9,x) | 11 | 10 |
| BIGINT、BIN(18,x) | 20 | 19 |
| NUM(x, y) または DECIMAL(x, y)、ここで x は 1 から 31 までの奇数 | x+1 | x |
| NUM(x, y) または DECIMAL(x, y)、ここで x は 0 から 30 までの偶数 | x+2 | x+1 |
| NUM(32,y)、DECIMAL(32,y) | 33 | 32 |
n SMALLINT = 1234;
u UNICODE(4);
// 関数で検証エラーが発生
// u に長さ 6 が必要です
convertNumberToUnicodeNum(n, u);
n SMALLINT = 1234;
u UNICODE(6);
// 関数が u を「+001234」に設定します
convertNumberToUnicodeNum(n, u);
n INT = 123456789;
u UNICODE(11);
// 関数が u を
// 「+0123456789」に設定します
convertNumberToUnicodeNum(n, u);
n BIGINT = -1234567890;
u UNICODE(20);
// 関数が u を
// 「-0000000001234567890」に設定します
convertNumberToUnicodeNum(n, u);
n BIN(18, 9) = -123456.1234;
u UNICODE(20);
// 関数が u を
// 「-0000123456123400000」に設定します
convertNumberToUnicodeNum(n, u);
n DECIMAL(31, 4) = 123456789012345678901234567.8901;
u UNICODE(32);
// 関数が u を
// 「+1234567890123456789012345678901」に設定します
convertNumberToUnicodeNum(n, u);
// 次の行で COBOL の検証エラーが発生
// NUM 変数は COBOL の場合 31 の長さに制限
n NUM(32, 4) = 1234567890123456789012345678.9012;
u UNICODE(33);
// Java の場合、関数が u を
// 「+012345678901234567890123456789012」に設定します
convertNumberToUnicodeNum(n, u);
| プラットフォーム | 問題 |
|---|---|
| JavaScript 生成 | 関数 sysLib.convertNumberToUnicodeNum() はサポートされていません。 |