COBOL. Data division définition d'un enreg

BoTTom |    Changer de couleur
 
                            DATA DIVISION 
 
  LA DATA DIVISION VA NOUS PERMETTRE DE DEFINIR LES DONNEES UTILISEES 
  PAR LE PROGRAMME 
 
 
  ELLE EST ORGANISEE EN DEUX SECTIONS PRINCIPALES. 
 
       - LA FILE SECTION pour les données appartenant à des fichiers 
                         excepté pour les fichiers imprimantes et écrans 
 
       - LA WORKING-STORAGE SECTION pour les données de travail. 
 
 
       Aussi la LINKAGE SECTION définissant les paramètres lors d'un CALL
 
 
 
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
       GENERALITES 
 
     -> LES NOMBRES NIVEAUX 
 
      On utilise les nombres niveaux pour indiquer la maniere dont sont 
      liées les données les unes par rapport aux autres. 
 
      Exemple: la donnée DATE est composée des données JOUR MOIS AN 
               nous avons donc au plus haut niveau DATE 
               et 3 niveaux immédiatement inférieurs pour JOUR MOIS AN 
 
               DATE 1er niveau (01)
 
                    JOUR 2nd niveau (souvent 05)
                    MOIS 2nd niveau     "
                    AN   2nd niveau     "
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
      Les nombres niveaux nous permettent d'affecter à une donnée un 
      nombre de 2 chiffres (01 à 49 en général) afin d'indiquer le niveau
      (imbrication) de la zone par rapport aux autres. 
 
 
      Le niveau le plus élevé (01) doit être écrit en Marge A
 
        Les autres en Marge B.
 
     77 nombre niveau (marge A) pour définir une zone simple ne pouvant pas:
 
         - être découpée
 
         - être redéfinie
 
     88 nom condition pour définir un test
 
     01 QUANTITE ......
        88 QTE-EST-NULLE  VALUE 0.


|    Changer de couleur
 
                            DATA DIVISION 
 
  -->   DEFINITION D'UNE ZONE 
 
        UNE ZONE EST DEFINIE PAR : - son nombre niveau 
 
                                   - son type 
 
                                   - sa longueur 
 
 
 
        structure de la définition COBOL 
 
        XX  nom-de-zone PICTURE type longueur USAGE mot-COBOL. 
        |
        v
  (nombre niveau) 
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
  -->      PICTURE 
 
         La clause PICTURE ou PIC permet de définir le type et la 
         longueur d'une zone. 
 
    -->     TYPE DE ZONE 
 
  Il existe en COBOL 5 grands types de zone. 
 
                   X --------------> alphanumérique 
 
                   A --------------> alphabétique 
 
                   9 --------------> numérique non signé 
 
                  S9 --------------> numérique signé 
 
 Spécifique 400    1 --------------> indicateur, lg 1 (B"0"=faux,B"1"=vrai)
 


|    Changer de couleur
 
                            DATA DIVISION 
 
  -->       LA LONGUEUR 
 
         La longueur d'une zone peut être définie de 2 façons : 
             - en indiquant autant de fois qu'il y a de caractères 
               la lettre qui spécifie le type. 
 
              Ex - supposons la zone PRENOM de type alphanumérique 
                   et de longueur 10. 
                   05 PRENOM   PICTURE AAAAAAAAAA. 
 
                 - supposons la zone NUMERO de type numérique non signé 
                   et de longueur 5. 
                   05 NUMERO   PICTURE 99999. 
 
                 - supposons la zone SOLDE de type numérique signé 
                   et de longueur 7. 
                   05 SOLDE   PICTURE S9999999. 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
  -->       LA LONGUEUR 
 
         La longueur d'une zone peut être définie de 2 façons : 
             - en indiquant entre parenthèses après le type de la 
               zone le nombre de caractères. 
 
              Ex - supposons la zone PRENOM de type alphanumérique 
                   et de longueur 10. 
                   05 PRENOM   PICTURE A(10). 
 
                 - supposons la zone NUMERO de type numérique non signé 
                   et de longueur 5. 
                   05 NUMERO   PICTURE 9(5). 
 
                 - supposons la zone SOLDE de type numérique signé 
                   et de longueur 7. 
                   05 SOLDE    PIC S9(7)
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
          Pour indiquer la position de la virgule dans une zone 
            numérique on indiquera la lettre V à l'endroit ou 
            se situe la virgule décimale. 
 
             Ex - supposons la zone TOTMONT de type numérique signé 
                  de longueur 9 dont 2 décimales. 
 
                   05 TOTMONT  PICTURE S9999999V99. 
 
                                 ou 
 
                   05 TOTMONT  PICTURE S9(7)V99. 
 
 
 
 
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
   -->     USAGE 
 
  La clause USAGE permet de définir le type exact de la zone 
  numérique. Si elle est en étendue, en packée(condensée) ou 
  en binaire. 
 
  On aura USAGE       DISPLAY si numérique étendue (valeur par défaut) 
                                     ------ 
                      PACKED-DECIMAL      | 
                      COMPUTATIONAL(-3)   | packée 
                      COMP(-3)            | 
                                     ------ 
                                     ------ 
                      BINARY              |
                      COMPUTATIONAL-4     | binaire (Integer en SQL)
                      COMP-4              | 
                                     ------ 
 
                      POINTER  pour un pointeur (adresse sur 16 octets)


