PDA

View Full Version : WebServices *SRVPGM RPG "Variable Arrays"



Pampelmuse
28-08-08, 08:57
Hallo,

ich habe schon länger in diesem Forum gelesen und den ein oder anderen Tipp bekommen. Hierzu finde ich aber keine gescheite Lösung.


Unter meiner kryptsichen Überschrift ist folgender Sachverhalt zu verstehen.

Ich erstelle zurzeit einen WebService auf der i. Es handelt sich dabei um ein Service-Programm, das mit ILE-RPG erstellt wurde.

Das Ergebnis soll ein ARRAY sein, dessen Anzahl (DIM) ich aber variabel halten möchte.
Geht das?

Sinngemäß:
Suche in Artikelstamm

Input: Suchbegriff
Output: Datenstruktur mit Artikelnummer, Bezeichnung 1 und Bezeichnung 2.

Die Datenstruktur soll dabei nicht eine fixe Dimension haben, weil ansonsten viel unnützer Leerraum übertragen wird, wenn die Anzahl der gefundenen Sätze < der DIM ist.

Vielen Dank für Eure Hilfe.

Walter

Fuerchau
28-08-08, 09:08
Das kann ILERPG nicht, hierzu bietet sich wohl eher eine SQL-Prozedur an, die ein Array als Recordset zurückgeben kann.
Hier ist die Anzahl der Zeilen variabel angebbar.

Ein Array kann über Pointer und %alloc() auch dynamisch verwaltet werden.
Allerdings musst du die Obergrenze per Programm kennen um MCH-Fehler zu vermeiden.

KM
28-08-08, 10:44
Hallo,

mach doch aus dem RPGLE ein SQLRPGLE. Dann kannst Du folgendes einbauen:


*
* Resultset zurückgeben
*
C/EXEC SQL
C+ SET RESULT SETS ARRAY :RESULT FOR :Z ROWS
C/END-EXEC

Wobei RESULT die Datenstruktur wäre und Z die Anzahl Elemente, die Du zurückgibst. Dann registrierst Du Dein Programm noch als Stored Procedure. Diese kannst Du dann aus irgendeiner Web-Applikation (z.B. über PHP) per SQL-CALL aufrufen und erhältst im ResultSet wirklich nur die betreffende Anzahl an Elementen.

Gruß,
KM

BenderD
28-08-08, 16:40
das kommt auf die Art der Implementierung deines WebServices an; wenn du das alles zu Fuß machen willst, sprich Soap Nachricht im RPG erstellen und per HTTP APi senden, dann ja , aber das ist wohl was für Masochisten; da würde ich lieber Java lernen...

D*B


Hallo,

ich habe schon länger in diesem Forum gelesen und den ein oder anderen Tipp bekommen. Hierzu finde ich aber keine gescheite Lösung.


Unter meiner kryptsichen Überschrift ist folgender Sachverhalt zu verstehen.

Ich erstelle zurzeit einen WebService auf der i. Es handelt sich dabei um ein Service-Programm, das mit ILE-RPG erstellt wurde.

Das Ergebnis soll ein ARRAY sein, dessen Anzahl (DIM) ich aber variabel halten möchte.
Geht das?

Sinngemäß:
Suche in Artikelstamm

Input: Suchbegriff
Output: Datenstruktur mit Artikelnummer, Bezeichnung 1 und Bezeichnung 2.

Die Datenstruktur soll dabei nicht eine fixe Dimension haben, weil ansonsten viel unnützer Leerraum übertragen wird, wenn die Anzahl der gefundenen Sätze < der DIM ist.

Vielen Dank für Eure Hilfe.

Walter