convertUnsignedUnicodeNumToNumber()

この関数は、sysLib.convertUnicodeNumToNumber() の補数としての、符号なしフォーマットの COBOL 変数に対する EGL サポートを提供します。

この sysLib.convertUnsignedUnicodeNumToNumber() システム関数は、ソース変数 (符号文字以外の UNICODE 文字を含む) の数字を、数値変数に変換します。ソースの整数部分には先行ゼロを、小数部分には後続ゼロを組み込むことができます。 小数点文字は含まれません。

構文

  sysLib.convertUnsignedUnicodeNumToNumber(
    source UNICODE in,
    target SMALLINT | INT | BIGINT | DECIMAL | NUM out] )
source
数字および先行符号文字を含む UNICODE 変数。
target
任意の非浮動小数点数値変数。

エラー条件

UNICODE 変数の内容が正しいフォーマットになっていない場合、この関数は TypeConversionException をスローします。 以下のフォーマット・エラーは、例外の原因になります。
  • 任意の位置に数字以外のものがある。
  • 長さがターゲットのサイズと一致しない (先行ゼロまたは後続ゼロが必要と考えられる)。 UNICODE の数値変換に必要な長さ を参照してください。

  n1 smallInt;
  u1 unicode(4) = "1234";
  //convertUnsignedUnicodeNumToNumber(u1, n1);  
  // ==> 検証エラー.. 5 の長さが必要です

  n2 smallInt;
  u2 unicode(6) = "+01234";
  convertUnicodeNumToNumber(u2, n2);  // ==> 1234

  n3 smallInt;
  u3 unicode(5) = "01234";
  convertUnsignedUnicodeNumToNumber(u3, n3);  // ==> 1234

  n4 smallInt;
  u4 unicode(5) = "-1234";
  try
    convertUnsignedUnicodeNumToNumber(u4, n4);  
    // ==> 型変換の例外。- は小数桁ではありません
  onException(ex AnyException)
    SysLib.writeStdout(ex.message);
  end
  
  n5 int;
  u5 unicode(11) = "+0123456789";
  convertUnicodeNumToNumber(u5, n5);  // ==> 123456789

  n6 int;
  u6 unicode(10) = "0123456789";
  convertUnsignedUnicodeNumToNumber(u6, n6);  // ==> 123456789

  n7 bigInt;
  u7 unicode(20) = "-0000000001234567890";
  convertUnicodeNumToNumber(u7, n7);  // ==> -1234567890

  n8 bigInt;
  u8 unicode(19) = "0000000001234567890";
  convertUnsignedUnicodeNumToNumber(u8, n8);  // ==> 1234567890

  n9 bin(18, 9);
  u9 unicode(19) = "0000123456123400000";
  convertUnsignedUnicodeNumToNumber(u9, n9);  
  // ==> 123456.123400000

  n10 decimal(31, 4);
  u10 unicode(32) = "+1234567890123456789012345678901";
  convertUnicodeNumToNumber(u10, n10);  
  // ==> 123456789012345678901234567.8901

  n11 decimal(31, 4);
  u11 unicode(31) = "1234567890123456789012345678901";
  convertUnsignedUnicodeNumToNumber(u11, n11);  
  // ==> 123456789012345678901234567.8901

  n12 num(32, 4);  
  // ==> COBOL 環境の場合は検証エラー。
  //COBOL 環境では 32 桁の数値をサポートしていません
  u12 unicode(33) = "+01234567890123456789012345678901";
  convertUnicodeNumToNumber(u12, n12);  
  // ==> Java 環境の場合は 1234567890123456789012345678.901

  n13 num(32, 4);  // ==> COBOL 環境の場合は検証エラー。
  //COBOL 環境では 32 桁の数値をサポートしていません
  u13 unicode(32) = "012345678901234567890123456789012";
  convertUnsignedUnicodeNumToNumber(u13, n13);  
  // ==> Java 環境の場合は 1234567890123456789012345678.9012

  n14 decimal(8, 4);
  u14 unicode(9) = "01234.123";
  try
    convertUnsignedUnicodeNumToNumber(u14, n14);  
    // ==> TypeConversionException, "." 有効な数字ではありません
  onException (ex AnyException)
    SysLib.writeStdout(ex.message);
  end
  
  n15 decimal(8, 4);
  u15 unicode(9) = "01234123 ";
  try
    convertUnsignedUnicodeNumToNumber(u15, n15);  
    // ==> TypeConversionException, " " (末尾にブランク)
    //有効な数字ではありません
  onException (ex AnyException)
    SysLib.writeStdout(ex.message);
  end

互換性に関する考慮事項

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

フィードバック