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

 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

image\ebx_-1856924376.jpg                                                     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(&LTEXT) 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(&LTEXT) +         

                         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(&LTEXT)     

              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