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 :

Utilisation de STRPCO en RPGLE


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 Utilisation de STRPCO en RPGLE
    Bonjour à toutes et à tous,

    j'utilise la commande STRPCO PCTA(*NO) au début de mon programme pour l'initialisation. A la première exécution, tout ce passe bien, mais aux suivantes, une erreur apparaît. Je dois alors commenter la ligne de code. Si je la laisse commentée, que je me délog et me relog, le programme ne fait pas d'erreur mais il n'exécute pas la tâche demandée. Une discussion pour ce problème existe déjà sur le forum mais la solution proposée (transfert via FTP) ne me convient pas.

    Existe-t-il un "remède" à ce problème?

  2. #2
    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
    Précise comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    STRPCO PCTA(*NO)
    MONMSG IWS4010 /* Ignore intégrateur déjà démarré */
    ...
    et tu n'auras plus d'ennuis avec la commande.

    Il vaudrait mieux utiliser RUNRMTCMD, mais bon !

  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 pour ta réponse. En revanche, je n'arrive pas à l'intégrer dans mon code.
    En fait je procède comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmdc='STRPCO PCTA(*NO)';
    qcmdexc (cmdc:cmdl);
    Avec cmdc qui vaut 128 en alpha.

  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
    Ces commandes-là sont à intégrer dans un programme CL.

  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
    Ah...ok, et sinon, c'est possible d’insérer du CL au milieux d'un programme rpg free?

  6. #6
    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
    ... c'est possible d’insérer du CL au milieux d'un programme rpg free?
    Oui.
    1. Fais un module en CL dans lequel tu intègres les commandes en question et le reste du traitement que tu veux lui faire faire,
    2. Crée le module CL (par CRTCLMOD),
    3. Crée le module RPG qui appelle la procédure CL (par CRTRPGMOD),
    4. Compile ton programme par CRTPGM en assemblant les modules RPG et CL ensemble de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CRTPGM PGM(MABIB/MONPGM)                      
           MODULE(MABIB/MODULERPG MABIB/MODULECL) 
           ENTMOD(*FIRST)

  7. #7
    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
    Ok, merci, je vais essayer ^^

  8. #8
    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
    STRPCO peut être appelé depuis un RPG :

    CALL 'QCMDEXC' avec un indicateur en position < pour la syntaxe RPG classique.
    PARM CMD
    PARM LEN

    CALL(E) 'QCMDEXC' pour la syntaxe ILE normale
    PARM CMD
    PARM LEN

    Et en format libre, il suffit d'inclure l'appel dans un groupe monitor !
    MONITOR;
    QCMDEXC (Cmd:Len);
    ON-ERROR;
    ENDMON;

  9. #9
    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
    Exemple d'un module RPG qui appelle un module CL pour envoyer un message au demandeur (*requester) :

    ModuleRPG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    D ModuleCL        PR                        
    D  Msg                          80a         
                                                
    D  Msg            s             80a         
                                                
    C                   eval      *inlr = *on   
    
     /free                                      
       Msg = 'Ceci est un message';             
       ModuleCL (Msg);                            
       Return;

    ModuleCL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    pgm &msg                                                           
    dcl &msg *char 80                                                  
                                                                       
    DCL &REDRi  *CHAR 1 X'29'                                          
                                                                       
      SNDPGMMSG  MSG(&REDRI *CAT ' ' *cat &MSG) TOPGMQ(*PRV (*PGMBDY)) 
                                                                       
    endpgm
    Je crée chaque module avec l'option 15 de PDM.

    Quand les 2 compils sont OK, je crée le programme MABIB/MONPGM avec la commande CRTPGM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CRTPGM PGM(MABIB/MONPGM)                      
           MODULE(MABIB/MODULERPG MABIB/MODULECL) 
           ENTMOD(*FIRST)
    Il ne me reste plus qu'à appeler le programme MABIB/MONPGM à partir d'une ligne de commande écran quelconque.

    C'est aussi simple que ça et autrement plus pro que QCMDEXC !

  10. #10
    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 à vous pour toutes ces réponses ^^

    La solution la plus "propre" ne fonctionne pas parce que le système refuse de créer le programme quand j'utilise CRTPGM, je ne sais pas pourquoi...
    J'ai dû me rabattre sur le monitoring en attendant de connaitre la raison du problème. Mais pour l'instant mon problème initial est résolu.

    Encore merci

  11. #11
    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
    La solution la plus "propre" ne fonctionne pas parce que le système refuse de créer le programme quand j'utilise CRTPGM, je ne sais pas pourquoi...
    Par "pro" je voulais dire "professionnelle" et non pas "propre", mais bon !

    Mais si CRTPGM ne fonctionne pas, tu as forcément un ou plusieurs messages dans la log du travail qui a passé cette commande. Je serais curieux de connaître ce ou ces messages. Peux-tu coller ici la log du travail ou au moins les messages en question ?

  12. #12
    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
    Je n'ai pas accès aux fichiers de log, le seul message que j'ai à l'écran est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Program GESUSR3 not created
    Voilà...

  13. #13
    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
    Tu dois forcément avoir un log, c'est à dire l'historique du job.

    Peux-tu faire, dans l'ordre :
    1. CALL QCMD (Aller sur l'écran d'Entrée de commandes IBM)
    2. CHGJOB LOG(4 00 *MSG)
    3. CRTPGM (avec tes modules)


    Tu pourras voir ensuite le log de ton job en faisant F10 sur ce même écran.

    Fais un copier-coller de ce log ici pour que je comprenne ce qui se passe.

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 15h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 13h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 17h01
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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