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 :

Enlever les espaces et les côtes.


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 Enlever les espaces et les côtes.
    Bonjour


    J'ai une variable qui contient des espaces et des côtes alors comment enlever les espaces et les cotes.

    Exemple :

    et je veux avoire Merci

  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
    Quand on veut analyser une chaine de caractères, on le gère en la redefinissant dans un tableau Pic X occurs N et on se déplace dedans ou on utilise les référence modifiers (If Z1(I1:1) = ' ' then ... dans un perform varying I1). Il y a déjà pas mal d'exemple de ce style dans ce forum.
    Ceci étant, ci-dessous une solution avec unstring + string, mais à mon sens c'est plus pour le fun et histoire d'ajouter une astuce de gestion des données éclatées via un index.
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
           Working-Storage Section.                                         
           01.                                                              
               05  WS-DATA             Pic x(100) value Spaces.             
               05  CTR-DATAS           Pic s9(4) Binary.                    
           01  TAB-DATA.                                                    
               05  DATAS               Pic x(100) occurs 9 Indexed by IM.   
          *-----------------------                                          
           Linkage Section.                                                 
          *-----------------------                                          
           01  LS-PARM.                                                     
               05  LS-PARM-LNG         Pic S9(4) Binary.                    
               05  LS-PARM-DATA        Pic x(100).                          
          *================================                                 
           Procedure Division Using LS-PARM.                                
          *--------------------------------     -> PARM RECU                
               Move LS-PARM-DATA(1:LS-PARM-LNG) to WS-DATA                  
               Move ZERO  to CTR-DATAS                                      
               Move Space to TAB-DATA                                       
                                                                            
               Unstring WS-DATA     Delimited   by all space                
                                                or all "'"                  
                      Into DATAS(1) DATAS(2) DATAS(3) DATAS(4)              
                           DATAS(5) DATAS(6) DATAS(7) DATAS(8) DATAS(9)     
                      Tallying        in CTR-DATAS                          
                   On Overflow                                              
                        Display "PLUS DE 9 SEPARATEURS ';' DANS LE PARM !"  
                        Move    8 To RETURN-CODE                            
                        Goback                                              
               End-Unstring                                                 
                                                                            
               Move Space to WS-DATA                                        
               String      DATAS(1) DATAS(2) DATAS(3) DATAS(4)              
                           DATAS(5) DATAS(6) DATAS(7) DATAS(8) DATAS(9)     
                        Delimited   By space Into WS-DATA                   
               End-String                                                   
               Display WS-DATA                                              
               Goback.

  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
    Merci beaucoup

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Deux petites versions simplistes
    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
    0050   WORKING-STORAGE SECTION.                                         
    0051   77  I1           pic 9999 COMP.                                  
    0051   77  I2           pic 9999 COMP.                                  
    0051   77  Z1           pic X(100) value "J'ai une variable".           
    0051   77  Z2           pic X(100).                                     
    0201   PROCEDURE DIVISION.                                              
    0204   TRAITEMENT SECTION.                                              
    0209   DEBUT.                                                           
               move spaces to Z2.                                           
               move 0 to I2.                                                
               perform TEST0 varying I1 from 1 by 1                         
                               until I1 >  function length (Z1).            
               display Z1 upon MONTERMINAL   
               display Z2 upon MONTERMINAL.                                
           FIN.                                                            
    0627       STOP RUN.                                                   
           TEST0.                                                          
                       if Z1(I1:1) = space or "'" or low-value             
                            next sentence                                  
                       else add 1 to I2                                    
                            move Z1(I1:1) to Z2(I2:1)
    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
    0050   WORKING-STORAGE SECTION.                                         
    0051   77  I1           pic 9999 COMP.                                  
    0051   77  I2           pic 9999 COMP.                                  
    0051   01  Z1           pic X(100) value "J'ai une variable".           
             01  Z1W redefines Z1.                                            
                 03 C1  pic x occurs 100.                                     
    0051   01  Z2.                                                          
               03 C2  pic x occurs 100.                                     
    0201   PROCEDURE DIVISION.                                              
    0204   TRAITEMENT SECTION.                                              
    0209   DEBUT.                                                           
               move spaces to Z2.                                           
               move 0 to I1 I2.
               perform TEST0 varying I1 from 1 by 1 until I1 > 100.        
               display Z1 upon MONTERMINAL                                 
               display Z2 upon MONTERMINAL.                                
           FIN.                                                            
    0627       STOP RUN.                                                   
           TEST0.                                                          
               if C1(I1) = space or "'" or low-value                       
                  next sentence                                            
               else add 1 to I2                                            
                    move C1(I1) to C2(I2).

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

Discussions similaires

  1. Enlever les espaces entre les JLabel
    Par Freeluvs dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 25/02/2010, 19h50
  2. Réponses: 1
    Dernier message: 12/12/2006, 18h31
  3. Prendre en compte les espaces dans les filtres
    Par Ekinoks dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/11/2006, 02h57
  4. Les DTD et les espaces entre cellules de tableaux
    Par YuGiOhJCJ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/01/2006, 22h26

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