Bonjour,
Quelques remarques de mémoire car je n'ai plus de compilateur COBOL sous la main depuis longtemps déjà
Procédure division :
- les sections dans la procédure division n'ont plus de raison d'être. Elles existent toujours pour compatibilité déscendante uniquement.
Attention toutefois : si vous faites un perform d'une section, alors tous les paragraphes de cette section seront exécutés avant retour.
Pour info, les sections servaient autrefois, quand la mémoire RAM était très limitée et très chère, à segmenter les portions de code à monter en mémoire.
- déclaratives : je ne suis pas partisan d'une gestion uniforme des exceptions (idem pour les "handle conditions" en cobol-cics). Je préfère nettement, même si c'est un peu plus long à coder, un test du file-status après chaque ordre (OPEN, CLOSE, READ, WRITE...) avec un message d'erreur numéroté (de façon unique bien sur) et un peu de texte de diagnostic avant appel de la routine d'abend.
- appel de modules par CALL. Autrefois, si le nom du module était entre quotes (simples et non pas doubles, mais peut-être que sur COBOL Microfocus il en va autrement), alors il s'agissait d'un appel statique.
Pour un appel dynamique, il fallait alimenter une variable et faire un CALL à cette variable. À vérifier dans votre contexte.
Data division :
- point de détail qui avait autrefois son importance et que je rappelle pour les puristes : une variable déclarée en niveau "01" s'aligne sur une frontière de 16 octets. Donc, pour du PIC X(1) on gâche 15 octets... C'est ballot. C'est pourquoi, pour les différents indicateurs de travail, file-status et autres données courtes, je préférais déclarer un filler de niveau "01" dans lesquels je rangeais dans des sous-niveaux les variables de travail.
- quand une variable de niveau X est décomposée en sous-parties, j'avais pour habitude de conserver un radical commun pour faciliter les recherches.
ainsi, par exemple, plutôt que de déclarer
05 DATE-NAISSANCE-LU REDEFINES Z2-LU.
009700 10 JJ-LU PIC 9(02).
009800 10 MM-LU PIC 9(02).
009900 10 AA-LU PIC 9(04).
je préfère
05 DATE-NAISSANCE-LU REDEFINES Z2-LU.
009700 10 DATE-NAISSANCE-LU-JJ PIC 9(02).
009800 10 DATE-NAISSANCE-LU-MM PIC 9(02).
009900 10 DATE-NAISSANCE-LU-AA PIC 9(04).
ainsi la recherche de DATE-NAISSANCE-LU me permet de retrouver tout le code concerné en une seule fois plutôt que de faire 4 recherches
- vous avez eu la sagesse de ne pas nommer votre index "I" ou "J" comme on le voit trop souvent ce qui rend les recherches pénibles dans le code.
Partager