convertNumberToUnicodeNum()

この関数は、NATIONAL SIGN IS LEADING, SEPARATE フォーマットの COBOL 変数に対する EGL サポートを提供します。 これらの変数は、以下のような、先頭に符号文字を持つ UNICODE 文字 (NATIONAL) を含んだ変数です。
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] )
source
任意の非浮動小数点数値変数。
target
UNICODE 変数。

UNICODE の数値変換に必要な長さ

UNICODE 変数に必要な長さは、数値フィールドのデータ型の指定、および変換が符号付きか符号なしかによって決まります。 必要な長さを使用しているか、検証が行われます。 NUM および DECIMAL の場合、符号付き変換の実行時には、奇数の長さおよび偶数の長さの両方が次に大きい偶数の長さに切り上げられることに注意してください。 このように、NUM(10) または NUM(11) 変数の符号付き UNICODE 変数への変換には、UNICODE(12) 変数が必要です。

表 1. 各数値型に必要な UNICODE 変数の長さ
数値データ型 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);

互換性に関する考慮事項

表 2. 互換性に関する考慮事項
プラットフォーム 問題
JavaScript 生成 関数 sysLib.convertNumberToUnicodeNum() はサポートされていません。

フィードバック