> Tech > 5. Exécuter des commandes avec la fonction system()

5. Exécuter des commandes avec la fonction system()

Tech - Par iTPro - Publié le 24 juin 2010
email

Pour exécuter une commande CL à  partir d'un programme RPG, on utilise couramment les API QCMDEXC ou QCAPCMD. Mais il sera parfois plus pratique d'utiliser une fonction bibliothèque runtime C, system(), pour faire la même chose. La fonction system() passe une chaîne de commandes au processeur de commandes, sans qu'il

5. Exécuter des commandes avec la fonction system()

soit nécessaire de préciser la longueur,
ou tout autre paramètre, de la chaîne
de commande.
Pour appeler la fonction system(),
il suffit de lui passer un pointeur vers la
chaîne de commandes. La figure 2 (en
A) illustre le prototype suggéré (avec
quelques H-specs nécessaires). Quand
le moment viendra pour le programme
d’exécuter une commande, on peut se
référer au prototype. La chaîne de
commandes peut être une variable, un
littéral, une constante nommée ou une
expression. Le reste du code de la figure
2 montre un usage classique.
Le Returncode permet de constater
la réussite ou l’échec de la fonction
system(). Il est de 0 si la commande
réussit et de 1 si la commande échoue.
Si l’on passe un pointeur null à  une
chaîne, system() renvoie -1 et le
processeur de commandes n’est pas
appelé.
Si la fonction system() échoue
(c’est-à -dire, si le Returncode est 1),
elle établit une variable globale _EXCP
_ MSGID avec l’ID message CPF. On
peut alors importer cette variable dans
le programme pour rechercher des
erreurs spécifiques, comme l’illustre le
code mis en évidence dans la figure 3.
Pour utiliser la fonction system(), il
faut faire référence au répertoire binding
QC2LE lors de la compilation
et/ou du binding du programme. La figure
3 nomme QC2LE dans les Hspecs.

Téléchargez gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 24 juin 2010