|    Changer de couleur
 
                            DATA DIVISION 
 
   -->     USAGE 
 
  Ex - Supposons la zone TOTSOL numérique signée packée de longueur 
       9 dont 2 décimales. 
 
 
          05  TOTSOL PIC S9(7)V9(2) USAGE COMP-3.
 
                             ou 
 
          05  TOTSOL PIC S9(7)V99 PACKED-DECIMAL.(USAGE étant facultatif)
 
 
 
 
 
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
 
 
La FILE SECTION va nous permettre de décrire les données appartenant
aux fichiers.
 
On écrira en COBOL le dessin d'enregistrement des fichiers.
 
 
 
 
       DESCRIPTION DES FICHIERS SUR DISQUE.
       ------------------------------------
 
      Pour chaque fichier utilisé on utilise un nombre niveau
      particulier, FD. Celui-ci servira à identifier le fichier.
 
      Le fichier étant le niveau le plus élevé.
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
      FORMAT DE LA FILE SECTION.
 
___________________________________________________________
| |ZONE|                      ZONE B                      |
| | A  |                                                  |
|7|8   |12                                                |
+-+----+--------------------------------------------------+
| |DATA| DIVISION.                                        |
| |FILE| SECTION.                                         |
| |FD  |nom du fichier dans le programme                  |
| |    |LABEL RECORD STANDARD                             |
| |    |RECORD CONTAINS nombre CHARACTERS (facultatif)    |
| |    |BLOCK CONTAINS nombre RECORDS (facultatif).       |
| |01  |nom de l'enregistrement.                          |
| |    |                                                  |
 
On utilise le nombre niveau 01 pour identifier l'enregistrement dans le PGM
 
 Ne pas confondre le nom de l'enregistrement dans le PGM et le nom de format


|    Changer de couleur
 
                            DATA DIVISION 
Prenons un exemple:   FICHIERS CLIENTS ----------------     ----------------------------------------------------------------------- | NUMCLI | NOM          |          ADRESSE                  | SOLDE   | |        |              |-----------------------------------|         | |        |              |RUE        | VILLE       | CODPOS  |         | |        |              |           |             |---------|         | |        |              |           |             |DEP |BDIS|         | |        |              |           |             |    |    |         | | 6 Num. | 20 alphanum  |20 alphanum|20 alphanum  |2 N |3 N | 9 dont 2| |        |              |           |             |    |    | N signé | |        |              |           |             |    |    | packé   | -----------------------------------------------------------------------      


|    Changer de couleur
 
                            DATA DIVISION 
Nous aurons en DATA DIVISION pour ce fichier.
_____________________________________________________________________
| |ZONE|                      ZONE B                                |
| | A  |                                                            |
|7|8   |12                                                          |
+-+----+------------------------------------------------------------+
| |DATA| DIVISION.                                                  |
| |FILE| SECTION.                                                   |
| |FD  |CLIENTS                                                     |
| |    |LABEL RECORD STANDARD.                                      |
| |01  |CLIENTS-ENR.                                                |
| |    |05  NUMCLI          PIC 9(6).                               |
| |    |05  NOM             PIC X(20).                              |
| |    |05  ADRESSE.                                                |
| |    |    10  RUE         PIC X(20).                              |
| |    |    10  VILLE       PIC X(20).                              |
| |    |    10  CODPOS.                                             |
| |    |        20  DEPT    PIC 9(2).                               |
| |    |        20  BDIS    PIC 9(3).                               |
| |    |05  SOLDE           PIC S9(7)V99 COMP-3.                    |


|    Changer de couleur
 
                            DATA DIVISION 
 
      LA DESCRITPTION DES FICHIERS D'IMPRESSION.
      ------------------------------------------
 
LA DESCRIPTION DES FICHIERS D'IMPRESSION (PRTF) NE SE FERA PAS DE LA MEME
 FACON QUE LES FICHIERS SUR DISQUE.
 
POURQUOI ? un fichier d'impression possède plusieurs dessins
           d'enregistrements. Il y a autant de dessins d'enregistrements
           que de lignes d'impression différentes.(que de formats)
 
 
           on manipule ainsi, parfois le titre
                              parfois la ligne détail
                              parfois le total, etc....
 
 
 
 
 


|    Changer de couleur
 
                            DATA DIVISION 
 
FORMAT DE LA FILE SECTION
 
