Aller au contenu
IBM i · AS/400 · iSeries

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.

3nom, type et bibliothèque identifient un objet
10caractères au plus pour un nom d'objet
92types d'objets en bibliothèque sur IBM i 7.5
30objets dans notre bibliothèque d'exemple

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émentExempleÀ savoir
NomBONJOUR10 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*PGMFixé à la création, il ne change jamais. Il dit ce qu'est l'objet et quelles commandes s'y appliquent.
BibliothèqueJOBIOBJLe conteneur où l'objet est rangé. On écrit le nom qualifié bibliothèque/objet : JOBIOBJ/BONJOUR.
AttributCLLEUne précision sur le type : le langage d'un programme, la nature d'un fichier (PF, LF, DSPF, PRTF…).
TexteProgramme de la commande BONJOUR50 caractères de description, affichés par WRKOBJ. Le remplir, c'est documenter.
Propriétaire et droitsChaque objet a un propriétaire et une liste de droits (*USE, *CHANGE, *ALL…) : la sécurité se règle objet par objet.
DescriptionTaille, 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 :

Écran 5250 Gestion d'objets : trois objets BONJOUR dans la bibliothèque JOBIOBJ, de types *PGM, *CMD et *DTAARA
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 :

  1. La partie système : les bibliothèques du système d'exploitation, toujours présentes (valeur système QSYSLIBL).
  2. 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).
  3. 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.
  4. 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.

TypeCe que c'estCréationExemple
*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.

TypeCe que c'estCréationExemple
*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.

TypeCe que c'estCréationExemple
*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.

TypeCe que c'estCréationExemple
*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 SQLObjetTypeAttribut
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 *PGM d'attribut CLE : 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_NOM est donc aussi l'objet CLINOMIX, le nom système donné par la clause FOR SYSTEM NAME. Sans elle, le système prend les cinq premiers caractères et ajoute un numéro : nos tables d'essai CLIENTS_PAR_VILLE et CLIENTS_PAR_REGION sont devenues CLIEN00001 et CLIEN00002.
  • 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 :

Écran 5250 Gestion d'objets : programmes, programme de service, module, files d'attente et fichiers de la bibliothèque JOBIOBJ
WRKOBJ OBJ(JOBIOBJ/*ALL), premier écran. Les options 4, 7 et 8 suppriment, renomment et décrivent n'importe quel objet.
ObjetTypeAttributTexte
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 :

WRKOBJLister des objets et agir dessus (copier, supprimer, renommer, droits).
DSPOBJDAfficher la description d'un objet : taille, dates, source, propriétaire.
CHKOBJVérifier dans un programme CL qu'un objet existe et que l'on a les droits.
CRTDUPOBJCopier un objet, avec ou sans ses données.
MOVOBJDéplacer un objet dans une autre bibliothèque.
RNMOBJRenommer un objet.
CHGOBJDModifier le texte de description.
DLTOBJSupprimer un objet, quel que soit son type.
DSPOBJAUTAfficher les droits sur un objet.
GRTOBJAUTDonner un droit sur un objet.
CHGOBJOWNChanger le propriétaire d'un objet.
WRKOBJLCKVoir qui verrouille un objet.
SAVOBJSauvegarder des objets.
RSTOBJRestaurer des objets.

Et en SQL, avec les services IBM i :

QSYS2.OBJECT_STATISTICSLa liste des objets d'une bibliothèque, avec leurs attributs, en SQL.
QSYS2.SYSTEM_OBJECT_TYPESLe catalogue de tous les types d'objets du système.
QSYS2.OBJECT_PRIVILEGESLes droits de chaque utilisateur sur chaque objet.
QSYS2.OBJECT_OWNERSHIPLes objets possédés par un profil.
QSYS2.OBJECT_LOCK_INFOLes 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
TypeLibellé IBMOù
*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 :

  1. 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.
  2. 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 »).
  3. 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.
  4. 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.
  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.
  6. 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.
  7. 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é.
  8. 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.
  9. Object (IBM i), Wikipédia (en anglais). « Tout est objet » ; l'ensemble des types est fixe et seul IBM peut en créer.
  10. 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.