Aller au contenu

Service SQL IBM i (AS/400) · Fonction scalaire

SYSTOOLS.IFS_ACCESS

Tester les droits sur un objet IFS

Indique si le profil qui l'exécute a le droit de lire, d'écrire ou d'exécuter un fichier ou un répertoire de l'IFS.

À quoi ça sert

Cette fonction scalaire teste l'accès au chemin PATH_NAME pour le profil qui l'appelle. Les paramètres READ, WRITE et EXECUTE valent NO par défaut : on passe YES pour chaque droit à vérifier.

Elle sert à contrôler en SQL qu'un fichier est lisible ou qu'un répertoire est modifiable avant de le traiter, et à éviter une erreur d'autorisation en plein milieu d'un script. Pour connaître les droits de tous les profils sur un objet, il faut plutôt utiliser QSYS2.IFS_OBJECT_PRIVILEGES.

Résultat réel sur un IBM i 7.5

Ce que nous avons exécuté :

VALUES SYSTOOLS.IFS_ACCESS(PATH_NAME => '/usr/reportdata.txt',  
                           READ => 'YES')

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

00001
3025

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

Déterminer si l'appelant a le droit de lire le fichier /usr/reportdata.txt.

-- Description: Determine whether the invoker of the function has read access to 
        --   /usr/reportdata.txt. 
   VALUES SYSTOOLS.IFS_ACCESS(PATH_NAME => '/usr/reportdata.txt',  
                           READ => 'YES');

Bon à savoir

Le test porte sur le profil courant, pas sur un profil au choix : un résultat positif en session interactive ne vaut pas forcément pour un travail batch sous un autre profil.

Paramètres

ParamètreTypePar défautSignification
PATH_NAME VARCHAR(5000) obligatoire Chemin
READ VARCHAR(3) 'NO' Accès en lecture
WRITE VARCHAR(3) 'NO' Accès en écriture
EXECUTE VARCHAR(3) 'NO' Droit d'exécution