|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 140 ![]() |
Bonjour,
j'ai un fichier contenant une dizaine de chaines de caractères (une par ligne). Je dois "décortiquer" chaque chaine de caractère et récupérer différentes informations, ensuite je dois recomposer une nouvelle chaine de caractère et l'écrire dans un autre fichier. Je n'ai aucun problème pour récupérer une chaine de caractère de mon fichier et écrire la nouvelle chaine dans le deuxième fichier mais j'ai des problèmes pour "décortiquer" la chaine. Chaque chaine (une ligne) présente dans le fichier est représentée de la facon suivante: UN OU PLUSIEURS BLANCS suivis de DEUX CARACTERES NUMERIQUES suivis de "***" suivi de DIX CARACTERES MAXIMUM suivi de "--" suivi de UN OU PLUSIEURS ESPACES suivis de HUIT CARACTERES NUMERIQUES ex: " 10 ***MACHAINEEE-- 12345678" J'aimerais récupérer les trois données et les placer dans des variables à l'aide de UNSTRING: "10" dans CPT, "MACHAINEEE" dans CHAINE et "12345678" dans NOMBRE. Pouvez vous m'aider? Merci! |
|
|
00
|
|
|
#2 | |||
|
Membre Expert
![]() ![]() |
Bonjour.
Voici un petit exemple en ILE 400, il y a sûrement d'autres possibilités. Une petite boucle ferait l'affaire aussi. Code :
Citation:
|
|||
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 140 ![]() |
Merci pour ton aide! J'ai néanmoins quelques petits problèmes à régler.
Le premier nombre (nb1 dans ton programme) peut être également suivi de quelques espaces et MACHAINE peut être séparée par un espace (MA CHAINE SEPAREE) et peut être terminée par plusieurs espaces (avant --) que j'aimerais supprimer(mais je pense que ce cas ne pose pas de problème vu qu'on a le délimiteur --, prenons l'exemple de "chaine à décortiquer" suivant: " 08 ***MA CHAINE SEPAREE --12340692 " Je pensais pouvoir rajouter ceci au code, pour récupérer la ch1, mon problème est: est ce que les espaces seront considérés comme des CHARACTERS et bien comptés? Code :
Merci d'avance. |
||
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() ![]() |
Citation:
Maintenant c'est à toi de jouer Inspire toi de l'exemple que je tai donné et adapte le à tes besoins. Si tu n'as pas d'AS/400 disponible, voici un site sur lequel tu peux t'inscrire gratuitement et utiliser un AS/400 à volonté : http://www.rzkh.de/english/indexeng.html Bonne continuation. |
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 140 ![]() |
Merci pour le lien, je me suis inscrit et ça m'a bien aidé.
Il me reste un dernier petit problème que je n'arrive pas à résoudre. Apriori, je ne connais pas la longueur de "MACHAINEE", je sais juste qu'elle fait maxium 40 caractères, c'est pour celà qu'on la déclare donc en PIC X(40). Seulement, par après je doit éditer une nouvelle ligne dans un fichier du genre : "01 MACHAINEE 12345678", mon problème est que ayant déclaré en PIC X(40) l'édition dans le fichier se fait comme suit: "01 MACHAINEE ^^^^^^^^^^^^^^^^^^^^ 12345678" (les ^ étant les blancs de fin de zone) Je n'arrive pas à supprimer ces blancs de fin de zone... Une idée? Merci d'avance! Dernière modification par alex2746 ; 14/12/2008 à 20h51. |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() ![]() |
Citation:
- Sinon au moment de faire le UNSTRING DELIMITED BY "--" tu insères un "/" avec DELIMITER IN et tu l'utilses dans le STRING DELIMITED BY "/". Une autre solution, dans ce dernier cas, consiste à compter les espaces à la fin de chaine en faisant une boucle perform varying en commençant par la fin de la chaine et puis tu utilises une reference modifier machaine(1:n), n = Long chaine - nbre espaces de fin. Regarde dans le site Infocenter d'IBM les docs pdf et descends le Cobol Reference (gratuit), il y a un tas d'explications et d'exemples. http://publib.boulder.ibm.com/infoce...v5r4/index.jsp Dernière modification par Hédhili Jaïdane ; 14/12/2008 à 22h42. |
|
|
|
00
|
|
|
#7 | |||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() ![]() |
Citation:
Et elle existe bien en ILE Cobol/400 à côté des fonctions TRIM, TRIML et TRIMR. |
|
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 140 ![]() |
Merci beaucoup
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com