Da QMQRY immer eine Datei erzeugt, verwende folgende "einfach" Trick um die Datei auf den Inhalt zu prüfen:
Code:
PGM PARM(&QMNAME &USER)
/* */
/* UPRO für das Ausführen von QM-Abfragen und der Versendung */
/* an einen Benutzer wenn Daten gefunden wurden. */
/* */
DCL VAR(&QMNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(FEHLER))
/* */
/* Altes ev. vorhandene Ausgabedatei weglöschen */
DLTF FILE(QRYOBJ/&QMNAME)
MONMSG MSGID(CPF0000)
/* */
/* QM-Query ausführen, Ausgabedatei gleich benennen */
STRQMQRY QMQRY(QRYOBJ/&QMNAME) OUTPUT(*OUTFILE) +
OUTFILE(QRYOBJ/&QMNAME)
/* */
/* Tricklösung: Um keine leeren Dateien zu verschicken */
/* mit RGZPFM einen CPF bei leerer Datei provozieren */
RGZPFM FILE(QRYOBJ/&QMNAME)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDE))
CVT2PC LIB(QRYOBJ) FILE(&QMNAME) USER(&USER) /* +
Outfile an übergebenen Benutzer schicken */
GOTO CMDLBL(ENDE)
/* */
FEHLER: SNDMSG MSG('Fehler in CHKLAGUPCL!') TOMSGQ(ZENERRQ)
/* */
ENDE: ENDPGM
Statt dem CVT2PC (Eigenbau für Exceloutput) kannst du dann das SNDDST einsetzen.
Da wir relativ viele Kontrollabfragen benötigen, habe ich das in ein Upro ausgelagert. Damit reduziert sich der Abruf auf:
CALL PGM(....UPCL) PARM(QMQERY USER)
Bookmarks