Aller au contenu

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ètreTypePar défautSignification
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