[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2003
    Beiträge
    290

    ENTRY-PLIST und PCML-Definition für REST-WebService

    Hallo zusammen,
    ich muss einen REST-Service realisieren, der u.a. ab einem vorgegeben Datum Artikelstammsätze zurückgibt.
    Habe ein SQLRPGLE erstellt, funktioniert alles wunderbar.
    Die Daten werden über eine DS mit Mehrfachvorkommen zurückgegeben.
    Leider aber immer alle Vorkommen !
    Nun wollte ich eine PCML-Definition selber erstellen, was nicht ging, weil ich ja mit einem SQLRPGLE arbeite, also habe ich einfach ein RPGLE-Pgm. "davorgeschaltet", das nichts anderes macht als das SQLRPGLE aufruft.
    Nun kann ich beim Umwandeln des RGPLE auch eine PCML-Datei in ein "eigenes" Verzeichnis erstellen, kann diese ändern u.s.w.

    Aber...
    mir gelingt es nicht diese PCML-Datei so zu "gestalten", das mir für den Ausgabeparameter (die DS mit Mehrfachvorkommen) auch das COUNT-Feld bei der Erstellung des WebService durch den Assistenten angeboten wird !
    (wollte hier einen Screenshot einfügen, aber das gelingt mir auch nicht :=(



    Ich habe einige Beispiele gefunden, aber irgendwie war keines dabei, in dem ich die Lösung gefunden hätte.

    Kann mir jemand sagen, wie ich das hinbekomme ???

    Meine ENTRY-PLIST hat 4 Felder, 2 * Input, Artikelnr. und Datum, 2 * Output, Index (4,0) und die DS mit den Feldern des Artikelstammes als Mehrfachvorkommen.

    Ich bin schon ein wenig am "verzweifeln"....

    Danke vorab !

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Versuche mal anstatt der Mehrfach-Datenstruktur (MOD mit Schlüssel-wort OCCURS) eine Array Datenstruktur (DIM) in der DS-Zeile zu definieren.
    Arbeite anstatt der *ENTRY-PLIST mit Prototyping (Procedure Interface und Prototype)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Die *ENTRY-Definition verweist grundsätzlich nur auf einfache Typen. Eine DS mit OCCURS/DIM ist dann eben nur ein Zeichenfeld entspechender Größe.
    Bei Prototyp-Definitionen können eben auch komplexerer und geschachtelte Definitionen verwendet werden.
    Wobei folgendes zu beachten ist:
    Eine "LIKE(MYDS)" erstellt wieder nur eine einfache Zeichenvariable, ein "LIKEDS(MYDS)" übernimmt auch die Strukturdefinitionen.
    Ggf. kommt daher der PCML-Generator besser damit zurecht.

    Noch was grundsätzliches zu OCCURS:
    In ILERPG macht dies nur noch wenig Sinn, da die Zugriffe hier nicht einfach per Indexvariable erfolgen kann und der Zustand jederzeit geändert sein kann. Vor dem Zugriff auf eine Occurs-Struktur sollte man sich eben sicher sein, dass die korrekte Ebene im Zugriff steht.
    Der einzige Vorteil ist, dass ein Set von Variablen mehrfach vorkommen kann. Aber bei Verwendung von "qualified" erübrigt sich das auch.
    Die besserer Alternative (und Lesbarkeit) ist eben ein DIM, dass auch auf DS-Ebene vorkommen kann.
    Wichtig ist bei der Umstellung von OCCURS auf DIM bei Prozeduraufrufen die Ausrichtung der jeweiligen Dimension auf 16-Byte-Grenze was aber mit ALIGN auf dem 1.Feld berichtigt werden kann.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    290
    Hallo Birgitta,
    vielen Dank für deine Unterstützung, was wäre die AS400-Welt ohne dich :=)

    Es funktioniert auch mit OCCUR und *ENTRY-PLIST !
    (aber auch mit DIM !)
    Die Lösung liegt in einem kleinen Häkchen während der Einrichtung des WebService durch den Assistenten !

    Im Schritt 4/9 werden die Felder des zuvor angegebenen Programms angezeigt, dort wählt man aus welche Felder Input und welche Felder Output sind.
    Über dieser Aufstellung der Felder befindet sich eine Checkbox mit der Beschriftung "Detect length fileds" !
    Diese Checkbox muss man deaktivieren und dann kommt in der Aufstellung der Felder auch die zusätzliche Spalte "Anzahl", in der ich dann bei dem Feld für die OCCUR-DS auch das zugehörige Feld mit der Anzahl der "verwendeten" DS auswählen kann !
    (leider kriege ich es leider nicht hin, hier einen Screenshot einzufügen)

    Nochmals vielen Dank für deine Unterstützung !

  5. #5
    Registriert seit
    Jan 2003
    Beiträge
    290
    Hallo Fuerchau,
    deine Infos sind leider nur "halb" richtig, die DS mit OCCUR wird nicht als einfaches Zeichenfeld erkannt.
    Denn die OCCUR-DS wurde von Anfang an als "struct" erkannt, das war nicht das Problem.

Similar Threads

  1. REST Webservice aus SRVPGM Error 404
    By Malte in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 11-11-16, 13:18
  2. Webservice REST, mehrere Datensätze zurückgeben
    By Peet in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-09-16, 10:26
  3. PList, Parm und Call in Free.
    By Wavum in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 14-07-16, 11:52
  4. PCML
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-02-15, 21:13
  5. *ENTRY PLIST versus dcl-pi
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 25-06-14, 16:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •