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 :

Recuperation de la valeur d'une variable après un sbmjob


Sujet :

AS/400

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Recuperation de la valeur d'une variable après un sbmjob
    Bonjour,
    Je viens de commencer à apprendre le développement COBOL sur l'as/400 et aussi le langage de contrôle
    Je voudrais savoir comment je pourrais faire attendre l’exécution de mon CL jusqu'à la fin de l’exécution de mon programme cobol que j'ai submiter avec SBMJOB afin de récupérer la valeur d'une variable en sortie de mon programme cobol et l'utiliser par la suite dans mon CL

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 683
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    Si le CL doit attendre, pourquoi avoir soumis le travail ?
    Autant appeler le Cobol directement et récupérer le paramètre en retour.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    non juste parce qu’au niveau du CL je fais un sbmjob CMD(CALL PGM(PGM1) PARM(&VAR1)) et au niveau de la suite du CL je veux récupérer la valeur de &VAR1 et l'utiliser pour la suite du traitement du CL
    car le SBMJOB exécute la commande et continue le traitement alors que mois je veux bloquer le traitement jusqu'à la fin de l'exécution du PGM1

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 683
    Points : 984
    Points
    984
    Par défaut
    C'est bien ce que je dis...
    Inutile de faire un SBMJOB ! Fais un simple CALL.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    oui j'ai déjà testé ça et ça marche mais ils m'ont dis que je dois utiliser un SBMJOB

  6. #6
    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
    Peut-être fais-tu un call pgmclp qui lui fait un sbmjob du cmd1 ?
    Dans ce cas, tu fais un sbmjob du programme pgmclp qui fait un call pgm1

    Sinon, je plussoie avec mk4-Hurrican. Pourquoi faire un sbmjob pour ensuite attendre la fin du programme et récupérer une variable en retour ? Le call fait ça très bien ...

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    L'idée c'est de faire communiquer mon cl et le programme cobol que j'ai soumis

  8. #8
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 683
    Points : 984
    Points
    984
    Par défaut
    Ok, en fait çà n'est pas pour une utilisation réelle, mais pour te tester !

    Dans ce cas, le mieux est d'utiliser une technique simple. Moins c'est usine à gaz mieux c'est. Et surtout utiliser les capacités de l'OS.
    Tu as plusieurs possibilités.
    - Un traitement par message. RCVMSG MSGQ(NomBibl/NomMsgQ) WAIT(*MAX). Ton CL lance çà, et se place automatiquement en attente, sans consommer de CPU. Lorsqu'il reçoit le message du programme Cobol (qui appellera en fin de traitement un CL qui fera un SNDPGMMSG), il va automatiquement redémarrer et récupérer le message qui contiendra la valeur de retour.
    - Un traitement par DataQueue. Là il faut utiliser du CL ILE. Il attend qu'une donnée soit placée dans la DataQueue (API RCVDTAQ) , que le Cobol remplira lui avec la valeur en retour. C'est le plus propre et le plus moderne, mais çà demande un peu plus de connaissances puisqu'on passe par de API.
    - Sinon tu peux faire du brut "à l'ancienne". Le CL boucle (avec une petite attente entre chaque test avec DLYJOB) en attendant qu'une DTAARA donnée soit verrouillée. Quand le cobol démarre il verrouille la DTAARA devant contenir la valeur de retour et la DTAARA que le CL teste en 1er. Une fois que le CL ne peut plus accéder à la 1ère DTAARA, il boucle à nouveau en attendant de pouvoir allouer la DTAARA de retour. Dès que le Cobol a fini, il met à jour cette DTAARA et en quittant il va la libérer, permettant au CL de la récupérer.

    Voilà, à toi de jouer.

Discussions similaires

  1. VBA, perte de valeur d'une variable aprés avoir activé une autre feuille
    Par mikeactuaire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2011, 08h13
  2. Réponses: 10
    Dernier message: 29/09/2009, 16h20
  3. Recuperation de la valeur d'une variable
    Par bruce207 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/12/2007, 19h05
  4. Réponses: 3
    Dernier message: 16/08/2006, 16h11
  5. Réponses: 2
    Dernier message: 23/10/2005, 19h05

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