Stoeberl
09-01-07, 10:12
Hallo zusammen!
Ich habe ein Problem mit einem Java-Methoden Aufruf aus ILE RPG. Habe dazu auch schon ein Posting in der Newsgroup comp.sys.ibm.as400.misc verfasst (Problem with Java calls from ILE RPG?), aber leider noch ohne Lösung.
Ich habe ein Programm das verschiedene Java Methoden aus RPG aufruft. Um alle Zeichen verarbeiten zu können arbeite ich intern mit UCS2 und übergebe auch an Java UCS2 Felder (Konvertierung erfolgt von Job-CCSID nach UCS2). Das Programm funktioniert unter V5R3M0 und SBCS ohne Probleme für verschiedene Codepages. Mit V5R3M0 und DBCS stürzt das Programm unter bestimmten Konstellationen ab. Das RPG Programm wird von einem CL-Programm aufgerufen, das vorher noch ein paar Umgebungsvariablen für Java setzt. Unter Simplified Chinese (Codepage 935 od. 1388) kann ich das Absturz-Problem beheben wenn ich im CL einen DLYJOB DLY(5) absetze und dann das RPG-Programm nochmals aufrufe. Unter Japanisch (Codpage 930 bzw. 5026) hilft das allerdings nicht. Hier bekomme ich immer den Fehler:
MESSAGE ID . . . . . . : RNX0451
DATE SENT . . . . . . : 22/12/06 TIME SENT . . . . . . : 23:19:13
MESSAGE . . . . : CONVERSION BETWEEN CCSID(5026) AND CCSID(-11) IS NOT
SUPPORTED.
CAUSE . . . . . : IN RPG PROCEDURE TESTJAVA IN PROGRAM TEST/TESTJAVA, A
CONVERSION IS BEING DONE WHICH REQUIRES CONVERSION FROM CCSID(5026) TO
CCSID(-11), BUT THIS CONVERSION IS NOT SUPPORTED.
RECOVERY . . . : USE COMMAND DSPJOB TO FIND THE CCSID OF YOUR JOB, THEN
CONTACT THE PERSON RESPONSIBLE FOR PROGRAM MAINTENANCE TO DETERMINE THE
CAUSE OF THE PROBLEM.
TECHNICAL DESCRIPTION . . . . . . . . : FOR CONVERSION BETWEEN CHARACTER
VALUES AND GRAPHIC VALUES, THE CHARACTER VALUE IS ASSUMED TO BE IN THE
GRAPHIC CCSID RELATED TO THE JOB CCSID. FOR CONVERSION BETWEEN GRAPHIC
LITERALS AND GRAPHIC FIELDS, THE CCSID OF THE LITERAL IS ASSUMED TO BE THE
GRAPHIC CCSID RELATED TO THE JOB CCSID.
An dieser Stelle wird ein UCS2 Feld an den Konstruktor von java.lang.String übergeben. Nehme ich statt der Codepage 930 bzw. 5026 die Codepage 939 bzw. 5035 funktioniert das Programm (tritt der Fehler in der chinesischen Umgebung auf wird der gleiche Fehler angezeigt, aber mit CCSID(5035) und CCSID(-10)). Der wesentliche Unterschied bei diesen beiden Codepages ist, das bei 930 keine kleinen lateinischen Buchstaben unterstützt werden. Nach einem Update der Maschine auf V5R4M0 hat sich zumindest das Problem in der chinesischen Umgebung von alleine gelöst, das Problem in der japanischen Umgebung bleibt.
Aus der Newsgroup habe ich den Hinweis, das die negativen CCSID Werte zustande kommen da die CCSID als Unsigned Short Int gespeichert wird, ein Datentyp der von Java nicht unterstützt wird. Daher entspreche -11 = 65525 und -10 = 65526. Ein Anfrage bei der IBM zu diesem Thema blieb bis jetzt unbeantwortet.
Hat jemand schon ein ähnliches Problem gehabt bzw. ist jemanden bekannt das Java-Methoden Aufrufe aus ILE RPG in Zusammenspiel mit der CCSID 930 bzw. 5026 generell nicht funktionieren?
MfG
Martin Stöberl
Ich habe ein Problem mit einem Java-Methoden Aufruf aus ILE RPG. Habe dazu auch schon ein Posting in der Newsgroup comp.sys.ibm.as400.misc verfasst (Problem with Java calls from ILE RPG?), aber leider noch ohne Lösung.
Ich habe ein Programm das verschiedene Java Methoden aus RPG aufruft. Um alle Zeichen verarbeiten zu können arbeite ich intern mit UCS2 und übergebe auch an Java UCS2 Felder (Konvertierung erfolgt von Job-CCSID nach UCS2). Das Programm funktioniert unter V5R3M0 und SBCS ohne Probleme für verschiedene Codepages. Mit V5R3M0 und DBCS stürzt das Programm unter bestimmten Konstellationen ab. Das RPG Programm wird von einem CL-Programm aufgerufen, das vorher noch ein paar Umgebungsvariablen für Java setzt. Unter Simplified Chinese (Codepage 935 od. 1388) kann ich das Absturz-Problem beheben wenn ich im CL einen DLYJOB DLY(5) absetze und dann das RPG-Programm nochmals aufrufe. Unter Japanisch (Codpage 930 bzw. 5026) hilft das allerdings nicht. Hier bekomme ich immer den Fehler:
MESSAGE ID . . . . . . : RNX0451
DATE SENT . . . . . . : 22/12/06 TIME SENT . . . . . . : 23:19:13
MESSAGE . . . . : CONVERSION BETWEEN CCSID(5026) AND CCSID(-11) IS NOT
SUPPORTED.
CAUSE . . . . . : IN RPG PROCEDURE TESTJAVA IN PROGRAM TEST/TESTJAVA, A
CONVERSION IS BEING DONE WHICH REQUIRES CONVERSION FROM CCSID(5026) TO
CCSID(-11), BUT THIS CONVERSION IS NOT SUPPORTED.
RECOVERY . . . : USE COMMAND DSPJOB TO FIND THE CCSID OF YOUR JOB, THEN
CONTACT THE PERSON RESPONSIBLE FOR PROGRAM MAINTENANCE TO DETERMINE THE
CAUSE OF THE PROBLEM.
TECHNICAL DESCRIPTION . . . . . . . . : FOR CONVERSION BETWEEN CHARACTER
VALUES AND GRAPHIC VALUES, THE CHARACTER VALUE IS ASSUMED TO BE IN THE
GRAPHIC CCSID RELATED TO THE JOB CCSID. FOR CONVERSION BETWEEN GRAPHIC
LITERALS AND GRAPHIC FIELDS, THE CCSID OF THE LITERAL IS ASSUMED TO BE THE
GRAPHIC CCSID RELATED TO THE JOB CCSID.
An dieser Stelle wird ein UCS2 Feld an den Konstruktor von java.lang.String übergeben. Nehme ich statt der Codepage 930 bzw. 5026 die Codepage 939 bzw. 5035 funktioniert das Programm (tritt der Fehler in der chinesischen Umgebung auf wird der gleiche Fehler angezeigt, aber mit CCSID(5035) und CCSID(-10)). Der wesentliche Unterschied bei diesen beiden Codepages ist, das bei 930 keine kleinen lateinischen Buchstaben unterstützt werden. Nach einem Update der Maschine auf V5R4M0 hat sich zumindest das Problem in der chinesischen Umgebung von alleine gelöst, das Problem in der japanischen Umgebung bleibt.
Aus der Newsgroup habe ich den Hinweis, das die negativen CCSID Werte zustande kommen da die CCSID als Unsigned Short Int gespeichert wird, ein Datentyp der von Java nicht unterstützt wird. Daher entspreche -11 = 65525 und -10 = 65526. Ein Anfrage bei der IBM zu diesem Thema blieb bis jetzt unbeantwortet.
Hat jemand schon ein ähnliches Problem gehabt bzw. ist jemanden bekannt das Java-Methoden Aufrufe aus ILE RPG in Zusammenspiel mit der CCSID 930 bzw. 5026 generell nicht funktionieren?
MfG
Martin Stöberl