CHGHLLPTR
Modifier un pointeur HLL
En bref
La commande CHGHLLPTR (Modifier un pointeur HLL) permet de modifier ou de copier une variable de pointeur déclarée dans un programme en langage évolué.
CHGHLLPTR se lit CHG
(Modifier) + HLLPTR.
Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.
Syntaxe minimale
CHGHLLPTR PTR(…)
Paramètres
-
PTRPointeur à modifier obligatoire -
REFPTRPointeur à copier -
ADRAdresse à pointer -
PGMProgramme -
RCRLVLNiveau de récursivité
Astuce : dans une session 5250, tapez CHGHLLPTR puis F4 pour
l'invite de saisie, et F1 sur un paramètre pour son aide.
Aide IBM i de la commande
Texte du F1, IBM i 7.5 en français
(bibliothèque QSYS)
Où s'exécute : Tous les environnements (*ALL)
Compatible multitâche : Non
La commande CHGHLLPTR (Modifier un pointeur HLL) permet de modifier ou de copier une variable de pointeur déclarée dans un programme en langage évolué. Les fonctions suivantes sont disponibles :
- copier la valeur d'un pointeur HLL dans la variable d'un autre pointeur HLL,
- faire pointer une variable de pointeur HLL sur une variable du programme,
- définir la valeur d'une variable de pointeur HLL en pointeur indéfini.
Les pointeurs HLL sont des variables de pointeur déclarées dans le source d'un programme HLL. Ils sont opposés aux pointeurs internes créés par le compilateur. Ces derniers sont des variables de pointeur déclarées dans le programme d'interface machine (MI) par un compilateur pour prendre en charge diverses fonctions de traitement. Tous les langages n'autorisent pas l'utilisateur à déclarer des pointeurs HLL.
Restrictions :
- Vous pouvez utiliser cette commande uniquement en mode débogage. Pour démarrer le mode débogage, utilisez la commande STRDBG.
- Vous ne pouvez pas utiliser cette commande si vous faites la maintenance d'un autre travail et si celui-ci est dans une file d'attente de travaux, ou bien s'il est suspendu, interrompu ou arrêté.
- Vous ne pouvez pas utiliser cette commande pour modifier les variables d'un programme lié.
- Vous ne pouvez pas utiliser cette commande pour modifier des variables protégées en écriture ou au sein du domaine système, sauf si l'utilisateur dispose du droit spécial *SERVICE.
Paramètres
| Mot-clé | Description | Valeurs possibles | Remarques |
|---|---|---|---|
| PTR | Pointeur à modifier | Liste d'éléments | Obligatoire, positionnel 1 |
| Élément 1: Variable programme | Valeur caractère | ||
| Élément 2: Variable de pointeur base | Values (jusqu'à 5 répétitions): Valeur caractère | ||
| REFPTR | Pointeur à copier | Liste d'éléments | Facultatif, positionnel 2 |
| Élément 1: Variable programme | Valeur caractère | ||
| Élément 2: Variable de pointeur base | Values (jusqu'à 5 répétitions): Valeur caractère | ||
| ADR | Adresse à pointer | Valeurs uniques: *NULL Autres valeurs: Liste d'éléments |
Facultatif |
| Élément 1: Variable programme | Valeur caractère | ||
| Élément 2: Variable de pointeur base | Values (jusqu'à 5 répétitions): Valeur caractère | ||
| PGM | Programme | Nom, *DFTPGM | Facultatif |
| RCRLVL | Niveau de récursivité | Entier, *LAST | Facultatif |
Pointeur à modifier (PTR)
Indique le nom du pointeur (variable de programme) dont la valeur doit être modifiée.
Ce paramètre est obligatoire.
Elément 1 : Variable programme
- valeur-caractère
- Indiquez le nom de la variable de pointeur dont la valeur doit être modifiée. Il doit s'agir d'un pointeur HLL (HLLPTR). Le nom de la variable de pointeur ne peut être un numéro MI ODV, même s'il s'agit d'un pointeur HLL. Tout nom contenant des caractères spéciaux doit figurer entre apostrophes.
Si le pointeur à modifier est un tableau, les indices représentant l'élément du tableau à modifier doivent être spécifiés. Cette variable de programme ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules, Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés. Un indice peut être un entier, un numéro MI ODV ou encore un nom de variable numérique. Pour plus de détails sur la modification des variables de programme lors d'un test, consultez le manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Elément 2 : Variable de pointeur base
- valeur-caractère
- Indiquez le nom d'une variable de pointeur de base. Dans certains langages, le pointeur à modifier peut être basé sur une variable de pointeur. Cette combinaison de valeurs vous permet de définir jusqu'à 5 pointeurs de base pour le pointeur à modifier. Ces pointeurs de base doivent être des pointeurs HLL (HLLPTR). Il n'est pas possible d'entrer ici un numéro MI ODV, même s'il est désigné par un pointeur HLL. Tout nom de pointeur de base contenant des caractères spéciaux doit figurer entre apostrophes. Si le pointeur de base est un tableau, les indices représentant un élément du tableau doivent être précisés. Le nom d'un pointeur de base ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules. Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés.
Pour plus d'informations, reportez-vous à la rubrique "Parameter values used for testing and debugging" de "CL concepts and reference" dans le manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Pointeur à copier (REFPTR)
Indique la variable de pointeur dont la valeur doit être copiée dans le pointeur défini au paramètre Pointeur à modifier (PTR).
Elément 1 : Variable programme
- valeur-caractère
- Indiquez le nom de la variable de pointeur dont la valeur doit être copiée dans le pointeur spécifié. Il doit s'agir d'un pointeur HLL (HLLPTR). Il n'est pas possible d'entrer ici un numéro MI ODV, même si la variable qu'il définit est un pointeur HLL. Tout nom contenant des caractères spéciaux doit figurer entre apostrophes. Si le pointeur à copier est un tableau, les indices représentant l'élément du tableau à copier doivent être spécifiés. Cette variable de pointeur ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules. Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés. Un indice peut être un entier, un numéro MI ODV ou encore un nom de variable numérique.
Elément 2 : Variable de pointeur base
- valeur-caractère
- Indiquez le nom d'une variable de pointeur de base. Le pointeur (variable de programme) peut être basé sur une variable de pointeur. Cette combinaison de valeurs vous permet de définir jusqu'à 5 pointeurs de base pour le pointeur à copier. Le pointeur de base doivent être un pointeur HLL (HLLPTR). Il n'est pas possible d'entrer ici un numéro MI ODV, même s'il est désigné par un pointeur HLL. Tout nom de pointeur de base contenant des caractères spéciaux doit figurer entre apostrophes. Si le pointeur de base est un tableau, les indices représentant un élément du tableau doivent être précisés. Le nom d'un pointeur de base ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules. Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés.
Pour plus d'informations, reportez-vous à la rubrique "Parameter values used for testing and debugging" de "CL concepts and reference" dans le manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Adresse à pointer (ADR)
Indique, le cas échéant, la variable de programme que doit désigner le pointeur HLL indiqué.
Valeurs uniques
- *NULL
- Le pointeur HLL prend une valeur indéfinie, c'est-à-dire qu'il ne fait plus référence à aucune adresse d'objet espace et ne contient pas de pointeur d'espace ni aucune autre valeur de pointeur.
Elément 1 : Variable programme
- valeur-caractère
- Indiquez le nom de la variable HLL qui doit être désignée par le pointeur HLL. Les numéros MI ODV ne sont pas admis. Tout nom contenant des caractères spéciaux doit figurer entre apostrophes. Si un tableau est spécifié sans indices, le pointeur désigne l'adresse du premier élément du tableau. Cette variable de programme ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules, Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés. Un indice peut être un entier, un numéro MI ODV ou encore un nom de variable numérique.
Pour plus d'informations, reportez-vous à la rubrique "Parameter values used for testing and debugging" de "CL concepts and reference" dans le manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Elément 2 : Variable de pointeur base
- valeur-caractère
- Indiquez le nom d'une variable de pointeur de base. Dans certains langages, la variable de programme à modifier peut être basée sur une variable de pointeur. Cette combinaison de valeurs vous permet de définir jusqu'à 5 pointeurs de base pour les variables à modifier. Ces pointeurs de base doivent être des pointeurs HLL (HLLPTR). Il n'est pas possible d'entrer ici un numéro MI ODV, même s'il est désigné par un pointeur HLL. Tout nom de pointeur de base contenant des caractères spéciaux doit figurer entre apostrophes. Si le pointeur de base est un tableau, les indices représentant un élément du tableau doivent être précisés. Le nom d'un pointeur de base ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs imbriqués, parenthèses et virgules. Ce nombre comprend les qualifiants, indices, blancs, parenthèses et virgules, à l'exclusion des apostrophes lorsque des caractères spéciaux sont utilisés.
Pour plus d'informations, reportez-vous à la rubrique "Parameter values used for testing and debugging" de "CL concepts and reference" dans le manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
Programme (PGM)
Désigne le programme contenant le pointeur dont la valeur doit être modifiée.
- *DFTPGM
- Le programme préalablement défini comme programme par défaut contient le pointeur dont la valeur doit être modifiée.
- nom
- Indiquez le nom du programme contenant le pointeur dont la valeur doit être modifiée. Ce nom doit avoir été indiqué au préalable dans la commande STRDBG (Démarrer le débogage) ou ADDPGM (Ajouter un programme au débogage).
Niveau de récursivité (RCRLVL)
Indique le niveau de récursivité du programme qui contient la variable dont la valeur doit être modifiée. Les modifications apportées aux variables statiques s'appliquent systématiquement à tous les niveaux de récursivité. Le niveau de récursivité 1 correspond au premier appel du programme, le niveau de récursivité 2 au deuxième appel et ainsi de suite jusqu'au dernier appel, c'est-à-dire le plus récent. Par exemple, si le programme A appelle le programme B, le programme B appelle à son tour le programme A et un nouveau niveau de récursivité est créé pour le programme A. Si le programme A, lors de son premier appel, contient la variable à modifier, la valeur 1 doit être entrée au paramètre Niveau de récursivité (RCRLVL). Certains langages évolués permettent également d'employer des procédures de récursivité. A ce sujet, consultez le manuel correspondant au langage évolué utilisé.
- *LAST
- Le dernier appel du programme indiqué (c'est-à-dire le plus récent) contient la variable à modifier.
- entier
- Indiquez le niveau de récursivité du programme contenant la variable à modifier.
Exemples
Exemple 1 : configuration d'un pointeur dans une adresse de variable
CHGHLLPTR PTR(STACKPTR) ADR(FIRSTELEM)
Cette commande permet de configurer le pointeur STACKPTR à l'adresse de la variable FIRSTELEM.
Exemple 2 : copie de la valeur d'un pointeur
CHGHLLPTR PTR(NEXTà) REFPTR(CURRENTà)
Cette commande permet de copier la valeur du pointeur CURRENT dans le pointeur NEXT. La valeur copiée pourrait être un pointeur de valeur nulle.
Messages d'erreur
Aucun
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.