Lance l'exécution d'une commande sur AS/400.
Pour appeler une commande de type Retrieve voir les fonctions ASAppelRTV et ASRésultatRTV.
Pour appeler un programme voir la fonction ASLanceRPC.
Syntaxe
bResult = ASExec(Commande [, Connexion])
Paramètres
bResult
Booléen - Vrai si la commande a réussi, Faux en cas d'erreur.
Commande
Chaîne - le détail de la commande à exécuter
Connexion [optionnel]
Connexion - nom de la connexion
Détail
Seules les commandes NON INTERACTIVES (pas d'entrées clavier et de sorties écran) de l'AS/400 peuvent êtres lancées. Cette fonction ne permet pas de récupérer les valeurs de retour de la commande lancée (voir ASAppelRTV et ASRésultatRTV).
La fonction ASExec permet d'envoyer toutes sortes de commandes et elle peut être très utile à la gestion des bibliothèques (ADDLIBLE, CHGCURLIB... ) et des fichiers (OVRDBF...).
Il est conseillé d'utiliser ASExec lorsque le programme ne retourne pas de valeurs.
ASLanceRPC est à utiliser dans tous les autres cas.
Exemples
// Envoi du message "Bonjour" à l'utilisateur "QPGMR"
ASExec("SNDMSG MSG('BONJOUR')TOUSR(QPGMR)")
// Changement de la bibliothèque courante
ASExec("CHGCURLIB PROD2005")
// Création d'un récepteur, d'un journal et démarrage de la journalisation avec contrôle des erreurs
sCmd est une chaîne
sCmd="CRTJRNRCV JRNRCV(EASYCOM/TMPRCV)"
SI PAS ASExec(sCmd) ALORS
SI ExtraitChaîne(ErreurInfo(),2,CR)="CPF7010" ALORS Info("Récepteur déjà présent") SINON Info(ErreurInfo)
FIN
sCmd="CRTJRN JRN(EASYCOM/TMPJRN) JRNRCV(EASYCOM/TMPRCV)"
SI PAS ASExec(sCmd) ALORS
SI ExtraitChaîne(ErreurInfo(),2,CR)="CPF7015" ALORS Info("Le récepteur contient déjà ce poste de journal") SINON Info(ErreurInfo)
FIN
sCmd="STRJRNPF FILE(EASYCOM/SP_CUST) JRN(EASYCOM/TMPJRN)"
SI PAS ASExec(sCmd) ALORS
SI ExtraitChaîne(ErreurInfo(),2,CR)="CPF7030" ALORS Info("Fichier déjà journalisé") SINON Info(ErreurInfo)
FIN
Dans l'exemple avec AsAppelRTV et ASRésultatRTV on utilise un RTVMBRD pour récupérer des propriétés d'un fichier mais on peut imaginer aussi la création d'un fichier avec un DSPFD
ASExec("DSPFD FILE(EASYCOM/SP_CUST) TYPE(*MBR) OUTPUT(*OUTFILE) OUTFILE(QTEMP/SORTIE)")
sortie est une Source de Données
HDéclareExterne("QTEMP/SORTIE",sortie,MaConnexion)
HLitPremier(sortie)
Info("Nombre d'enregistrements :"+sortie.mbnrcd)
Info("Nombre d'enregistrements supprimés :"+sortie.mbndtr)
ASExec("DLTF FILE(QTEMP/SORTIE)")