Aller au contenu

CHGPGMVAR

Modifier variable de programme

En bref

La commande CHGPGMVAR (Modifier une variable de programme) permet de changer la valeur d'une variable dans un programme en cours de débogage.

CHGPGMVAR se lit CHG (Modifier) + PGMVAR. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

CHGPGMVAR PGMVAR(…) VALUE(…)

Paramètres

  • PGMVAR Variables du programme obligatoire
  • VALUE Nouvelle valeur obligatoire
  • PGM Programme
  • START Position de début sortie
  • RCRLVL Niveau de récursivité

Astuce : dans une session 5250, tapez CHGPGMVAR 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 CHGPGMVAR (Modifier une variable de programme) permet de changer la valeur d'une variable dans un programme en cours de débogage. Seules les variables numériques ou de chaîne (caractères ou binaire) peuvent être modifiées au moyen de cette commande. La modification peut porter sur une partie seulement d'une chaîne (caractères ou binaire). Dans ce cas, la longueur des données à modifier est égale à la longueur des données définies au paramètre Nouvelle valeur ( VALUE)

Remarque :La durée d'une modification varie en fonction du lieu d'allocation de la variable. Pour une variable de la mémoire statique de l'interface machine (MI), la modification dure alors que le programme est actif. Pour une variable automatique, la modification dure jusqu'à la fin de l'appel du programme. Les variables statiques sont allouées dans la mémoire statique MI ou dans des espaces contrôlés par des règles liées au langage.

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
PGMVAR Variables du programme 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
VALUE Nouvelle valeur Sans restriction Obligatoire, positionnel 2
PGM Programme Nom, *DFTPGM Facultatif
START Position de début sortie Entier, 1 Facultatif, positionnel 3
RCRLVL Niveau de récursivité Entier, *LAST Facultatif

Variables du programme (PGMVAR)

Désigne la variable de programme à modifier dans un programme de type HLL (langage évolué) ou MI (instructions machine).

Ce paramètre est obligatoire.

Elément 1 : Variable programme

valeur-caractère
Indiquez le nom des variables de programme à modifier. Tout nom contenant des caractères spéciaux doit figurer entre apostrophes.

Si la variable de programme est un tableau, les indices représentant les éléments du tableau peuvent être spécifiés. Lorsqu'un nom de tableau est indiqué sans indice, tous les éléments du tableau sont enregistrés. Il est également possible de définir un sous-tableau à une dimension. Cette variable de programme ne doit pas dépasser 132 caractères. Ce nombre comprend les qualifiants, indices, blancs, 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 (machine-interface object-definition-table-vector), un astérisque (dans le cas d'un sous-tableau à une dimension) 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 peut être basée sur une variable de pointeur. Cette combinaison de valeurs vous permet de définir jusqu'à 5 pointeurs de base pour la variable à enregistrer. 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, 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/.

Nouvelle valeur (VALUE)

Indique la nouvelle valeur de la variable de programme. Les valeurs admises dépendent du type de la variable.

Ce paramètre est obligatoire.

Programme (PGM)

Désigne le programme contenant la variable de programme dont la valeur doit être modifiée.

*DFTPGM
Le programme précédemment défini comme programme par défaut contient la variable à modifier.
nom
Indiquez le nom du programme contenant la variable à modifier. Ce nom doit avoir été précisé au préalable dans la commande STRDBG (Démarrer le débogage) ou ADDPGM (Ajouter un programme au débogage).

Position de début sortie (START)

Indique, dans le cas de variables de chaîne seulement, la position à partir de laquelle les valeurs de la chaîne doivent être modifiées. La position de début ainsi définie correspond à une position binaire ou à un caractère, selon le type de la chaîne.

1
La variable de programme doit être modifiée à partir de la première position.
entier
Indiquez la position, dans la variable de programme, à partir de laquelle la chaîne doit être modifiée. Le nombre en position de début ne doit pas dépasser la longueur de la chaîne, sauf qu'une valeur de 1 pour le paramètre START est autorisée si la longueur maximale d'une chaîne est égale à 0. La longueur définie par le paramètre Nouvelle valeur (VALUE) ajoutée à la valeur entrée pour le paramètre START, moins 1, ne doit pas dépasser la longueur maximale de chaîne.

Les chaînes de longueur variable obéissent à des règles affectant la validité et la signification du paramètre START.

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 : modification de la variable de programme

DCL   VAR(&AMT)  TYPE(*DEC)  LEN(5  2)
 :
CHGPGMVAR   PGMVAR('&AMT')  VALUE(16.2)

La première commande, utilisée dans un programme CL, permet de déclarer la variable CL &AMT en tant que valeur décimale à cinq chiffres, dotée d'une fraction à 3 chiffres et d'une fraction à 2 chiffres. La variable Modifier une variable de programme (CHGPGMVAR) est utilisée pour modifier la valeur de &AMT vers la valeur 16.20. Si VALUE est codé sous la valeur 16 ou 16.00, la valeur acceptée est 16.00 ; si VALUE est codé sous la valeur -16, la valeur acceptée est -16.00. Cependant, si VALUE est codé sous la valeur 1600, une erreur est générée car le système considère que si aucun point décimal n'est codé, ce dernier se trouve toujours placé à la droite du dernier chiffre codé.

Exemple 2 : modification d'une valeur dans une position spécifique

CHGPGMVAR   PGMVAR(PARTNO)  VALUE('56')  START(4)

Cette commande permet de modifier, à partir de la position 4, la variable de programme PARTNO vers la valeur '56'.

Messages d'erreur

Messages *ESCAPE

CPF1999
Erreurs dans la commande.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.