PreviousNext
Help > Programmation avec LAUNCHER Office > Programmation avancée > Exemples de programmes CL > Exemple de fusion
Exemple de fusion

 Le programme MERGE est un petit exemple de publipostage.

 

Il utilise comme document principal le fichier sp_cust.doc du répertoire Samples de LAUNCHER Office et une source de donnée dynamiquement transférée par le programme MERGE de la bibliothèque LAUNCHER.

 

Dans un premier temps le programme utilise la commande DBFXFER pour transférer le fichier SP_CUST de la bibliothèque Launcher vers le PC.

Ensuite la commande WMAILMERGE lance la fusion vers un nouveau document.

 

Taper CALL LAUNCHER/MERGE pour l’exécuter.

 

Source de l’exemple

 

            PGM                                  

/*  DECLARATIONS */                             

            DCL        VAR(&HANDLE) TYPE(*CHAR) LEN(50)     

            DCL        VAR(&SVRADR) TYPE(*CHAR) LEN(30)    

            DCL        VAR(&CCSID) TYPE(*CHAR) LEN(10)     

            DCL        VAR(&CMD) TYPE(*CHAR) LEN(10)       

            DCL        VAR(&OPT) TYPE(*CHAR) LEN(1)        

            DCL        VAR(&PARM1) TYPE(*CHAR) LEN(512)    

            DCL        VAR(&PARM2) TYPE(*CHAR) LEN(1024)   

            DCL        VAR(&RESULT) TYPE(*CHAR) LEN(512)   

            DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)      

            DCL        VAR(&MSG1) TYPE(*CHAR) LEN(80)      

            DCL        VAR(&MSG2) TYPE(*CHAR) LEN(80)      

/* INITIALISATION */                           

            CHGVAR     VAR(&HANDLE) VALUE('*ONLY')         

            CHGVAR     VAR(&SVRADR) VALUE('*DEV')          

            CHGVAR     VAR(&CCSID) VALUE('*JOB')           

/* OUVERTURE DE LA SESSION - OPEN THE SESSION  */          

            CALL       PGM(LAUNCHER/LNCOPEN) PARM(&HANDLE &SVRADR &CCSID)

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))

/* FILE TRANSFERT - TRANSFERT DU FICHIER */        

            CHGVAR     VAR(&CMD) VALUE('DBFXFER')  

            CHGVAR     VAR(&PARM1) VALUE('%LNCDIR%\SAMPLES\SP_CUST.TXT')

            CHGVAR     VAR(&PARM2) VALUE('LAUNCHER/SP_CUST')   

            CALL       PGM(LAUNCHER/LNCCMD) PARM(&HANDLE &CMD &OPT &PARM1 +

                       &PARM2 &RESULT)             

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR)) 

/*  OUVERTURE WORD - OPEN WORD */                  

            CHGVAR     VAR(&CMD) VALUE('WORDOPEN') 

            CHGVAR     VAR(&PARM1) VALUE(' ')      

            CHGVAR     VAR(&PARM2) VALUE(' ')      

            CALL       PGM(LAUNCHER/LNCCMD) PARM(&HANDLE &CMD &OPT &PARM1 +

                       &PARM2 &RESULT)             

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR)) 

/* FUSION - MERGE */                               

            CHGVAR     VAR(&CMD) VALUE('WMAILMERGE')           

            CHGVAR     VAR(&PARM1) VALUE('DOCUMENT=

                       .DOC";DATASOURCE=

            CHGVAR     VAR(&PARM2) VALUE(' ')      

            CALL       PGM(LAUNCHER/LNCCMD) PARM(&HANDLE &CMD &OPT &PARM1 +     

                       &PARM2 &RESULT)            

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))

/* WORDWAIT */                                    

            CHGVAR     VAR(&CMD) VALUE('WORDWAIT')

            CHGVAR     VAR(&PARM1) VALUE(' ')     

            CHGVAR     VAR(&PARM2) VALUE(' ')     

            CALL       PGM(LAUNCHER/LNCCMD) PARM(&HANDLE &CMD &OPT &PARM1 +     

                       &PARM2 &RESULT)            

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))

/* FERMETURE SESSION LAUNCHER - CLOSE LAUNCHER SESSION */     

            CHGVAR     VAR(&CMD) VALUE('END')     

            CHGVAR     VAR(&PARM1) VALUE(' ')     

            CHGVAR     VAR(&PARM2) VALUE(' ')     

            CALL       PGM(LAUNCHER/LNCCMD) PARM(&HANDLE &CMD &OPT &PARM1 +     

                       &PARM2 &RESULT)            

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))

            CALL       PGM(LAUNCHER/LNCCLOSE) PARM(&HANDLE)   

            MONMSG     MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))

            GOTO       END                        

ERROR:                                       

            RCVMSG     MSG(&MSG1) SECLVL(&MSG2) MSGID(&MSGID)  

            SNDPGMMSG  MSGID(CPF9898) MSGF(QSYS/QCPFMSG) +     

                       MSGDTA('ERROR !!!!! ' *CAT &MSGID *CAT ' +          

                       ' *CAT &MSG1 *CAT ' ' *CAT &MSG2) +     

                       MSGTYPE(*ESCAPE)      

END:                                         

            ENDPGM