Thanks Chuck and the rest of the gang for all the input.
Yes - the QCMDEXC sorted the problem out. For some reason the SNDEMAIL
command fails if any of the variables has blanks, however if these same
varibales are passed to an RPGLE which builds the string and executes
the CLE request - it works! Here's what we did:
 
/* loop the email file to send e-mails to relevant people              
      */  
 READLOOP:   RCVF       RCDFMT(METEMLFR)                               
          
                                                                       
          
/* monitor for end of file                                             
      */  
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(END))          
          
                                                                       
          
/* call the rpgle to dynamically build the sndemail command            
      */  
             CALL       PGM(REDIOO0215) PARM(&EMLADREM1 &EMLADREM2 +   
          
                        &EMLADREM3  &EMLADREM4  &EMLADREM5  &EMLADREM6
+          
                        &EMLADREM7)                                    
          
                                                                       
          
             GOTO       CMDLBL(READLOOP)                               
          
                                                                       
          
 END:        ENDPGM                                                    
          
 
REDIOO0215:
 * COPY BOOKS                         
 * ~~~~~~~~~~                         
 * copy book for smollan prototypes   
 /copy bsmo610/qcpysrc,smstdprot      
                                      
dcommand          s           1000a   
dlength           s             15p 5 
dpaddr1           s             50    
dpaddr2           s             50    
dpaddr3           s             50    
dpaddr4           s             50    
dpaddr5           s             50    
dpaddr6           s             50    
dpaddr7           s             50    
 
c     *entry        plist                          
c                   parm                    paddr1 
c                   parm                    paddr2 
c                   parm                    paddr3 
c                   parm                    paddr4 
c                   parm                    paddr5 
c                   parm                    paddr6 
c                   parm                    paddr7 
 
c                   eval      command = 'SNDEMAIL TYPE(*IFS) SMTPID(' +
    
c                                %TRIM(PADDR1) + ' ' + %TRIM(PADDR2) + 
    
c                             ' ' + %TRIM(PADDR3) + ' ' + %TRIM(PADDR4)
+   
c                                ') SUBJECT(TEST) IFS((' + '''' +      
    
c                             '/kunip/8798_______000879__.xls' +'''' +
'))' 
c                   eval      length = %len(%trim(command))            
    
                                                                       
    
c                   callp     execcmd(command:length)                  
    
                                                                       
    
c                   endsr                                              
    
 
c/copy bsmo610l/qcpysrc,smstdexit
 
prototype for command
**********************************************************************
 * ExecCommand: Execute an AS/40 Command.                            
*
**********************************************************************
 *                                                                    
DExecCmd          Pr                  ExtPgm('QCMDEXC')               
D  Command                     500A   Const Options(*VarSize)         
D  Length                       15P 5 Const                           
D  Optional                      3A   Const Options(*NoPass)          
 
 
 
Prevesh Kuni
RPG Developer
Smollan Group SA (Pty) Ltd
(011) 640 8154 
kunip@xxxxxxxxxxxxx 
crp@xxxxxxxxxxxxxxxxxxxx 2008/02/19 09:55 PM >>>
Since I do not have the definition of the command, I can not be sure 
this is the best answer, but I offer...
Before the SNDEMAIL, include the following:
If Cond(&EMLADREM4 *EQ ' ') Then(ChgVar &EMLADREM4 '*N')
If Cond(&EMLADREM3 *EQ ' ') Then(ChgVar &EMLADREM4 '*N')
If Cond(&EMLADREM2 *EQ ' ') Then(ChgVar &EMLADREM4 '*N')
If Cond(&EMLADREM1 *EQ ' ') Then(ChgVar &EMLADREM4 '*N')
If all are blank, similar error to seen now will occur. Could test 
additionally something like the following, and send a specific error 
or just let it fail as it does now:
If Cond(&EMLADREM1 *TCAT &EMLADREM2 *TCAT +
&EMLADREM3 *TCAT &EMLADREM4) *EQ ' ') Then(+
SNDPGMMSG...)
If the first is required to be non-blank, for example a CHECK 
CONSTRAINT is enforced, then the above four tests, where the last check
sends an error instead of doing the CHGVAR.
The other resolution is by using the QCMDEXC [or QCAPCMD] API to send 
the dynamically built command string as a CL request, thus changing the
SNDEMAIL to something like the following:
ChgVar &CmdStr ('SNDEMAIL TYPE(*IFS) SMTPID(' +
*CAT &EMLADREM1 *CAT ' ' *CAT &EMLADREM2 +
*CAT &EMLADREM3 *CAT ' ' *CAT &EMLADREM4 +
*CAT ') SUBJECT(''MetCash Orders'') ' +
*CAT 'IFS(('''/kunip/'' *CAT *FILE))'
CALL QSYS/QCMDEXC (&CmdStr &CmdStrLen) /* len init in DCL */
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.