Cet exemple illustre quelques fonctionnalités de Launcher avec Word :
- récupération d'informations sur l'AS/400 envoyées directement dans le document Word (nom de l'utilisateur, numéro de série, l'heure système),
- mise en forme du tableau (bordure)
- insertion d'un document, d'une image...
Voici le résultat avec les éléments transférés
LAUNCHER
Office
Numéro de série de l’AS/400 : 4486D0A
Utilisateur connecté : QPGMR
Heure Système : 17:51:04
Le présent document a été composé par votre AS/400, qui a pu utiliser les fonctionnalités de Word, grâce à LAUNCHER Office.
Le programme que vous venez de lancer a composé le présent document à partir du modèle « LncModel.doc », et des données lues ou calculées sur l’AS/400.
Vous pouvez consulter les sources CL dans le fichier « QCLSRC » de la librairie « LAUNCHER ».
Vous trouverez le modèle « LncModel.doc », dans le sous répertoire « Samples » de LAUNCHER Office sur votre ordinateur.
Le chemin par défaut est :
« \Program files\LAUNCHER<X>\Samples\LncModel.doc »
Insertion de données par l’AS/400.
Des données calculées par le programme AS/400 ont été insérées dans ce document.
Ainsi, le numéro de série, le nom de l’utilisateur connecté, et l’heure système affichés en haut de ce document, sont issus de votre AS/400.
Pour faire ces insertions de valeurs, le programme CL a utilisé des signets de Word. Ce sont des emplacements dans le texte identifiés par un nom.
Pour voir l’emplacement de ces signets, configurez votre Word :
Menu « Outils » « Options », Onglet « Affichage », cochez la case « Signets ».
Pour connaître leur noms : Menu « Insertion » « Signet ».
Insertion de paragraphes externes.
LAUNCHER Office vous permet d’insérer des objets externes dans votre document Word.
Le présent paragraphe n’existe pas dans le document original « LncModel.doc ».
Il existe sous la forme d’un document isolé, sous le nom « LncPara01.doc », dans le répertoire des exemples de LAUNCHER Office.
Le programme AS/400 a demandé à Word d’insérer ce paragraphe.
Cette fonctionnalité pourra vous permettre de construire des documents à partir de clauses, vers lesquelles le programme AS/400 a les références dans sa base de données.
Ce
paragraphe inséré pourrait aussi être un texte libre saisi par
l’utilisateur, sous Word.
LAUNCHER Office peut demander à l’utilisateur de saisir ou modifier un
texte, il peut le sauvegarder dans un fichier isolé, pour ensuite
l’insérer dans un autre document à imprimer.
Gestion de tableaux Word.
LAUNCHER Office peut créer et alimenter des tableaux.
Le tableau suivant existe dans le modèle, mais sans aucune autre valeur que les entêtes de colonnes.
Nous avons choisi de lister dans ce tableau les librairies en ligne sur votre AS/400.
Dans une lettre de relance, ce tableau pourrait lister les factures impayées de votre client.
Librairie |
Description |
Propriétaire |
|
|
|
LAUNCHER |
|
QSECOFR |
QGPL |
|
QSYS |
QSYS |
Bibliothèque système |
QSYS |
QSYS2 |
Bibliothèque système pour CPI |
QSYS |
QHLPSYS |
|
QSYS |
QUSRSYS |
|
QSYS |
Insertion d’images.
L’image en haut et à gauche de la première page a été insérée par le programme CL.
Comme pour du texte, un signet est placé dans le modèle.
Le programme CL désigne le fichier « LNCimg01.gif » comme devant être inséré à l’emplacement de ce signet.
et le source CL de l'exemple
PGM PARM(&SVRADDR)
DCL VAR(&SVRADDR) TYPE(*CHAR) LEN(30)
/* VARIABLES USED TO OPEN COMMUNICATION AND SEND COMMANDS ...*/
DCL VAR(&HANDLE) TYPE(*CHAR) LEN(50)
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)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&SRLN) TYPE(*CHAR) LEN(8)
DCL VAR(&TIME) TYPE(*CHAR) LEN(7)
DCL VAR(&ULIBL) TYPE(*CHAR) LEN(275)
DCL VAR(&SLIBL) TYPE(*CHAR) LEN(165)
DCL VAR(<EXT) TYPE(*CHAR) LEN(50)
DCL VAR(&LOWNR) TYPE(*CHAR) LEN(10)
DCL VAR(&LLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&IDX) TYPE(*DEC) LEN(4)
DCL VAR(&DOTTED) TYPE(*CHAR) LEN(30)
DCL VAR(&ROW) TYPE(*DEC) LEN(2)
DCL VAR(&COL) TYPE(*DEC) LEN(2)
DCL VAR(&C_ROW) TYPE(*CHAR) LEN(2)
DCL VAR(&C_COL) TYPE(*CHAR) LEN(2)
RTVJOBA USER(&USER) USRLIBL(&ULIBL) SYSLIBL(&SLIBL)
RTVSYSVAL SYSVAL(QSRLNBR) RTNVAR(&SRLN)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME)
/* OPEN ONLY ONE CONVERSATION WITH THE SERVER */
CHGVAR VAR(&HANDLE) VALUE('*ONLY')
/* TRANSLATE CCSID ACCORDING TO THE JOB CCSID */
CHGVAR VAR(&CCSID) VALUE('*JOB')
/* CONNECT TO THE SERVER ...*/
CALL PGM(LNCOPEN) PARM(&HANDLE &SVRADDR &CCSID)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR0))
/* START WORD ON THE WINDOWS STATION */
CHGVAR VAR(&CMD) VALUE('WORDOPEN ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CMD) VALUE('WORDHIDE')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
/* CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT + */
/* &PARM1 &PARM2 &RESULT) */
/* MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR)) */
/* OPEN A DOCUMENT FILE ON THE WINDOWS STATION */
CHGVAR VAR(&CMD) VALUE('WNEWFILE ')
CHGVAR VAR(&PARM1) VALUE('%LNCDIR%\SAMPLES\LNCMODEL.DOC ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* WRITE TEXT AT A BOOKMARK */
CHGVAR VAR(&CMD) VALUE('WBOOKMARK ')
CHGVAR VAR(&PARM1) VALUE('USER')
CHGVAR VAR(&PARM2) VALUE(&USER)
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&PARM1) VALUE('SNAS/400')
CHGVAR VAR(&PARM2) VALUE(&SRLN)
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&PARM1) VALUE('TIME')
CHGVAR VAR(&PARM2) VALUE(%SST(&TIME 1 2) *CAT ':' +
*CAT %SST(&TIME 3 2) *CAT ':' *CAT +
%SST(&TIME 5 2))
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&CMD) VALUE('WBOOKMARK ')
CHGVAR VAR(&PARM1) VALUE('TABLE')
FRST_ROW: CHGVAR VAR(&IDX) VALUE(1)
NEXT_ROW:
CHGVAR VAR(&LLIB) VALUE(%SST(&ULIBL &IDX 10))
CHGVAR VAR(&IDX) VALUE(&IDX + 11)
IF COND(&LLIB *EQ ' ') THEN(GOTO +
CMDLBL(END_LIST))
RTVOBJD OBJ(&LLIB) OBJTYPE(*LIB) TEXT(<EXT) +
OWNER(&LOWNR)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(NEXT_ROW))
CHGVAR VAR(&PARM2) VALUE(&LLIB)
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&PARM1) VALUE('*RIGHT')
CHGVAR VAR(&PARM2) VALUE(<EXT)
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&PARM2) VALUE(&LOWNR)
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
GOTO CMDLBL(NEXT_ROW)
END_LIST:
CHGVAR VAR(&ULIBL) VALUE(&SLIBL)
CHGVAR VAR(&SLIBL) VALUE(*BLANK)
IF COND(&ULIBL *NE *BLANK) THEN(GOTO +
CMDLBL(FRST_ROW))
CHGVAR VAR(&CMD) VALUE(WSELECT)
CHGVAR VAR(&PARM1) VALUE(*ROW)
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&CMD) VALUE(WSETPROP)
CHGVAR VAR(&PARM1) +
VALUE('Selection.Borders.Item(wdBorderBotto+
m).LineStyle')
CHGVAR VAR(&PARM2) VALUE('wdLineStyleSingle')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CMD) VALUE('WBOOKMARK ')
CHGVAR VAR(&PARM1) VALUE('PARA01')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&CMD) VALUE(WINSERTF)
CHGVAR VAR(&PARM1) +
VALUE('%LNCDIR%\SAMPLES\LNCpara01.DOC ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CMD) VALUE('WBOOKMARK ')
CHGVAR VAR(&PARM1) VALUE('IMG01')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
CHGVAR VAR(&CMD) VALUE(WINSERTIMG)
CHGVAR VAR(&PARM1) +
VALUE('%LNCDIR%\SAMPLES\LNCIMG01.GIF ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CMD) VALUE('WORDSHOW')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CMD) VALUE('WORDWAIT')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* END OF COMMUNICATION WITH THE SERVER STATION ... */
CLOSE:
CHGVAR VAR(&CMD) VALUE('END ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
/* CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT + */
/* &PARM1 &PARM2 &RESULT) */
/* MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR)) */
CALL PGM(LNCCLOSE) PARM(&HANDLE)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
GOTO END
ERROR:
CHGVAR VAR(&CMD) VALUE('END ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR0))
ERROR0:
CALL PGM(LNCCLOSE) PARM(&HANDLE)
RCVMSG MSG(&MSG1) SECLVL(&MSG2) MSGID(&MSGID)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Error !!!!! ' *CAT &MSGID *CAT ' +
' *CAT &MSG1 *CAT ' ' *CAT &MSG2) +
MSGTYPE(*ESCAPE)
END:
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Document ''result.doc'' saved by +
' *CAT &USER *CAT 'in samples directory') +
MSGTYPE(*COMP)
ENDPGM