Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 14h21   #1
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
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?
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 14h41   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Précise comme suit :

Code :
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 !
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/05/2011, 15h23   #3
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
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 :
1
2
3
cmdc='STRPCO PCTA(*NO)';
qcmdexc (cmdc:cmdl);
Avec cmdc qui vaut 128 en alpha.
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 15h49   #4
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Ces commandes-là sont à intégrer dans un programme CL.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 15h58   #5
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
Ah...ok, et sinon, c'est possible d’insérer du CL au milieux d'un programme rpg free?
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 16h15   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Citation:
... 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 :
1
2
3
CRTPGM PGM(MABIB/MONPGM)                      
       MODULE(MABIB/MODULERPG MABIB/MODULECL) 
       ENTMOD(*FIRST)
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 16h20   #7
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
Ok, merci, je vais essayer ^^
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h36   #8
Membre éclairé
 
Homme
Inscription : septembre 2008
Messages : 251
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 251
Points : 309
Points : 309
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;
FORMULARY est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/05/2011, 20h22   #9
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Exemple d'un module RPG qui appelle un module CL pour envoyer un message au demandeur (*requester) :

ModuleRPG
Code :
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 :
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 :
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 !
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/05/2011, 09h42   #10
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
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
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 12h19   #11
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Citation:
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 ?
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 16h51   #12
Futur Membre du Club
 
Femme Julie
Étudiant
Inscription : mai 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Femme Julie
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 18
Points : 16
Points : 16
Je n'ai pas accès aux fichiers de log, le seul message que j'ai à l'écran est:
Code :
Program GESUSR3 not created
Voilà...
juju666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 17h55   #13
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h05.


 
 
 
 
Partenaires

Hébergement Web