Accueil du site > Les articles > Editer les descriptions d’un fichier DB2/400 (RPG Free)
Version à imprimer Enregistrer au format PDF

Editer les descriptions d’un fichier DB2/400 (RPG Free)

mercredi 12 septembre 2007, par Grégory Jarrige Visites  12469 Première mise en ligne le lundi 20 octobre 2003.

Un programme écrit en RPG FREE pour éditer la description d’un fichier DB2/400.


J’avais créé le programme DESCFIC, il y a une dizaine d’années, dans le but de disposer d’un programme d’édition de description de fichier DB2/400. Ce programme, dont je me sers encore aujourd’hui, avait besoin d’un sérieux toilettage, je l’ai donc réécrit en RPG au format libre (free). J’ai conservé dans le fichier ZIP joint à cet article l’ancienne version écrite en RPG délimité, car elle constitue un excellent moyen de se familiariser avec les différences de syntaxe relatives à ces 2 versions du langage RPG.

Si vous avez déjà utilisé la commande standard de l’AS/400 DSPFD, vous savez comme moi combien elle est indigeste dans sa présentation et difficile à utiliser au quotidien. La commande DESCFIC permet donc d’imprimer un spoule contenant la description d’un fichier base de données AS/400. Merci à Christian Kraemer qui m’a transmis une nouvelle version de cet utilitaire, version à laquelle il a ajouté l’édition des critères de sélection dans le cas des fichiers logiques sélectifs.

Cette commande, associée à la touche F4, fait apparaître l’écran suivant :

DESCRIPTION DE FICHIER (DESCFIC)
Indiquez vos choix, puis appuyez sur ENTREE.
NOM FICHIER . . . . . . . . . . __________ Nom
BIBLIOTHEQUE . . . . . . . . . *LIBL  Nom, *LIBL

Exemple de description de fichier éditée par la commande DESCFIC (le fichier décrit est complètement bidon) :

Fichier : FCL510L1            Bibl. : QGPL               Type : LF
Desc.   : fichier logique client
Format  : ENRFCL              Membre : FCL510L1
Fichier sous-jacent : QGPL/FCL510P

Clé. Nom champ. Lg. D. T Description de la zone............ Pos.Buff.
 1 A CFONUM       7  0 S N° DE CLIENT                          1    6
     CFODTS      30    A RAISON SOCIALE                        7   36
     CFOSTT       1    A STATUT                               37   37
     CFOUSC      10    A UTILISATEUR DE CREATION              38   47
     CFODTC       8  0 S DATE DE CREATION                     48   55
     CFODTR       8  0 S DATE RÉCEPT. COMP                    56   63

Commentaires :

- Le type "LF" indique qu’il s’agit d’un fichier logique, le type "PF" apparaîtrait s’il s’agissait d’un fichier physique.
- Le fichier "sous-jacent" est le fichier physique auquel est rattaché le fichier logique FCL510L1. Si on avait édité la description du fichier FCL510P, on aurait obtenu la liste des fichier logiques dépendants du physique.
- la colonné "Clé" indique la position de la zone dans la clé du fichier. Le caractère qui suit, qui peut être "A" ou "D", indique s’il s’agit d’une clé "Ascendante" ou "Descendante".
- la colonne "D." indique le nombre de décimales pour les zones numériques uniquement.
- la colonne "T" indique le type de zone qui peut être "A" pour "Alphanumérique", "S" pour numérique "étendu" ou "P" pour numérique "paqué".
- la colonne "Pos. Buff." indique les positions de début et de fin de chaque zone dans le buffer de fichier.

ATTENTION : Les informations données par la commande DESCFIC ne proviennent pas du fichier source qui a servi à créer l’objet fichier. Les informations sont en fait prélevées directement au niveau de l’objet fichier au moyen des commandes AS/400 DSPFD (pour les informations de base), DSPFFD (pour la liste des zones), DSPDBR (pour les dépendances), etc... Elles sont par la même occasion stockées dans des fichiers temporaires (créés dans la bibliothèque QTEMP) pour être ensuite relues par le programme d’impression RPG (DESFICP).

Objet Type Attribut Description
DDSBAS *FILE PF-DTA Sortie de DSPFD TYPE(*BASATR)
DDSDBR *FILE PF-DTA Sortie de DSPDBR 
DDSDEP *FILE PF-DTA Sortie de DSPFD TYPE(*MBR)
DDSFMT *FILE PF-DTA Sortie de DSPFD TYPE(*RCDFMT) 
DDSKEY *FILE PF-DTA Sortie de DSPFD TYPE(*ACCPTH)
DDSMBR *FILE PF-DTA Sortie de DSPFD TYPE(*MBRLIST)
DDSSEL *FILE PF-DTA Sortie de DSPFD TYPE(*SELECT) 
DDSZON *FILE PF-DTA Sortie de DSPFFD

Enchaînement des programmes :

CMD DESCFIC --> CLP DESCFIC --> RPG DESFICP (impression)

Par rapport à l’ancienne version, la nouvelle version écrite en RPG Free offre quelques améliorations :
- elle édite la liste intégrale des fichiers physiques sous-jacents d’un fichier logique joint (l’ancienne version n’éditait que le premier fichier)
- en plus du nom DDS des colonnes, elle édite également le nom long Adelia des dites colonnes : pas de miracle, cette information n’existe dans la table DB2 que parce qu’elle a été codée dans les "entêtes de colonnes" lors de la création de la table (il s’agit d’une convention liée aux normes et standards d’une application sur laquelle je travaille en ce moment, si vous n’appliquez pas de convention de ce genre, cette colonne ne vous servira à rien et vous pourrez la retirer).

La compilation du pgm RPG se fait très simplement en retirant les marqueurs de commentaires sur la commande CRTBNDRPG du programme CLP DESCFIC. Lors du premier appel de la commande DESCFIC, le programme RPG va se compiler. Il suffira de remettre cette commande en commentaire et de recompiler le programme CLP pour les appels suivants de la commande DESCFIC. (penser à personnaliser le contenu de la variable &BIBCMP avant compilation du CL).

Parmi les améliorations possibles, on peut ajouter une partie décrivant les sélections / omissions d’un fichier logique sélectif. On peut aussi enrichir la présentation de la liste des fichiers logiques d’un fichier physique en ajoutant la description de chaque logique, éventuellement ses clés, etc... On peut aussi remplacer les accès BD natifs par des requêtes SQL. On peut enfin récupérer les descriptions de fichier dans les fichiers systèmes (cf. article de Didier Encinas) pour éliminer la mécanique d’extraction des informations se trouvant dans le pgm CLP. On le voit, les possibilités d’amélioration et de personnalisation sont nombreuses.

Documents joints