_____________________________________________________________________
| |ZONE|                      ZONE B                                |
| | A  |                                                            |
|7|8   |12                                                          |
+-+----+------------------------------------------------------------+
| |DATA| DIVISION.                                                  |
| |FILE| SECTION.                                                   |
| |FD  |ETAT                                                        |
| |    |LABEL RECORD OMITTED.                                       |
| |01  |LIGNE PIC X(180).                                           |
 
ON DEFINI DANS LA FILE SECTION UNE ZONE QU'ON APPELLE LE PLUS SOUVENT LIGNE
QUI AURA POUR LONGUEUR, LA LONGUEUR DE LA LIGNE LA PLUS GRANDE
 
ON DECRIRA ENSUITE EN WORKING-STORAGE SECTION CHACUNE DES DIFFERENTES
LIGNES.
 


|    Changer de couleur
 
                            DATA DIVISION 
 
                            DESSIN D'ETAT
                      1                   2                   3     1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 1  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2  | | | | | | | | |E|X|E|M|P|L|E| |D|'|E|T|A|T| | | | | | | | | | | | | 3  | | | | | | | | |-|-|-|-|-|-|-|-|-|-|-|-|-|-| | | | | | | | | | | | | 4  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5  | | | |T|I|T|R|E| |D|U| |L|I|V|R|E| | | | | | | |P|R|I|X| | | | | | | 6  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7  | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | |X|X|X|,|X|X| | | | | | 8  | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | |X|X|X|,|X|X| | | | | | 9  | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | |X|X|X|,|X|X| | | | | | 10 | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | |X|X|X|,|X|X| | | | | | 11 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 12 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 13 | | | | | | |N|O|M|B|R|E| |T|O|T|A|L| |L|I|V|R|E| |:| |X|X|X| | | | |    
 DEFINITION DE CE DESSIN D'ETAT DANS LA WORKING-STORAGE-SECTION
 

|    Changer de couleur
 
       WORKING-STORAGE SECTION.
       01  LIGTIT-1.
           05  FILLER     PIC X(8) VALUE SPACE.
           05  FILLER     PIC X(14) VALUE "EXEMPLE D'ETAT".
       01  LIGTIT-2.
           05  FILLER     PIC X(8) VALUE SPACE.
           05  FILLER     PIC X(14) VALUE "--------------".
       01  LIGTIT-3.
           05  FILLER     PIC X(3) VALUE SPACE.
           05  FILLER     PIC X(14) VALUE "TITRE DU LIVRE".
           05  FILLER     PIC X(6) VALUE SPACE.
           05  FILLER     PIC X(4) VALUE "PRIX".
       01  LIGLIV.
           05  FILLER     PIC X VALUE SPACE.
           05  TITLIV-ED  PIC X(20).
           05  FILLER     PIC X VALUE SPACE.
           05  PLIV-ED    PIC ZZ9,99.
       01  LIGTOT.
           05  FILLER     PIC X(6).
           05  FILLER     PIC X(21) VALUE "NOMBRE TOTAL LIVRE : ".
           05  TOTLIV-ED  PIC ZZ9.


|    Changer de couleur
 
 
 Nous avons défini au niveau 05 les constantes et les variables
 
  les variables étant toutes de type DISPLAY. (implicite)
 
  les constantes sont toutes nommées FILLER (mot réservé)
    et ont toutes une valeur pré-définie. (VALUE "....").
 
 
L'écriture dans le fichier d'impression se fera :
 
 
  WRITE LIGNE FROM LIGTIT-1 .....
          ^           | 
          |___________| 
            = MOVE (implicite)
 
 
 Nous verrons comment récupérer les définitions externes par COPY-DDS
 
 

|    Changer de couleur
 
 Autres déclarations :
 
  Les tableaux
 
      77  DEP PIC 99 OCCURS 100 TIMES. -> on Y accède ensuite par DEP(x)
 
     on peut faire des tableaux dans des tableaux (jusqu'à 7 dimensions)
 
                                       -> on Y accède ensuite par DEP(x,y)
 
      01  TINDIC.
            05 IND OCCURS 99 PIC 1 INDICATOR 01.
 
            -> tableau des 99 indicateurs
 
  Clause LIKE
 
     77 département LIKE DEP.
 
     77 SOMME LIKE MONTANT(+3)
 

|    Changer de couleur
 
 Définitions multiples 
 
  Une même zone de mémoire peut être utilisée sous plusieurs noms, ce qui
  permet de lui déclarer différents types et différentes structures.
 
  On utilise dans ce cas la clause REDEFINES.
 
 
  01 EMPLOYE.
   05 TYPE-EMPL PIC X.
   05 EMP1.
    10 NOM  PIC  X(30).
    10 PRENOM PIC  X(18).
    10 QUAL  PIC  XXX.
   05 EMP2 REDEFINES EMP1.
     10 NO-SECU PIC  9(13).).
     10 CLE-SECU PIC  99.
     10 CARTE-TRV PIC  X(10).
     10 CARTE-RES PIC  X(10).
     10 FILLER  PIC  X(16).
 




©AF400