convertUnsignedUnicodeNumToNumber()
Diese Funktion bietet EGL-Unterstützung für COBOL-Variablen im Format ohne Vorzeichen als Komplementärfunktion zu 'sysLib.convertUnicodeNumToNumber()'.
Die Systemfunktion 'sysLib.convertUnsignedUnicodeNumToNumber()' konvertiert die Ziffern einer Quellenvariablen (mit UNICODE-Zeichen ohne Vorzeichen) in eine numerische Variable. Die Quelle kann führende Nullen für den ganzzahligen Teil und nachfolgende Nullen für den Bruchteil enthalten. Es sind keine Dezimalzeichen eingeschlossen.
Syntax
sysLib.convertUnsignedUnicodeNumToNumber(
Quelle UNICODE in,
Ziel SMALLINT | INT | BIGINT | DECIMAL | NUM out] )
- Quelle
- Eine UNICODE-Variable, die Ziffern und kein 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 einer beliebigen Position befindet sich 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
n1 smallInt;
u1 unicode(4) = "1234";
//convertUnsignedUnicodeNumToNumber(u1, n1);
// ==>Gültigkeitsfehler.. 'u' muss eine Länge von 5 haben
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);
// ==> Ausnahmebedingung für Typenkonvertierung, - ist keine Dezimalstelle
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);
// ==> Gültigkeitsfehler für COBOL-Umgebungen,
//die keine 32-stelligen Zahlen unterstützen
u12 unicode(33) = "+01234567890123456789012345678901";
convertUnicodeNumToNumber(u12, n12);
// ==> 1234567890123456789012345678.901 für Java-Umgebungen
n13 num(32, 4); // ==> Gültigkeitsfehler für COBOL-Umgebungen,
//die keine 32-stelligen Zahlen unterstützen
u13 unicode(32) = "012345678901234567890123456789012";
convertUnsignedUnicodeNumToNumber(u13, n13);
// ==> 1234567890123456789012345678.9012 für Java-Umgebungen
n14 decimal(8, 4);
u14 unicode(9) = "01234.123";
try
convertUnsignedUnicodeNumToNumber(u14, n14);
// ==> TypeConversionException, "." ist kein gültiges numerisches Zeichen
onException (ex AnyException)
SysLib.writeStdout(ex.message);
end
n15 decimal(8, 4);
u15 unicode(9) = "01234123 ";
try
convertUnsignedUnicodeNumToNumber(u15, n15);
// ==> TypeConversionException, " " (Leerzeichen am Ende)
//ist kein gültiges numerisches Zeichen
onException (ex AnyException)
SysLib.writeStdout(ex.message);
end
Hinweise zur Kompatibilität
| Plattform | Problem |
|---|---|
| JavaScript-Generierung | Die Funktion 'sysLib.convertUnsignedUnicodeNumToNumber()' wird nicht unterstützt. |