in

AS400 CL programming

Is it possible to write to a database physical file within a CL program, using data created through a variable e.g. current date value. I wish to write the &MSGDTA variable to a file for future processing.
             PGM                                                    
             DCLF       FILE(BGUNDRY/TESTDUMM)                      
             DCL        VAR(&ACTYEAR) TYPE(*CHAR) LEN(2)            
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(9)              
             DCL        VAR(&QDATE) TYPE(*CHAR) LEN(6)              
             DCL        VAR(&DAY) TYPE(*CHAR) LEN(2)                
             DCL        VAR(&MONTH) TYPE(*CHAR) LEN(2)              
             DCL        VAR(&YEAR2003) TYPE(*CHAR) LEN(4) +          
                          VALUE('2003')                              
             DCL        VAR(&YEAR2004) TYPE(*CHAR) LEN(4) +          
                          VALUE('2004')                              
             RTVSYSVAL SYSVAL(QDATE) RTNVAR(&QDATE)   /* DDMMYY */  
             CHGVAR VAR(&ACTYEAR) VALUE(%SST(&QDATE 5 2))            
             IF ((&ACTYEAR) *EQ '03') THEN(GOTO CALC1)              
             ELSE (GOTO CALC2)                                      
  CALC1: CHGVAR VAR(&DAY) VALUE(%SST(&QDATE 1 2))                    
            CHGVAR VAR(&MONTH) VALUE(%SST(&QDATE 3 2))                
CHGVAR VAR(&MSGDTA) VALUE('D' *CAT &YEAR2003 *CAT &MONTH *CAT &DAY)    
            GOTO SNDMSG                                                
 CALC2: CHGVAR VAR(&DAY) VALUE(%SST(&QDATE 1 2))                      
            CHGVAR VAR(&MONTH) VALUE(%SST(&QDATE 3 2))                
CHGVAR VAR(&MSGDTA) VALUE('D' *CAT &YEAR2004 *CAT &MONTH *CAT &DAY)    
 SNDMSG:    SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&MSGDTA)    
            ENDPGM                                                    
***************** End of data ****************************************
Movie Stars

Solution: AS400 CL programming

I use the following trick when I need data file manipulation from CL.

1. Write a RPG program called EXECSQL that executes dynamic SQL statements.
2. Write a command called EXECSQL to pass a SQL statement to the program.

Now, you can use a CL command like this:

chgvar &insert   ('insert into yourfile values(''' || &MSGDTA || ''')'
execsql stmt(&insert)

Full source is at
http://search400.techtarget.com/tip/1,289483,sid3_gci864804,00.html?FromTaxonomy=%2Fpr%2F2f9


ShalomC