IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

Passage de paramètres variables dans STRPCCMD


Sujet :

AS/400

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 20
    Points
    20
    Par défaut Passage de paramètres variables dans STRPCCMD
    Bonjour à toutes et à tous,

    Voici mon problème:
    J'utilise actuellement la commande système STRPCCMD pour exécuter un script .bat prenant lui-même un argument. Cet argument, US400 contient le nom d'un utilisateur renseigné précédemment dans le programme. Or, quand j'exécute le tout, le programme prend US400 en tant que tel et pas son contenu. J'ai essayé plusieurs syntaxes trouvées dans les méandres d'internet sans succès. Existe-t-il une solution?

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    STRPCCMD reçoit une chaîne de caractères comme commande à exécuter.

    Il suffit de construire sa chaîne de caractères et d'appeler STRPCCMD
    Attention toutefois à ne pas oublier de doubler les quotes s'il y en a !

    Exemple dans un CLP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PGM
    DCL  &CMD *CHAR 50
    DCL  &USER *CHAR 10
    RTVJOBA USER(&USER)
    CHGVAR &CMD ('C:\Repertoire\fichier.bat' *BCAT &USER)
    STRPCO
    MONMSG CPF0000
    STRPCCMD &CMD
    MONMSG CPF0000
    ENDPGM

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Merci, je vais essayer

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Quelques remarques en passant.

    1/ Derrière STRPCO, il faut ignorer le message IWS4010 et non pas CPF0000.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     strpco         
     monmsg iws4010 /* Intégrateur déjà démarré */
    2/ La commande STRPCCMD est ultra limitative :
    • Le paramètre PCCMD de la commande STRPCCMD ne peut pas excéder 128 caractères.
    • La commande STRPCCMD ne peut s'exécuter que sur le PC qui lance le programme qui la contient.
    • Le traitement est uniquement interactif et asynchrone entre l'AS400 et le PC.

    3/ Ignorer tous les éventuels messages CPF en retour d'une commande ou d'un programme n'est pas la bonne méthode. Il vaut mieux que le programme se plante plutôt que de ne pas savoir qu'il y a eu un problème.

    4/ Il vaudrait mieux démarrer le service "Fonction Commande à distance d'iSeries Access for Windows" et utiliser ensuite la commande RUNRMTCMD qui offre de bien meilleures possibilités.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Bon!
    ça fonctionne, mais j'ai tout fait en RPG free, pas en CLP. J'avais un problème de quote mal placée. Merci pour tout

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Pour celles et ceux qui s’intéressent au code, voici la partie principale:

    cmd='''d:\netuse.bat '+%trim(US400);
    cmdc=%trim('STRPCCMD PCCMD('+%trim(cmd)+''')');
    qcmdexc (cmdc:cmdl);

    avec cmdl qui a la même taille que cmdc, à savoir, 128. Et US400 est le paramètre contenant le nom d'utilisateur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage d'une variable dans une procédure
    Par Sakapatate dans le forum Langage
    Réponses: 19
    Dernier message: 03/06/2007, 10h22
  2. passage d'une variable dans un formulaire
    Par porco dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2007, 13h08
  3. Passage de paramètres php dans un HREF
    Par duckaurore dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2007, 15h39
  4. Passage de deux variable dans l'url
    Par Sam 069 dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2006, 10h14
  5. passage d'une variable dans une frame
    Par Atchoum_002 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2005, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo