PreviousNext
Help > Développement > Fonctions W-Langage pour AS/400 > Fonctions Appel de Programmes/Procédure > ASAppelPgm
ASAppelPgm

(en anglais ASPgmCall)

 

ASAppelPgm est une alternative à ASLanceRPC.

Le but est le même : l’appel de programmes natifs, mais avec une autre approche.

 

Tout d’abord, il n’est pas nécessaire d’importer la description du programme dans l’analyse.

Cette description pourra être :

·     soit en syntaxe PCML intégrée au programme

·     soit en syntaxe PCML dans un fichier de l’IFS

·     soit une description de programme effectuée avec le configurateur RPC/DATAQ.

 

Ensuite, les valeurs d’entrée/sortie sont passées directement à la fonction, soit un par un, soit par une variable de type structure.

 

Syntaxe

 

bResult = ASAppelPgm(DescProgramme, NomProgramme [, Connexion], Param1 [, Param2 [, Parm3, ...] ])

 

Paramètres

 

bResult

Booléen - Vrai si la commande a réussi, Faux en cas d'erreur.

DescProgramme

Chaîne – correspond à l’identité du programme. Peut être :

- *PGM/PGMNAME si PGMNAME est décrit via le configurateur RPC/DTAQ

- un chemin de l’IFS (par exemple "/pgm_defs/pgmname.pcml") vers un fichier PCML contenant la description

- une chaîne multi-ligne contenant le source PCML correspondant à la description du programme.

NomProgramme

Chaîne – correspond au nom réel du programme, ou chaîne vide si on doit utiliser le nom présent via DescProgramme. Est ignoré si DescProgramme est de la forme *PGM/XXX.

Connexion [optionnel]

Connexion - nom de la connexion

Param1, Parm2 , …

Variable ou valeurs correspondant aux paramètres.

 

Détail

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 chaîne

 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 version= 

<!-- PCML source for calling "RPCSAMPLE" program --> 

<!-- Program "RPCSAMPLE" and its parameter list --> 

 

<program name="RPCSAMPLE" path= 

 

<data name="Op1" type= length="5" precision="2" usage= 

<data name="Str1" type="char" length= usage= 

<data name="Op2" type="packed" length="5" precision="2" usage= 

<data name="Str2" type="char" length="30" usage= 

<data name="Op3" type="packed" length="10" precision="4" usage=

 

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