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
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Cyberattaques assistées par IA : Pourquoi le modèle Mythos d’Anthropic représente une menace sérieuse pour la cybersécurité
- Avec les Smart Data, les entreprises mènent la danse de l’observabilité moderne
- Les dirigeants européens redéfinissent la C-suite à l’ère de l’IA
- Analyse Patch Tuesday Mai 2026
Articles les + lus
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
Les coûts cachés des merge requests générées par l’IA
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
À la une de la chaîne Tech
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
- Les coûts cachés des merge requests générées par l’IA
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
