Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Cobol
Cobol Forum d'entraide sur la programmation en langage Cobol
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 18/08/2011, 11h55   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 55
Points : 55
Par défaut balayer une variable de gauche à droite

Bonjour,

J’ai une variable ID-MLE PIC X (32).

Un chiffre entier peut-être stocké en alphanumériques dans la variable
ID-MLE

Comment je peux balayer la variable ID-MLE de gauche à droite pour trouver la position du chiffre entier qui correspondra au premier chiffre ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’ou ‘9’.
Il faut ensuite déterminer la longueur de cette entier en balayant la variable ID-MLE de droite à gauche et en déterminant la position du premier chiffre ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’ou ‘9’.

Merci
a_karim_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 15h57   #2
Expert Confirmé
 
Inscription : décembre 2007
Messages : 1 908
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 908
Points : 3 709
Points : 3 709
par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
77 Position pic 9(2).
77 Position1 pic 9(2).
77 Position2 pic 9(2).
77 Position3 pic 9(2).
77 Longueur pic 9(2).
77 destination-finale pic X(18).
(.../...)

move zero to position1 position2
perform varying position from 1 by 1
   until position > length of ID-MLE
   if ID-MLE (position : 1) is numeric
      move position to position2
      if position1 = zero
         move position to position1
      end-if
   end-if
end-perform
move zeroes to destination-finale
compute longueur = position2 - position1 + 1
compute position3 = length of destination-finale - longueur + 1 
move ID-MLE ( position1 : longueur ) to destination-finale ( position3 : longueur)
.
j'ai pas le temps de tester, et il y a sans doute moyen de faire mieux.

EDIT : et ça manque de contrôles pour tester les erreurs.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 16h01   #3
Nouveau Membre du Club
 
Inscription : octobre 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 37
Points : 33
Points : 33
Bonjour,

Il suffit d'utiliser un tableau de caractères et de parcourir ensuite ce tableau par une boucle ou alors utiliser un SEARCH.

EDIT : je suis trop lent...
ekans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 17h46   #4
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
Bonjour.

Tu as un exemple utilisant les tableaux dans cette discussion :
[Débutant] Extraire une sous-chaîne de caractères
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h33   #5
Expert Confirmé
 
Inscription : décembre 2007
Messages : 1 908
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 908
Points : 3 709
Points : 3 709
Citation:
Envoyé par ekans Voir le message
Bonjour,

Il suffit d'utiliser un tableau de caractères et de parcourir ensuite ce tableau par une boucle ou alors utiliser un SEARCH.

EDIT : je suis trop lent...
Désolé pour le grillage. Tu as raison : il est sans doute plus propre de découper la chaine de caractères en entrée dans un tableau de caractères plutôt que de d'utiliser le découpage d'un champ unique par des "reference modifiers" comme je l'ai fait. J'ai juste été au plus rapide.

Certains sites interdisent d'ailleurs explicitement les "reference modifiers".
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h40   #6
Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 55
Points : 55
Bonjour,

J'ai testé le code de el_slapper est le résultat est correct

Merci beaucoup.
a_karim_fr 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 16h11.


 
 
 
 
Partenaires

Hébergement Web