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 24/11/2009, 13h10   #1
Membre régulier
 
Inscription : mars 2009
Messages : 296
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 296
Points : 92
Points : 92
Par défaut Problème d'extraction de donnée

A partir de la commande wrkoutq je souhaiterai charger les caractères de la clé 2 à 10 dans la variable &NUM de la colonne NBRLOUTQ

Ci-joint le fichier qui correspond au DCLF FILE(MABIB/NBRLOUTQ) de mon programme

Code :
1
2
3
4
5
6
7
8
9
10
                          Display Physical File Member                                                                      
File . . . . . . :   NBRLOUTQ            Library  . . . . :   MABIB                                                    
Member . . . . . :   NBRLOUTQ            Record . . . . . :   1                                                            
Control  . . . . .                       Column . . . . . :   1                                                            
Find . . . . . . .                                                                                                         
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2...
 FICXXXXX   MONUSER                RDY       2     1  *STD        5          3     XXXFFFSSZ1 627785 24/11/09 10:59:02     
 DDDDDDDDDD MONUSER                RDY       4     1  *STD        5          1     XXXFFFSSZ1 627906 24/11/09 11:02:48     
 AAAAAAAAAA MONUSER                RDY       4     1  *STD        5          1     XXXFFFSSZ1 627907 24/11/09 11:04:17     
         * * * * *   E N D   O F   L I S T I N G   * * * * *
Le programme:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
             DCLF FILE(MABIB/NBRLOUTQ)
             
             WRKOUTQ OUTQ(&OUTQ) OUTPUT(*PRINT)                      
                                                                     
             CRTPF      FILE(&LIB/&FICTMP) RCDLEN(130)               
                                                                     
             CPYSPLF    FILE(&FICSPLF) TOFILE(&LIB/&FICTMP)          
                                                                     
             CPYF       FROMFILE(&LIB/&FICTMP) TOFILE(&LIB/&FIC) +   
                          MBROPT(*REPLACE) CRTFILE(*YES) FROMRCD(3) +
                          FMTOPT(*NOCHK)                             
                                                                     
 LECT:       RCVF                                                    
                                                                     
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(FIN))        
                                                                     
             CHGVAR     VAR(&NUM) VALUE(%SST(&NBRLOUTQ 2 10))      
                                                                     
             SNDMSG     MSG(&FIC) TOUSR(MONUSER)
Lorsque j'execute mon programme la commande SNDMSG me renvoie 3 fois le noms de ma colonne au lieu de me renvoyer
pour le 1er SNDMSG FICXXXXX le 2eme DDDDDDDDDD et le 3eme AAAAAAAAAA

voici la vu du fichier à partir d'un Query:

Code :
1
2
3
4
5
6
7
8
9
10
11
                                                         Display Report                                                            
                                                                                                 Report width . . . . . :     130  
Position to line  . . . . .                                                                  Shift to column  . . . . . .          
Line   ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+...10....+...11....+...12....
       NBRLOUTQ                                                                                                                    
000001  FICXXXXX   MONUSER                RDY       2     1  *STD        5          3     XXXFFFSSZ1 627785 24/11/09 10:59:02      
000002  DDDDDDDDDD MONUSER                RDY       4     1  *STD        5          1     XXXFFFSSZ1 627906 24/11/09 11:02:48      
000003  AAAAAAAAAA MONUSER                RDY       4     1  *STD        5          1     XXXFFFSSZ1 627907 24/11/09 11:04:17      
000004          * * * * *   E N D   O F   L I S T I N G   * * * * *                                                                
****** ********  End of report  ********
Comment puis-je faire pour avoir les bons SNDMSG

Merci
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 13h43   #2
Membre régulier
 
Inscription : mars 2009
Messages : 296
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 296
Points : 92
Points : 92
J'ai trouvé l'erreur elle provient de la variable que j'utilise dans le SNDMSG au lieu d'utiliser &NUM j'ai mis &FIC c'est un copier coller d'une procédure sans faire cette modif qui est la cause

Merci Bonne ApM à Tous
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 13h52   #3
Membre régulier
 
Inscription : novembre 2007
Messages : 85
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2007
Messages : 85
Points : 73
Points : 73
Et bien perso je ferai 2 CLP :
==================
pgm 1
==================
Code :
1
2
3
4
5
6
7
8
9
10
11
dltf qtemp/pf132
monmsg cpf0000
crtpf file(qtemp/pf132) rcdlen(132)
WRKOUTQ outq(monoutq) output(*print)
monmsg msgid(cpf0000) exec(goto fin) 
cpysplf file(qprtsplq) tofile(qtemp/pf132) 
ovrdbf file(pf132) tofile(qtemp/pf132) share(*yes)
CALL pgm(pgm2)
dltovr pf132
fin:
endpgm
==================
pgm2
==================
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dclf pf132
dcl &spool *char 10
dcl &compteur *dec 5.0
bcl:
rcvf
monmsg msgid(cpf0000) exec(goto fin)
if cond(%sst(&pf132_pf132 103 1) = ':') then(do)
  chgvar &compteur &compteur+1
 /* si tu veux envoyer les noms de spools 1 par 1 alors :*/
  chgvar &spool %sst(&pf_132_pf132 2 10)
  sndmsg .....
goto bcl
enddo
fin:
/* si mon compteur est > 0 alors il y a des spools */
if cond(&compteur *gt 0) then(do)
.... mes actions...
enddo
endpgm
C du rapide, tu peux adapter a loisir.

Dernière modification par Hédhili Jaïdane ; 24/11/2009 à 17h16. Motif: Balise Code
lva30 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 +1. Il est actuellement 14h57.


 
 
 
 
Partenaires

Hébergement Web