Plusieurs FILLER pour aligner une ligne fixe
Imaginons que vous devez produire une ligne de rapport ou un export texte avec des colonnes fixes (largeur imposée), comme dans beaucoup de listings comptables, relevés ou exports EDI des années 80–2000 encore utilisés aujourd’hui.
Vous voulez que :
- le code client fasse toujours 10 caractères
- suivi de 4 espaces
- le nom fasse exactement 25 caractères
- suivi de 6 espaces
- le montant soit aligné à droite sur 12 caractères
Exemple de code
IDENTIFICATION DIVISION.
PROGRAM-ID. LIGNE-FIXE-FILLER.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LIGNE-REPORT PIC X(60) VALUE SPACES.
01 DONNEES-CLIENT.
05 CODE-CLIENT PIC X(10) VALUE "CUST004567".
05 FILLER PIC X(4) VALUE SPACES. *> espace fixe entre code et nom
05 NOM-CLIENT PIC X(25) VALUE "DUPONT Marie-Jeanne ".
05 FILLER PIC X(6) VALUE SPACES. *> espace fixe entre nom et montant
05 MONTANT PIC ZZZ,ZZZ,ZZ9.99 VALUE 12487.50.
05 FILLER PIC X(8) VALUE SPACES. *> remplissage fin de ligne
PROCEDURE DIVISION.
MOVE DONNEES-CLIENT TO LIGNE-REPORT
DISPLAY "Ligne formatee (positions fixes) :"
DISPLAY LIGNE-REPORT
DISPLAY " "
DISPLAY "Longueur totale : " FUNCTION LENGTH(LIGNE-REPORT)
STOP RUN.
Sortie obtenue
Ligne formatée (positions fixes) :
CUST004567 DUPONT Marie-Jeanne 12 487,50
Longueur totale : 60
Explication des FILLER dans cet exemple
FILLER PIC X(4) VALUE SPACES
Séparateur fixe de 4 espaces entre le code client et le nom. On force un espacement constant, même si le code client change de longueur.FILLER PIC X(6) VALUE SPACES
Grand espace fixe entre le nom et le montant → permet d’aligner visuellement le montant à droite dans un listing ou un fichier texte.FILLER PIC X(8) VALUE SPACESen fin de ligne
Remplissage final pour atteindre exactement 60 caractères (largeur imposée par le cahier des charges ou le destinataire du fichier).
Sans ce FILLER, si le montant est petit, la ligne serait plus courte → risque de décalage dans un rapport ou un import.
Pourquoi c’est utile ?
- Les rapports imprimés ou les fichiers texte attendus par d’autres systèmes exigent souvent des longueurs fixes par champ.
- Utiliser des FILLER permet de garantir l’alignement sans calculer manuellement les espaces à chaque fois.
- C’est beaucoup plus clair et maintenable que d’écrire 20
MOVE SPACES TO LIGNE-REPORT(31:6)un peu partout.
En résumé : les FILLER ne servent pas seulement à « sauter » des données reçues… ils servent aussi à **créer volontairement des zones vides** pour respecter un formatage rigide.