PDA

View Full Version : Benutzen der API



Charmy
04-03-09, 14:25
Hallo,

ich habe noch relativ wenig Erfahrung mit der ISeries, und habe vor einigen Tagen mein erstes kleineres Projekt gestartet. Ich soll ein Java Tool schreiben das eine savefile auf die Iseries hochläd, und diese auch automatisch entpackt.

Das hochladen der Savefiler und das erzeugen eines SaveFile Containers auf der Iseries habe ichs chon realisiert, ist ja auch nicht wirklich schwer über die FTP commands.

Nun muss ich aber den Library Namen der Save File + ob es sich um ein RSTOBJ oder RSTLIB herausfinden. Nach langer suche habe ich herausgefunden das es sich nur realisieren lässt wenn ich die API benutze, und zwar genau die funktion QSRLSAVF . Aber wenn ich diese Funktion benutzen möchte muss ich vorher ein QUSCRTUS aufrufen oder?

Also ich habe nicht wirklich eine Vorstellung wie ich an die Daten herankommen kann. Währe dankbar für jede Hilfe.

Grüße,
Charmy

kuempi von stein
04-03-09, 15:49
Ich fange mal als erster an.

:-)

QUSCRTUS ist ja nur der Anfang der Kette. Damit erstellst Du ein Userspace wo die Daten aus QSRLSAVF gesammelt werden.
Den Userspace muss man dann auslesen und so weiter und so weiter.
Fängt man mit einem API an, hat man hinterher immer mehrere in der Mache.
Ein Beispiel für eine komplexe Anwendung mal hier als Beispiel:
Think400 - iSeries (AS/400) API interfaces (http://www.think400.dk/apier_6.htm#eks0009)

Aber um die Sache mal abzukürzen, weshalb ich mich einmische.
Wofür brauchst Du die Info ob SAVLIB oder SAVOBJ?
Für den Restore...
jo klar.
Und wenn Du ein CL hast, welches auf einen Fehler kommt weil RSTLIB nicht geht? Dann fängt man den Fehler ab und versucht ein RSTOBJ!
[Ja, ich weiß, da kräuseln sich die Nackenhaare, ist aber genauso wie wenn da mehrere Libs gesichert wurden und/oder noch Objekte hintendran und das dann alles in der SAVEFILE drin wäre. Geht das überhaupt?]

Ansonsten hilft wohl nur eine Vertiefung in o.a. Beispiel, ich finde gerade auf die Schnelle nix anderes, sry.
Aber so wie ich das Forum hier kenne, trudeln die qualitativ hochwertigen Diskussionen bestimmt bald ein.

kuempi

Charmy
04-03-09, 16:13
Hi kuempi,

danke für deine schnelle Antwort, die Idee mit dem RSTLIB und RSTOBJ den fehler einfach abzufangen und das andere auszuführen hatte ich auch schon. Das soll ich aber so nicht machen :rolleyes:...

Und auch wenn bleibt immer noch das Problem da ich den Namen der Lib noch nicht kenne, denn das Savefile kann ja einen ganz anderen Namen besitzen. Und ich muss vorher die neue Lib. ja noch erstellen. etc...

Also für ein einfaches Beispiel wie ich die Funktion der API QUSCRTUS in einem CL oder RPGLE Programm ausführe währe ich echt dankbar, und es würde mich sehr weit vorwärts bringen :)

Btw. Muss man den Userspace nur einmal erstellen? Bleibt dieser erhalten?

Frank.Sobanek
04-03-09, 16:24
[QUOTE=Charmy;61550]Hi kuempi,

danke für deine schnelle Antwort, die Idee mit dem RSTLIB und RSTOBJ den fehler einfach abzufangen und das andere auszuführen hatte ich auch schon. Das soll ich aber so nicht



Habe ich bei mir mal so gelöst:

DSPSAVF FILE(XYZ) OUTPUT(*PRINT)
CPYSPLF FILE(XXXYYY) TOFILE(DATEI)

Dann die Datei auslesen.


Gruß

Charmy
04-03-09, 16:31
wenn ich z.B

DSPSAVF FILE(TESTLIB/TEST) OUTPUT(*PRINT)

ausführe wo wird die SPLF dann gespeichert bzw. unter welchem Namen?

Frank.Sobanek
04-03-09, 16:40
wenn ich z.B

DSPSAVF FILE(TESTLIB/TEST) OUTPUT(*PRINT)

ausführe wo wird die SPLF dann gespeichert bzw. unter welchem Namen?


Hi,
CPYSPLF FILE(QPSRODSP) TOFILE(XXXYYY) SPLNBR(*LAST)

Gruß

Frank.Sobanek
04-03-09, 16:50
wenn ich z.B

DSPSAVF FILE(TESTLIB/TEST) OUTPUT(*PRINT)

ausführe wo wird die SPLF dann gespeichert bzw. unter welchem Namen?


So müsste es gehen !


DLTF FILE(&XYZ/XYZ)
MONMSG MSGID(CPF2105)
CRTPF FILE(&XYZ/XYZ) RCDLEN(132)
DSPSAVF FILE(XYZ/XYZ) OUTPUT(*PRINT)
CPYSPLF FILE(QPDSPAJB) TOFILE(&XYZ/XYZ) CRTDATE(*LAST)

CRTDATE = Last ist glaube ich besser !

Gruß

Charmy
04-03-09, 16:54
yo funktioniert, das file wird erzeugt mit allen infos die ich brauch :)

Nun muss ich da nur noch dran kommen...und die Daten in meinem Java Code auswerten.

Kann ich einen Teil dieser Datei mit einem einfachen SQL statement abfragen?

Oder muss ich wohl oder übel mir die ganze Datei ziehen, und diese dann auseinander pflücken?

Fuerchau
04-03-09, 18:48
Da du doch mit Java arbeitest, nimm die Java-Toolbox (jt400.zip) der As400 und die dort vorhandene SaveFile.class.
Ich denke, da hast du alles was du brauchst.

Charmy
05-03-09, 08:23
Ok das funktioniert , danke :D