Aller au contenu

Service SQL IBM i (AS/400) · Procédure

QSYS2.CHANGE_USER_SPACE

Modifier le contenu d'un espace utilisateur

Procédure qui écrit des données dans un espace utilisateur (*USRSPC) à partir d'une position donnée, sans programme d'API.

À quoi ça sert

Cette procédure remplace une partie du contenu de l'espace utilisateur USER_SPACE de la bibliothèque USER_SPACE_LIBRARY : DATA contient les données à écrire et START_POSITION (défaut 1) indique à partir de quel octet. L'exemple d'IBM écrit une chaîne à partir du 500e octet.

Le paramètre FORCE (défaut 'NO') permet de forcer l'écriture. La procédure modifie l'objet : elle remplace l'API correspondante pour corriger un espace utilisateur depuis une session SQL. Le contenu se relit avec QSYS2.USER_SPACE.

Résultat réel sur un IBM i 7.5

Ce que nous avons exécuté :

CALL QSYS2.CHANGE_USER_SPACE(USER_SPACE => 'DEMOSPC', USER_SPACE_LIBRARY => 'JOBISQL', DATA => 'Texte écrit par CHANGE_USER_SPACE (démo).', START_POSITION => 1);
SELECT USER_SPACE_LIBRARY, USER_SPACE, SUBSTR(DATA, 1, 40) AS DEBUT_DES_DONNEES FROM TABLE(QSYS2.USER_SPACE(USER_SPACE => 'DEMOSPC', USER_SPACE_LIBRARY => 'JOBISQL')) X

Ce que l'IBM i a renvoyé le 01/10/2026 (1 ligne au plus) :

USER_SPACE_LIBRARY USER_SPACE DEBUT_DES_DONNEES
JOBISQL UTIL907 Texte écrit par CHANGE_USER_SPACE (démo)

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

Modifier le contenu de l'espace utilisateur USRSPC1 de APPLIB, en plaçant la chaîne indiquée à partir du 500e octet.

-- Description: Modify the content of user space USRSPC1 in APPLIB, placing the 
   -- specified string starting at the 500th byte in the space. 
   CALL QSYS2.CHANGE_USER_SPACE(USER_SPACE => 'USRSPC1',  
                             USER_SPACE_LIBRARY => 'APPLIB',  
                             DATA => 'Overwrite with this new value',  
                             START_POSITION => 500);

Paramètres

ParamètreTypePar défautSignification
USER_SPACE VARCHAR(10) obligatoire Nom de l'espace utilisateur
USER_SPACE_LIBRARY VARCHAR(10) obligatoire Bibliothèque de l'espace utilisateur
DATA CHAR LARGE OBJECT obligatoire Données
START_POSITION INTEGER 1 Position de départ
FORCE VARCHAR(5) 'NO' Forcer l'opération