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
| Plattform | Problem |
|---|---|
| JavaScript-Generierung | Die Funktion 'sysLib.convertUnicodeNumToNumber()' wird nicht unterstützt. |