PreviousNext
Help > Programmation avec LAUNCHER Office > Programmation avancée > Les programmes API avec un client AS400 > LNCDSCDS - Programme API
LNCDSCDS - Programme API

 Le programme LNCDSCDS permet de créer une source de données (DSC : Data Source), à partir d’une structure de données en mémoire (DS).

 

Syntaxe

 

DCL

VAR(&DSC_NAME) TYPE(*CHAR) LEN(10)

DCL

VAR(&DS) TYPE(...

DCL

VAR(&COUNT) TYPE(*DEC) LEN(5)

DCL

VAR(&OPTION) TYPE(*CHAR) LEN(10)

DCL

VAR(&DESC_FILE) TYPE(*CHAR) LEN(256)

DCL

VAR(&PROC_NAME) TYPE(*CHAR) LEN(256)

 

 

CALL

PGM(LNCDSCDS) PARM(&DSC_NAME &DS &COUNT +
&OPTION &DESC_FILE &PROCNAME)

 

 Paramètres

Paramètres

 

&DSC_NAME

Nom donné à la source de données.
Ce nom sera utilisable par exemple lors de l’envoi des données vers un classeur Excel, avec la commande LNCTOXLS :
LNCTOXLS … CPYSRC(*DSC) FROMDSC(&DSC_NAME).

 

&DS

Variable de programme désignant le début du tableau de structures de données (DS) à référencer.
En RPG, cette variable est le nom du tableau de DS.
En CL, cette variable sera le premier membre composant la DS.

 

&COUNT

Nombre d’entrées dans le tableau de DS &DS.

 

&OPTION

Désigne de type de description fourni dans les paramètres &DESC_FILE et &PROC_NAME.

Les valeurs possibles sont :

*EXTNAME : La description des membres de la DS est donné par une DS externe. &DESC_FILE contient alors un nom de fichier physique, éventuellement qualifié sous la forme : LIB/FICHIER.

*PCML : La description est fournie par un fichier PCML. Le paramètre
&DESC_FILE contient alors un chemin vers un fichier PCML dans l’IFS.
&PROC_NAME est le nom d’une procédure présente dans le fichier PCML.

&DESC_FILE

Ce paramètre contient :

         Un nom de fichier physique, si &OPTION=*EXTNAME..

         Un chemin vers un fichier PCML dans l’IFS, si &OPTION=*PCML.

 

&PROC_NAME

Si &OPTION=*PCML, ce paramètre contient le nom de la procédure décrite dans le PCML. La description de cette procédure sera utilisée comme description des membres de la DS.

 

La conversation avec le serveur Launcher sur le PC doit être ouverte (par LNCOPEN) avant l’utilisation du programme ou de la procédure LNCDSCDS.

Les données du tableau de DS ne sont pas dupliquées. Seulement un pointeur vers la variable est pris.

La source de données est supprimée dès la fermeture de conversation par LNCCLOSE, ou à la prochaine ouverture d’une nouvelle conversation.

 

Exemples

 

Dans l’exemple suivant, chaque occurrence du tableau de DS « CustList » est décrite par le fichier physique « S_CUST_DS ».
Le programme crée la source de donnée « MyDSC », et transfère les données contenues dans le tableau de DS « CustList » vers Excel par la commande LNCTOXLS.

 

Dcustomer      E DS                   EXTNAME(S_CUST_DS)
...
dCustList                             LIKEDS(customer) DIM(100)

C                   CallB(D) 'LNCDSCDS'
C                   Parm      'MyDSC'       DSCNAME
C                   Parm                    CustList
C                   Parm                    Count
C                   Parm      '*EXTNAME'    Option
C                   Parm      'S_CUST_DS'   DescFile
C                   Parm      *BLANK        ProcName

C                   eval      Qcmd = 'LNCTOXLS TOXLS(*NEW) -
c                             CPYSRC(*DSC) FROMDSC(MyDSC) -
c                             SHOWDOC(*YES) EXESRV(*CURRENT) -
c                             ADDCOLH(*COLHDG)'
C                   CallP(e) QCmdExc(Qcmd:%Len(%Trim(Qcmd)))

 

Dans l’exemple suivant, la DS a la même description que la structure « T_CRITSELPLANBBE » décrite dans le fichier PCML.

 

<pcml version="4.0">
  <struct name=="T_PLANBBE">
  ...
</struct>
<struct name="T_CRITSELPLANBBE">
<data name="NUMPLABBE" type="zoned" length="7" precision="0" usage="inherit" />
<data name="ORDPLABBE" type="char" length="3" usage="inherit" />
<data name="NOMPLABBE" type="char" length="30" usage="inherit" />
<data name="IDPLANBBE" type="int" length="4" precision="31" usage="inherit" />
<data name="IDPLANBE" type="int" length="4" precision="31" usage="inherit" />
<data name="IDPLAIND" type="int" length="4" precision="31" usage="inherit" />
<data name="NOMFICBBE" type="char" length="50" usage="inherit" />
<data name="NOMINTBBE" type="char" length="50" usage="inherit" />
<data name="CHEMINBBE" type="char" length="3" usage="inherit" />
</struct>
</pcml>

c eval DescFile = '/Launcher/Descriptions.pcml'
c eval StrucName = 'T_CRITSELPLANBBE'

C CallB(D) 'LNCDSCDS'
C Parm 'MyDSC' DSCNAME
C Parm CustList
C Parm Count
C Parm '*PCML' Option
C Parm DescFile
C Parm ProcName