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 :

INSPECT : incrémenter compteur quand variable A est 'similaire' à variable B


Sujet :

Cobol

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut INSPECT : incrémenter compteur quand variable A est 'similaire' à variable B
    Bonjour,

    J'ai besoin d'un tuyau sur l'ordre INSPECT.

    Je cherche : à incrémenter un compteur COUNTI à chaque fois qu'une variable A est 'similaire' à une variable B...

    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSPECT <VARIABLE_A> TALLYING <COUNTI> FOR ALL <VARIABLE_B>
    NB : VARIABLE_A et VARIABLE_B ont même format et même longueur X(100).

    Je pense que mon code est faux...

    Merci pour votre aide,

    Cordialement,

    Carlozi.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Salut,

    Je comprends pas vraiment ce que tu veux faire ...

    Tu veux compter le nombre de caractères communs aux deux variables ?
    si oui, la position importe ou pas ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Je souhaite :

    incrémenter un compteur COUNTI à chaque fois qu'une variable A est 'similaire' à une variable B

    Peu importe les espace, etc...

    A chaque fois qu'il rencontre la variable A PIC X(100) dans la variable B PIC X(100) , il doit incrémenter COUNTI...

    Peut-être que mon code est bon?

    Carlozi.

    Edit : je dois faire un test, je verrais ce que ça donne

  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
    Citation Envoyé par Carlozi Voir le message
    Bonjour,

    Je souhaite :

    incrémenter un compteur COUNTI à chaque fois qu'une variable A est 'similaire' à une variable B

    Peu importe les espace, etc...

    A chaque fois qu'il rencontre la variable A PIC X(100) dans la variable B PIC X(100) , il doit incrémenter COUNTI...

    Peut-être que mon code est bon?

    Carlozi.

    Edit : je dois faire un test, je verrais ce que ça donne
    Bonjour.

    Tel que tu as fait ton INSPECT, COUNTI va être égal à 1 si et seulement si VARIABLE-A = VARIABLE-B, les 2 variables ayant la même longueur.

    Si tu ne veux pas tenir des espaces inutiles des fins de zones, il faudrait que tu les élimines par exemple par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                PERFORM VARYING I FROM 100 BY -1 UNTIL I = 0 
                                           OR VARIABLE-A(I:1) NOT = SPACE
               END-PERFORM.
               MOVE 0 TO COUNTI.
               INSPECT VARIABLE-B tallying COUNTI for all VARIABLE-B(1:I).
    Par contre si tu ne veux pas tenir de tous les espaces, il faudrait que tu les élimines par exemple par :
    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
               move spaces to VARIABLE-A1.
               move 0 to J. 
               perform varying I from 1 by 1 until I > 100
                   if VARIABLE-A(I:1) not = space
                      add 1 to J
                      move VARIABLE-A(I:1) to VARIABLE-A1(J:1)
                   end-if
               end-perform.
               move J to A.
               move 0 to J.
               move spaces to VARIABLE-B1.
               perform varying I from 1 by 1 until I > 100
                   if VARIABLE-B(I:1) not = space
                      add 1 to J
                      move VARIABLE-B(I:1) to VARIABLE-B1(J:1)
                   end-if
               end-perform.
               move J to B. 
               move 0 to COUNTI.
               INSPECT VARIABLE-A1 tallying COUNTI for all VARIABLE-B1(1:B).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    En effet, ta première solution était très bonne.

    Cependant, j'utilise "PAC-Base pour les boulets" (et encore, version allégée), je ne peux donc pas me permettre de faire un varying....

    J'ai trouvé une solution alternative à tout cela avec un curseur utilisant un like et quelques unstring pour tronquer la variable...

    Merci pour votre aide,

    Carlozi

  6. #6
    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
    Citation Envoyé par Carlozi Voir le message
    ...J'ai trouvé une solution alternative à tout cela avec un curseur utilisant un like et quelques unstring pour tronquer la variable...

    Merci pour votre aide,

    Carlozi
    Bien joué. C'est une excellente solution.
    Merci de nous avoir fait part de la solution trouvée et retenue, et d'avoir pensé au tag [Résolu]

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Carlozi Voir le message
    En effet, ta première solution était très bonne.

    Cependant, j'utilise "PAC-Base pour les boulets" (et encore, version allégée), je ne peux donc pas me permettre de faire un varying....
    Je reviens sur ces propos, il est posible de réaliser la première solution en PAC-BASE. Je l'afficherai dans ce poste prochainement.

    Carlozi.

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

Discussions similaires

  1. Appel de variable quand la condition est vrai
    Par thenavy dans le forum Langage
    Réponses: 7
    Dernier message: 30/09/2013, 21h05
  2. Réponses: 24
    Dernier message: 19/07/2011, 01h01
  3. Tester qu'une variable varchar est un nombre
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2005, 13h29
  4. Réponses: 9
    Dernier message: 08/12/2004, 14h36
  5. Savoir quand une hotkey est relachée
    Par kriterium dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2004, 14h44

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