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 :

Creation d'une commande Prompt


Sujet :

AS/400

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Creation d'une commande Prompt
    Bonjour a Tous !

    Je souhaite creer un CL afin de redemarrer des editeurs(imprimantes), mais il faudrait que je demande a l'utilisateur de SAISIR le nom de l'imprimante afin de pouvoir recuperer la valeur saisie (dans une variable ) et ensuite la recuperer dans mon CL.

    Et il possible de creer un prompt simple ?

    style : CMD PROMPT('Saisir le nom de l'imprimante...')

    Je n'ai pour l'instant que des petites connaissances en CL.

    J'ai eu une autre idee, ce serait de creer un ecran DSPF, mais je ne sais pas comment manipuler ensuite l'ecran et les donnees, j'ai vu qu'il faut creer :

    un CL : ok
    un DDS ? ( du chinois)
    un RPG ? ( pire que du chinois :-( )

    Merci beaucoup de votre aide !

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Te casse pas trop la tête. Dans ton CL, tu fais précéder le paramètre que tu voudrais faire changer par l'utilisateur par ?? et celui que tu veux protéger par ?*, exemple :

    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RLSWTR ??WTR(PRT01) ?*PAGE(1)
    Voir : Prompt for user input at runtime dans la brochure CL Programming (CLP Programming And Concepts) ou dans ce lien de la V6 / http://publib.boulder.ibm.com/infoce...doc/allow.html

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Super !
    Merci.
    Effectivement je connaissez cette parade car je l'utilise pour debloquer des utilisateurs si l'utilisateur saisie est en status *DISABLED.

    Le probleme est que je ne vois pas comment je peux recuperer la valeur saisie dans une variable... pour faire certains controle.
    Par exemple ne pas demarre l'editereur si il est deja demarre...etc..

    Je sais utiliser la commande RTV mais dans le cas ou ca n'existe pas je ne peux pas creer des variables ?

    Exemple de mon CL pour les utilisateurs ( un petit morceau)

    ==
    /* DECLARATION DES VARIABLES POUR EXTRAIRE LES INFOS DU PROFIL SAISI */
    DCL VAR(&STATUS) TYPE(*CHAR) LEN(10)
    DCL VAR(&PROFIL) TYPE(*CHAR) LEN(10)

    RTVUSRPRF ??USRPRF(USER_AICI) RTNUSRPRF(&PROFIL) +
    STATUS(&STATUS)

    /*===================================================================
    /* INTERDIT LE DEBLOCAGE DE CERTAINS COMPTES PAR UN UTILISATEUR LAMBDA
    /*===================================================================
    IF COND(&PROFIL *EQ HOTLINE) THEN(GOTO +
    CMDLBL(INTERDIT))
    IF COND(&PROFIL *EQ QSECOFR) THEN(GOTO +
    CMDLBL(INTERDIT))
    IF COND(&PROFIL *EQ QPGMR) THEN(GOTO +
    CMDLBL(INTERDIT))

    IF COND(&PROFIL *EQ ZZMQ) THEN(GOTO +
    CMDLBL(INTERDIT))
    /*===================================================================


    Dans tout les cas merci pour ces réponses TRES RAPIDE !!

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Voici un petit exemple vite fait d'une commande et de son programme associé :

    Code Commande STRWTRCMD : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    0001.00 CMD PROMPT('Démarrer Imprimante')                                               
    0002.00                                                                                 
    0003.00              PARM       KWD(IMPR) TYPE(*CHAR) LEN(10) +                         
    0004.00                           MIN(1) PROMPT('Imprimante à démarrer')
    Code Programme STRWTRCMD : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    0001.00  DEBUT:      PGM parm(&impr)                                                      
    0002.00              dcl &impr *char 10                                                   
    0003.00              STRPRTWTR  DEV(&IMPR)                                                
    0005.00              ENDPGM

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut encore un peu d'aide please
    Merci pour cette aide précieuse cependant il me manque quelques infos.

    A ce jour je n'ai fait que du CL.

    Pourriez vous me guider dans les grandes lignes pour créer concrètement cette commande.
    C'est exactement ce que je cherchais, et il ne reste plus qu'a le mettre en oeuvre.

    Dois je créer un fichier CPP, CL, RPG... ? ( chose que je ne sais pas faire encore)

    Vraiment je sais que c'est lourd de répondre a des débutants mais je suis énormément motive :-))

    Encore merci de votre réactivité, car j’apprécie vraiment.

  6. #6
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Non ce n'est pas "lourd" de répondre à des débutants lorsqu'ils font des efforts.

    - pour le programme CL, tu fais comme d'habitude. Tu crées un membre source de type CLP dans le fichier QCLSRC et tu compiles par l'option 14 de PDM ou la commande CRTCLPGM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0001.00  DEBUT:      PGM parm(&impr)                                                      
    0002.00              dcl &impr *char 10                                                   
    0003.00              STRPRTWTR  DEV(&IMPR)                                                
    0005.00              ENDPGM
    - pour la commande, tu fais pareil : tu crées un membre source de type CMD dans le fichier QCMDSRC, si ce dernier n'existe pas tu le crées par CRTSRCPF. Dans le membre source, de type CMD donc, tu saisis les spécifications source de la commande et tu compiles par l'option 14 de PDM ou la commande CRTCMD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0001.00 CMD PROMPT('Démarrer Imprimante')                                               
    0002.00                                                                                 
    0003.00              PARM       KWD(IMPR) TYPE(*CHAR) LEN(10) +                         
    0004.00                           MIN(1) PROMPT('Imprimante à démarrer')
    - Le plus simple et usuel, tu donnes le même nom à la commande et au programme CL.

    - pour exécuter la commande, tu tapes son nom suivi des paramètres, ici un seul le nom de l'imprimante, ou tu tapes le nom puis F4. Comme j'ai MIN(1), si tu tapes la commande et que tu fais entrée direct, tu seras prompté pour saisir le nom de l'imprimante.

    - et n'oublie pas de regarder la doc, sans elle on n'avance pas.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut je n'y arrive pas
    Bonjour !

    Je viens de creer le CL comme indique et aussi le membre source CMD = OK

    Une fois tout compile, par d'erreur (00), mais quand je lance le programme, je suis oblige de saisir moi meme la variable &IMPR.

    Si je ne passe pas le paramètre, je ne peux pas continuer.

    je doit pas avoir compris la derniere phrase du post :
    si tu tapes la commande et que tu fais entrée direct, tu seras prompté pour saisir le nom de l'imprimante.

    Si je fait entrée direct après le F4 et sans saisir le nom de l'imprimante, il me dit :

    < Les param}tres pass{s par CALL ne correspondent pas @ ceux attendus.>

    Voici comment je fait..
    J'appelle le programme comme ceci

    CALL NDLGECEF/ACTIVPRINT PARM(MON IMPRIMANTE)

    Le programme fonctionne seulement si je saisie le nom de l'imprimante.
    Mon problème est que je n'arrive jamais sur le prompt que j'ai besoin :

    ('Démarrer Imprimante')


    Ou me suis je planter ?


    Une dernière question :
    Dans le code CL il y a le label DEBUT: , mais a quoi sert il ?

    Merci bien.

  8. #8
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Pour exécuter (appeler) un programme, on fait bien CALL monprog.

    Par contre, pour exécuter une commande, on tape directement son nom sur la ligne de commande. Et c'est la commande qui te fais saisir le paramètre IMPR et le passer au programme qui lui est associé :
    Dans mon cas, la commande et son programme associé s'appellent tous les deux STRWTRCMD, donc pour exécuter la commande, je fais :

    STRWTRCMD IMPR(monimprimante) ou STRWTRCMD 'monimprimante' ==> start direct de l'imprimante 'monimprimante'
    ou
    STRWTRCMD + F4 ou STRWTRCMD + 'Entrée' ==> le petit format s'affiche pour permettre la saisie de 'monimprimante' dans la paramètre IMPR.

    Le label 'DEBUT', là où il est, il ne sert à rien sauf à la lisibilité du programme.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut PARFAIT !!!!!!
    Ca marche, merci beaucoup !!!!!!

Discussions similaires

  1. Création d'une commande .bat
    Par sseneor dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/05/2007, 18h43
  2. Erreur sur une invite de commande @prompt
    Par poog49 dans le forum Designer
    Réponses: 1
    Dernier message: 16/01/2007, 20h00
  3. Création d'une commande
    Par paco69 dans le forum Linux
    Réponses: 3
    Dernier message: 24/06/2006, 17h26
  4. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 10h36
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 13h36

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