convertUnicodeNumToNumber()

Die Funktion 'sysLib.convertUnicodeNumToNumber()' bietet EGL-Unterstützung für COBOL-Variablen im Format NATIONAL SIGN IS LEADING, SEPARATE.

Variablen in diesem Format enthalten UNICODE-Zeichen (NATIONAL) mit einem Vorzeichen. Beispiel:
15  UNICODENUMBER PIC S9(11)V9(04) USAGE NATIONAL SIGN IS LEADING, SEPARATE.

Die Systemfunktion 'sysLib.convertUnicodeNumToNumber()' konvertiert die Ziffern einer Quellenvariablen, die UNICODE-Zeichen mit vorangestelltem UNICODE-Vorzeichen enthält, in eine numerische Variable. Die Quelle kann führende Nullen für den ganzzahligen Teil und nachfolgende Nullen für den Bruchteil enthalten.

Syntax

  sysLib.convertUnicodeNumToNumber(
    Quelle UNICODE in,
    Ziel SMALLINT | INT | BIGINT | DECIMAL out] )
Quelle
Eine UNICODE-Variable, die Ziffern und ein Vorzeichen enthält.
Ziel
Eine beliebige numerische Variable mit Ausnahme von Gleitkommavariablen.

Fehlerbedingungen

Wenn der Inhalt der UNICODE-Variablen nicht im ordnungsgemäßen Format vorliegt, löst die Funktion eine Ausnahmebedingung vom Typ 'TypeConversionException' aus. Diese Ausnahmebedingung wird von folgenden Formatfehlern ausgelöst:
  • An der ersten Position befindet sich kein Vorzeichen.
  • Mit Ausnahme der ersten Position befindet sich an einer beliebigen Position ein Zeichen, das keine Ziffer ist.
  • Die Länge entspricht nicht der Zielgröße (unter Umständen sind führende oder nachfolgende Nullen erforderlich). Siehe Erforderliche Längen für UNICODE-Zahlenkonvertierungen.

Beispiele

  n SMALLINT;
  u UNICODE(4) = "1234";
  // Funktion empfängt Gültigkeitsfehler   
  // 'u' muss eine Länge von 6 haben
  convertUnicodeNumToNumber(u, n); 

  n BIGINT;
  u UNICODE(20) = "-0000000001234567890";
  // Funktion setzt 'n' auf -1234567890
  convertUnicodeNumToNumber(u, n);

  n DECIMAL(31,4);
  u UNICODE(32) = "+1234567890123456789012345678901";
  // Funktion setzt 'n' auf 123456789012345678901234567.8901
  convertUnicodeNumToNumber(u, n);

  // Nächste Zeile empfängt Gültigkeitsfehler für COBOL
  // Variablen vom Typ NUM sind bei COBOL auf eine Länge von 31 beschränkt
  n NUM(32,4);
  u UNICODE(33) = "+012345678901234567890123456789012";
  // Bei Java setzt die Funktion 'n' auf
  // 1234567890123456789012345678.9012
  convertUnicodeNumToNumber(u, n);

  n DECIMAL(8,4);
  u UNICODE(10) = "0123456789";
  // Funktion löst 'TypeConversionException' aus
  // "0" ist kein gültiges Vorzeichen
  convertUnicodeNumToNumber(u, n);

Hinweise zur Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität
Plattform Problem
JavaScript-Generierung Die Funktion 'sysLib.convertUnicodeNumToNumber()' wird nicht unterstützt.

Feedback