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

C Discussion :

Passage de paramêtres à un PGM


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut Passage de paramêtres à un PGM
    Salut,

    Dans le cadre de mon boulot, on me demande de déveloper un PGM en C (en environnement MainFrame z/OS).
    Ce programme est appelé par un autre programme assembleur qui passe 5 paramêtres lors de l'appel au pgm en C.

    Comment fait on en C pour récupérer des paramêtres passés par un programme extérieur ?

    Pour info j'ai fait un peu de C (il y a très longtemps)mais je passe en ce momment mon temps sur les tutoriaux est je ne trouve pas l'info)

    Merci

  2. #2
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par SPACHFR
    Salut,

    Dans le cadre de mon boulot, on me demande de déveloper un PGM en C (en environnement MainFrame z/OS).
    Ce programme est appelé par un autre programme assembleur qui passe 5 paramêtres lors de l'appel au pgm en C.

    Comment fait on en C pour récupérer des paramêtres passés par un programme extérieur ?

    Pour info j'ai fait un peu de C (il y a très longtemps)mais je passe en ce momment mon temps sur les tutoriaux est je ne trouve pas l'info)

    Merci
    C'est vague. Comment est appelé ton programme C ? Tu peux bien sûr récupérer les arguments passés à ton programme dans le tableau de chaines de caractères argv de la fonction main() (pt d'entrée du programme), mais je ne suis pas sûr que ce soit ton besoin. Les arguments sont passés sous forme de chaines, des conversions peuvent être nécessaires.

    Exple, si l'exécutable du code suivant s'appelle monprog, l'invocation de "monprog arg1 arg2 arg3" affichera les arguments du dernier (arg3) au premier (arg1).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <stdio.h>
    int main(int argc, char **argv) {
        while (--argc) {
          printf("Arg %d = %s\n", argc, argv[argc]);
       }
       return 0;
    }
    Attention, si c'est de l'IPC que tu as besoin, ce sera plus compliqué.

    A+

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Foobar1329
    .....du code suivant s'appelle monprog, l'invocation de "monprog arg1 arg2 arg3" affichera les arguments du dernier (arg3) au premier (arg1).
    ....
    Ne raconte pas n'importe quoi.. Avec ton code oui c'est ça..

    Mais rien n'empêche de faire de i = 1 à i < argc... ce qui est le sens normal et donne les arguments dans le bon sens..

  4. #4
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par souviron34
    Ne raconte pas n'importe quoi.. Avec ton code oui c'est ça..

    Mais rien n'empêche de faire de i = 1 à i < argc... ce qui est le sens normal et donne les arguments dans le bon sens..
    Pourquoi une telle agressivité ???
    Il n'a jamais dit le contraire que je sache.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Bon, j'ai peut-être réagi vite..

    je ne suis pas agressif du tout, mais il ne faut pas induire les gens en erreur.

    La manière dont la phrase est tournée, on comprend que "quand tu fais monprog arg1 arg2 arg3" on lit forcément les paramètres en sens inverse...

    Il met "Exemple" en début de phrase, et donc en continuation de ce qui précède et pas de ce qui suit..


    Ce qui, pour quelqu'un comme le PO, peut porter à de graves confusions..

    C'est tout...

    Désolé si j'ai froissé quelqu'un...

  6. #6
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Citation Envoyé par SPACHFR
    Comment fait on en C pour récupérer des paramêtres passés par un programme extérieur ?
    Bonjour,

    Il faut utiliser la forme de main suivante :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main (int argc, char *argv[])

    argc : nombre de paramètres passés.
    argv : tableau des paramètres.

    si argc est supérieur à 0 :

    argv[0] vaut le nom du programme.
    argv[argc] est un pointeur null.

    argv[0] à argv[argc-1] sont des pointeurs de chaîne.

    En admettant que argc = 3 :

    argv[0] : nom du programme
    argv[1] : premier paramètre.
    argv[2] : deuxième paramètre.
    argv[3] : null.

    Un simple test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
     
    int main (int argc, char *argv[])
    {
        int i = 0;
     
        for (i = 0; i < argc; i++)
        {
            printf ("argument %d : %s\n", i, argv[i]);
        }
     
       return 0;
    }
    Appel du prgramme avec trois arguments :

    E:\AppData\C\Test\Test.exe un deux trois

    produit :

    argument 0 : E:\AppData\C\Test\Test.exe
    argument 1 : un
    argument 2 : deux
    argument 3 : trois

  7. #7
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    En fait le but de ce programme est de récupérer 5 paramêtres, puis de générer un commande SNMP pour mettre à jour une MIB.

    Je ne sais pas ce qu'est un IPC.....

    Merci pour vos réponses, elles sont claires est précises.

    Quand à la façon dont le PGM assembleur fera appel au PGM en C, pour le moment je ne sais pas, je dois voir le développeur cette semaine

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

Discussions similaires

  1. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58
  2. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  3. [XSL] Passage de paramètres à un template
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2003, 13h28
  4. passage de paramètres
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/02/2003, 17h28
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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