Zones Packées référencées

Déclaration des zones packées dans les programmes à partir de zones référencées en base de données.

Voici un exemple

Soit le fichier TESTNUM :

A          R TESTNUMF           
A            NUMPCK         5P 0
A            NUMETE         5S 0

Programme 1 :

 dcl-f                                   
       TESTNUM                           
       USAGE(*INPUT ) ;                  
 DCL-DS DS_fichier  extname('TESTNUM')   
 END-DS;                                 
 read TESTNUM ;                          
       // Fin de programme               
       *InLr = *on;                      

Résultat de la compilation :

*RNF7031 NUMETE S(5,0) 10D 78M

Programme 2 identique à Programme 1 mais avec la DS_fichier qualified :

**free                                   
//                                       
 dcl-f                                   
       TESTNUM                           
       USAGE(*INPUT ) ;                  
 DCL-DS DS_fichier  extname('TESTNUM')   
     qualified                           
 END-DS;                                 
 read TESTNUM ;                          
       // Fin de programme               
       *InLr = *on; 

Résultat de la compilation :

*RNF7031 NUMETE P(5,0) 78D

Conclusion

Les zones qualifiées sont automatiquement déclarées en packed, en effet elles sont considérées comme des zones internes.
Très peu d’impact en réalité, sauf à des DS passées en paramètre par exemple.
C’est le cas également pour les likerec où les zones sont implicitement qualified :

dcl-ds enreg likerec( TESTNUM) ;

if enreg.numete = … ;