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

Cobol Discussion :

Problème dans un tableau


Sujet :

Cobol

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 182
    Points : 125
    Points
    125
    Par défaut Problème dans un tableau
    Bonjour,

    J'ai un traitement d'alimenter un tableau mais au niveau d'affichage j'ai que le dernier donné alimenté est t’afficher et non toutes les données affichées car j e veux afficher tous les messages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    01  WS-NBR-ANO         PIC  9(02).
    01  WS-ERREUR                    PIC  X(100) value space.
    01  WS-I                             Pic  S9(4) binary.
    
    01  WS-Q-NBR-ANO               PIC   9(02).
    01  WS-G-TAB-ANO         OCCURS  10.
         05 WS-MSG-ERREUR         PIC  X(100).
    
    IF WS-NBR-ANO  > 10
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)
       Perfrom Arrête-traitement
    Else 
       PERFORM VARYING WS-I FROM 1 BY 1 UNTIL  WS-Q-NBR-ANO > 10
                                           OR  WS-I > 20
    
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-I)
    
       END-PERFOROM
    End-IF
    Exemple au niveau d'affichage j'ai ' Code A incorrect'

    et non ' Code A incorrect'
    ' Code B incorrect'
    ' Code C incorrec

    ....

  2. #2
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    A chaud au moins 2 choses qui clochent + quelques erreurs de ressaisie qui ne peuvent passer à la compilation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    01  WS-NBR-ANO         PIC  9(02).
    01  WS-ERREUR                    PIC  X(100) value space.
    01  WS-I                             Pic  S9(4) binary.
    
    01  WS-Q-NBR-ANO               PIC   9(02).
    01  WS-G-TAB-ANO         OCCURS  10.
         05 WS-MSG-ERREUR         PIC  X(100).
    
    IF WS-NBR-ANO  > 10
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)
       Perfrom???  Arrête-traitement
    Else 
       PERFORM VARYING WS-I FROM 1 BY 1 UNTIL  WS-Q-NBR-ANO > 20
                                           OR  WS-I > 20
    
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-I).
         on est sur un tableau en occurs 10 et on boucle 20 fois !?
         C'est quoi ce point à la fin ? je ne pense pas que ça passe à la compile avec un END-IF orphelin plus loin
       END-PERFOROM???
    End-If
    Il serait préférable de faire des copies d'écran, sinon ça ne va pas être facile d'essayer de faire le distingo entre erreurs de code et erreurs de saisie.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 182
    Points : 125
    Points
    125
    Par défaut
    Désolé j'ai corrigé votre remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    01  WS-NBR-ANO          PIC  9(02).
    01  WS-ERREUR         PIC  X(100) value space.
    01  WS-I                Pic  S9(4) binary.
     
    01  WS-Q-NBR-ANO               PIC   9(02).
    01  WS-G-TAB-ANO         OCCURS  10.
         05 WS-MSG-ERREUR         PIC  X(100).
    
    IF WS-NBR-ANO  > 10
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)
       Perfrom Arrête-traitement
    Else 
       PERFORM VARYING WS-I FROM 1 BY 1 UNTIL  WS-Q-NBR-ANO > 10
                                                                OR  WS-I > 10
    
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-I)
    
       END-PERFOROM
       ADD  1                                     TO  WS-Q-NBR-ANO
       MOVE   WS-Q-NBR-ANO              TO  WS-I 
    End-IF
    Mais j'ai toujours même problème

  4. #4
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Bonjour.
    Je crois qu'il faut reprendre point par point la logique de ce code qui m'échappe !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    01  WS-NBR-ANO          PIC  9(02).                                     
    1) Où est initialisé WS-NBR-ANO ?                                       
    01  WS-ERREUR           PIC  X(100) value space.                        
    01  WS-I                Pic  S9(4) binary.                              
                                                                            
    01  WS-Q-NBR-ANO        PIC   9(02).                                    
    2) Où est initialisé WS-Q-NBR-ANO ?                                     
       Quels cas de gestion pour les 2 WS-NBR-ANO et WS-Q-NBR-ANO distincts ?
    01  WS-G-TAB-ANO         OCCURS  10.                                    
         05 WS-MSG-ERREUR   PIC  X(100).                                    
                                                                            
    IF WS-NBR-ANO  > 10    (1)                                             
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)             
    3) Quelle valeur dans WS-I A cet endroit ? Probablement 11 si dédié     
       Perform Arrête-traitement                                            
    Else                                                                    
       PERFORM VARYING WS-I FROM 1 BY 1 UNTIL  WS-Q-NBR-ANO > 10  (2)       
                                        OR  WS-I > 10                       
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-I)           
    4) Quand WS-NBR-ANO est < 10, Le perform remplit TOUTES les occurences  
       du tableau avec le même WS-MSG-ERREUR                                
                                                                            
       END-PERFORM                                                          
    End-IF
    Si on veut alimenter une occurence à chaque fois, ce n'est pas un perform qu'il faut faire mais une alimentation d'un nouveau poste via un incrément de WS-NBR-ANO (WS-Q-NBR-ANO est superflu)
    Si j'ai bien compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    01.                                                                 
        05  WS-I                PIC  s9(03) Comp-3.                     
        05  WS-NBR-ANO          PIC  s9(03) Comp-3 Value 0.             
        05  WS-ERREUR           PIC  x(100).                            
        05  WS-MSG-ERREUR       PIC  x(100)      Occurs 10.             
    CAS-ANO.                                                            
    If WS-NBR-ANO not > 10                                              
        Add  1          to WS-NBR-ANO                                   
        Move WS-ERREUR  to WS-MSG-ERREUR (WS-NBR-ANO)                
    Else                                                                
        Perform Varying WS-I From 1 By 1 Until  WS-I > 10               
           Display "MESSAGE D'ERREUR NO " WS-I " : " WS-MSG-ERREUR(WS-I)
        End-Perform                                                     
        Display    "MESSAGE D'ERREUR NO " WS-I " : " WS-ERREUR          
        Perform ARRETE-TRAITEMENT                                       
    End-IF.

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 182
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    J'ai met le même chose comme votre code mais j'ai le même message pas des messages déférentes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    01  WS-NBR-ANO          PIC  9(02)   value 0.
    01  WS-ERREUR           PIC  X(100) value space.
    01  WS-I                             Pic  S9(4) binary.
    01  WS-Q-NBR-ANO               PIC   9(02) value 0.
    01  WS-G-TAB-ANO         OCCURS  10.
         05 WS-MSG-ERREUR         PIC  X(100).
    
    IF WS-NBR-ANO  not > 10
       ADD  1                                     TO  WS-Q-NBR-ANO
       MOVE   WS-Q-NBR-ANO              TO  WS-I 
        PERFORM VARYING WS-I FROM 1 BY 1 UNTIL  WS-Q-NBR-ANO > 10 OR WS-I > 10                                                        
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-I)
       END-PERFOROM
    ELSE 
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)
       Perfrom Arrête-traitement
    End-IF

  6. #6
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    avec ce que tu as écrit, ton display, tu ne le fais que quand WS-NBR-ANO est > 10 et une seule fois pour un seul WS-MSG-ERREUR(WS-I)
    au vu du coding, tu display toujours le meme poste, le 10eme puisque WS-I est incrementé jusqu'à 10.il garde donc cette valeur lors de ton display.

    je ferai ça....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    01  WS-ERREUR           PIC  X(100) value space.
    01  WS-I                             Pic  S9(4) binary.
    01  WS-Q-NBR-ANO               PIC   9(02) value 0.
    01  WS-G-TAB-ANO         OCCURS  10.
         05 WS-MSG-ERREUR         PIC  X(100).
    
    IF WS-NBR-ANO  not > 10
       ADD  1                                     TO  WS-NBR-ANO
         MOVE WS-ERREUR                   TO  WS-MSG-ERREUR(WS-NBR-ANO)  
    ELSE 
       perform varying ws-i from 1 by 1 until ws-i > 10
       DISPLAY ' WS-MSG-ERREUR           :' WS-MSG-ERREUR(WS-I)
       end-perform
       Perfrom Arrête-traitement
    End-IF

  7. #7
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Non regardes encore le code que j'ai posé, il n'est pas du tout pareil. Tu continues à mélanger des compteurs WS-NBR-ANO et WS-Q-NBR-ANO en particulier. (IF WS-NBR-ANO not > 10 ADD 1 TO WS-Q-NBR-ANO)
    Quand on bute sur un pb de logique, le mieux est le plus souvent de casser le code et de le revoir à froid complètement.

  8. #8
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    oups, désolée Homer-ac; je n'avais pas vu que tu avais répondu a peu pret la meme chose que l'exemple de code que je viens de poster

    a-karim-fr, tu n'as pas du tout codé ce que Homer-ac t'as indiqué...d'ou ton erreur

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 182
    Points : 125
    Points
    125
    Par défaut
    Merci pour votres aides

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

Discussions similaires

  1. [WD-2010] Problème dans mon tableau.
    Par starsat4200 dans le forum Word
    Réponses: 1
    Dernier message: 14/08/2014, 23h35
  2. Problème dans un tableau
    Par fraisa1985 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 26/03/2014, 19h38
  3. Problème dans mon TABLEAU
    Par Fabdunet13 dans le forum VB.NET
    Réponses: 9
    Dernier message: 11/10/2013, 18h12
  4. Problème dans le tableau
    Par anassinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 20/09/2013, 20h24
  5. [C++] problème dans un tableau
    Par Slici dans le forum Débuter
    Réponses: 9
    Dernier message: 04/01/2009, 22h38

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