> Tech > Écrire le format source des commandes

Écrire le format source des commandes

Tech - Par iTPro - Publié le 13 mars 2013
email

Les commandes sont définies au moyen d’un code source de commande.

Le nom du fichier source habituel est QCMDSRC. Pour cet exemple, j’utilise le fichier source QCMDSRC dans la bibliothèque CMDLIB. Le type source pour le code source de commande CL est CMD.

L’exemple ci-après est le code source pour une nouvelle commande, DSPDEVIP (Display Device IP Address). Il est téléchargeable chez System i Network. La commande accepte un nom d’unité comme paramètre d’entrée. Le programme associé détermine ensuite l’adresse IP de l’unité, puis envoie un message à l’utilisateur indiquant l’adresse IP courante de l’unité.

CMD PROMPT(‘Display Device IP Address’)
PARM KWD(DEVD) TYPE(*NAME) LEN(10) PROMPT(‘Device +
description’)

À noter que le paramètre DEVD est du type *NAME, ce qui restreint l’entrée à des noms valides d’objets IBM i. Cela rejette un paramètre tel que *DSP024, qui n’est pas un nom d’unité valide. Quand un paramètre de commande demande en entrée un nom valide, utilisez le TYPE *NAME, *SNAME, ou *CNAME. Pour savoir lequel est approprié pour vous, voyez le texte d’aide (F1) de la commande PARM. N’utilisez pas le TYPE *CHAR quand un nom valide est demandé, sous peine de provoquer des erreurs de commande à l’exécution.

La commande s’exécuterait ainsi :

DSPDEVIP DEVD(DSP024)

Créez la commande en utilisant :

CRTCMD CMD(CMDLIB/DSPDEVIP) PGM(DSPDEVIP)
HLPPNLGRP(DSPDEVIP)
HLPID(DSPDEVIP) PRDLIB(CMDLIB)

Je créerai le texte d’aide ultérieurement, mais vous pouvez le spécifier dès à présent. L’activation de la commande se traduit par une invite à entrer une adresse IP d’unité.

La figure 2 (voir Club Abonné) contient le code source CL pour le Command Processing Program (CPP) DSPDEVIP. Les paramètres dans le CPP doivent respecter l’ordre des paramètres du code source de définition de commande. Le programme envoie un message à l’utilisateur indiquant l’adresse IP de l’unité. Et si nous voulons que l’adresse IP soit renvoyée dans une variable CL plutôt qu’affichée ? Nous pouvons créer une nouvelle commande et ajouter un paramètre pour renvoyer la valeur.

La figure 3 (voir Club Abonné) montre le code source de commande pour la commande RTVDEVIP (Retrieve Device IP). Le code pour la commande RTVDEVIP peut être téléchargé sur le site System i Network. Dans cette définition, j’ajoute le second paramètre pour l’adresse IP renvoyée. Le paramètre RTNVAL spécifie qu’une valeur sera renvoyée dans une variableCL. Ainsi, quand la commande RTVDEVIP sera utilisée dans un programme CL, le paramètre IPADDRESS sera un nom de variable qui reçoit l’adresse IP, comme dans :

RTVDEVIP DEVD(DSP01) IPADDRESS(&IPADDR)

La figure 4 (voir Club Abonné) montre le code source CL pour le programme RTVDEVIP. Pour créer la commande, utilisez ceci :

CRTCMD CMD(CMDLIB/RTVDEVIP) PGM(RTVDEVIP)
SRCFILE(CMDLIB/QCMDSRC) ALLOW(*IPGM
*BPGM)

Le paramètre ALLOW précise que cette commande ne peut être utilisée que dans un programme interactif (*IPGM) ou batch (*BPGM). Une variable de renvoi étant nécessaire, la commande ne peut pas être exécutée à partir d’une ligne de commandes.

La figure 5 (voir Club Abonné) montre l’invite de commande RTVDEVIP. À noter que l’invite de cette commande de manière interactive renverra le message, Command RTVDEVIP not allowed in this setting. (Commande RTVDEVIP non autorisée ici). Du fait que la commande renvoie la variable CL IPADDRESS, elle doit être utilisée à l’intérieur d’un programme. D’autres commandes d’extraction, comme RTVJOBA (Retrieve Job Attribute), ont les mêmes exigences.

Téléchargez gratuitement cette ressource

Comment sécuriser la Digital Workplace ?

Comment sécuriser la Digital Workplace ?

Avec le recours généralisé au télétravail, les entreprises ont ouvert davantage leur SI. En dépit des précautions prises, elles ont mécaniquement élargi leur surface d’exposition aux risques. Découvrez 5 axes à ne pas négliger dans ce Top 5 Sécurité du Télétravail.

Tech - Par iTPro - Publié le 13 mars 2013