PreviousNext
Help > Programmation avec LAUNCHER Office > Programmation avancée > Exemples de programmes RPG > Exemple Word
Exemple Word

 Le principe de cet exemple est d’aller remplir le tableau des commandes.

Pour se faire, nous avons placé un signet à la première cellule de donnée (deuxième ligne, car la première est l’entête du tableau).

Donc, le programme créé un document à partir du modèle, va inscrire les données de l’entête, puis remplit le tableau (à l’aide de la commande WSETLINE).

 

Le tableau ne contient qu’une seule ligne de données, parce que Word ajoute automatiquement une ligne suivante lorsque, une fois que vous êtes en fin de ligne et que vous passez à la colonne suivante (par Tab. par exemple).

Ce qui fait que l’on aura pas de ligne vide.

 

La zone de texte qui suit le tableau se décalera au fur et à mesure que le tableau grandit.

 

 

Source du programme RPG pour Word

 

*******************************************************************

* Fichiers utilisés:   SP_CUST --> Fichier clients                *

*                      SP_ORD_ID --> Fichier commandes (ORDERS) LF*

*                      SP_DET_OR --> Fichier détail (DETAIL) LF   *

*******************************************************************

     FSP_CUST   if   e           k disk

     FSP_ORD_ID if   e           k disk

     FSP_DET_OR if   e           k disk

     

*******************************************************************

* Déclaration des variables utilisées par LAUNCHER Office.           *

* Voir le chapitre 5.                                             *

*******************************************************************

     DHANDLE           s             50    inz('*ONLY')

     DSVRADDR          s             30    inz('*DEV')

     DCCSID            s             10    inz('*JOB')

     DLNCCMD           s             10    inz(*blanks)

     DLNCPARM1         s            512    inz(*blanks)

     DLNCPARM2         s           1024    inz(*blanks)

     DLNCOPT           s              1    inz(*blanks)

     DLNCRESULT        s            512    inz(*blanks)

     

*******************************************************************

* Variables utilisées par le programme                            *

*******************************************************************

     DPREMIER          s              9    inz(*blanks)

     DDATECMD          s               d   datfmt(*EUR)

     DDATECMDS         s             10    inz(*blanks)

     DPRIXUP           s              8p 0 inz(0)

     DPRIXTP           s              8p 0 inz(0)

     DPRIXU            s              8    inz(*blanks)

     DPRIXT            s              8    inz(*blanks)

     DQTE              s             10    inz(*blanks)

     DRECORD           s              9

     

*******************************************************************

* Point d’entrée du programme                                     *

*******************************************************************

     c     *ENTRY        PLIST

     c     premier       PARM                    record

*******************************************************************

* Chaînage sur le client voulu                                    *

*******************************************************************

     c     PREMIER       chain     SP_CUST                       90

*

* Connexion à LAUNCHER Office. Le serveur est adressé par la variable

* SVRADDR. *DEV signifie que l’on travaille sur le serveur qui émule

* l’écran courant (utilisation du écran 5250).

*

     c                   call      'LNCOPEN'

     c                   parm                    handle

     c                   parm                    svraddr

     c                   parm                    ccsid

*------------------------------------------------------------------

* Edits a sales document that will be sent by e-mail

*------------------------------------------------------------------

     c                   eval      lnccmd='WORDOPEN'

     c                   exsr      CALLLNC

     c                   eval      lnccmd='WMINIMIZE'

     c                   exsr      CALLLNC

* Création d’un nouveau document sur la base d’un modèle existant

     c                   eval      lnccmd='WNEWFILE'

     c                   eval      lncparm1='%LNCDIR%\Samples' +

     c                             '\Letter.dot'

     c                   exsr      CALLLNC

     c                   eval      lnccmd='WMINIMIZE'

     c                   exsr      CALLLNC

* A l’aide des signets, les données sont affectées

     c                   eval      lnccmd='WBOOKMARK'

     c                   eval      lncparm1='FNAME'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='LNAME'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='ADDRESS'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='ZIP'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='CITY'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='STATE'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='PHONE'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='FAX'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lncparm1='EMAIL'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

* Routine qui va lire toutes les commandes du client.

* Travail sur le fichier de commandes

     c     cust_id       setll     sp_ord_id

     c     cust_id       reade     sp_ord_id                     91

     c   91              goto      Fin

* Déplacement vers la table

     c                   eval      lnccmd='WBOOKMARK'

     c                   eval      lncparm1='TABLE'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c     loop_order    tag

     c                   move      ORDER_DATE    datecmd

     c                   movel     datecmd       datecmds

* Lecture du détail de la commande

     c     order_id      setll     sp_det_or

     c     order_id      reade     sp_det_or                     92

     c   92              goto      Suite

     c     loop_detail   tag

     c                   eval      lnccmd='WSETLINE'

     c                   eval      lncparm1=datecmds + '%SEP%' +

     c                             PART_DESC

     c                   exsr      CALLLNC

     c                   eval      PRIXUP=

     c                   movel     prixup        prixu

     c                   eval      lnccmd='WBOOKMARK'

     c                   eval      lncparm1='''*RIGHT'' ''NUMFMT(0)'' '

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   movel(p)  QUANTITY      QTE

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      PRIXTP=

     c                   movel     prixtp        prixt

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

* Détail suivant

     c     order_id      reade     sp_det_or                     92

     c  N92              eval      lncparm1='*RIGHT'

     c  N92              eval      lncparm2=

     c  N92              exsr      CALLLNC

     c  N92              goto      loop_detail

     c     Suite         tag

* Commande suivante

     c     cust_id       reade     sp_ord_id                     93

     c  N93              eval      lncparm1='*RIGHT'

     c  N93              eval      lncparm2=

     c  N93              exsr      CALLLNC

     c  N93              goto      loop_order

* Sauvegarde, et envoi

     c     Fin           tag

     c                   eval      lnccmd='WSAVEAS'

     c                   eval      lncparm1='%LNCDIR%\samples\' +

     c                             firstname + '.doc'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lnccmd='WSENDTO'

     c                   eval      lncparm1=

* La ligne suivante n’est pas exécutée

*     c                   exsr      CALLLNC

     c                   eval      lnccmd='WMAXIMIZE'

     c                   exsr      CALLLNC

* Quitte le serveur LAUNCHER Office

     c                   eval      lnccmd='END'

     c                   exsr      CALLLNC

     c                   call      'LNCCLOSE'

     c                   parm                    HANDLE

     c                   seton                                   lr

*------------------------------------------------------------------

* SUB CALLLNC : Cette sous-routine envoie la commande à LAUNCHER Office.

*    Les différents paramètres sont déjà affectés.

*    Voir le chapitre 5 pour leur utilisation

*--------------------------------------------------------------------

     c     CALLLNC       BEGSR

     c                   call      'LNCCMD'

     c                   parm                    HANDLE

     c                   parm                    LNCCMD

     c                   parm                    LNCOPT

     c                   parm                    LNCPARM1

     c                   parm                    LNCPARM2

     c                   parm                    LNCRESULT

     c                   ENDSR