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 :

comment exécuter des programmes AS400 en dot/net


Sujet :

AS/400

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut comment exécuter des programmes AS400 en dot/net
    bonjour

    je ne connais rien en AS/400
    Je fais un dév en dot.net C# pour exécuter des programmes existants sur l'AS/400 et en récupérer les résultats.
    j'utilise la DLL IBM fournie par la ligne :

    using IBM.Data.DB2.iSeries;

    Ensuite je fais mes connexions et je prépare mes objets avec du code standard tel que :

    iDB2Connection CnxIBM = new iDB2Connection;
    iDB2Command CmdIBM = new iDB2Command;

    Je fais le lien entre la connexion et la commande :

    CmdIBM = new iDB2Command
    {
    Connection = CnxIBM,
    CommandType = CommandType.Text
    };

    Je mets une commande dans la chaîne :

    CmdIBM.CommandText = "CALL PGM(TRUST/CHKAS_INT)";
    (TRUST est une bibliothèque-programme sur l'AS400, utilisée tous les jours par des menus)

    J'exécute la commande et je récupère mon résultat dans un objet DataReader :

    iDB2DataReader Dr = Cmd.ExecuteReader();

    A ce moment là, la commande est envoyée à l'AS400 et j'en attends un retour qui doit être "enregistré" dans l'objet DataReader

    Mais j'ai le message d'erreur suivant :
    SQL0206 La colonne ou la variable globale QZ99B3E6962CB15001 est introuvable.

    Attention, cette commande fonctionne en direct sur l'AS400 !

    si je change de commande, avec celle-ci :

    CmdIBM.CommandText = "WRKACTJOB"

    j'obtiens l'erreur :
    SQL0104 Elément syntaxique WRKACTJOB n'est pas correct. Eléments possibles : ( CL END GET SET CALL DROP FREE HOLD LOCK OPEN WITH ALTER.

    Attention, cette commande fonctionne aussi en direct sur l'AS400 !

    idem avec pleins d'autres commandes/programme

    Je ne peux exécuter aucune commande ni aucun programme AS400 dans mon application dot.Net
    Dois-je rajouter du code d'initialisation ?

  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
    Apparemment, l'objet iDB2Command permet de passer une commande SQL et non une commande OS.
    Essaie une commande SELECT * FROM unfichier pour voir.
    Le CALL est un call SQL et non un call d'un programme standard.

  3. #3
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Bonjour,

    Tu exécutes des commandes SQL, wrkactjob est une commande système.
    Pour moi, il y a lieu de créer ce que l'on appel une job description dans laquelle tu met les bibliotèques qui doivent être en ligne lorsque tu te connectes.
    Après, le mieux pour exécuter des programmes qui renvoient des données est de passer par des procédures stockées qui elle appelle un programme.

    CREATE PROCEDURE malib.monpgm ()
    DYNAMIC RESULT SETS 1
    LANGUAGE RPGLE
    SPECIFIC malib.monpgm
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    EXTERNAL NAME ' malib.monpgm'
    PARAMETER STYLE GENERAL ;

    Il y a aussi autre chose à voir, tape STRSQl sur l'as/400 et fait ton call.

    L'erreur devrait être la même.

    Larry57

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    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 : 691
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    Formulary te pousse sur la bonne voie.
    En l'occurence, la commande que tu passes via cet objet est une requête SQL.
    Pour que ton appel par CALL fonctionne, il faut que le programme ait été déclaré comme procédure stockée.
    La commande WKRACTJOB, est une commande système, et pour la même raison, n'est pas considérée comme un mot clé SQL valide.

    Je n'ai pas l'habitude de travailler en dot.net, j'avoue encore utiliser les "vieilles" bibliothèques, parce que mes projets en VB6 sont tellement importants que çà prendraient des années à tout réécrire. Mais dans les anciennes possibilités, à vérifier si tu as les mêmes en dot.net, en plus de l'objet "command", il y a un objet "program". Et là par contre, çà devrait fonctionner bien plus simplement.

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par FORMULARY Voir le message
    Apparemment, l'objet iDB2Command permet de passer une commande SQL et non une commande OS.
    Essaie une commande SELECT * FROM unfichier pour voir.
    Le CALL est un call SQL et non un call d'un programme standard.

    merci de ta réponse

    je n'ai qu'un liste de commande/programmes à exécuter
    Je ne connais aucun nom de fichiers sur l'AS400
    d coup je ne peux pas écrire une requête SQL complète

    Je comprends bien mon erreur :

    DONC

    sur l'AS400, un menu cache des commandes derrière chaque option
    j'ai récupérer les commandes cachée dans une liste
    je veux les exécuter par mon application dot.net pour éviter de me connecter à l'AS400 et de l'automatiser aussi

    comment faire ?

  6. #6
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Je pense qu'il y a un soucis concernant ta demande.
    Tes programmes sur as/400 affichent des données sur une écran ?
    Si tel est le cas, il n'est pas possible de reprendre les données autrement que par un sql.

    Tu peux faire ainsi.
    tu lances ton programme sur as/400
    Tu appuis sur la touche SysReq de ton clavier, il y a une ligen en bas, tu tape 3 puis 14 Fichiers ouverts puis f11 et tu as les fichiers utilisé par le programme.

    Larry57

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Bonjour,

    ...
    Pour moi, il y a lieu de créer ce que l'on appel une job description dans laquelle tu met les bibliothèques qui doivent être en ligne lorsque tu te connectes.
    Merci de ta réponse
    J'ai bien compris le problème
    1 - La bibliothèque que je dois utiliser est dans mon cas : TRUST
    2 - Le Job Description doit être créé où ? sur l'AS400 ? je ne saurais pas le faire.
    Je sais cependant qu'avec mon loging/mdp AS400, utilisé soit en direct (sur la console AS400) ou par l'application dot.net, j'ai automatiquement chargé la bibliothèque TRUST (profil AS400 paramétré par un admin)


    Après, le mieux pour exécuter des programmes qui renvoient des données est de passer par des procédures stockées qui elle appelle un programme.

    CREATE PROCEDURE malib.monpgm ()
    DYNAMIC RESULT SETS 1
    LANGUAGE RPGLE
    SPECIFIC malib.monpgm
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    EXTERNAL NAME ' malib.monpgm'
    PARAMETER STYLE GENERAL ;
    Cette procédure stockée doit être placée où ? du côté AS400 ? je ne pense pas pouvoir le faire dans ce cas. Sinon OK pour le faire du côté client (application dot.net)

    Si je comprends bien cette SP, je dois l'exécuter pour chaque commande dont je souhaite récupérer un résultat.

    Peux-tu me confirmer tout cela, que je parte du bon côté stp ? et merci encore pour ton travail


    Il y a aussi autre chose à voir, tape STRSQl sur l'as/400 et fait ton call.

    L'erreur devrait être la même.

    Larry57
    oui, je suis sur la console AS400, et j'ai une grille dans une interface SQL AS400
    Quand je saisi "CALL PGM(TRUST/CHKAS_INT)" j'obtiens :
    La colonne ou la variable globale TRUST est introuvable ...

    pour rappel, TRUST est ma bibliothèque

    si j'enlève TRUST, en laissant ainsi :
    "CALL PGM(CHKAS_INT)", j'obtiens :
    La colonne ou la variable globale CHKAS_INT est introuvable ...

  8. #8
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Je pense qu'il y a un soucis concernant ta demande.
    Tes programmes sur as/400 affichent des données sur une écran ?
    Si tel est le cas, il n'est pas possible de reprendre les données autrement que par un sql.
    Oui, les données sont normalement affichées sur l'écran de la console AS400. Je veux récupérer toutes ces données par mon application dot.net et les insérer dans un ficheir txt pour analyse manuelle ensuite (ou via un parseur)

    DONC : je dois passer par une SP SQL, je comprends bien cela.

    Tu peux faire ainsi.
    tu lances ton programme sur as/400
    Tu appuis sur la touche SysReq de ton clavier, il y a une ligen en bas, tu tape 3 puis 14 Fichiers ouverts puis f11 et tu as les fichiers utilisé par le programme.

    Larry57
    je n'ai pas de touche SYSReq sur mn clavier de PC ...
    elle doit correspondre à une autre touche sans doute ... je teste ALT + ImpEcran ... rien ne se passe ...

  9. #9
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Tu doit aussi remplacer ton call pgm() par un call CHKAS_INT. Le call pgm() ne s'exécute pas en sql.
    Si tu as i/series naviagtor, tu peux faire un click droit pour le sysreq.

    Larry57

  10. #10
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    Bonjour,

    Formulary te pousse sur la bonne voie.
    En l'occurence, la commande que tu passes via cet objet est une requête SQL.
    Pour que ton appel par CALL fonctionne, il faut que le programme ait été déclaré comme procédure stockée.
    La commande WKRACTJOB, est une commande système, et pour la même raison, n'est pas considérée comme un mot clé SQL valide.
    Oui, je comprends bien que une commande SYSTEM et un programme à lancer ne sont pas des procédures stockées (SP).
    Donc je dois les lancer différemment ou les transformer en SP.

    L'idée est néanmoins de ne rien modifier sur l'AS400, et de tout faire dans dot.net

    ... à vérifier si tu as les mêmes en dot.net, en plus de l'objet "command", il y a un objet "program". Et là par contre, çà devrait fonctionner bien plus simplement.
    OK, je vais chercher la commande PROGRAM et les infos s'y rapportant

    merci à toi

  11. #11
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Tu doit aussi remplacer ton call pgm() par un call CHKAS_INT. Le call pgm() ne s'exécute pas en sql.
    dans STRSQL de l'AS400 ? ou dans mon appli dot.net ?
    OK, je teste sur l'AS400

    Si tu as i/series naviagtor, tu peux faire un click droit pour le sysreq.
    Larry57

    merci
    j'utilise IBM Personnal COmmunication, mais peut-être ai-je aussi Navigator vu que j'ai i/series SDK...
    je cherche...

  12. #12
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Tu doit aussi remplacer ton call pgm() par un call CHKAS_INT. Le call pgm() ne s'exécute pas en sql.

    Larry57
    oui, ça marche mieux sur l'AS400 !

    si je tape call CHKAS_INT, j'obtiens mon résultat sur la console AS400
    cela veut dire que CHKAS_INT est du SQL (dans une procédure stockée) sur l'AS400

    ok je comprends mieux mes erreurs ...
    reste à corriger mon programme dot.net

  13. #13
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    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 : 691
    Points : 996
    Points
    996
    Par défaut
    On va peut être reprendre le problème à la base, car un commentaire de Larry57 qui semble t'avoir échappé pourrait être très important.
    A l'instar de la commande WRKACTJOB qui affiche les travaux actifs dans l'écran de l'émulateur où on a saisi la commande, le fameux programme CHKAS_IN renvoie t'il des données à l'écran ? Si oui, c'est grillé.

    Les procédures stockées se définissent sur le serveur, c'est une simple commande SQL à passer comme l'a montré Larry57 dans son premier post. Je ne vois pas pourquoi on te refuserait de les créer, si on accepte que tu appelles le programme, puisqu'en gros c'est juste l'interface SQL du programme...

    Edit : à priori tu as avancé pendant que je tapais. Donc c'est déjà une procédure stockée. Ton problème est quasiment résolu alors.

  14. #14
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    On va peut être reprendre le problème à la base, car un commentaire de Larry57 qui semble t'avoir échappé pourrait être très important.
    A l'instar de la commande WRKACTJOB qui affiche les travaux actifs dans l'écran de l'émulateur où on a saisi la commande, le fameux programme CHKAS_IN renvoie t'il des données à l'écran ? Si oui, c'est grillé.
    oui je viens de retester et j'ai la réponse à t question :

    sur la console AS400 :

    1 - si je tape CHKAS_INT, j'ai une erreur qui me dit que la commande n'existe pas dans la bibliothèque courante *LIBL
    2 - si je charge ma bibliothèque TRUST (go trust) : j'ai exactement le même message
    3 - si je tape call CHKAS_INT : alors là c'est bon et le résultat est là

    donc ?




    Les procédures stockées se définissent sur le serveur, c'est une simple commande SQL à passer comme l'a montré Larry57 dans son premier post. Je ne vois pas pourquoi on te refuserait de les créer, si on accepte que tu appelles le programme, puisqu'en gros c'est juste l'interface SQL du programme...

    Edit : à priori tu as avancé pendant que je tapais. Donc c'est déjà une procédure stockée. Ton problème est quasiment résolu alors.

    oui ok pour tout et oui j'avance ... grâce aussi à toi !

    Mais tout n'est pas en procédure stockée ! j'ai des commandes système, des programmes et des procédures stockées

    J'ai retenu que je dois passer systématiquement par des procédures stockées (presque obligatoirement)

    Les commandes système et les programmes seront alors lancés par des procédures stockées que je dois créer sur l'AS400 (selon tes dernières informations)
    Les procédures stockées SQL peuvent être lancées par mon premier code ... qui n'est peut-être pas encore finalisé quand même !

    Est-ce bien cela ?

  15. #15
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Bonjour,

    ...

    CREATE PROCEDURE malib.monpgm ()
    DYNAMIC RESULT SETS 1
    LANGUAGE RPGLE
    SPECIFIC malib.monpgm
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    EXTERNAL NAME ' malib.monpgm'
    PARAMETER STYLE GENERAL ;

    ...

    Larry57
    Larry
    Si je créée cette procédure et que je l'exécute sur AS400 via ma connexion et ma commande, une procédure stockée (SP) va exister sur l'AS400 de manière persistante ou serait-elle détruite après chaque utilisation ?

    Dans le premier cas Je dois ajouter un test d'existence avant de recréer cette SP systématiquement.
    aurais-je raté quelque chose ?

  16. #16
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Le raccourci est un peu vite pris, sache qu'il n'y a souvent pas de sql dans un programme sur as/400 (pour moi un pgm sur 10 et encore...)
    Si tu pouvais mettre un printscreen de ton écran de liste, cela donnerait des infos en plus, quitte à retravailler l'image pour supprimer les données 'sensibles'.

    Fait donc un click droit et un sysreq (sur l'as/400) avec ma procédure, tu auras tes tables de données.
    un truc du genre :
    Fichiers ouverts

    Travail : T_SK02 Utilisateur: MOI Numéro . . . : 294745
    Nombre de chemins d'ouverture . . . . . . . . : 148


    Membre/ Format Type Nb --Ouvert--- Rang
    Fichier Biblio unité enreg fich E/S Opt Part-Nb enreg
    CPTSP MALIB CPTSP FCPTSP PHY 17 I NON 200

    Après, un strsql (sur le 400) pour visionner le contenu.


    Larry57

  17. #17
    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
    Pour Hepil :
    Une procédure stockée est créée de manière persistante. Tu ne la crée qu'une seule fois

  18. #18
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    Bonjour,

    ...
    CREATE PROCEDURE malib.monpgm ()
    DYNAMIC RESULT SETS 1
    LANGUAGE RPGLE
    SPECIFIC malib.monpgm
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    EXTERNAL NAME ' malib.monpgm'
    PARAMETER STYLE GENERAL ;
    ...

    Larry57
    En gardant mes objets liées à ma DLL dot.net "iDB2..." et
    partant de ton code j'ai fait :

    Cmd.CommandText = "create procedure TRUST.daily() " +
    "DYNAMIC RESULT SETS 1 " +
    "LANGUAGE RPGLE " +
    "SPECIFIC TRUST.daily " +
    "NOT DETERMINISTIC " +
    "READS SQL DATA " +
    "CALLED ON NULL INPUT " +
    "EXTERNAL NAME 'WRKDSKSTS' " +
    "PARAMETER STYLE GENERAL;";

    Cmd.ExecuteNonQuery();
    le message d'erreur est à présent :
    SQL0449 Le nom de programme externe pour le programme DAILY de TRUST est incorrect.

  19. #19
    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
    Le mot-clé EXTERNAL NAME indique le nom de la bibliothèque et du programme correspondant à ta procédure.
    Tu lui demandes donc de créer une procédure Daily dans la bibliothèque Trust, qui appellera le programme WRKSYSSTS de la bibliothèque *LIBL
    Ce programme est un SQLRPGLE qui retourne un seul result set.

    1) WRKSYSSTS n'est pas un nom à donner à un programme utilisateur, car c'est le nom d'une commande système. Il pourrait y avoir confusion.
    2) Le programme WRKSYSSTS existe-t-il ? Et est-ce bien un programme SQLRPGLE ?

  20. #20
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par larry57 Voir le message
    ...

    Fait donc un click droit et un sysreq (sur l'as/400) avec ma procédure, tu auras tes tables de données.
    un truc du genre :
    ...

    Larry57
    je suis parti du menu de ma bibliothèque TRUST
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Exécution des programmes .net
    Par psy4duKod dans le forum Framework .NET
    Réponses: 10
    Dernier message: 18/07/2007, 00h23
  2. [UBUNTU] Exécuter des programmes java
    Par hammag dans le forum Ubuntu
    Réponses: 6
    Dernier message: 21/04/2006, 23h50
  3. Comment exécuter un programm
    Par Murieyaya dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 10h50
  4. Comment exécuter un programme externe ?
    Par spikto dans le forum Langage
    Réponses: 12
    Dernier message: 27/06/2005, 16h18
  5. Réponses: 1
    Dernier message: 23/02/2005, 11h23

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