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)