Pour une première approche, vous pouvez consulter l’exemple ‘PgmCall’ qui montre différentes façons d’appeler le programme RPCSAMPLE via ASAppelPgm.
Pour les programmes simples, on peut par exemple donner les paramètres un par un à ASAppelPgm. Par exemple :
SI PAS ASPgmCall("*PGM/RPCSAMPLE", "", cnx, OP1, STR1, OP2, STR2, OP3) ALORS
Erreur(ErreurInfo(errComplet))
FIN
Il faut dans ce cas que les valeurs fournies soient bien sûr dans le même ordre. La description fournie (ici une description Easycom) sert à connaître les tailles AS/400 et usages de chaque élément.
Il est également possible de fournir une structure. Par exemple :
STStrpcsample est structure
rOp1 est réel
sStr1 est chaîne sur 20
sOp2 est réel
sStr2 est chaîne sur 30
rOp3 est réel
FIN
stRpcSample est STStrpcsample
stRpcSample:rOp1 = OP1
stRpcSample:sStr1 = STR1
stRpcSample:sOp2 = OP2
stRpcSample:sStr2 = STR2
SI PAS ASPgmCall("*PGM/RPCSAMPLE", "", cnx, stRpcSample) ALORS
Erreur(ErreurInfo(errComplet))
FIN
La structure devra bien entendu refléter les paramètres véritables.
Enfin, il est également possible d’utiliser une syntaxe PCML présente dans un fichier de l’IFS. Par exemple:
SI PAS ASPgmCall("/tmp/rpcsample.pcml", "", cnx, OP1, STR1, OP2, STR2, OP3) ALORS
Erreur(ErreurInfo(errComplet))
FIN
La syntaxe PCML pour RPCSAMPLE est la suivante :
<!-- PCML source for calling "RPCSAMPLE" program -->
<!-- Program "RPCSAMPLE" and its parameter list -->
<program name="RPCSAMPLE" path="/*LIBL.lib/RPCSAMPLE.pgm">
<data name="Op1" type= length="5" precision="2" usage="input"/>
<data name="Str1" type="char" length= usage="input"/>
<data name="Op2" type="packed" length="5" precision="2" usage="inputoutput"/>
<data name="Str2" type="char" length="30" usage="inputoutput"/>
<data name="Op3" type="packed" length="10" precision="4" usage="output"/>
</program>
</pcml>
Il est également possible de passer directement le PCML à la place du nom du fichier.
C’est un langage conçu par IBM pour les appels de programmes et peut être généré en sortie de compilation COBOL ou RPG ILE. Nous y retrouvons les types natifs, et la possibilité de decrire une procédure de programme de service.