[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    47

    Problem mit CPYSPLF

    Hallo Zusammen,

    ich wende mich mal wieder an Euch, weil ich bei einem Problem auf dem Schlauch stehe...

    Folgender Tatbestand:

    In einem CL-Programm (im Batch) wird mehrmals ein Programm aufgerufen, welches unter Umständen eine Spool erzeugt. Wenn die Spool erzeugt wurde, soll diese in eine Datei kopiert werden.
    Problem: falls beim zweiten Programmaufruf keine Spool erzeugt wird, wird die des ersten Aufrufes kopiert.
    Ich bin folgendermassen vorgegangen:

    .
    .
    .
    OVRDBF FILE(DATEI) TOFILE(DATEIA)
    CALL PGM(PGMXX) /* für mandant A */
    RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR)
    CPYSPLF FILE(QSYSPRT) TOFILE(TEST) +
    (&NBR/&USER/&JOB) SPLNBR(*LAST) +
    MBROPT(*ADD) CTLCHAR(*NONE)

    OVRDBF FILE(DATEI) TOFILE(DATEIB)
    CALL PGM(PGMXX) /* für mandant B */
    RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR)
    CPYSPLF FILE(QSYSPRT) TOFILE(TEST) +
    (&NBR/&USER/&JOB) SPLNBR(*LAST) +
    MBROPT(*ADD) CTLCHAR(*NONE)
    .
    .
    .

    Wie gesagt, im Falle des PGM-Aufrufs für B wird kein Spool erzeugt, aber trotzdem eins (das Erste) kopiert, obwohl ich SPLNBR (*LAST) angegeben habe und die Spoolnummer im Job auch vergeben wird...

    Gibt es evtl eine Möglichkeit die jeweils letzte SPLNBR eines Jobs über eine CL-Variable abzufragen damit ich diese anstatt *LAST beim CPYSPLF angeben kann?
    Oder hat hier noch jemand eine andere Idee ohne das Druckpgm ändern zu müssen???

    Danke für Eure Bemühungen!

    Andreas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Auch wenn du dies per API erfragst, *LAST ist nunmal immer die letzte !
    Du solltest per "OVRPRTF FILE(QSYSPRT) SPLFNAME(XXXX)" einen eindeutigen Namen pro PGM-Aufruf vergeben.
    Dann kannst du eben statt QSYSPRT den vergebenen Namen XXXX beim CPYSPLF angeben.
    *LAST bezieht sich nicht auf die letzte Liste des Job's sondern auf die letzte Liste des gleichen Namens.
    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
    Nov 2004
    Beiträge
    47
    Hallo Fuerchau!

    Gute Idee mit SPLFNAME!!! Werde ich gleich mal ausprobieren.

    Aber *LAST scheint wohl nicht immer der letzte zu sein, denn, wenn die letzte Spool leer ist (*FIN mit SPLFNR 2) kopiert er die vorletzte.... aber egal, ich probiers mit dem Namen!

    Merci!

    Zitat Zitat von Fuerchau
    Auch wenn du dies per API erfragst, *LAST
    ist nunmal immer die letzte !
    Du solltest per "OVRPRTF FILE(QSYSPRT SPLFNAME(XXXX)" einen eindeutigen Namen pro PGM-Aufruf vergeben.
    Dann kannst du eben statt QSYSPRT den vergebenen Namen XXXX beim CPYSPLF angeben.
    *LAST bezieht sich nicht auf die letzte Liste des Job's sondern auf die letzte Liste des gleichen Namens.

  4. #4
    Registriert seit
    Nov 2004
    Beiträge
    47
    Hallo Fuerchau!

    Du bist ein Programmiergott!

    Es funzt wie es soll.

    Nochmal Danke schön!

    Andreas

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Verbesserung:
    *LAST ist die letzte aktive Spoolfile, *FIN wird nur angezeigt, wenn der Job noch läuft. Ist der Job beendet, werden *FIN's auch freigegeben.
    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

  6. #6
    Registriert seit
    Aug 2004
    Beiträge
    923

    es geht trotzdem

    hello,

    ok ok du hast dein proggi angepasst und nun läufts.

    man hätte aber auch tricksen können:

    machst du NACH aufruf pgmB und VOR aufruf CPYSPLF nen CHGSPLFA auf QSYSPRT und fängst die Fehlermeldung mit MONMSG ab. wenn CPF3340 dann existieren 2 SPLFs wenn nicht nur eine.

    wobei diese lösung nur funzt wenn pgmA IMMER eine SPLF erzeugt und pgmB nur manchmal....

    musste mal gesagt werden. ich frickel eben gerne


    k.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Wobei das nur klappt, wie du schon beschreibst, wobei meine Lösung (auch in der Übersicht WRKSPLF) "eleganter" ist
    Ausserdem darfst du dann den Parameter SPLNBR(*LAST) nicht verwenden, sonst kommt der Fehler 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

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Problem mit Steuerzeichen in Datenbank?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 26-10-06, 10:07
  3. Authorization Problem nach ändern der Primary Group
    By ChrisX in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-10-06, 15:31
  4. Merkwürdiges Problem in VRPG
    By Flappes in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 06-10-06, 08:39
  5. CrtSQLRPGi - Problem bei Programmerstellung
    By sim in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 10-05-06, 14:45

Berechtigungen

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