Formatter un fichier plat à partir d'une clause copy [Script] - Shell/Batch - Programmation
Marsh Posté le 22-02-2016 à 08:35:38
Oh du Cobol !
En VBA, c'est relativement simple, si ta copy n'est pas trop longue et ne change pas souvent, tu en fais un tableau fixe à deux dimensions (position début de champ, longueur).
Pour chaque ligne de ton fichier en entrée, tu découpes avec l'instruction Mid(ligne, position, longueur).
En fait tout dépend quels langages tu connais ...
Marsh Posté le 24-02-2016 à 22:43:14
exact !
le fichier est créé par un programme cobol.
par contre, je ne connais pas trop le VBA, je me voyais plus le faire via un script shell mais comme la description est assez longue (+ de 50 champs), je cherche à automatiser la solution
Marsh Posté le 25-02-2016 à 08:36:45
Pour l'avoir déjà fait, même si ta description est un peu longue mais ne change pas souvent, tu gagneras énormément de temps à la saisir dans un tableau fixe en working de ton script (peu importe le langage).
Un scanner de copy Cobol est assez galère à faire, du fait des multiples manière de coder les formats, les occurs, les COMP et autres joyeusetés !
Et je n'ai pour l'instant trouvé aucun autre langage micro (Unix, Windows etc..) qui permette d'appliquer une clause copy sur un fichier à la manière du Cobol.
En VBA, je passe par des instructions du style
Donnée = Mid(LigneEntière, debutDonnée, finDonnée) après avoir déterminé la longueur de chaque donnée grâce à la copy.
Marsh Posté le 21-02-2016 à 17:41:41
Hello,
J'ai en sortie d'un traitement un fichier plat ayant par exemple cette tête là :
toto25122015ParisBoulanger
et un masque (clause copy) avec cette tête :
Prenom x(20)
Date de naissance 9(8)
Ville X(20)
Metier X(10)
je souhaiterais communiquer le résultat de façon plus lisible (en format csv par exemple) et j'aurai besoin d'inserer des séparateurs sur chaque ligne pour avoir :
toto;25122015;Paris;Boulanger;
Une idée de script simple (unix/vba ...) pour avoir ce type de résultat ?