L'objet et le membre : ce que contient vraiment un fichier
Sur IBM i, un fichier n'est pas un seul bloc : l'objet porte la description, le membre porte les données. Ce que chacun contient, les commandes de l'un et de l'autre, et pourquoi un fichier peut très bien exister sans aucun membre, démontré avec un Pokédex sur un IBM i 7.5.
En une phrase
Un fichier base de données est un objet *FILE qui
décrit les données (format, attributs, droits) et qui contient zéro, un ou plusieurs
membres : chaque membre est un ensemble d'enregistrements, au format du fichier. On
crée, sauvegarde et sécurise l'objet ; on remplit, vide et lit le membre.
L'objet et ses membres
IBM définit les membres comme des ensembles de données différents, tous au même format, à l'intérieur d'un même fichier. Voici le Pokédex de notre démonstration : un fichier, deux membres, un par génération.
- L'objet porte ce qui vaut pour tout le fichier : le format d'enregistrement (la liste des zones), les attributs (taille, réutilisation des supprimés, nombre maximal de membres…), le propriétaire et les droits.
- Le membre porte les enregistrements, et le chemin d'accès qui les ordonne quand le fichier a une clé. Tous les membres d'un fichier partagent le même format.
- Un membre n'existe pas seul : supprimer le fichier supprime tous ses membres.
- IBM le rappelle : en règle générale, un fichier n'a qu'un membre, celui créé avec lui, qui porte le même nom que le fichier (CRTPF a ajouté le membre CLIENT au fichier CLIENT, le membre POKEMON au fichier POKEMON).
Des commandes pour l'objet, d'autres pour le membre
Sur l'objet
| CRTPF, CRTLF, CRTSRCPF | Créer le fichier |
|---|---|
| DLTF | Le supprimer, avec tous ses membres |
| MOVOBJ, RNMOBJ, CRTDUPOBJ | Le déplacer, le renommer, le dupliquer |
| SAVOBJ, RSTOBJ | Le sauvegarder, le restaurer |
| GRTOBJAUT, RVKOBJAUT | Gérer les droits, valables pour tous ses membres |
| CHGPF, DSPFD | Changer ou afficher ses attributs |
Les droits se donnent sur l'objet : GRTOBJAUT … OBJTYPE(*FILE) ouvre ou ferme tous les
membres du fichier d'un coup. En SQL, le catalogue QSYS2.SYSPARTITIONSTAT liste les
membres (une « partition » par membre) :
SELECT SYSTEM_TABLE_MEMBER, NUMBER_ROWS, PARTITION_TEXT
FROM QSYS2.SYSPARTITIONSTAT
WHERE TABLE_SCHEMA = 'JOBIPOK' AND TABLE_NAME = 'POKEDEX'
SYSTEM_TABLE_MEMBER NUMBER_ROWS PARTITION_TEXT
GEN1 5 Generation 1
GEN2 5 Generation 2
Un fichier peut vivre sans membre
Puisque la description est dans l'objet, rien n'oblige un fichier à avoir des données. Le paramètre
MBR(*NONE) de CRTPF crée l'objet seul. Notre Pokédex, décrit ainsi :
A* Pokedex multi-membre : un membre par generation
A R POKEDEXR TEXT('Pokedex d''une generation')
A NUMPOK 4S 0 COLHDG('No' 'Pokedex')
A NOM 12A COLHDG('Nom')
A TYPE1 10A COLHDG('Type')
A K NUMPOK
CRTPF FILE(JOBIPOK/POKEDEX) SRCFILE(JOBIPOK/QDDSSRC) MBR(*NONE) MAXMBRS(*NOMAX)
CPC7301 Fichier POKEDEX créé dans la bibliothèque JOBIPOK.
Un seul message : l'objet est créé, mais pas de CPC7305 Membre … ajouté. Le fichier
existe, on peut afficher sa description, lui donner des droits, le sauvegarder… mais pas le lire :
IBM précise qu'il faut au moins un membre avant toute entrée-sortie. En SQL :
SELECT * FROM JOBIPOK.POKEDEX
SQL0204 *FIRST de type *MEM dans *N non trouvé.
SQL cherche le premier membre (*FIRST) et n'en trouve aucun. Il suffit d'en ajouter
un :
ADDPFM FILE(JOBIPOK/POKEDEX) MBR(GEN1) TEXT('Generation 1')
CPC7305 Membre GEN1 ajouté au fichier POKEDEX de JOBIPOK.
À quoi sert un fichier sans membre ?
- Le fichier de référence de zones. C'est l'exemple d'IBM : un PF qui ne contient
jamais de données et ne sert qu'à décrire des zones, que les autres fichiers reprennent par les
mots-clés
REFetREFFLD. IBM le crée avecMBR(*NONE)« parce qu'il ne contient jamais de données ». - Le changement de format. Autre exemple d'IBM : pour ajouter une zone, on crée le
nouveau fichier avec
MBR(*NONE), puis on y copie le membre de l'ancien. - Le fichier source neuf. CRTSRCPF crée le fichier sans membre par défaut : chaque source sera un membre, ajouté plus tard (voir les fichiers source).
- Le fichier dont les membres arrivent plus tard, un par génération, un par mois : c'est le multi-membre, objet de la page suivante.
CRTLF de notre
démonstration a produit un CPC7305 Membre … ajouté : le membre d'un LF ne contient pas de
données, il désigne les membres des PF qu'il présente (voir
les fichiers logiques).
À retenir
- L'objet
*FILEporte la description ; le membre porte les données. - Créer, déplacer, sauvegarder, sécuriser : l'objet. Remplir, vider, réorganiser, lire : le membre.
- En règle générale, un fichier a un seul membre, du même nom que lui.
MBR(*NONE)crée un fichier sans membre : utile pour un fichier de référence ou un fichier source, mais illisible tant qu'on n'a pas fait ADDPFM.
Sources
Les exemples ont été créés et relevés sur un IBM i 7.5 (voir la méthode). Les définitions et les règles viennent de ces sources, consultées le 16 octobre 2026 :
- IBM i 7.5 Database : Database programming, IBM (PDF). Définitions du fichier physique, du fichier logique (« contains no data ») et du membre ; un seul membre « en règle générale » et au moins un membre avant toute entrée-sortie ; premier membre choisi selon la date et l'heure de création ; fichier de référence de zones et fichier créé MBR(*NONE) ; attributs des fichiers source (92 = 6 + 6 + 80, sans clé, plusieurs membres) ; LF qui présente l'ancien format ; règles des LF de jointure (lecture seule, pas de DFU, clé du fichier primaire, JDFTVAL, un seul format) ; vu de SQL, LF = vues et index.
- L'aide en ligne des commandes citées, livrée avec IBM i 7.5 et reprise en français dans les fiches des commandes CL de ce site. Paramètres de CRTPF, CRTLF, CRTSRCPF, ADDPFM, OVRDBF, UPDDTA, DSPPFM, RGZPFM, CPYF, CRTBNDRPG et CRTBNDCL.
Questions fréquentes
Qu'est-ce qu'un membre sur IBM i ?
Un membre est un ensemble de données à l'intérieur d'un fichier base de données. L'objet *FILE porte la description (format, attributs, droits) ; le membre porte les enregistrements. Tous les membres d'un fichier ont le même format. IBM précise qu'en règle générale, un fichier n'a qu'un membre, créé avec le fichier.
Quelle différence entre un objet et un membre ?
L'objet est ce que l'on crée, déplace, sauvegarde ou sécurise (CRTPF, MOVOBJ, SAVOBJ, GRTOBJAUT). Le membre est ce que l'on remplit, vide, réorganise ou lit (ADDPFM, CLRPFM, RGZPFM, DSPPFM). Un membre n'existe pas en dehors de son fichier.
Un fichier peut-il exister sans membre ?
Oui : CRTPF … MBR(*NONE) crée l'objet sans données. Il faut alors ajouter un membre (ADDPFM) avant toute lecture ou écriture ; en SQL, la lecture échoue avec SQL0204 (*FIRST de type *MEM non trouvé). CRTSRCPF crée d'ailleurs ses fichiers source sans membre par défaut.
À quoi sert un fichier sans membre ?
IBM donne deux exemples : le fichier de référence de zones, qui ne sert qu'à décrire des zones reprises par REF et REFFLD, et le nouveau fichier créé MBR(*NONE) avant d'y copier l'ancien lors d'un changement de format. Un fichier source fraîchement créé, ou un fichier dont les membres seront ajoutés par programme, est aussi sans membre au départ.