PCML: Publier un programme CLLE
Cette article est la suite de notre série sur le PCML
Nous avons vu que pour publier un programme en RPG ILE ou COBOL ILE . Le compilateur pouvait générer pour vous le PCML, mais si vous voulez publier un programme CLLE, vous devez faire vous même le PCML, ce n’est pas très compliqué à faire …
Pour vous faciliter la vie nous avons fait un outil qui permet de publier des programmes en CLLE, en générant pour vous le PCML .
La commande s’utilise comme ceci
GENCLPCML FICSRC(QCLSRC) BICSRC(BERTHOIN) PGM(MONPGM) BIBPGM(BERTHOIN)
Vous devrez lui indiquer
- le fichier source
- la bibliothèque source
- le programme
- la bibliothèque du programme
Le paramètre IFS peut être laissé à *DFT, dans ce cas le fichier s’appelle nomdupgm.PCML et il est placé dans le répertoire courant
Le paramètre version est facultatif, par défaut il indiquera 6.0.
Limites d’utilisation
Vos paramètres doivent être sur la même ligne
PGM PARM(&PARM1 &PARM2 &PARM3)
La syntaxe suivante n’est pas reconnue :
PGM PARM(&PARM1 &PARM2 + &PARM3)
Les paramètres doivent avoir la même casse :
PGM PARM(&PARM1 &PARM2 &PARM3) DCL VAR(&PARM1) TYPE(*CHAR) LEN(10) DCL VAR(&PARM2) TYPE(*DEC ) LEN(5 0) DCL VAR(&PARM3) TYPE(*INT )
La syntaxe suivante n’est pas reconnue :
PGM PARM(&PARM1 &PARM2 &PARM3) DCL VAR(&Parm1) TYPE(*CHAR) LEN(10) DCL VAR(&pARM2) TYPE(*DEC ) LEN(5 0) DCL VAR(&parm3) TYPE(*INT )
Le type des paramètres peut être uniquement *CHAR, *DEC, *INT
Exemple d’utilisation :
Le programme source suivant MONPGM
PGM PARM(&PARM1 &PARM2 &PARM3) DCL VAR(&PARM1) TYPE(*CHAR) LEN(10) DCL VAR(&PARM2) TYPE(*DEC ) LEN(5 0) DCL VAR(&PARM3) TYPE(*INT )
Donnera comme PCML
<pcml version="6.0"> <program name="MONPGM" path="/QSYS.LIB/BERTHOIN.LIB/MONPGM.PGM"> <!-- Généré par GENCLPCML --> <!-- CLLE program: MONPGM --> <!-- created: 21/3/2018 09.16.42 --> <data name="PARM1" type="char" length="10" usage="inputoutput" /> <data name="PARM2" type="packed" length="5" precision="0" usage="inputoutput" /> <data name="PARM3" type="char" length="1" usage="inputoutput" /> </program> </pcml>
Complément :
Cette solution vous permet d’obtenir des paramètres en entrée et sortie, cas le plus usuel.
Nous avons ajouter un macro langage qui permet d’indiquer à GENCLPCML la nature de votre paramètre : vous pouvez indiquer sur la ligne de déclaration de votre variable les instructions suivantes
/*%%inp%%*/ pour un paramètre en input
/*%%out%%*/ pour un paramètre en output
Si vous n’indiquez rien votre paramètre sera en entrée/sortie
Soit le programme MONPGM
1 paramètre en entrée
1 en sortie
1 en entrée sortie
PGM PARM(&PARM1 &PARM2 &PARM3) DCL VAR(&PARM1) TYPE(*CHAR) LEN(10) /*%%inp%%*/ DCL VAR(&PARM2) TYPE(*DEC ) LEN(5 0) /*%%out%%*/ DCL VAR(&PARM3) TYPE(*INT )
Produira le PCML suivant
<pcml version="6.0"> <program name="MONPGM" path="/QSYS.LIB/BERTHOIN.LIB/MONPGM.PGM"> <!-- Généré par GENCLPCML --> <!-- CLLE program: MONPGM --> <!-- created: 21/3/2018 13.24.03 --> <data name="PARM1" type="char" length="10" usage="input" /> <data name="PARM2" type="packed" length="5" precision="0" usage="output" /> <data name="PARM3" type="char" length="1" usage="inputoutput" /> </program> </pcml>
Pour le récupérer l’outil
ci joint les sources : Télécharger le savf
- La commande (GENCLPCML)
- Le programme CLLE (GENCLPCMLC)
- Le programme RPGLE (GENCLPCMLR)
Vous devez restaurer les sources et il suffit de les compiler en indiquant PGM(GENCLPCMLC) pour la génération de la commande et de lancer celle-ci pour tester.