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 |
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 " |
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. |
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) |
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) |
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. |
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) |
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. |
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) |
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) |
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é. |
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 |
DATA DIVISION |
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. | |
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.... |
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. |
DATA DIVISION DESSIN D'ETAT |
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. |
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 |
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) |
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). |