PDA

View Full Version : API "QUSPTRUS" per XPCML nutzen



BAStudentin08
01-06-11, 07:53
Hallo,

ich habe folgendes Problem:

Ich möchte mit Java ein zuvor gefülltes Userspace (per QUSLOBJ gefüllt) auf der AS400 abfragen, indem ich einen Pointer setze, der die List Entries durchläuft.

Jedoch ist mir bei der Definition der XPCML zum Aufruf der API über Java nicht ganz klar, wie ich den Pointer (entsprechend der Beschreibung unter http://newsolutions.de/forum-systemi-as400-i5-iseries/newthread.php?do=newthread&f=37 ) definiere.

Meine Zeile für die Pointer-Definition sieht folgendermaßen aus:



stringParm name="pointer" passDirection="out" length="16"/>



Der Typ PTR(SPP) ist in der API-Beschreibung vorgegeben - momentan habe ich einen stringParm, doch der scheint wie die anderen bisherigen Versuche nicht zu funktionieren.
Die Fehldermeldung auf der AS400 gibt an:

Zeigerparameter befindet sich nicht auf einer 16-Byte-Grenze. Was mache ich falsch und vor allem, wie kann ich dann mit dem Befehl "QSYLOBJP" den Pointer einsetzen und eine Liste generieren?
Vielen Dank schon mal im Voraus! ;)
LG

Fuerchau
01-06-11, 08:06
Mit Java ist ein Zugriff auf Pointer generell unmöglich.
Die Art der Speicheradressierung läuft in Java über Handles und nicht über reale Adressen.

Die Java-Toolbox hat jedoch eigene Klassen zum Zugriff:
UserSpace class (http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rzahh/uspace.htm?resultof=%22%6a%61%76%61%22%20%22%75%73 %65%72%73%70%61%63%65%22%20%22%75%73%65%72%73%70%6 1%63%22%20)

Diese funktionieren auch, wenn Java auf einem Clientrechner läuft (Windows, Linix) oder als Fernzugriff auf eine andere AS/400.

BenderD
01-06-11, 08:29
... wie kommt man denn auf solche Ideen, das ist die maximale Anzahl mürber Bohlen übereinander gelegt...

D*B