[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2007
    Beiträge
    2

    data.getField("PART_NAME") read Dtaq

    Hallo
    Kann jemand einem Anfänger helfen?

    Habe ein Muster-PGM versucht nachzubauen welches ab eine DTAQ Werte einlesen soll. Der Zugriff auf die DTAQ funktioniert. Jedoch ergibt mir data.getField("PART_NAME") einen Fehler.

    Ausgabe in Konsole:
    com.ibm.as400.access.ExtendedIllegalArgumentExepti on: name (PART_NAME): Field was not found.


    Source:
    import java.io.*;
    import java.util.*;
    import java.net.*;
    import com.ibm.as400.access.*;
    public class READ_DTAQ {

    public static void main(String args)
    {
    System.out.println( " " );
    {
    try
    {
    AS400 as400 = new AS400("VBZAS400" );
    CharacterFieldDescription partname =
    new CharacterFieldDescription(new AS400Text(80, as400), "Part_Name");
    RecordFormat dataFormat = new RecordFormat();
    dataFormat.addFieldDescription(partname);
    DataQueue dq = new DataQueue(as400, "/QSYS.LIB/TLSTUD.LIB/STUD_DQ.DTAQ");
    boolean Continue = true;
    System.out.println("*** Waiting for an entry for process ***");
    DataQueueEntry DQData = dq.read(-1);
    while (Continue)
    {
    Record data = dataFormat.getNewRecord(DQData.getData());
    System.out.print((String) data.getField("PART_NAME") );
    DQData = dq.read(-1);
    }
    }
    catch (Exception e)
    {
    System.out.println("Data Queue operation failed");
    System.out.println(e);
    }
    }
    System.exit(0);
    }
    }

  2. #2
    Registriert seit
    Oct 2004
    Beiträge
    251
    Hallo

    1.) Ich tippe auf die Groß- und Kleinschreibung "Part_Name" vs. "PART_NAME"

    2.) Wenn du keine RPG/Cobol Strukturen mit gepackten Feldern verarbeiten musst, sondern nur Stringdaten, dann verzichte lieber auf die Records.

    Die Record's sind recht genau - wenn du einen langen String hast und ein Programm den zu kurz sendet, gibt es eine Exception..


    Hier die String Variante:
    Code:
    DQData = dq.read(-1);
    ...
    // DataQueue-Eintrag holen
    String entry = DQData.getString();
    In der Variable entry ist jetzt der gesamte Eintrag. Das Zeugs mit RecordFormat, CharacterFieldDescription und dataFormat.addField... kannst du dir dann sparen.

    BTW: Ab V5R4 gibt es im Cobol die Möglichkeit Datenstrukturen als XML-Auszugeben (als langer String oder in das IFS). Auf der Javaseite kann ich mit Libs wie XStream die XML-Datei in einen Javabean mappen lassen.

    Damit habe ich:
    - weder Arbeit mit XML schreiben noch lesen/parsen
    - im Gegensatz zu einer Struktur/Recordlösung kratzen mich (und die Folgefelder) Längenänderung/neue Felder überhaupt nicht

    Das RPG so elegant XML schreiben kann, wird wohl noch ein Release brauchen..

    /Robert

  3. #3
    Registriert seit
    Jul 2007
    Beiträge
    2
    Danke Robert
    Die Schreibweise muss überall gleich sein, obwohl es im IBM-Manual auch so ist.
    Jetzt funktioniert es.
    Gruss Karl

  4. #4
    Registriert seit
    Oct 2004
    Beiträge
    251
    Zitat Zitat von karl_schweiz Beitrag anzeigen
    ... obwohl es im IBM-Manual auch so ist....
    Mir auch schon falscher Samplecode in der IBM Doku untergekommen. Das ist - gerade als Anfänger - recht ärgerlich.
    (jetzt kosten mich solche Sachen nur ein lächeln)

    /Robert

Similar Threads

  1. DTAQ Attribute auslesen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 28-11-06, 05:48
  2. Zugriff auf Serielle Schnittstelle aus RPG/VARPG
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 25-11-05, 07:37
  3. Antworten: 2
    Letzter Beitrag: 22-09-04, 19:03
  4. ASP in DTAQ?
    By DEVJO in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-08-04, 09:34
  5. VA RPG Read anweisung schlägt fehl
    By Peter Kosel in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 18-10-01, 12:49

Berechtigungen

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