> Tech > Répertoire courant vs nom de chemin absolu

Répertoire courant vs nom de chemin absolu

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Quand un nom de chemin d’accès ne commence pas par la barre oblique, on l’appelle nom de chemin relatif. Cela signifie qu’au lieu de partir de la racine de l’IFS quand il recherche un fichier, le système commence avec votre répertoire de travail courant (CWD, current working directory) (c’est-à-dire qu’il

démarre par rapport à l’endroit où vous travaillez) et il avance à partir de là.

Le CWD est le répertoire dans lequel l’utilisateur « se trouve » actuellement. C’est le même esprit que la « bibliothèque courante » que l’on peut définir dans des opérations iSeries classiques. Quand les utilisateurs se connectent, ils démarrent dans le répertoire défini dans leur profil utilisateur. Ils peuvent exécuter la commande CHDIR (Change directory) pour changer ce répertoire en quelque chose d’autre, de la même manière que des utilisateurs changent leur bibliothèque courante avec la commande CHGCURLIB (Change Current Library).

Par exemple, au lieu de spécifier un nom de chemin absolu dans l’exemple précédent, je peux changer mon répertoire courant en /QOpenSys/var. Je peux ensuite référencer le fichier en tant que test/myfile.txt. Si beaucoup d’autres fichiers auxquels je veux accéder se trouvent dans le sous-répertoire /QOpenSys/ var, ce mode de référencement des fichiers m’épargne beaucoup de frappe parce que je n’ai pas besoin de répéter cette partie du nom de chemin pour chaque objet. Je ne tape que la partie qui vient après le répertoire var.

Outre l’économie de frappe, cela allège aussi le travail de l’ordinateur ! L’iSeries met en cache le répertoire courant, donc il n’a pas besoin de réouvrir tous ceux qui le précèdent quand j’utilise les noms de chemins relatifs. Pour écrire du code qui vérifie ce qu’est le CWD, on adresse un appel à l’API getcwd (). Cette API a besoin de deux paramètres : un qui désigne une variable dans laquelle stocker le nom du répertoire et un autre qui lui indique la grandeur de la variable. Si l’API réussit, elle renvoie un pointeur vers la variable que vous avez fournie. Si elle échoue, elle renvoie la valeur spéciale *NULL.

La figure 1 démontre l’appel de l’API getcwd () à partir d’un programme RPG (vous pouvez télécharger tout le code exemple de cet article à iSeriesNetwork.com/code). Il stocke le répertoire courant dans la variable tampon et sauvegarde la valeur de renvoi provenant de l’API dans le champ p_result (A en figure 1). Comme l’API renvoie une chaîne de style C, j’aime utiliser la fonction intégrée (BIF, builtin function) %str () de RPG pour convertir le résultat en un champ VARYING. Cela facilitera son utilisation plus tard dans le programme.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010