Cours cobol description externe

BoTTom |    Changer de couleur
 
         ---------------------------------------------
         ! DEFINITION EXTERNE DES FICHIERS EN ENTREE !
         ---------------------------------------------
 
 Vous vous demandez peut être pourquoi définir les zones du fichier
 dans le programme , alors que cette définition existe dans l'objet
 fichier.
 
 ON PEUT UTILISER CETTE DEFINITION DE L'OBJET, CE QUI NOUS FACILITERA
 LA PROGRAMMATION ?
 
 
 grâce a cette utilisation de la description externe, notre programme
 ne contiendra plus de description de zones pour les fichiers sur
 disque.
 
 C'est le compilateur COBOL qui génèrera automatiquement cette
 description de zones. L'inconvénient de cette méthode est
 qu'il ne sera plus possible de regrouper certaines zones dans
 un niveau supérieur (sauf REDEFINES).
 


|    Changer de couleur
 
 
 3 étapes pour la mise en place de cette description externe.
 
 
 1 NOUS INDIQUERONS DANS L'ENVIRONMENT DIVISION EN LIEU ET PLACE
   DE DISK L'UNITE DATABASE QUI NOUS PERMETTRA D'UTILISER LES
   FONCTIONS DE LA BASE DE DONNEES.
 
 
 2 NOUS INDIQUERONS DANS LA DATA DIVISION LA FONCTION COPY
   QUI NOUS PERMETTRA LA COPIE DE LA DESCRIPTION DU FICHIER.
 
 3 NOTRE ORDRE DE LECTURE SERA UN PEU MODIFIÉ (optionnel).
 
 
   1 ENVIRONMENT DIVISION.
   -----------------------
 
    pour les fichiers définis en description externe notre nouvelle
    phrase SELECT sera
 


|    Changer de couleur
 
    FICHIER ORGANISATION SEQUENTIELLE.
    ----------------------------------
 
 
    SELECT nom du fichier ASSIGN TO DATABASE-nom du fichier-ext
 
 
    FICHIER ORGANISATION SEQUENTIELLE INDEXEE
    -----------------------------------------
 
 
    SELECT nom du fichier ASSIGN TO DATABASE-nom du fichier-ext   
 
                                    ---------------
                                    !SEQUENTIAL
                                    !
    ORGANIZATION  INDEXED  ACCESS  < RANDOM
                                    !
                                    !DYNAMIC
                                    --------------
    RECORD KEY EXTERNALLY-DESCRIBED-KEY.


|    Changer de couleur
 
   2 DATA DIVISION.
   ----------------
  NOUS AURONS DANS LA DATA DIVISION POUR LE FICHIER LES PHRASES COBOL
  SUIVANTES.
 
  DATA DIVISION.
  FILE SECTION.
  FD  nom du fichier LABEL RECORD IS STANDARD.
  01  nom de l'enregistrement.
      COPY DDS-nom du format OF nom du fichier sur l'unité. 
 
 
   3 PROCEDURE DIVISION.
   ---------------------
   Nouvel ordre de lecture:
 
   READ nom du fichier INTO nom d'enregistrement FORMAT "nom du format" 
 
   AT END phrase cobol. (si lecture séquentielle)
   INVALID KEY phrase cobol. (si lecture accès directe)
 
SI l'ordre READ est en erreur, vous aurez un FILE STATUS
|    Changer de couleur
 
   4 VALEURS NULLES.
   -----------------
  COBOL autorise les fichiers avec ALWNULL ou SQL  
SELECT nom du fichier ASSIGN TO DATABASE-nom-ext-ALWNULL

il faut alors prévoir une zone en Working storage
pour recevoir les indicateurs de nullité (NULL-MAP)

et éventuellement une autre pour recevoir les indicateurs
de nullité pour les zones clé (NULL-KEY-MAP)


Ces indicateurs de nullité seront déclarés PIC 1 et pourrons
contenir b"0" (zone non nulle) ou b"1" (zone nulle)

|    Changer de couleur

 
   4 VALEURS NULLES.
   ----------------
  COBOL autorise les fichiers avec ALWNULL ou SQL
WORKING-STORAGE SECTION.
01 enreg-nullmap.
COPY DDS-APPELF OF APPELLATIO
WITH NULL-MAP.
01 enreg-nullkey.
COPY DDS-APPELF OF APPELLATIO
WITH NULL-KEY-MAP.

Cela génère

05 APPELF-NM 06 APPEL_CODE-NF PIC 1 VALUE B"0" etc...


|    Changer de couleur

 
   4 VALEURS NULLES, suite.
   ------------------------
  Les ordres d'entrée sortie seront complétés par read fichier NULL-KEY-MAP IS enreg-nullkey
NULL-MAP IS enreg-nullmap
AT END .... end-read Avant un READ en accès directe, il faut assigner des valeurs
à ZONE-CLE-NF indiquant si vous souhaitez accèder à la valeur
nulle ou à une valeur significative.

Même chose pour START

Suite au READ les indicateurs représente la nullité ou
l'absence de nullité des informations lues rewrite enreg NULL-KEY-MAP IS enreg-nullkey
NULL-MAP IS enreg-nullmap
INVALID KEY .... end-rewrite
lors d'un REWRITE, il s'agit d'assigner ou pas la valeur nulle aux zones

|    Changer de couleur
 
  VERROUILLAGE D'ENREGISTREMENTS 
 
  TOUT ENREGISTREMENT LU A DES FINS DE MISE A JOUR EST VERROUILLÉ 
  
 
########################################################################## 
##                                                                      ## 
##  A LA LECTURE D'UN ENREGISTREMENT D'UN FICHIER UTILISE               ## 
##  EN MISE A JOUR (U en col 15/open IO) L'ENREGISTREMENT EST           ## 
##  VERROUILLE PAR LE système C'EST A DIRE QU'AUCUN AUTRE               ## 
##  JOB OU PGM DU MEME JOB QUI UTILISE AUSSI CE FICHIER EN MISE A JOUR  ## 
##  NE POURRA LIRE CET ENREGISTREMENT.                                  ## 
##                                                                      ## 
##  CET ENREGISTREMENT SERA VERROUILLE JUSQU'A UNE PROCHAINE            ## 
##  OPERATION D'ENTREE/SORTIE SUR CE FICHIER                            ## 
##                                                                      ## 
##  PAR EX: UPDATE/ REWRITE de l'enregistrement                         ## 
##          lecture d'un enregistrement (==> verrouillage d'un autre)   ## 
##          UNLOCK du fichier en GAP.                                   ## 
##                                                                      ## 
########################################################################## 
 


|    Changer de couleur
 
              Voici les correspondances RPG / COBOL-400. 
 
         R P G                                     C O B O L  
 
 
  U en specif F ou USAGE(*UPDATE)    |  OPEN I-O
                                     |
  N en col 53 ou en option (N)       |  READ ....  WITH NO LOCK
                                     |
  - enregistrement indisponible      |
                                     |
  indic en col 56-57                 |  FILE STATUS = '9D'
        (ou %STATUS)                 |
                                     |
  Màj partielle [EXCEPT ou %fields]  |  -sans équivalent-
                                     |
  UNLCK/UNLOCK                       |  -sans équivalent-
                                     |    Utiliser REWRITE.
                                     |
 ---------------------------------------------------------------------------
 




©AF400