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