[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2015
    Beiträge
    334

    Datei kopieren

    Hallo zusammen,
    bräuchte doch nochmal eine Info zum Thema kopieren.
    In einem Programm - welches oft und auch von verschiedenen Bildschirmen aus bei uns gestartet wird, wird die u.a. Output-Datei verwendet.
    Ich möchte jetzt, dass immer nach Durchlauf des Programms - also nach dem CLOSE - die Output-Datei sofort mit unterschiedlichem Namen (z.B. mydat_datum_uhrzeit) ins IFS kopiert wird.
    Wie würde sowas aussehen ?

    Für Infos vielen Dank und schönes WE. Gruss A.


    FLOGBM00A O E DISK USROPN

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das kann man leider nicht am CLOSE aufhängen, dazu musst du den CPYFRMIMPF in jedem Programm einbauen und den Dateinamen halt zusammenbauen.
    Hierzu kannst du einen kleinen Service schreiben (ILERPG), dem du Lib/Name übergibst und der dann den CPY per QCMDEXC oder System() aufruft.
    Dies ist nach jedem Close dann aufzurufen.
    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
    Jun 2015
    Beiträge
    334
    schönen Dank :-) !!

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das kann man leider nicht am CLOSE aufhängen, dazu musst du den CPYFRMIMPF in jedem Programm einbauen und den Dateinamen halt zusammenbauen.
    Hierzu kannst du einen kleinen Service schreiben (ILERPG), dem du Lib/Name übergibst und der dann den CPY per QCMDEXC oder System() aufruft.
    Dies ist nach jedem Close dann aufzurufen.
    ... könnte man schon (mit Journal und RCVJRNE). Die Anforderung klingt mir aber eher nach Wackelhaufen, dass hier nämlich ein Job einem anderen die Workdatei in die Tonne klopft.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Eine Möglichkeit wäre mit dem API QMHSNDSM (Send Scope Message) zu arbeiten.
    Bei dem API-Aufruf kann man ein (Scope-)Programm und ggf. auch Parameter-Werte die an das (Scope-)Programm übergeben werden sollen, aufrufen.
    Das API ruft man am Besten zu Beginn des Verarbeitungs-Programms auf.
    Wenn das Verarbeitungs-Programm endet (unabhängig davon ob normal oder abnormal) wird das beim API-Aufruf angegebene (Scope-)Programm ausgeführt.
    Dein Scope-Programm würde dann nur den Befehl, der die Daten ins IFS kopiert, enthalten.

    Send Scope Message (QMHSNDSM) API

    Wenn es sich nicht um ein Programm, sondern um eine ILE-Prozedur handeln würde, könnte man am Ende der Prozedur einen ON-EXIT command angeben und danach die Daten kopieren.
    Was nach dem ON-EXIT folgt wird immer ausgeführt, egal ob die Prozedur normal oder abnormal beendet wird.
    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das hilft aber nur, wenn man nach dem Close das Programm/Callstackentry/Job auch beendet.
    Hinzu kommt, dass man eigentlich für alle 3 Situationen gewappnet sein müsste, also ggf. 3 Calls benötigt.
    Das ist dasselbe, wie das von D*B bereits öfter erwähnte Exit-Programm oder das Einbringen von Commit-Ressourcen, die bei Commit/Rollback ebenso automatisch aufgerufen werden.
    Aber warum eine Nachricht senden, wenn ich nach dem CLose das Kopierprogramm direkt aufrufen kann?
    Die Logik dahinter entzieht sich mir.

    Und abnormales Ende sollte inzwischen dank Monitor-Group den Gang der Geschichte antreten.
    In anderen (moderneren) Programmiersprachen (C++, .Net, Java, JavaScript, ...) kennt man das Prinzip Try/Catch/Finally sowie Throw für gezielte Fehlerbehandlung, das eingeschränkt nun ebenso mit ILERPG durchaus umsetzbar ist.
    Und ob ein ENDJOB den Call ausführt weiß ich nicht, eine Commit-Ressource wird auf jeden Fall berücksichtigt.
    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

  7. #7
    Registriert seit
    Dec 2014
    Beiträge
    310
    1) Vor dem Pgm wird die Datei (LEER!) mit CRTDUPOBJ in die QTEMP kopiert.
    2) In der F-Bestimmung wird explizit auf die QTEMP-Datei verwiesen.
    3) Am Ende ein CALL auf ein CL, welches die QTEMP-Datei in's IFS kopiert

    Dadurch gibt's auch keine Probleme, wenn mehrere gleichzeitig das Pgm aufrufen (was der Fragesteller ja explizit erwähnt)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Er/sie/es hat ja nicht geschrieben, dass er bei paralleler Nutzung Probleme hätte.
    Wenn es nicht so lange dauert (kleiner 1 Minute), kann man ja vor der Ausgabe einen ALCOBJ und nachdem Copy einen DLCOBJ machen.
    Bei Verwendung von SQL werden Daten beim Insert ja bis Commit gesperrt.
    Also schön inserts, copy in IFS (Lesen geht ja), Rollback um den Inhalt wieder zu löschen.

    Es gibt viele Wege zum Erfolg.
    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
    Dec 2014
    Beiträge
    310
    und wie üblich - Fürchau muss immer seinen Senf d'raufgeben
    1) Auch wenn der Fragesteller es nicht geschrieben hat - bei - Zitat "oft und von verschiedenen Bildschirmen aufgerufen" kann und wird es früher oder später zu Problemen kommen.
    2) ALC benötigt man nicht, weil ohnehin gesperrt.
    3) "wenn es nicht so lange dauert, kann man ALCOBJ usw.." ja sehr schön - und wenn das dann zufällig mal mehrere gleichzeitig aufrufen, gibt's eine schöne Wette "wer läuft zuerst auf MSGW" ...
    oh mann...

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun ja, ALCOBJ schließt ja nun mal eine Prüfung mit MONMSG ein.
    Man weiß schließlich, dass das auch mal fehlschlagen wird;-).
    Schließlich habe ich schon genug Programme mit SQL gesehen, die sich auch darauf verlassen, dass alles gutgeht (kein SQLCODE oder SQLSTATE geprüft).
    Und wer kennt nicht die vielen Jobhänger und MSGW bei Satzsperren im Multiuser-Betrieb.
    Und auch MONMSG wird irgendwie ungern gesehen.
    In anderen Welten ist Try/Catch, also Fehlerbehandlung, scheinbar eher üblich.

    Nur um noch den Senf zu würzen;-).
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.644
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nur um noch den Senf zu würzen;-).
    Um noch mehr Würze dazu zu geben, frage ich mich, was der Sinn des Inhalts dieser Datei ist, wenn da mehrere Jobs was rein schreiben und dann immer wieder exportiert wird ins IFS.

    Vielleicht sollte jeder Job seine eigene LOG-Datei in der QTEMP haben und dann nach Beendigung exportieren?
    www.RZKH.de
    IBM Champion 2022, 2023, 2024
    IBM i Community Advocate https://www.youracclaim.com/badges/6...c-7ad4ba147af6
    Common / CEAC
    http://pub400.com

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Oh Holger, Du Oberschlauer;-).
    Über manchen Unsinn mache ich mir keine Gedanken mehr. Da ist sogar D*B inzwischen drüber weg.
    Wenn ich mal sooo alt werde wie D*B....
    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. AS-Datei zum IFS kopieren
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-06-21, 08:35
  2. Antworten: 10
    Letzter Beitrag: 14-12-16, 16:45
  3. Datei aus dem IFS kopieren
    By Albundy in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 10-08-16, 16:39
  4. Datei aus dem IFS auf den PC kopieren
    By GJV23 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 18-02-16, 18:09
  5. Antworten: 6
    Letzter Beitrag: 22-04-14, 15:30

Berechtigungen

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