Les objets IBM i, tout est objet
Sur IBM i, un fichier, un programme, une file d'attente ou un utilisateur sont tous des objets. Voici ce qu'est un objet, comment les bibliothèques les rangent et les retrouvent, et les types que l'on croise tous les jours, montrés sur une vraie bibliothèque.
En une phrase
Sur IBM i, tout ce que l'on manipule est un objet : il a un nom, un type qui dit ce qu'il est et ce qu'on a le droit d'en faire, et il est rangé dans une bibliothèque. Un programme, un fichier, une file d'attente ou un profil utilisateur sont des objets, et se gèrent avec les mêmes commandes.
C'est quoi, un objet ?
Sous Windows ou Linux, on dit souvent que « tout est fichier » : un programme, une image, une configuration sont des suites d'octets que l'on peut ouvrir, lire et réécrire. Sur IBM i, c'est l'inverse : tout est objet, et un objet n'est pas une simple suite d'octets.
Un objet, c'est des données et un type. Le type est fixé à la création et décide des opérations possibles. On appelle un programme, on lit et on écrit dans un fichier, on dépose un message dans une file d'attente de données. Mais on ne peut pas ouvrir un programme pour le réécrire comme un fichier texte : pour le changer, on le recompile, ce qui crée un nouvel objet.
Le système vérifie le type à chaque commande. Sur notre bibliothèque d'exemple, la commande
CPYF FROMFILE(JOBIOBJ/COMPTEUR), qui copie un fichier, échoue : « Fichier origine COMPTEUR de JOBIOBJ non trouvé » (CPF2802), puis
CPF2817, « Commande de copie interrompue à la suite d'une erreur ».
COMPTEUR existe bien, mais c'est une zone de données (*DTAARA), pas un fichier : le
système ne cherche que des objets du type attendu.
Cette conception vient du System/38, annoncé par IBM en 1978. L'AS/400 en a hérité en 1988, et IBM i aujourd'hui. Les programmes ne parlent pas directement au matériel mais à une interface machine indépendante de la technologie (TIMI), et chaque objet a un type fixe qui définit les opérations applicables.
Avantage pour vous : un seul jeu de commandes. Lister, copier, déplacer, renommer, supprimer, donner des droits ou sauvegarder se fait de la même façon pour un programme, un fichier ou une file d'attente.
Ce qui identifie et décrit un objet
| Élément | Exemple | À savoir |
|---|---|---|
| Nom | BONJOUR | 10 caractères au plus, sans espace. Il commence par une lettre, puis lettres, chiffres et _. Les signes $ # @ sont admis, mais # et @ changent selon le jeu de caractères (refusés tels quels sur notre système en français) : évitez-les. Les objets d'IBM, sauf les commandes, commencent par Q : évitez-le pour les vôtres. |
| Type | *PGM | Fixé à la création, il ne change jamais. Il dit ce qu'est l'objet et quelles commandes s'y appliquent. |
| Bibliothèque | JOBIOBJ | Le conteneur où l'objet est rangé. On écrit le nom qualifié bibliothèque/objet : JOBIOBJ/BONJOUR. |
| Attribut | CLLE | Une précision sur le type : le langage d'un programme, la nature d'un fichier (PF, LF, DSPF, PRTF…). |
| Texte | Programme de la commande BONJOUR | 50 caractères de description, affichés par WRKOBJ. Le remplir, c'est documenter. |
| Propriétaire et droits | Chaque objet a un propriétaire et une liste de droits (*USE, *CHANGE, *ALL…) : la sécurité se règle objet par objet. | |
| Description | Taille, dates de création, de modification, de dernière utilisation et de sauvegarde, source d'origine : DSPOBJD les affiche. |
Un objet est identifié par trois choses : son nom, son type et sa bibliothèque. Deux objets peuvent donc porter le même nom s'ils sont de types différents. Dans notre bibliothèque d'exemple, BONJOUR est à la fois un programme, la commande qui l'appelle, et une zone de données :

