Numéros de ligne dans les Macros migrées de Pacbase

La migration des applications Pacbase a imposé une gestion rigoureuse des numéros de ligne dans la PROCEDURE DIVISION des Macros, principalement parce qu'une ligne Pacbase peut correspondre à deux lignes COBOL.

Pour que la fusion des Macros gère correctement l'organisation des lignes détail et les écrasements de lignes, les lignes de condition sont distinguées des lignes de traitement (au sens Pacbase). Les lignes de la PROCEDURE DIVISION en lien avec ces numéros de ligne sont automatiquement repositionnées. Dans toute Macro migrée, les numéros de ligne des conditions sont sur 3 caractères tandis que les numéros de ligne des traitements sont sur 6 caractères.

ATTENTION :
Il est fortement déconseillé de modifier les numéros de ligne dans la PROCEDURE DIVISION des Macros migrées pour éviter tout déplacement de lignes dans les instances appelant ces Macros.
La gestion des numéros de ligne dans les Macros migrées peut être illustrée dans l'exemple suivant avec la fusion de deux Macros qui insèrent des lignes dans la fonction F02.
  • Première Macro :
    • Dans Pacbase, les lignes suivantes sont déclarées dans F02 :
                  BB     N TITRE                10BL 
                  BB 002 * COMMENTAIRE 1        99IT TOP = '1' 
                  BB 005 * COMMENTAIRE 2        99IT TOP = '2' 
    • Une fois la Macro migrée, les lignes sont transformées ainsi dans Rational Programming Patterns :
                  F02BB 
                  000   *N TITRE 
                        *LV=10  
                  002        IF TOP = '1' 
                  002002* COMMENTAIRE 1 
                  005        IF TOP = '2' 
                  005005* COMMENTAIRE 3
  • Seconde Macro :
    • Dans Pacbase, les lignes suivantes sont déclarées dans F02 :
                  BB 003 M  '0'  W-XX001         AN WW00-XX0001 NOT =  
                  BB 004 P  F99BB                   WW00-XX001A 
                  BB 006 M  '1'  W-XX001         AN WW00-XX0001 = '2' 
                  BB 007 P  F99BB                AN WW00-XX001A = '3' 
    • Une fois la Macro migrée, les lignes sont transformées ainsi dans Rational Programming Patterns :
                 F02BB 
                 003        AND WW00-XX0001 NOT =  
                 004             WW00-XX001A 
                 006        AND WW00-XX0001 = '2'  
                 007        AND WW00-XX001A = '3'  
                 007003  MOVE '0' TO W-XX001           
                 007004  PERFORM F99BB THRU F99BB-FN. 
                 007006  MOVE '1' TO W-XX001      
                 007007  PERFORM F99BB THRU F99BB-FN. 
La fusion des deux Macros donne le résultat suivant avant le repositionnement automatique des lignes orphelines :
                002        IF TOP = '1' 
                002002* COMMENTAIRE 1  
                003       AND WW00-XX0001 NOT =  
                004            WW00-XX001A             
                005        IF TOP = '2' 
                005005* COMMENTAIRE 3 
                006        AND WW00-XX0001 = '2'  
                007        AND WW00-XX001A = '3'                 
                007003     MOVE '0' TO W-XX001         
                007004     PERFORM F99BB THRU F99BB-FN. 
                007006     MOVE '1' TO W-XX001   
                007007     PERFORM F99BB THRU F99BB-FN.
Après le repositionnement des lignes orphelines, le résultat est le suivant :
                002        IF TOP = '1' 
                003        AND WW00-XX0001 NOT =  
                004            WW00-XX001A 
                004002* COMMENTAIRE 1                       
                004003     MOVE '0' TO W-XX001         
                004004     PERFORM F99BB THRU F99BB-FN. 
                005        IF TOP = '2' 
                006        AND WW00-XX0001 = '2'  
                007        AND WW00-XX001A = '3'  
                007005* COMMENTAIRE 3 
                007006     MOVE '1' TO W-XX001   
                007007     PERFORM F99BB THRU F99BB-FN.  

Les Macros créées directement dans Rational Programming Patterns ne sont pas soumises à cette gestion. Les numéros de ligne peuvent tous être saisis sur 3 caractères indépendamment de leur type (condition ou traitement).

Pour une utilisation plus simple et optimisée de Rational Programming Patterns, l'idéal serait de n'avoir que des Macros ayant un identifiant de ligne sur 3 caractères.


Vos commentaires