Service SQL IBM i (AS/400) · Procédure
QSYS2.IFS_WRITE
Écrire une ligne dans un fichier de l'IFS
Écrit une ligne de texte dans un fichier de flux de l'IFS, en le créant au besoin, avec choix du CCSID, de la fin de ligne et de l'écrasement.
À quoi ça sert
La procédure ajoute le contenu de LINE au fichier désigné par PATH_NAME. Plusieurs options règlent l'écriture : FILE_CCSID (défaut 0, soit le CCSID du travail comme l'indique l'exemple d'IBM), OVERWRITE (défaut APPEND, donc les lignes s'ajoutent à la suite) et END_OF_LINE (défaut CRLF).
Elle sert à produire depuis SQL ou depuis une procédure stockée un fichier texte dans l'IFS : un export, un journal de traitement, un fichier de paramètres. L'exemple d'IBM construit un fichier qui contient la liste des bibliothèques du système, une par ligne, en vidant d'abord le fichier cible puis en écrivant dans une boucle.
La procédure modifie l'IFS : vérifie le chemin et la valeur d'OVERWRITE avant de lancer un traitement de masse. Pour relire un fichier, utilise QSYS2.IFS_READ.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
CALL QSYS2.IFS_WRITE(PATH_NAME => '/tmp/jobisql/journal.txt', LINE => 'Première ligne écrite par IFS_WRITE', OVERWRITE => 'REPLACE', FILE_CCSID => 1208);
CALL QSYS2.IFS_WRITE(PATH_NAME => '/tmp/jobisql/journal.txt', LINE => 'Deuxième ligne, ajoutée en fin de fichier', OVERWRITE => 'APPEND');
SELECT LINE_NUMBER, LINE FROM TABLE(QSYS2.IFS_READ(PATH_NAME => '/tmp/jobisql/journal.txt')) X
Ce que l'IBM i a renvoyé le 01/10/2026 (2 lignes au plus) :
| LINE_NUMBER | LINE |
|---|---|
| 1 | Première ligne écrite par IFS_WRITE |
| 2 | Deuxième ligne, ajoutée en fin de fichier |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Créer un fichier de flux qui contient la liste de toutes les bibliothèques du système, une par ligne, dans le CCSID du travail.
-- Description: Create a stream file which contains a list of all of the libraries on the system,
-- one per line. The file is created in job CCSID.
BEGIN
-- Make sure output file is empty to start
CALL QSYS2.IFS_WRITE(PATH_NAME =>'/tmp/library_names',
LINE => '',
OVERWRITE => 'REPLACE',
END_OF_LINE => 'NONE');
-- Add lines to the output file
FOR SELECT OBJNAME AS LIBNAME FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALLSIMPLE', 'LIB')) DO
CALL QSYS2.IFS_WRITE(PATH_NAME => '/tmp/library_names',
LINE => LIBNAME);
END FOR;
END;
Bon à savoir
Comme OVERWRITE vaut APPEND par défaut, relancer le traitement ajoute les lignes au fichier existant au lieu de le remplacer. L'exemple d'IBM commence par vider le fichier pour cette raison.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
PATH_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | obligatoire | Chemin |
LINE |
CHAR LARGE OBJECT | obligatoire | Ligne |
FILE_CCSID |
INTEGER | 0 | CCSID du fichier |
OVERWRITE |
VARCHAR(7) | 'APPEND' | Écrasement du contenu existant |
END_OF_LINE |
VARCHAR(4) | 'CRLF' | Caractère de fin de ligne |