Aller au contenu

DCLF

Déclarer un fichier

En bref

La commande DCLF (Déclarer un fichier) permet de déclarer un fichier (par son nom) dans un programme de langage de contrôle (CL).

Syntaxe minimale

DCLF FILE(…)

Paramètres

Astuce : dans une session 5250, tapez DCLF puis F4 pour l'invite de saisie, et F1 sur un paramètre pour son aide.

Aide IBM i de la commande

Texte du F1, IBM i 7.5 en français (bibliothèque QSYS)

Où s'exécute :

  • Programme batch (*BPGM)
  • Programme interactif (*IPGM)
Compatible multitâche : Oui

La commande DCLF (Déclarer un fichier) permet de déclarer un fichier (par son nom) dans un programme de langage de contrôle (CL). Jusqu'à cinq commandes DCLF sont autorisées dans un programme CL ou une procédure CL ILE. Chaque commande DCLF indique le nom d'un fichier écran ou d'un fichier base de données, les formats d'enregistrement de fichier à utiliser dans le programme et un ID d'ouverture de fichier facultatif utilisé pour identifier de manière unique l'instance déclarée du fichier dans un programme CL ou une procédure CL ILE. Plusieurs commandes DCLF peuvent faire référence au même fichier, tant que la valeur indiquée pour le paramètre ID ouverture fichier (OPNID) est unique. A la suite de la commande DCLF pour déclarer un fichier, le programme CL ou la procédure CL ILE peut contenir des commandes de manipulation de données. Pour les fichiers écran, les commandes suivantes permettent d'envoyer des données vers un poste de travail ou de recevoir des données d'un poste de travail : SNDF (Envoyer fichier écran), RCVF (Recevoir fichier écran ou BD), SNDRCVF (Envoyer/recevoir fichier écran), ENDRCV (Arrêter la réception) et WAIT (Attendre). Pour les fichiers base de données, la commande RCVF permet de lire des enregistrements à partir du fichier.

Lorsque le programme CL ou la procédure CL ILE est compilé, une variable CL est automatiquement déclarée pour chaque zone de chaque format d'enregistrement utilisé dans le programme. S'il s'agit d'un fichier base de données de niveau enregistrement, le format d'enregistrement contient une zone portant son nom. Si la valeur indiquée pour le paramètre OPNID est *NONE, le nom de la variable est le nom de zone ayant pour préfixe une perluète (&). Si sa valeur est différente de *NONE, le nom de la variable est le nom de zone ayant pour préfixe une perluète (&), la valeur indiquée pour le paramètre OPNID et un trait de soulignement.

Par exemple, si un fichier déclaré a un format d'enregistrement avec la zone NOMCLIENT et si l'ID d'ouverture de fichier indiqué dans la commande DCLF est FICHIER1, la variable déclarée se présentera comme suit :

  &FICHIER1_NOMCLIENT

Les attributs de chaque zone déclarée sont identiques à ceux de la zone définie dans le format d'enregistrement du fichier. Les zones définies dans le format d'enregistrement comme étant numériques sont définies en tant que variables décimales. Les indicateurs définis dans le format d'enregistrement du fichier référencé sont déclarés en tant que variables logiques, dont le nom est sous la forme INnn, où 'nn' désigne le numéro de l'indicateur.

Les variables automatiquement déclarées par la commande DCLF peuvent être utilisées dans le programme de la même manière que celles déclarées par la commande DCL. Par exemple, les indicateurs sont utilisables dans les expressions et les instructions IF car ils sont déclarés comme étant des variables logiques.

Vous pouvez visualiser le contenu d'une variable, et non son nom. L'écran affiche une, plusieurs ou toutes les zones du format d'enregistrement qui peuvent être remplies par l'utilisateur. Les DDS déterminent le format de l'écran.

Restrictions :

  • Cette commande est valide uniquement dans un programme CL ou une procédure CL ILE. Toutes les commandes de déclaration (DCL, COPYRIGHT, DCLF et DCLPRCOPT) doivent suivre la commande PGM (Programme) et précéder les autres commandes du programme. Elles peuvent être entrées dans n'importe quel ordre.
  • Le fichier doit être un fichier écran ou un fichier base de données ne contenant qu'un seul format d'enregistrement.
  • Le fichier ne peut pas être un fichier mixte, même s'il est associé uniquement à des unités écran.
  • Le fichier base de données peut être physique ou logique, de niveau zone ou non.
  • Le fichier référencé doit exister avant la création du programme.

