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 + |
Paramètres
Paramètres |
|
&DSC_NAME |
Nom
donné à la source de données.
|
&DS |
Variable
de programme désignant le début du tableau de structures de données (DS) à
référencer.
|
&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 |
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