cours fichiers logiques

BoTTom |    Changer de couleur
 
                          LES FICHIERS LOGIQUES
 
 
Un Fichier logique est un objet de type *FILE. Il possède une description
et 1 ou plusieurs membres.
 
CES MEMBRES NE CONTIENNENT PAS DE DONNEES,
 
ils ne possèdent qu'un chemin d'accès qui pointe sur les données
d'un ou plusieurs fichiers physiques.
 
 (index sous forme d'arbre binaire [bi-tree].)
 
 
 
 
 
 
 
 
 


|    Changer de couleur
                  ________          _________
           PF1   <________>  PF2   <_________>
                 !  Desc  !        !         !
                 !--------!        !---------!
                 ! FORMAT !        !         !
                 !--------!        !---------!
                 !  C.A.  !        !         !
                 !--------!        !---------!
                 ! DONNEES!        !         !
                 <________>        <_________>
                      !                 !
                      !_________________!
                               !
                               V
                            ________
                     LF    <________>
                           !  Desc  !
                           !--------!
                           ! FORMAT !
                           !--------!
                           !  C.A.  !
                           <________>


|    Changer de couleur
 
 
 
LES FICHIERS LOGIQUES VONT NOUS PERMETTRE :
 
 
                  - d'avoir une clé différente du fichier physique, donc
                    d'accéder dans un nouvel ordre aux enregistrements
                     (programmation séquentielle indéxée)
 
 
                  - de regrouper les données de plusieurs fichiers physiques
 
 
                  - de sélectionner une partie des enregistrements d'1 ou
                    plusieurs fichiers physiques.
 
 
 
 
 
 


|    Changer de couleur
 
              Une Clé différente du fichier physique
              --------------------------------------
 
              Prenons l'exemple du fichier CLIENTP1 ci-dessous.
 
 
      ************************
      *   FICHIER CLIENTP1
      ************************
     A                                      REF(REPERTP1)
     A          R CLIENTF1                  TEXT('FORMAT DU FICHIER CLIENTP1')
     A            NOCLI     R
     A            NOM01     R
     A            ADR01     R
     A            ADR02     R
     A            CODPS     R
     A            CODEX     R
     A            CRLIM     R
     A            TOTAL     R
     A          K NOCLI
 


|    Changer de couleur
 
MAINTENANT JE VEUX CREER UN CHEMIN D'ACCES SUR CES DONNEES DANS
L'ORDRE DES NOM DE CLIENT (ZONE NOM01).
J'APPELLERAI CE FICHIER LOGIQUE CLIENTL1. Voici sa description:
 
 
      ************************
      *   FICHIER CLIENTL1
      ************************
     A          R CLIENTF1                  PFILE(CLIENTP1)
     A          K NOM01                       ^
                                              !
                                              !
                                      -----------------------
                                      FONCTION NIVEAU FORMAT
                                      INDIQUANT LE NOM DU
                                      FICHIER PHYSIQUE SUR
                                      LEQUEL POINTE LE FICHIER
                                      LOGIQUE.
 
 
 


|    Changer de couleur
 
         CE FICHIER N'A PAS DE DESSIN D'ENREGISTREMENT, MAIS
          A LE MEME NOM DE FORMAT QUE LE FICHIER PHYSIQUE
         =====> IL A LA MEME DESCRIPTION DE ZONES QUE LE FICHIER PHYSIQUE
 
 
REGARDONS MAINTENANT LE MEME EXEMPLE, MAIS CETTE FOIS-CI AVEC
UN DESSIN D'ENREGISTREMENT DIFFERENT DU FICHIER PHYSIQUE.
 
 
 
      ************************
      *   FICHIER CLIENTL2
      ************************
     A          R CLIENTF2                  PFILE(CLIENTP1)
     A            NOM01
     A            NOCLI
     A            ADR01
     A            ADR02
     A            CODPS
     A          K NOM01
 


|    Changer de couleur
 
 
 CETTE FOIS-CI IL Y A UN NOM DE FORMAT DIFFERENT ====> JE DOIS INDIQUER
  LES ZONES FAISANT PARTIE DE CE FORMAT. (CE QUI PERMET, PAR EXEMPLE,
   DE NE "VOIR" QUE LES ZONES AUTORISEES A CERTAINS UTILISATEURS)
 
 
 Cette possibilité est intéressante pour des problèmes de confidentialité.
 
 
 En effet, c'est le physique qui possède les autorisations sur les données
  (réservoir des données), mais CHAQUE fichier(PF ou LF) possède ses propres
 droits niveau objet (donc des droits d'accès).
 
Il est par conséquent possible :
 de limiter les autorisations sur le fichier physique (contenant TOUTES les
 informations) et d'autoriser l'accès à une vue plus réduite des données
 par le biais de logiques avec redéfinition de format.
 
 
 
 


|    Changer de couleur
 
 
 IL EST POSSIBLE DE FAIRE DES SELECTIONS D'ENREGISTREMENTS PAR LE BIAIS
  DES FICHIERS LOGIQUES.
 
 Cette sélection se fait au niveau chemin d'accès, après la définition des
  clés .
 
 Elle peut se faire en indiquant les enregistrements à sélectionner
                                                       ( S en col. 17)
                    en indiquant les enregistrements à ommettre
                                                       ( O en col. 17)
 
 Puis en indiquant le nom de la zone sur laquelle porte le test
  et le test à effectuer (en col. 45), en utilisant COMP, RANGE, VALUES.
 
      * si département = 75
     A          S DEPT                      COMP(EQ 75)
      * si département compris entre 11 et 33
     A          S DEPT                      RANGE(11 33)
      * si département = 44 ou 49 ou 85 ou 35.
     A          S DEPT                      VALUES(44 49 85 35)


|    Changer de couleur
 
 VOUS POUVEZ INDIQUER PLUSIEURS SELECTIONS, EN ETABLISSANT UNE RELATION "ET"
  ou bien UNE RELATION "OU".
 
 La relation "ET" se fait en laissant la col 17 à blanc.
      * si département = 75 et n° représentant = 1245
     A          S DEPT                      COMP(EQ 75)
     A            NOREP                     COMP(EQ 1245)
 
 La relation "OU" se fait en renseignant la col 17.
      * si département = 75 ou compris entre 11 et 33
     A          S DEPT                      COMP(EQ 75)
     A          S DEPT                      RANGE(11 33)
 
 Si vous combinez sélections et omissions, deux règles majeures:
 
1/ Dès que le système rencontre une sélection/omission VRAIE, il ARRETE les
  tests et sélectionne ou omet cet enregistrement.
 
2/ le système AJOUTE toujours en fin de sélection/omission une ligne
    A          S/O                          ALL
    inverse de la précédente (S si précédente = O et inversement)


|    Changer de couleur
 
 Exemple: 
                                   !
   S DEPT          COMP(EQ 75)     ! O NOREP                 COMP(EQ 1245)
   O NOREP         COMP(EQ 1245)   ! S DEPT                  COMP(EQ 75)
                                   !
le système ajoute                  ! le système ajoute
                                   !
   S               ALL             ! O                        ALL 
               (sélection par dft) !                      (omission par dft)
Résultat:                          ! Résultat:
--------                           ! ---------
sont sélectionnés                  ! sont sélectionnés
                                   !
- tous les clients dept = 75       ! - les clients ayant DEPT 75
  (quelque soit NOREP)             !   ET NOREP <> 1245.
                                   !
- tous les clients d'un autre      !   (relation ET)
  réprésentant que 1245.           !
                                   !
  (relation OU implicite)          !
                                   !


|    Changer de couleur
 
 Un fichier logique permet aussi de faire de la fusion d'enregistrements.
 
1/ FORMATS IDENTIQUES. (ex fichiers comptables, en cours et historique)
 
   Il faut indiquer plusieurs fichiers physiques dans le mot-clé PFILE
 
     A          R COMPTAF1                  PFILE(COMPTAP1 COMPTAH)
     A          K NOECR
 
   les deux fichiers doivent avoir le format COMPTAF1.
 
 2/ FORMATS DIFFERENTS mais possédant des informations communes.
   ex: fichiers entête et lignes de commandes.
 
  !n° cde!client!date cde!                !n° cde!n° li!code art.!quantité! 
            !                                     !
            !---------------   -------------------!
                            | |
       entête->    !n° cde!client!date cde! 
  puis lignes ->   !n° cde!n° li!code art.!quantité! 
                   !n° cde!n° li!code art.!quantité! 


|    Changer de couleur
 
 Il faut alors définir plusieurs formats (on parle de logique multi-formats)
 
      * fichier entêtes de commande
     A          R ENTCDEF1                  PFILE(ENTCDEP1)
     A          K NOCDE
      * fichier lignes de commande
     A          R LIGCDEF1                  PFILE(LIGCDEP1)
     A          K NOCDE
 
 Le classement se fera par n° de commande et pour en même n°, par ordre de
  déclaration des formats.
 
 Il est possible d'indiquer une clé secondaire pour l'un des formats
  (ici n° de ligne pour les lignes d'une même commande)
      * fichier entêtes de commande
     A          R ENTCDEF1                  PFILE(ENTCDEP1)
     A          K NOCDE
      * fichier lignes de commande
     A          R LIGCDEF1                  PFILE(LIGCDEP1)
     A          K NOCDE
     A          K NOLI


|    Changer de couleur
 
 Si vous voulez fusionner plus de deux fichiers physiques.
 
 La clé PRIMAIRE doit être commune à tous les fichiers, cependant il est
  possible de classer les enregistrements d'un même fichier sur un critère
  qui leur soit propre.
 
 Ex:
      * fichier entêtes de commande
     A          R ENTCDEF1                  PFILE(ENTCDEP1)
     A !------> K NOCDE
      *!fichier lignes de commande
     A !        R LIGCDEF1                  PFILE(LIGCDEP1)
     A !------> K NOCDE
     A !        K NOLI <----------!
      *!fichier commentaires      !
     A !        R COMCDEF1        !         PFILE(COMCDEP1)
     A !------> K NOCDE           !
     A          K *NONE <---------!--- indique que la clé secondaire du
     A          K NOCOM                 fichier commentaires n'est pas à
                                        comparer avec le numéro de ligne
 


|    Changer de couleur
 
 Le classement se fera donc par n° de commande
 
    pour un même numéro de commande 1/ l'entête
 
                                    2/ toutes les lignes classées par n°
 
                                    3/ tous les commentaires classés par n°.
 
 La lecture sequentielle de ce fichier simplifiera énormement le pgm
  d'édition de commande par exemple.
 
 S'il s'agit d'un pgm RPG il faudra utiliser les spécif I pour ce fichier
  afin d'associer à chaque FORMAT un indicateur d'entrée (var. booléenne)
 
 S'il s'agit d'un pgm COBOL le mot réservé DB-FORMAT-NAME contiendra
  automatiquement le nom du dernier format lu.
 
 La mise à jour d'un tel fichier est tout à fait possible.
 
 Il faut alors, indiquer le nom du format à mettre à jour.
 





©AF400