Etant donné que les variables CL sont automatiquement déclarées pour chaque zone contenue dans les formats d'enregistrement d'un fichier référencé, les restrictions suivantes s'appliquent :

  • Si le fichier est modifié et que sa description indique qu'une vérification de niveau doit être effectuée, le programme CL ou la procédure CL ILE doit être recompilé pour correspondre à la nouvelle description de fichier. Pour plus de détails sur la vérification de niveau, reportez-vous aux manuels Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/ et Application Display Programming book, SC41-5715.
  • Si un nom de zone est défini dans plusieurs formats d'enregistrement du fichier écran, les attributs de cette zone doivent être identiques dans tous les formats d'enregistrement.
  • Toute variable CL déclarée dans le programme par une commande DCL qui porte le même nom qu'une autre variable CL automatiquement déclarée (pour une zone référencée) doit également avoir les mêmes attributs indiquées dans les DDS pour la zone référencée.
  • Une variable utilisée dans le fichier doit avoir un type de données admis pour les variables CL. Les zones définies au format décimal condensé ou décimal étendu sont déclarées sous forme de variables décimales. Les zones définies au format binaire sont déclarées sous forme de variables décimales par défaut mais elles seront déclarées sous forme de variables de nombre entier uniquement si toutes les conditions suivantes sont remplies :
    • La valeur *INT est indiquée au paramètre DCLBINFLD (Déclarer zones binaires).
    • La taille de zone est inférieure à 10 chiffres.
    • La précision de zone est 0.

    Les variables utilisées dans le fichier doivent avoir des attributs admis pour les variables CL. Pour une variable décimale, la longueur maximale est de 15 chiffres dont 9 positions décimales. Si elle contient plus de 15 chiffres, le langage de contrôle (CL) la convertit en variable alphanumérique dont la longueur est égale au nombre de chiffres divisé par 2, plus 1 (n / 2 + 1). Un message CPI0306 est alors émis pour indiquer cette conversion dans la liste du programme. La longueur maximale d'une variable de type caractère est de 32767 octets.

Informations complémentaires :

La façon dont un fichier est traité dans un programme CL ou une procédure CL ILE est différente selon que le fichier indiqué par la commande DCLF est un fichier écran ou base de données.

Les instructions suivantes s'appliquent si le fichier est de type fichier-écran à la compilation :

  • Le fichier doit être de type fichier-écran lors de l'exécution.
  • Le programme peut contenir toute combinaison des commandes suivantes : SNDF, RCVF, SNDRCVF, ENDRCV et WAIT.
  • Le fichier est ouvert en entrée et en sortie.

Les instructions suivantes s'appliquent si le fichier est de type base de données à la compilation :

  • Le fichier doit être de type base de données avec un seul format d'enregistrement lors de l'exécution.
  • Le programme peut contenir des commandes RCVF uniquement (et non SNDF, SNDRCVF, ENDRCV ou WAIT).
  • Le fichier est ouvert pour les opérations d'entrée uniquement.
  • Le fichier est ouvert implicitement lors de l'exécution de la commande RCVF, et non en utilisant la commande OPNDBF (Ouvrir un fichier base de données).
  • Le fichier est fermé implicitement à la fin du programme CL ou de la procédure CL ILE, ou explicitement à l'aide de la commande CLOSE (Fermer un fichier) avec le même programme CL ou la même procédure CL ILE.

Paramètres

