CALLSUBR
Appeler sous-programme
En bref
La commande CALLSUBR est utilisée dans un programme CL ou une procédure CL ILE pour transférer le contrôle dans un sous-programme.
CALLSUBR se lit CALL
(Appeler) + SUBR.
Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.
Syntaxe minimale
CALLSUBR SUBR(…)
Paramètres
Astuce : dans une session 5250, tapez CALLSUBR 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 :
- Programme batch (*BPGM)
- Programme interactif (*IPGM)
La commande CALLSUBR est utilisée dans un programme CL ou une procédure CL ILE pour transférer le contrôle dans un sous-programme. Le nom de sous-programme dans la commande CALLSUBR doit correspondre au nom de sous-programme d'une commande SUBR. Vous pouvez placer la commande CALLSUBR à n'importe quel endroit de la procédure, y compris d'autres sous-programmes, à l'exception d'une commande MONMSG de niveau programme. Si le sous-programme appelé renvoie une valeur, par exemple, un code d'erreur, cette valeur peut être stockée dans une variable CL de nombre entier à 4 octets en indiquant le nom de cette dernière au paramètre RTNVAL (Variable pour valeur retour).
Chaque commande CALLSUBR exécutée place une adresse de retour dans la pile de sous-programmes. Une adresse de retour est supprimée de la pile de sous-programmes lorsqu'une commande RTNSUBR ou ENDSUBR est exécutée. La profondeur par défaut de la pile de sous-programmes est 99. La profondeur de pile de sous-programmes peut être définie pour un programme CL ou une procédure CL ILE en utilisant la commande DCLPRCOPT (Déclarer les options de traitement) et en indiquant une valeur pour le paramètre SUBRSTACK (Position dans pile sous-pgms). Si une commande CALLSUBR entraîne un dépassement de la limite de profondeur de la pile de sous-programmes, le message CPF0822 est généré et la pile de sous-programmes n'est pas modifiée.
Restrictions: Cette commande est admise uniquement dans un programme CL ou une procédure CL ILE.
Sous-programme (SUBR)
Indique le sous-programme auquel le contrôle doit être transféré lors du traitement de la commande CALLSUBR. Le sous-programme doit être défini au sein de la même procédure que la commande CALLSUBR.
Ce paramètre est obligatoire.
- nom-simple
- Indiquez le nom du sous-programme auquel le contrôle sera transféré. Un nom de variable CL ne peut pas être utilisé pour indiquer le nom de sous-programme.
Variable pour valeur retour (RTNVAL)
Indique la variable qui doit recevoir la valeur de retour provenant du sous-programme appelé.
- *NONE
- La valeur renvoyée par le sous-programme n'est pas prise en compte.
- nom-variable-CL
- Indiquez le nom de la variable CL devant recevoir la valeur de retour provenant du sous-programme appelé. La valeur de retour sera zéro par défaut ou la valeur indiquée au paramètre RTNVAL (Valeur renvoyée par CPP) dans la commande RTNSUBR ou ENDSUBR. La variable doit être une variable CL de nombre entier signé à 4 octets.
Exemples
Exemple 1 : CALLSUBR avec RTNVAL
DCL &INT4VAR TYPE(*INT) LEN(4) : CALLSUBR SUBR(SUBR1) RTNVAL(&INT4VAR)
Le sous-programme nommé SUBR1 est appelé et la valeur de retour est stockée dans la variable &INT4VAR.
Exemple 2 : CALLSUBR en tant que paramètre de commande dans la commande IF
IF (&A *LT 30) THEN(CALLSUBR LT30)
Le sous-programme nommé LT30 est appelé si &A est inférieur à 30.
Messages d'erreur
Messages *ESCAPE
- CPF0822
- Dépassement de la capacité de stockage de sous-programme à l'instruction &1.
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.