[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2009
    Beiträge
    10

    Question Open List of Messages (QGYOLMSG) - Valid Field 0302

    Guten Abend!

    Ich versuche momentan mit der API Open List of Messages den Nachrichtentext aus einer bestimmten MSGQ zu lesen.

    Hierzu muss man ja die Valid Field Identifiers verwenden.

    0201 CHAR(*) Replacement data or immediate message text
    0301 CHAR(*) Message
    0302 CHAR(*) Message with replacement data
    Das auslesen von 0201 sowie 0301 funktioniert ohne Probleme.
    Allerdings erhalte ich bei 0302 recht kryptische Werte zurück.

    Im MSGF ist mein Nachrichtentext folgend definiert:
    WERT1: &1
    &1 -> *CHAR 9

    Mein Test:
    Zunächst rufe ich ein kleines Test CL PGM auf, in dem ein SNDPGMMSG mit dem MSGDTA Wert 'NEWSBOARD' ausgeführt wird.

    Nun starte ich mein RPG mit dem API Aufruf und erhalte für die einzelnen Felder folgende Werte zurück:

    0201 NEWSBOARD
    0301 WERT1: &1
    0302 WERT1: Ø 

    Hex: E6C5D9E3 F17A4000 00800000 00000038
    Hat jemand eine Idee woran es liegen könnte?

    Herzlichen Dank im voraus.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Verwendest du auch QGYGTLE zum lesen der einzelnen Sätze ?
    Zum Auslesen der Werte definierst du am Besten entsprechende Strukturen mit einem Based-Pointer. Mit der Pointer-Arithmetik kannst du dann die Basis der jeweiligen DS (je nach Typ) setzen und gezielt auswerten.

    Ohne Pointer geht das mit diesen API's nicht.
    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

  3. #3
    Registriert seit
    Sep 2009
    Beiträge
    10
    Hallo!

    Ja ich verwende QGYGTLE zum einlesen.
    Die von dir vorgeschlagene Technik mit Pointern ist bei mir momentan schon im Einsatz & funktioniert.

    Allerdings kämpfe ich leider noch immer mit dem Problem beim Valid Field Identifier 0302.

    Beim überprüfen meiner 0302 DS ist mir aufgefallen das ich mein Reserved Feld als 1 Char definiert habe, allerdings in der API Def. es als CHAR(*) definiert wurde.

    Wie realisiert Ihr sowas am besten?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    So eindeutig geht das aus der Beschreibung nicht hervor.
    Normalerweiser ist char(*) eben ein Pointer.
    In API's ist es manchmal auch ein Integer (10I 0) mit der relativen Anfangsposition, ob zum Satz oder zur Liste geht auch nicht eindeutig draus hervor.
    Ich würde beides mal probieren, entweder als "*"-Pointer oder eben als 10I 0.
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    So eindeutig geht das aus der Beschreibung nicht hervor.
    Normalerweiser ist char(*) eben ein Pointer.
    In API's ist es manchmal auch ein Integer (10I 0) mit der relativen Anfangsposition, ob zum Satz oder zur Liste geht auch nicht eindeutig draus hervor.
    Ich würde beides mal probieren, entweder als "*"-Pointer oder eben als 10I 0.
    CHAR(*) heißt in den API-Dokumentationen, dass es sich um einen alphanumerischen Parameter mit unbestimmter Länge handelt.
    Deshalb müssen solche Variablen entweder mit einer fest vorgegebenen Länge und Datentyp A definiert oder eben als Pointer übergeben werden.
    Die Übergabe über Pointer ist der Default beim Aufruf von Programmen, d.h. Schlüssel-Wort CONST oder VALUE wird immer ein Pointer auf den Parameter übergeben.
    Auf keinen Fall dürfen solche Variablen mit variabler Länge Varying definiert werden.
    Die tatsächliche Länge der Variablen muss in den meisten Fällen in einem anderen Parameter (oder Datenstruktur-Unterfeld) übergeben werden (oder wird in einem solchen entsprechend zurückgegeben).

    ... und 10I 0 ist falsch. Solche Variablen werden als BINARY(4) angegeben.

    Birgitta
    Birgitta Hauser

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

  6. #6
    Registriert seit
    Sep 2009
    Beiträge
    10
    Guten Tag!

    Herzlichen dank für eure Antworten.

    Soweit ich das verstanden habe, sollte meine Definition des Reserved Felds keine Probleme verursachen.

    Ich werd jetzt noch etwas rumtesten (die Hoffnung stirbt zuletzt )aber sollte es nicht klappen, bleibt mir wohl leider keine andere Möglichkeit übrig als mir den Messagetext inkl. Variablen manuell zusammen zu setzen.

    Sollte noch jemand Vorschläge haben: Nur her damit!

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Moin,
    vielleicht schon etwas älter, k.a. ob's hilft
    QGYOLMSG & GUI0044 - Page 2 - System iNetwork Forums

    viel Erfolg
    Robi
    Last edited by Robi; 29-03-11 at 09:50. Grund: falscher link
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn es nur darum geht, eine Nachricht zu lesen und mit Variablen zu ergänzen ist doch dieses API wesentlich einfacher:
    Retrieve Message (QMHRTVM) API
    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

  9. #9
    Registriert seit
    Sep 2009
    Beiträge
    10
    Leider deckt diese API nicht all meine Anforderungen ab.

    Dennoch herzlichen dank an alle!

    Sollte sich was neues ergeben, meld ich mich!

Similar Threads

  1. maximale Anzahl Spoolfiles pro OUTQ
    By fdh in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 01-06-10, 07:35
  2. fehlende DDS Sourcen: disassembler?
    By emax in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-10-06, 11:01
  3. externe DS als Parameter übergeben
    By psd-400 in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 07-10-04, 12:06
  4. Rechenproblem in RPG
    By jo400 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 01-06-04, 20:34
  5. Embedded SQL - Datenbankoptionen in VARPG
    By woki in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-04-04, 12:09

Berechtigungen

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