Mot-clé Description Valeurs possibles Remarques
FILE Fichier Nom d'objet qualifié Obligatoire, positionnel 1
Qualificatif 1: Fichier Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
RCDFMT Format d'enregistrement Valeurs uniques: *ALL
Autres valeurs (jusqu'à 50 répétitions): Nom
Facultatif, positionnel 2
OPNID ID ouverture fichier Nom simple, *NONE Facultatif
ALWVARLEN Zones long variable admises *NO, *YES Facultatif
ALWNULL Valeur indéf admise pour zone *NO, *YES Facultatif
ALWGRAPHIC Zones graphiques admises *NO, *YES Facultatif
DCLBINFLD Déclarer zones binaires *DEC, *INT Facultatif

Fichier (FILE)

Indique le fichier à utiliser par le programme CL ou la procédure CL ILE.

Ce paramètre est obligatoire.

Qualificatif 1 : Fichier

nom
Indiquez le nom du fichier.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
Le fichier est recherché dans la bibliothèque en cours du travail. Si celle-ci ne figure pas dans la liste des bibliothèques, QGPL est prise par défaut.
nom
Indiquez le nom de la bibliothèque contenant le fichier.

Format d'enregistrement (RCDFMT)

Indique les noms d'un ou plusieurs formats d'enregistrement contenus dans le fichier. Ceux-ci sont utilisés par les commandes SNDF (Envoyer un fichier), RCVF (Recevoir un fichier) et SNDRCVF (Envoyer/recevoir un fichier) du programme CL ou de la procédure CL ILE. Seule une commande RCVF peut traiter un fichier base de données. Aucun nom de variable CL ne peut être indiqué avec RCDFMT (seuls les noms de formats d'enregistrement sont utilisables). Une seule variable CL est automatiquement déclarée dans le programme pour chaque zone et indicateur dans chaque format d'enregistrement indiqué par RCDFMT.

Remarque :Un fichier physique ne peut contenir qu'un seul format d'enregistrement. Un fichier logique pour lequel plusieurs formats d'enregistrement ont été définis dans les DDS peut être utilisé s'il référence un seul membre de fichier physique. Si ce fichier logique contient plusieurs formats d'enregistrement, un message d'erreur est envoyé et la procédure de compilation échoue.

Valeurs uniques

*ALL
Les zones de tous les formats d'enregistrement du fichier seront déclarées en tant que variables dans le programme CL. Si le fichier comporte plus de 99 formats, seuls les 99 premiers sont pris en compte.

Autres valeurs (jusqu'à 50 répétitions)

nom
Indiquez le nom du format d'enregistrement de fichier dont les zones doivent être déclarées sous forme de variables dans le programme CL ou la procédure CL ILE. Vous ne pouvez pas utiliser une variable CL pour indiquer un nom.

ID ouverture fichier (OPNID)

Indique l'ID d'ouverture de fichier à associer au fichier indiqué pour le paramètre Fichier (FILE). Cet ID doit être unique pour tous les fichiers déclarés dans le programme CL.

*NONE
Le fichier ne dispose pas d'ID d'ouverture de fichier. Un seul fichier peut être déclaré dans un programme CL ou une procédure CL ILE ayant *NONE comme ID d'ouverture de fichier.
nom-simple
Indiquez le nom à utiliser comme ID d'ouverture du fichier.

Zones long variable admises (ALWVARLEN)

Indique si des zones de longueur variable sont admises dans les formats d'enregistrement.

*NO
Les zones de longueur variable ne sont pas admises dans les formats d'enregistrement.
*YES
Les zones de longueur variable sont admises dans les formats d'enregistrement. Les variables CL déclarées pour ces zones sont traitées comme étant de type *CHAR d'une longueur de 2 octets plus la longueur maximale de zone. Suite à l'exécution d'une commande RCVF sur une zone de longueur variable, les deux premiers octets de la variable CL contiennent la longueur des données. Les données reçues de la zone sont complétées par des blancs à droite pour atteindre la longueur maximale admise (32765 octets).

Valeur indéf admise pour zone (ALWNULL)

Indique si les valeurs indéfinies sont admises.

*NO
Les valeurs indéfinies ne sont pas admises. Un message de diagnostic est envoyé pour chaque zone contenant une valeur indéfinie lors de l'exécution de la commande RCVF, et un seul message d'arrêt de programme est émis pour tout l'enregistrement. Les valeurs par défaut sont placées dans les variables CL.
*YES
Les valeurs indéfinies sont admises.

Zones graphiques admises (ALWGRAPHIC)

Indique si des zones graphiques sont admises dans les formats d'enregistrement.

*NO
Les formats d'enregistrement ne peuvent pas contenir de zones graphiques. Un message de diagnostic est envoyé au moment de la compilation si les zones de données graphiques sont supportées dans le fichier.
*YES
Les formats d'enregistrement peuvent contenir des zones graphiques. Les variables CL déclarées pour les zones de données graphiques sont gérées comme des variables de type *CHAR et ont une longueur (exprimée en octets) identique à celle des zones de données graphiques.

Déclarer zones binaires (DCLBINFLD)

Permet d'indiquer si les variables déclarées pour les zones binaires dans le format d'enregistrement doivent être de type décimal condensé ou entier.

*DEC
Les variables CL déclarées pour les zones binaires dans le format d'enregistrement seront de TYPE(*DEC).
*INT
Les variables CL déclarées pour les zones binaires, avec une précision zéro et une longueur inférieure ou égale à 9 dans le format d'enregistrement, seront de TYPE(*INT).

Exemples

Exemple 1 : Déclaration des zones de tous les formats d'enregistrement en tant que variables

DCLF   FILE(ABLE)  RCDFMT(*ALL)

Cette commande indique que le fichier nommé ABLE est utilisé par le programme CL pour la transmission de données entre l'utilisateur et le programme. Aucune bibliothèque n'étant spécifiée, la liste des bibliothèques est utilisée pour localiser le fichier. Toutes les zones et indicateurs dans tous les formats d'enregistrement sont automatiquement déclarés en tant que variables et les données d'une zone dans un format d'enregistrement au choix (jusqu'aux 99 premiers) peuvent être échangées entre le programme et l'utilisateur.

Exemple 2 : Utilisation de plusieurs formats d'enregistrement

DCLF   FILE(BAKER)  RCDFMT(REC2 REC6)

Le fichier écran BAKER est utilisé par le programme CL ou la procédure CL ILE pour la transmission de données entre l'utilisateur et le programme. En admettant que la valeur par défaut du qualificatif de la bibliothèque pour FILE soit *LIBL, la liste des bibliothèques est utilisée pour localiser le fichier. REC2 et REC6 sont les deux formats d'enregistrement pris en compte.

Exemple 3 : Utilisation d'un ID d'ouverture de fichier

DCLF   FILE(MYLIB/CHARLES)  OPNID(CTLFILE1)

Le fichier CHARLES situé dans la bibliothèque MYLIB est utilisé par le programme CL ou la procédure CL ILE pour lire les enregistrements à partir du fichier base de données. Si le format d'enregistrement comporte une zone nommée CLIENTNO, la variable suivante est déclarée :

  &CTLFILE1_CLIENTNO

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.