[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jul 2010
    Beiträge
    59

    RPG-Pgm innerhalb CL-Pgm wird aus Java nicht aufgerufen

    Stehe vor großem Rätsel und hoffe auf eure Hilfe.
    Ich rufe
    aus Java ein CL-Pgm auf.
    Dieses CL-Pgm enthält seinerseits ein RPG-Programm.
    Wenn Aufruf aus Java erfolgt , wird dieses RPG-Pgm nicht aufgerufen ?!?!
    Wenn Aufruf aus Befehlszeile erfolgt, dann schon.
    ?!?!
    Das CL-Pgm wird in Java aber sehr wohl aufgerufen, das ist über DMPCLPGM beweisbar.

    Hier die java-Zeilen für RPG-Aufruf.
    (Java läuft übrigens am PC, nicht auf AS400)
    ------------------------------------------
    // Create the path to the program.
    programName = new QSYSObjectPathName("STONESOBJ",
    "STONEPRLGC", "PGM");


    // Create the program call object.
    programCall = new ProgramCall(host);


    // Create the parameter list (array).


    programCall.setProgram(programName.getPath(), parmlist);
    log.info("Programm wird aufgerufen:" + programName.getPath()); //
    findet sich im Log - siehe unten
    if (programCall.run() != true)
    {
    AS400Message msgList = programCall.getMessageList();
    String as400Msg = msgList[0].toString();
    log.error("Fehler bei Verarbeitung:" + as400Msg); //
    kein Eintrag im Log
    }
    host.disconnectService(AS400.COMMAND);
    }

    ------------------------------------------
    Eintrag aus Log:
    Programm wird aufgerufen:/QSYS.LIB/STONESOBJ.LIB/STONEPRLGC.PGM

    Das CL-Programm STONEPRLGC besteht aus folgenden Zeilen

    (Es findet sich im Log, wie erwähnt kein Hinweis auf Fehler bei Aufruf. )


    ADDLIBLE LIB(STEINE_TST) POSITION(*AFTER STONESOBJ)
    ADDLIBLE LIB(STEINE_95T) POSITION(*AFTER STONESOBJ)
    ADDLIBLE LIB(QS36_TST) POSITION(*AFTER STONESOBJ)
    ENDDO /* PMODE *EQ 'T' */

    CALL PGM(STONEPROLG)

    DMPCLPGM


    ENDE: ENDPGM


    Alles scheinbar so einfach.
    Ich konnte es kaum glauben, als ich das "Phänomen" bemerkte.
    ?!?!?!
    Vielen Dank im Voraus für Unterstützung

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nach dem DMPCLPGM würde ich malnoch einen DSPJOBLOG machen.
    Dann kannst du die Fehler besser nachsehen.
    Im aktuellen Job läuft dein Programm nämlich 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
    Mar 2002
    Beiträge
    5.365
    ... ich verfolge mit Interesse die diversen Fragen, scheinbar zum selben Problem: was soll dieser Wackelhaufen mal bezwecken, wenn er denn nicht mehr umfällt???
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Neuprogrammieren denke ich mal.
    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
    Ist denn die Bibliotheksliste richtig gesetzt?

    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
    Apr 2005
    Beiträge
    385
    Ich würde mal ganz stark darauf tippen das die LIBL nicht sauber ist, da wahrscheinlich eine andere JOBD verwendet wird.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Libl wird im CLP ja geändert, der Aufruf direkt funktioniert ja auch.

    Das problem ist, dass Java in einem eigenen Job läuft.
    Da hilft dann nur das Joblog des Javajob's.
    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

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Stellt sich die Frage ob der Job-Aufruf überhaupt auf der AS400 ankommt, da wie erwähnt, das Java-Programm auf dem PC läuft.
    kf

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    So wie beschrieben wurde das CLP ja ausgeführt da der enthaltene Dump vorhanden ist.
    Daran kann es also nicht scheitern.

    Der Fehler muss in dem aufgerufenen RPG liegen.
    Vielleicht wird es ja aufgerufen macht aber nicht das was es soll (z.B. Prüfungen auf User, Mandant u.ä.).

    Dies kann man ggf. per
    STRSRVJOB auf den Javajob
    STRDBG auf das CLP und RPG
    analysieren.
    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

  10. #10
    Registriert seit
    Sep 2003
    Beiträge
    236

    Thumbs up addlible immer auf stonesobj?

    Hallo zusammen,

    sollte man nicht den addlible genauer definieren.
    In seinem CL steht immer after stonesobj.

    addlible lib(stonesobj)
    addlible lib(steine_95) position(*after stonesobj)
    addlible lib(steine_96) position(*after steine_95)
    etc.
    call pgm(stonesobj/stoneprlog)

    vielleicht liegt es daran, dass die Libl nicht ganz sauber ist.

    Gruss
    Thomas
    ---------------------------------------------------------




    Zitat Zitat von hartmuth Beitrag anzeigen
    Stehe vor großem Rätsel und hoffe auf eure Hilfe.
    Ich rufe
    aus Java ein CL-Pgm auf.
    Dieses CL-Pgm enthält seinerseits ein RPG-Programm.
    Wenn Aufruf aus Java erfolgt , wird dieses RPG-Pgm nicht aufgerufen ?!?!
    Wenn Aufruf aus Befehlszeile erfolgt, dann schon.
    ?!?!
    Das CL-Pgm wird in Java aber sehr wohl aufgerufen, das ist über DMPCLPGM beweisbar.

    Hier die java-Zeilen für RPG-Aufruf.
    (Java läuft übrigens am PC, nicht auf AS400)
    ------------------------------------------
    // Create the path to the program.
    programName = new QSYSObjectPathName("STONESOBJ",
    "STONEPRLGC", "PGM");


    // Create the program call object.
    programCall = new ProgramCall(host);


    // Create the parameter list (array).


    programCall.setProgram(programName.getPath(), parmlist);
    log.info("Programm wird aufgerufen:" + programName.getPath()); //
    findet sich im Log - siehe unten
    if (programCall.run() != true)
    {
    AS400Message msgList = programCall.getMessageList();
    String as400Msg = msgList[0].toString();
    log.error("Fehler bei Verarbeitung:" + as400Msg); //
    kein Eintrag im Log
    }
    host.disconnectService(AS400.COMMAND);
    }

    ------------------------------------------
    Eintrag aus Log:
    Programm wird aufgerufen:/QSYS.LIB/STONESOBJ.LIB/STONEPRLGC.PGM

    Das CL-Programm STONEPRLGC besteht aus folgenden Zeilen

    (Es findet sich im Log, wie erwähnt kein Hinweis auf Fehler bei Aufruf. )


    ADDLIBLE LIB(STEINE_TST) POSITION(*AFTER STONESOBJ)
    ADDLIBLE LIB(STEINE_95T) POSITION(*AFTER STONESOBJ)
    ADDLIBLE LIB(QS36_TST) POSITION(*AFTER STONESOBJ)
    ENDDO /* PMODE *EQ 'T' */

    CALL PGM(STONEPROLG)

    DMPCLPGM


    ENDE: ENDPGM


    Alles scheinbar so einfach.
    Ich konnte es kaum glauben, als ich das "Phänomen" bemerkte.
    ?!?!?!
    Vielen Dank im Voraus für Unterstützung

  11. #11
    Registriert seit
    Jul 2010
    Beiträge
    59
    Danke übrigens für die rege Beteiligung.(Über die neuesten Reaktionen habe ich keine Email-Verst. erhalten)

    Das Problem hat sich tatsächlich verlagert.
    Obwohl lt. CL-Dump die Variable PMod korrekt gesetzt ist, und somit das Ändern der *Libl auslösen müßte, wird die *Libl nicht verändert. Damit wird LEERE Datei verarbeitet und kein Ausdruck produziert, weil das Pgm im Zyklus läuft.

    Warum die Bibl.liste nicth geändert wrid, ist mir noch "schleierhaft".
    Aber dieses Problem ist mir lieber, weil es sich im CL-Pgm abspielt.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Ändern der Libl findet wohl unter einer Bedingung statt.
    Ggf. stimmt diese nicht oder die Parameterübergabe ist nicht korrekt.

    Hier ist zu erwähnen, dass java in Unicode arbeitet und die AS/400 in EBCDIC.
    In wie weit eine automatische Umsetzung in Java-Klassen erfolgt weiß ich nicht.

    Empfehlenswert ist daher für solche Aktionen das Ganze mit SQL zu machen und ggf. CREATE PROCEDURE für diese Programme durchzuführen.
    Die Datenumsetzung wird dann automatisch von SQL erledigt.
    Außerdem gestalten sich die Aufrufe erheblich einfacher.
    Wenn kein Rückgabewert benötigt wird kann jedes Programm einfach in SQL per CALL aufgerufen werden.
    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

Similar Threads

  1. AS400 CL / RPG - ftp Programm
    By Josie314 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 24-07-12, 07:21
  2. RPG aus Java aufrufen
    By Vicky-B in forum NEWSboard Java
    Antworten: 17
    Letzter Beitrag: 06-05-08, 11:05
  3. Rpg to java
    By Badener in forum NEWSboard Java
    Antworten: 5
    Letzter Beitrag: 13-07-06, 17:09
  4. String Objekt aus RPG an Java übergeben ????
    By hoeppe in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 22-07-05, 09:46
  5. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 13:10

Berechtigungen

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