A votre avis, pourquoi est-il nécessaire de compiler un programme CL ? Tout simplement parce que CL supporte des variables. Sous le capot, chaque variable est en réalité une référence à une zone de mémoire différente où l’ordinateur stocke toute son information. Dans un programme CL, la commande doit
Pourquoi ne pouvez-vous pas spécifier LIB/OBJ dans une variable ?
être interprétée d’après les variables qui se trouvent dans toutes ces zones de mémoire différentes, au lieu d’analyser syntaxiquement une chaîne de commandes toutes tapées ensemble dans un endroit. Le code compilé fait très bien cela. Et les programmes CL sont alors un peu plus rapides que si l’on faisait la même chose à l’invite de commande.
Quand vous songez aux variables que vous devez passer à une commande telle que RUNQRY, vous devez vous demander : qu’est-ce que le compilateur CL attend de ma part ? Si vous codez une variable pour le paramètre OUTFILE(), le compilateur s’attend à ce que ce paramètre soit le nom de l’objet. Vous ne pouvez pas simplement lui ajouter une bibliothèque et espérer qu’il sait cela : en l’occurence, la bibliothèque fait partie de cette variable. La seule chose que le compilateur CL sait est que la première variable que vous passez est le nom d’objet. Quel que soit le contenu de cette variable, il est copié dans le paramètre nom d’objet du CPP pour cette commande. Pour qu’une partie des données soit passée au paramètre bibliothèque du CPP, le compilateur CL attend de vous que vous spécifiiez une variable séparée.
Vous devez donc faire ce qu’il attend. Cependant, il y a quelques possibilités de contournement. Tout d’abord, vous pouvez, par programme, diviser le paramètre en deux variables séparées et les passer. Pour cela, recherchez par balayage le caractère « / ». S’il existe, mettez tout ce qui se trouve à sa gauche dans une variable et tout ce qui se trouve à sa droite dans une seconde variable. Passez ces deux variables comme le nom de bibliothèque et d’objet. Le programme de la figure 1 démontre cette technique. Deuxièmement, au lieu de vous battre avec le compilateur CL, créez manuellement la chaîne de commandes en copiant les valeurs des variables. Vous pouvez créer une chaîne de commandes dans une instruction CHGVAR, y concaténer les variables puis l’exécuter avec QCMDEXC. QCMDEXC analysera la chaîne de commandes au moment de l’exécution, exactement comme elle le fait quand vous la tapez sur la ligne de commande. Le programme de la figure 2 démontre cette technique.
Par Scott Klement
Téléchargez cette ressource
Mac en entreprise : le levier d’un poste de travail moderne
Ce livre blanc répond aux 9 questions clés des entreprises sur l’intégration du Mac : sécurité, compatibilité, gestion, productivité, coûts, attractivité talents, RSE et IA, et l’accompagnement sur mesure proposé par inmac wstore.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Ransomwares : l’extorsion vise désormais les salariés et leurs proches
- Veeam passe à la vitesse supérieure avec iResOps pour Microsoft 365
- Visibilité, réputation, clients : ce que les petites entreprises ne pourront plus déléguer en 2027
- IA souveraine : l’Europe avance, mais son interconnexion prend du retard
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