WRKOBJ OBJ(JOBIOBJ/BONJOUR) : trois objets, un seul nom, trois types.En revanche, deux objets de même nom et de même type dans la même bibliothèque, c'est impossible. Créer une deuxième zone de données COMPTEUR dans JOBIOBJ échoue : CPF1023, « La zone de données COMPTEUR existe déjà dans JOBIOBJ ».
Les bibliothèques : où les objets sont rangés
Une bibliothèque (*LIB) est un objet qui en contient d'autres. Les
bibliothèques ne s'imbriquent pas : il n'y a qu'un niveau. Toutes sont rangées dans une seule
bibliothèque, QSYS, la seule qui puisse contenir des bibliothèques. On crée une
bibliothèque par CRTLIB.
Certains objets n'ont pas leur place dans une bibliothèque applicative : les profils utilisateurs
(*USRPRF), les listes d'autorisation (*AUTL) et les descriptions d'unités
(*DEVD) vivent tous dans QSYS.
Une bibliothèque n'est pas un dossier de l'IFS. L'IFS, le système de fichiers hiérarchique d'IBM i
(/home, /QOpenSys…), a ses propres types d'objets, comme les fichiers
stream (*STMF) et les répertoires (*DIR). Les bibliothèques y apparaissent
sous /QSYS.LIB : notre programme BONJOUR y est
/QSYS.LIB/JOBIOBJ.LIB/BONJOUR.PGM.
La liste de bibliothèques (*LIBL)
Un programme cite rarement la bibliothèque de ses fichiers : il écrit ARTICLE, pas
JOBIOBJ/ARTICLE. Le système cherche alors l'objet dans la liste de
bibliothèques du travail, dans l'ordre, et prend le premier objet du bon nom et du bon
type. Cette liste comprend :
- La partie système : les bibliothèques du système d'exploitation, toujours présentes (valeur système QSYSLIBL).
- Les bibliothèques de produits, deux au plus, ajoutées par le système quand une commande en a besoin (QRPG pour le compilateur RPG, par exemple).
- La bibliothèque en cours (
*CURLIB) : c'est là que la plupart des commandes de création, celles des programmes par exemple, rangent l'objet quand on ne précise pas de bibliothèque. Sans bibliothèque en cours, c'est QGPL. - La partie utilisateur : les bibliothèques de l'application, que l'on règle par ADDLIBLE ou CHGLIBL, et que l'on affiche par DSPLIBL.
C'est un mécanisme puissant : en plaçant une bibliothèque de test devant celle de production, le
même programme travaille sur d'autres fichiers sans être modifié. C'est aussi la première cause des
erreurs « objet non trouvé ». Nous l'avons vérifié : appelé par son nom complet
CALL JOBIOBJ/LISTART depuis un travail dont la liste ne contient pas JOBIOBJ, le
programme démarre, puis s'arrête sur
CPF4101, « Fichier ARTICLE de *LIBL non trouvé ou fichier spoule en entrée manquant ». Le programme a été trouvé parce qu'il
était qualifié ; son fichier, lui, a été cherché dans la liste de bibliothèques.
Les types d'objets les plus utilisés
IBM i 7.5 connaît 92 types d'objets rangés en bibliothèque, et 9 de plus pour l'IFS. Seul IBM peut en créer de nouveaux. Au quotidien, une vingtaine suffisent. Pour chacun, nous avons créé un exemple dans la bibliothèque JOBIOBJ :
Données
Ce que les programmes lisent et écrivent. Le type *FILE regroupe des objets très différents : c'est l'attribut (PF, LF, DSPF…) qui dit de quel fichier il s'agit.
| Type | Ce que c'est | Création | Exemple |
|---|---|---|---|
*FILE PF |
Fichier physique. Contient les données : c'est la table. Une table SQL est un fichier physique. | CRTPF | ARTICLE |
*FILE LF |
Fichier logique. Une autre façon de lire un ou plusieurs fichiers physiques : autre ordre (clé), sélection, jointure. Ne contient pas de données. Une vue ou un index SQL est un fichier logique. | CRTLF | ARTICLE1 |
*FILE DSPF |
Fichier écran. La description d'un écran 5250 : zones, couleurs, touches de fonction. | CRTDSPF | ECRAN |
*FILE PRTF |
Fichier d'impression. La mise en page d'un état. Le programme écrit dedans, le système produit un spoule. | CRTPRTF | ETAT |
*FILE SAVF |
Fichier de sauvegarde. Reçoit une sauvegarde (SAVOBJ, SAVLIB) sur disque, pour la transférer ou la garder. | CRTSAVF | SAUVEGARDE |
*DTAARA |
Zone de données. Une petite valeur partagée entre programmes : un compteur, une date de traitement, un paramètre. | CRTDTAARA | COMPTEUR |
*DTAQ |
File d'attente de données. Des messages déposés par un programme et lus dans l'ordre par un autre, souvent un travail qui tourne en continu. | CRTDTAQ | DEMANDES |
*JRN |
Journal. Enregistre chaque modification des fichiers journalisés : pour annuler, reprendre ou répliquer. | CRTJRN | JOURNAL |
*JRNRCV |
Récepteur de journal. L'objet où le journal écrit réellement ses entrées. On le change et on le sauvegarde régulièrement. | CRTJRNRCV | JRNRCV0001 |
Programmes
Ce qui s'exécute. En ILE, le code compilé passe par un module, puis devient un programme ou un programme de service.
| Type | Ce que c'est | Création | Exemple |
|---|---|---|---|
*PGM |
Programme. Ce qu'on appelle par CALL. L'attribut donne le langage : RPGLE, CLLE, RPG (RPG/400), CLE pour une procédure SQL. | CRTBNDRPG | LISTART |
*MODULE |
Module. Le résultat d'une compilation ILE, pas encore exécutable. On le lie dans un programme ou un programme de service. | CRTRPGMOD | OUTILS |
*SRVPGM |
Programme de service. Une boîte à outils de procédures partagées par plusieurs programmes, l'équivalent d'une DLL. | CRTSRVPGM | OUTILS |
*BNDDIR |
Répertoire de liage. Une liste de programmes de service et de modules où le compilateur cherche les procédures appelées. | CRTBNDDIR | OUTILS |
*CMD |
Commande. Une commande comme celles d'IBM, avec ses paramètres et son invite F4, qui appelle un programme. | CRTCMD | BONJOUR |
*MSGF |
Fichier de messages. Les textes des messages (CPF…, ou les vôtres), avec leurs variables, traduisibles sans toucher aux programmes. | CRTMSGF | MESSAGES |
Travaux et impressions
Ce qui organise l'exécution des travaux et la sortie des états.
| Type | Ce que c'est | Création | Exemple |
|---|---|---|---|
*JOBD |
Description de travail. Les réglages d'un travail : file d'attente, liste de bibliothèques de départ, priorité, journalisation. | CRTJOBD | DESCTRAV |
*JOBQ |
File d'attente de travaux. Là où attendent les travaux soumis par SBMJOB avant qu'un sous-système les lance. | CRTJOBQ | TRAVAUX |
*OUTQ |
File d'attente de sortie. Là où attendent les spoules avant impression ou consultation. | CRTOUTQ | IMPRESSION |
*SBSD |
Description de sous-système. Un environnement d'exécution : files de travaux servies, mémoire, nombre de travaux. | CRTSBSD | SOUSSYST |
*CLS |
Classe. Les règles d'exécution d'un travail : priorité, tranche de temps. | CRTCLS | CLASSE |
Système et sécurité
Des objets que l'on ne range pas soi-même : ils vivent tous dans la bibliothèque QSYS.
| Type | Ce que c'est | Création | Exemple |
|---|---|---|---|
*LIB |
Bibliothèque. Le conteneur des autres objets. Une bibliothèque est elle-même un objet, rangé dans QSYS. | CRTLIB | dans QSYS |
*USRPRF |
Profil utilisateur. Un utilisateur : mot de passe, droits spéciaux, bibliothèque en cours, menu de départ. | CRTUSRPRF | dans QSYS |
*AUTL |
Liste d'autorisation. Un groupe de droits que l'on attache à plusieurs objets pour les gérer d'un coup. | CRTAUTL | dans QSYS |
*DEVD |
Description d'unité. Un écran, une imprimante, une unité de bande : chaque session 5250 a la sienne. | CRTDEVDSP | dans QSYS |
Un fichier physique se décrit en DDS ou en SQL. Voici la description DDS du fichier ARTICLE :
A* Fichier physique decrit en DDS : les articles
A UNIQUE
A R ARTICLER TEXT('Article')
A ARTCOD 6A COLHDG('Code')
A ARTLIB 30A COLHDG('Libelle')
A ARTPRX 7P 2 COLHDG('Prix')
A K ARTCOD
Et les objets SQL ?
SQL ne crée pas d'objets d'un autre monde : une table, une vue, un index ou une procédure SQL sont des objets IBM i comme les autres. Voici ce que le système a créé dans JOBIOBJ pour nos ordres SQL, relevé par QSYS2.OBJECT_STATISTICS :
| Ordre SQL | Objet | Type | Attribut |
|---|---|---|---|
CREATE TABLE |
CLIENTS |
*FILE |
PF |
CREATE INDEX |
CLINOMIX |
*FILE |
LF |
CREATE VIEW |
CLINORD |
*FILE |
LF |
CREATE PROCEDURE |
CPTCLI |
*PGM |
CLE |
- Une table est un fichier physique (
PF), une vue et un index sont des fichiers logiques (LF). Un programme RPG peut les lire comme des fichiers DDS. - Une procédure SQL est un programme
*PGMd'attributCLE: le système génère un programme ILE C avec du SQL intégré, puis le compile. - Un nom SQL peut dépasser 10 caractères, pas un nom d'objet.
CLIENTS_PAR_NOMest donc aussi l'objetCLINOMIX, le nom système donné par la clauseFOR SYSTEM NAME. Sans elle, le système prend les cinq premiers caractères et ajoute un numéro : nos tables d'essaiCLIENTS_PAR_VILLEetCLIENTS_PAR_REGIONsont devenuesCLIEN00001etCLIEN00002. - Un schéma SQL est une bibliothèque. Créé par
CREATE SCHEMA, il contient en plus un journal, un récepteur et le catalogue SQL.
Notre bibliothèque d'exemple, en entier
La bibliothèque JOBIOBJ contient 30 objets de 16 types différents. Voici le premier écran de WRKOBJ, puis la liste complète :

