Archives par mot-clé : Niveau 49

Exemple – Niveau 49

COBOL utilise les numéros de niveau 01 à 49 pour définir une structure de données dans une hiérarchie de parties constitutives – plus le numéro de niveau est élevé, plus l’élément est bas dans la hiérarchie.

Les numéros eux-mêmes n’ont généralement pas de signification particulière, mais la relation entre les numéros de niveau identifie les niveaux au sein de la hiérarchie.

Cependant, lors du codage des zones de données à utiliser avec SQL, le niveau numéro 49 a une signification particulière.
49 est utilisé pour déclarer des identifiants d’éléments élémentaires de longueur variable – généralement des variables VARCHAR, LONG VARCHAR, VARGRAPHIC et LONG VARGRAPHIC.

Lorsque le niveau 49 est utilisé, le groupe contient un champ Longueur de 2 octets suivi du nom réel du champ (défini comme PIC X(##) avec ## étant la longueur maximale).
Les données du champ varient en longueur et lorsque les données sont placées dans le champ, seul le nombre de caractères défini dans l’élément de longueur est renvoyé, sans caractères de remplissage.

Cela peut causer un problème car les informations précédentes stockées dans ce champ ne sont pas automatiquement effacées et la valeur précédente était plus longue que la valeur actuelle.
Lorsque les données sont récupérées, la longueur et l’élément de données sont renseignés.

Une longueur de 0 indique que la colonne n’est pas remplie.

Voici un exemple d’utilisation du Level 49 :

----+---10----+---20----+---30----+---40----+---50----+ 

       01 NOM-COLONNE. 
           49 COLONNE-NOM-LEN PIC S9(04) USAGE COMP. 
           49 COLONNE-NOM-DONNEES PIC X(273).

Voici une explication de cette disposition :

  • NOM-COLONNE est le nom de la colonne SQL
  • COLONNE-NOM-LEN est un champ entier de 1 à 4 qui contient la longueur des données dans NOM-COLONNE.
  • COLONNE-NOM-DONNEES contient les données réelles et la clause PIC indique la plus grande valeur de variable pouvant être affectée à cette variable.

Exemple DCLGEN avec niveau 49

****************************************************************** 
* DCLGEN TABLE(MYTABLE)                                          * 
*        LIBRARY('prefix.SRCLIB.DATA(MYTABLE))                   * 
*        LANGUAGE(COBOL)                                         * 
*        APOST                                                   * 
*        DCLBIT(YES)                                             * 
* ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS   * 
****************************************************************** 
     EXEC SQL DECLARE MYTABLE TABLE                                
     ( COL1                           CHAR(10) NOT NULL,           
       COL2                           CHAR(10),                    
       COL3                           VARCHAR(12) NOT NULL,        
       COL4                           VARCHAR(12) NOT NULL         
     ) END-EXEC.                                                   
****************************************************************** 
* DECLARED VARIABLES FOR 'FOR BIT DATA' COLUMNS                  * 
****************************************************************** 
     EXEC SQL DECLARE                                              
      :COL3                                                        
     ,:COL4                                                        
     VARIABLE FOR BIT DATA END-EXEC.                               
****************************************************************** 
* COBOL DECLARATION FOR TABLE MYTABLE                            * 
****************************************************************** 
 01  DCLMYTABLE.                                                   
     10 COL1                 PIC X(10).                            
     10 COL2                 PIC X(10).                            
     10 COL3.                                                      
        49 COL3-LEN          PIC S9(4) USAGE COMP.                 
        49 COL3-TEXT         PIC X(12).                            
     10 COL4.                                                      
        49 COL4-LEN          PIC S9(4) USAGE COMP.                 
        49 COL4-TEXT         PIC X(12).                            
****************************************************************** 
* LE NOMBRE DE COLONNES DÉCRIT PAR CETTE DÉCLARATION EST DE 4     * 
******************************************************************