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

 Ici, grâce aux noms des cellules, il est aussi facile que Word de remplir les données de l’entête.

Le remplissage du tableau des commandes se fera avec la commande XLSETLINE.

 

Puis, pour délimiter le tableau, nous faisons appel à une macro.

 

 

Source du programme RPG pour Excel

 

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

* 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/400.           *

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

     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/400. 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

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

* Edition d'un document de vente à envoyer par 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='XLOPENFILE'

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

     c                             '\letter.xlt'

     c                   exsr      CALLLNC

     c                   eval      lnccmd='XLMINIMIZE'

     c                   exsr      CALLLNC

* Utilisation des noms de cellule pour l’entête

     c                   eval      lnccmd='XLSETTEXT'

     c                   eval      lncparm1='NAME'

     c                   eval      lncparm2=firstname + lastname

     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

* On va à la première cellule de donnée

     c                   eval      lnccmd='XLGOTOCELL'

     c                   eval      lncparm1='TABLE'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c     loop_order    tag

     c                   move      ORDER_DATE    datecmd

     c                   movel     datecmd       datecmds

* Puis le détail de chaque 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='XLSETLINE'

     c                   eval      PRIXUP=

     c                   movel     prixup        prixu

     c                   movel(p)  QUANTITY      QTE

     c                   eval      PRIXTP=

     c                   movel     prixtp        prixt

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

     c                             PART_DESC + '%SEP%' + prixu +

     c                             '%SEP%' + QTE + '%SEP%'

     c                             + PRIXT

     c                   exsr      CALLLNC

* On lit le prochain détail de commande

     c     order_id      reade     sp_det_or                     92

     c  N92              goto      loop_detail

     c     Suite         tag

* On lit ici la prochaine commande

     c     cust_id       reade     sp_ord_id                     93

     c  N93              goto      loop_order

* Sauvegarde et envoi

     c     Fin           tag

* Petite macro pour faire la mise en page

     c                   eval      lnccmd='XLEXEMACRO'

     c                   eval      lncparm1='PageSetup'

     c                   exsr      CALLLNC

     c                   eval      lnccmd='XLSAVEAS'

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

     c                             + firstname + '.xls'

     c                   eval      lncparm2=

     c                   exsr      CALLLNC

     c                   eval      lnccmd='XLSENDTO'

     c                   eval      lncparm1=

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

 *     c                   exsr      CALLLNC

     c                   eval      lnccmd='XLMAXIMIZE'

     c                   exsr      CALLLNC

     c                   seton                                   lr

* Déconnexion du serveur

     c                   eval      lnccmd='END'

     c                   exsr      CALLLNC

     c                   call      'LNCCLOSE'

     c                   parm                    HANDLE