WRKOBJ OBJ(JOBIOBJ/*ALL), premier écran. Les options 4, 7 et 8 suppriment, renomment et décrivent n'importe quel objet.| Objet | Type | Attribut | Texte |
|---|---|---|---|
OUTILS |
*BNDDIR |
Repertoire de liage | |
CLASSE |
*CLS |
Classe : priorite et tranche de temps | |
BONJOUR |
*CMD |
Commande BONJOUR | |
BONJOUR |
*DTAARA |
Meme nom, autre type | |
COMPTEUR |
*DTAARA |
Dernier numero attribue | |
DEMANDES |
*DTAQ |
File de demandes entre programmes | |
ARTICLE |
*FILE |
PF | Articles (PF DDS) |
ARTICLE1 |
*FILE |
LF | Articles par libelle (LF) |
CLIENTS |
*FILE |
PF | Clients (table SQL) |
CLINOMIX |
*FILE |
LF | Clients par nom (index SQL) |
CLINORD |
*FILE |
LF | Clients du nord (vue SQL) |
ECRAN |
*FILE |
DSPF | Ecran de recherche |
ETAT |
*FILE |
PRTF | Liste des articles |
QCLSRC |
*FILE |
PF | Sources CL |
QCMDSRC |
*FILE |
PF | Sources des commandes |
QDDSSRC |
*FILE |
PF | Sources DDS |
QRPGLESRC |
*FILE |
PF | Sources RPG ILE |
SAUVEGARDE |
*FILE |
SAVF | Fichier de sauvegarde |
DESCTRAV |
*JOBD |
Description de travail | |
TRAVAUX |
*JOBQ |
File d'attente des travaux batch | |
JOURNAL |
*JRN |
Journal des modifications | |
JRNRCV0001 |
*JRNRCV |
Recepteur de journal | |
OUTILS |
*MODULE |
RPGLE | Procedures communes |
MESSAGES |
*MSGF |
Messages de l'application | |
IMPRESSION |
*OUTQ |
File d'attente des spoules | |
BONJOUR |
*PGM |
CLLE | Programme de la commande BONJOUR |
CPTCLI |
*PGM |
CLE | SQL PROCEDURE COMPTER_CLIENTS |
LISTART |
*PGM |
RPGLE | Liste des articles |
SOUSSYST |
*SBSD |
Sous-systeme (non demarre) | |
OUTILS |
*SRVPGM |
RPGLE | Procedures communes |
Les commandes qui ont créé ces objets
/* Bibliothèque et fichiers source */
CRTLIB LIB(JOBIOBJ) TEXT('JOB-i : un exemple de chaque type d''objet')
CRTSRCPF FILE(JOBIOBJ/QDDSSRC) RCDLEN(112)
CRTSRCPF FILE(JOBIOBJ/QRPGLESRC) RCDLEN(112)
CRTSRCPF FILE(JOBIOBJ/QCLSRC) RCDLEN(112)
CRTSRCPF FILE(JOBIOBJ/QCMDSRC) RCDLEN(112)
/* Fichiers décrits en DDS : physique, logique, écran, impression */
CRTPF FILE(JOBIOBJ/ARTICLE) SRCFILE(JOBIOBJ/QDDSSRC)
CRTLF FILE(JOBIOBJ/ARTICLE1) SRCFILE(JOBIOBJ/QDDSSRC)
CRTDSPF FILE(JOBIOBJ/ECRAN) SRCFILE(JOBIOBJ/QDDSSRC)
CRTPRTF FILE(JOBIOBJ/ETAT) SRCFILE(JOBIOBJ/QDDSSRC)
/* Programmes ILE : module, programme de service, répertoire de liage, programmes */
CRTRPGMOD MODULE(JOBIOBJ/OUTILS) SRCFILE(JOBIOBJ/QRPGLESRC)
CRTSRVPGM SRVPGM(JOBIOBJ/OUTILS) MODULE(JOBIOBJ/OUTILS) EXPORT(*ALL)
CRTBNDDIR BNDDIR(JOBIOBJ/OUTILS)
ADDBNDDIRE BNDDIR(JOBIOBJ/OUTILS) OBJ((JOBIOBJ/OUTILS *SRVPGM))
CRTBNDRPG PGM(JOBIOBJ/LISTART) SRCFILE(JOBIOBJ/QRPGLESRC)
CRTBNDCL PGM(JOBIOBJ/BONJOUR) SRCFILE(JOBIOBJ/QCLSRC)
CRTCMD CMD(JOBIOBJ/BONJOUR) PGM(JOBIOBJ/BONJOUR) SRCFILE(JOBIOBJ/QCMDSRC)
/* Échanges entre programmes et messages */
CRTDTAARA DTAARA(JOBIOBJ/COMPTEUR) TYPE(*DEC) LEN(7 0) VALUE(0)
CRTDTAQ DTAQ(JOBIOBJ/DEMANDES) MAXLEN(100)
CRTMSGF MSGF(JOBIOBJ/MESSAGES)
ADDMSGD MSGID(ART0001) MSGF(JOBIOBJ/MESSAGES) MSG('Article &1 inconnu.') FMT((*CHAR 6))
/* Travaux et impression */
CRTOUTQ OUTQ(JOBIOBJ/IMPRESSION)
CRTJOBQ JOBQ(JOBIOBJ/TRAVAUX)
CRTJOBD JOBD(JOBIOBJ/DESCTRAV) JOBQ(JOBIOBJ/TRAVAUX) INLLIBL(JOBIOBJ QGPL QTEMP)
CRTCLS CLS(JOBIOBJ/CLASSE)
CRTSBSD SBSD(JOBIOBJ/SOUSSYST) POOLS((1 *BASE))
/* Sauvegarde et journalisation */
CRTSAVF FILE(JOBIOBJ/SAUVEGARDE)
CRTJRNRCV JRNRCV(JOBIOBJ/JRNRCV0001)
CRTJRN JRN(JOBIOBJ/JOURNAL) JRNRCV(JOBIOBJ/JRNRCV0001)
STRJRNPF FILE(JOBIOBJ/ARTICLE) JRN(JOBIOBJ/JOURNAL) IMAGES(*BOTH)
-- Objets créés en SQL
CREATE TABLE JOBIOBJ.CLIENTS (CLICOD CHAR(6) NOT NULL PRIMARY KEY,
CLINOM VARCHAR(40) NOT NULL);
CREATE INDEX JOBIOBJ.CLIENTS_PAR_NOM FOR SYSTEM NAME CLINOMIX
ON JOBIOBJ.CLIENTS (CLINOM);
CREATE VIEW JOBIOBJ.CLIENTS_NORD FOR SYSTEM NAME CLINORD
AS SELECT * FROM JOBIOBJ.CLIENTS WHERE CLICOD LIKE 'N%';
CREATE PROCEDURE JOBIOBJ.COMPTER_CLIENTS (OUT NB INTEGER)
LANGUAGE SQL SPECIFIC JOBIOBJ.CPTCLI
BEGIN SELECT COUNT(*) INTO NB FROM JOBIOBJ.CLIENTS; END;
Les commandes pour travailler avec les objets
Comme tout est objet, une poignée de commandes s'applique à tous les types :
| WRKOBJ | Lister des objets et agir dessus (copier, supprimer, renommer, droits). |
|---|---|
| DSPOBJD | Afficher la description d'un objet : taille, dates, source, propriétaire. |
| CHKOBJ | Vérifier dans un programme CL qu'un objet existe et que l'on a les droits. |
| CRTDUPOBJ | Copier un objet, avec ou sans ses données. |
| MOVOBJ | Déplacer un objet dans une autre bibliothèque. |
| RNMOBJ | Renommer un objet. |
| CHGOBJD | Modifier le texte de description. |
| DLTOBJ | Supprimer un objet, quel que soit son type. |
| DSPOBJAUT | Afficher les droits sur un objet. |
| GRTOBJAUT | Donner un droit sur un objet. |
| CHGOBJOWN | Changer le propriétaire d'un objet. |
| WRKOBJLCK | Voir qui verrouille un objet. |
| SAVOBJ | Sauvegarder des objets. |
| RSTOBJ | Restaurer des objets. |
Et en SQL, avec les services IBM i :
| QSYS2.OBJECT_STATISTICS | La liste des objets d'une bibliothèque, avec leurs attributs, en SQL. |
|---|---|
| QSYS2.SYSTEM_OBJECT_TYPES | Le catalogue de tous les types d'objets du système. |
| QSYS2.OBJECT_PRIVILEGES | Les droits de chaque utilisateur sur chaque objet. |
| QSYS2.OBJECT_OWNERSHIP | Les objets possédés par un profil. |
| QSYS2.OBJECT_LOCK_INFO | Les verrous posés sur un objet. |
À retenir
- Tout est objet : un nom, un type, une bibliothèque.
- Le type est fixe et décide de ce qu'on peut faire de l'objet.
- Un objet non qualifié est cherché dans la liste de bibliothèques, dans l'ordre.
- Une table SQL est un fichier physique, une vue ou un index un fichier logique.
Tous les types d'objets d'IBM i 7.5
La liste complète, lue dans le catalogue QSYS2.SYSTEM_OBJECT_TYPES d'un IBM i 7.5. Les libellés sont ceux d'IBM, en anglais.
101 types : 92 en bibliothèque, 9 dans l'IFS
| Type | Libellé IBM | Où |
|---|---|---|
*ALRTBL |
Alert table | Bibliothèque |
*AUTL |
Authorization list | Bibliothèque |
*BLKSF |
Block special file | IFS |
*BNDDIR |
Binding directory | Bibliothèque |
*CFGL |
Configuration list | Bibliothèque |
*CHRSF |
Character special file | IFS |
*CHTFMT |
Chart format | Bibliothèque |
*CLD |
C/400 locale description | Bibliothèque |
*CLS |
Class | Bibliothèque |
*CMD |
Command | Bibliothèque |
*CNNL |
Connection list | Bibliothèque |
*COSD |
Class-of-service description | Bibliothèque |
*CRG |
Cluster resource group | Bibliothèque |
*CRQD |
Change request description | Bibliothèque |
*CSI |
Communications side information | Bibliothèque |
*CSPMAP |
Cross-system product map | Bibliothèque |
*CSPTBL |
Cross-system product table | Bibliothèque |
*CTLD |
Controller description | Bibliothèque |
*DDIR |
Distributed file directory | IFS |
*DEVD |
Device description | Bibliothèque |
*DIR |
Directory | IFS |
*DOC |
Document | Bibliothèque |
*DSTMF |
Distributed stream file | IFS |
*DTAARA |
Data area | Bibliothèque |
*DTADCT |
Data dictionary | Bibliothèque |
*DTAQ |
Data queue | Bibliothèque |
*EDTD |
Edit description | Bibliothèque |
*EXITRG |
Exit registration | Bibliothèque |
*FCT |
Forms control table | Bibliothèque |
*FIFO |
First-in-first-out special file | IFS |
*FILE |
File | Bibliothèque |
*FLR |
Folder | Bibliothèque |
*FNTRSC |
Font resource | Bibliothèque |
*FNTTBL |
Font mapping table | Bibliothèque |
*FORMDF |
Form definition | Bibliothèque |
*FTR |
Filter | Bibliothèque |
*GSS |
Graphics symbol set | Bibliothèque |
*IGCDCT |
Double-byte character set (DBCS) conversion dictionary | Bibliothèque |
*IGCSRT |
Double-byte character set (DBCS) sort table | Bibliothèque |
*IGCTBL |
Double-byte character set (DBCS) font table | Bibliothèque |
*IMGCLG |
Image catalog | Bibliothèque |
*JOBD |
Job description | Bibliothèque |
*JOBQ |
Job queue | Bibliothèque |
*JOBSCD |
Job schedule | Bibliothèque |
*JRN |
Journal | Bibliothèque |
*JRNRCV |
Journal receiver | Bibliothèque |
*LIB |
Library | Bibliothèque |
*LIND |
Line description | Bibliothèque |
*LOCALE |
Locale | Bibliothèque |
*MEDDFN |
Media definition | Bibliothèque |
*MENU |
Menu description | Bibliothèque |
*MGTCOL |
Management collection | Bibliothèque |
*MODD |
Mode description | Bibliothèque |
*MODULE |
Module | Bibliothèque |
*MSGF |
Message file | Bibliothèque |
*MSGQ |
Message queue | Bibliothèque |
*M36 |
AS/400 Advanced 36 machine | Bibliothèque |
*M36CFG |
AS/400 Advanced 36 machine configuration | Bibliothèque |
*NODGRP |
Node group | Bibliothèque |
*NODL |
Node list | Bibliothèque |
*NTBD |
NetBIOS description | Bibliothèque |
*NWID |
Network interface description | Bibliothèque |
*NWSCFG |
Network server configuration | Bibliothèque |
*NWSD |
Network server description | Bibliothèque |
*OUTQ |
Output queue | Bibliothèque |
*OVL |
Overlay | Bibliothèque |
*PAGDFN |
Page definition | Bibliothèque |
*PAGSEG |
Page segment | Bibliothèque |
*PDFMAP |
Portable Document Format map | Bibliothèque |
*PDG |
Print descriptor group | Bibliothèque |
*PGM |
Program | Bibliothèque |
*PNLGRP |
Panel group definition | Bibliothèque |
*PRDAVL |
Product availability | Bibliothèque |
*PRDDFN |
Product definition | Bibliothèque |
*PRDLOD |
Product load | Bibliothèque |
*PSFCFG |
Print Services Facility configuration | Bibliothèque |
*QMFORM |
Query management form | Bibliothèque |
*QMQRY |
Query management query | Bibliothèque |
*QRYDFN |
Query definition | Bibliothèque |
*RCT |
Reference code translate table | Bibliothèque |
*SBSD |
Subsystem description | Bibliothèque |
*SCHIDX |
Search index | Bibliothèque |
*SOCKET |
Local socket | IFS |
*SPADCT |
Spelling aid dictionary | Bibliothèque |
*SQLPKG |
SQL package | Bibliothèque |
*SQLUDT |
User-defined SQL type | Bibliothèque |
*SQLXSR |
SQL XML schema repository | Bibliothèque |
*SRVPGM |
Service program | Bibliothèque |
*SSND |
Session description | Bibliothèque |
*STMF |
Stream file | IFS |
*SVRSTG |
Server storage space | Bibliothèque |
*SYMLNK |
Symbolic link | IFS |
*S36 |
System/36 machine description | Bibliothèque |
*TBL |
Table | Bibliothèque |
*TIMZON |
Time zone description | Bibliothèque |
*USRIDX |
User index | Bibliothèque |
*USRPRF |
User profile | Bibliothèque |
*USRQ |
User queue | Bibliothèque |
*USRSPC |
User space | Bibliothèque |
*VLDL |
Validation list | Bibliothèque |
*WSCST |
Workstation user customization object | Bibliothèque |
Sources
Les exemples ont été créés et vérifiés sur un IBM i 7.5 (voir la méthode). Les règles et les faits historiques viennent de ces sources, consultées le 13 octobre 2026 :
- Objects, IBM, documentation IBM i 7.5. Tout ce que l'on manipule est un objet ; les commandes se ressemblent d'un type à l'autre ; seule QSYS contient des bibliothèques.
- Object naming rules, IBM, documentation CL (IBM i 7.5). Noms de 10 caractères au plus ; les objets IBM (sauf les commandes) commencent par Q. Les caractères admis ont été vérifiés par CRTDTAARA sur notre IBM i 7.5 (message CPD0078 : « Un nom doit commencer par un caractère alphabétique »).
- Library lists, IBM, documentation CL (IBM i 7.5). Un objet non qualifié est cherché dans la liste ; deux bibliothèques de produits au plus (QRPG…) ; les programmes créés sans bibliothèque vont dans *CURLIB, QGPL à défaut.
- A job's library list, IBM, documentation CL (IBM i 7.5). Partie système (valeur système QSYSLIBL), partie utilisateur, bibliothèque en cours et bibliothèques de produits. L'ordre de recherche (système, produits, en cours, utilisateur) a été relevé par QSYS2.LIBRARY_LIST_INFO sur notre IBM i 7.5.
- Change Library List (CHGLIBL), IBM, documentation CL (IBM i 7.5). L'ordre des bibliothèques dans la liste est l'ordre de recherche.
- SQL relational database and system terminology, IBM, Db2 for i SQL (IBM i 7.5). Correspondance table / fichier physique, vue / fichier logique ; un schéma est une bibliothèque avec un journal, un récepteur et un catalogue SQL.
- Debugging SQL procedures, triggers and UDFs, IBM Support. Une procédure SQL est un programme ILE C avec du SQL intégré, généré puis compilé.
- IBM i, Wikipédia (en anglais). OS/400 sorti en 1988 avec l'AS/400, héritier du CPF du System/38 ; interface machine (TIMI) ; type fixe qui définit les opérations applicables.
- Object (IBM i), Wikipédia (en anglais). « Tout est objet » ; l'ensemble des types est fixe et seul IBM peut en créer.
- IBM System/38, Wikipédia (en anglais). Annonce du System/38 le 24 octobre 1978.
Questions fréquentes
Qu'est-ce qu'un objet sur IBM i ?
Tout ce que l'on peut manipuler sur IBM i est un objet : un fichier, un programme, une bibliothèque, une file d'attente, un profil utilisateur. Chaque objet a un nom, un type et une bibliothèque, et son type fixe la liste des opérations permises sur lui.
Peut-on avoir deux objets du même nom ?
Oui, s'ils sont de types différents ou dans des bibliothèques différentes. Un programme, une commande et une zone de données peuvent s'appeler BONJOUR dans la même bibliothèque. Deux objets du même nom et du même type dans la même bibliothèque, non : la création échoue (CPF1023 pour une zone de données).
Une table SQL est-elle un objet IBM i ?
Oui : une table SQL est un objet de type *FILE avec l'attribut PF (fichier physique). Une vue et un index sont des *FILE d'attribut LF (fichier logique), et une procédure SQL est un programme *PGM.
Combien y a-t-il de types d'objets sur IBM i ?
Sur IBM i 7.5, le catalogue QSYS2.SYSTEM_OBJECT_TYPES en liste 101 : 92 pour les objets rangés dans des bibliothèques et 9 pour l'IFS. Seul IBM peut en créer de nouveaux.
À quoi sert la liste de bibliothèques ?
Quand un programme ou une commande cite un objet sans sa bibliothèque, le système le cherche dans la liste de bibliothèques du travail (*LIBL), dans l'ordre, et prend le premier trouvé. Si aucune bibliothèque de la liste ne le contient, c'est l'erreur, par exemple CPF4101 pour un fichier.