Aller au contenu

RCLRSC

Récupérer les ressources

En bref

La commande Récupérer les ressources (RCLRSC) est lancée dans une application par le programme de contrôle pour libérer des ressources allouées par des programmes dont l'exécution est terminée et qui lui ont renvoyé le contrôle.

RCLRSC se lit RCL (Récupérer (libérer)) + RSC. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

RCLRSC

Paramètres

  • LVL Niveau de programme
  • OPTION Option de fermeture

Astuce : dans une session 5250, tapez RCLRSC 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 Récupérer les ressources (RCLRSC) est lancée dans une application par le programme de contrôle pour libérer des ressources allouées par des programmes dont l'exécution est terminée et qui lui ont renvoyé le contrôle. Ces ressources peuvent désormais être utilisées par d'autres programmes en cours sur le système. En fonction du niveau de référence indiqué au paramètre LVL, cette commande récupère les ressources correspondant au groupe d'activation par défaut. Elle ne permet pas de récupérer les ressources allouées au travail ou les ressources allouées aux groupes d'activation autres que le groupe par défaut. Les ressources récupérées par cette commande sont les suivantes :

  • mémoire statique

    Dans le cas d'un programme OPM, la mémoire statique sera récupérée. Dans celui d'un programme en environnement ILE à l'état utilisateur, la mémoire statique sera marquée de façon qu'elle soit réinitialisée au prochain appel. La mémoire statique n'est pas affectée pour les programmes de service, les programmes en environnement ILE à l'état utilisateur, et les programmes en environnement ILE exécutés dans un groupe d'activation autre que le groupe par défaut.

  • fichiers ouverts de type *FILE
  • ressources d'application UIM
  • conversations de communications CPI (Interface commune de programmation)
  • ressources des systèmes hiérarchiques de fichiers (HFS)
  • sessions de communications définies par l'utilisateur.

Par ailleurs, après fermeture des fichiers DDM selon les critères donnés ci-dessus, toutes les conversations système source DDM de ce travail qui ne sont pas actuellement actives seront terminées, quel que soit le groupe d'activation ou le niveau de référence à partir desquels elles auront été démarrées.

La commande RCLRSC n'est pas requise pour récupérer les fichiers et la mémoire statique de la plupart des programmes, tels les programmes CL qui se terminent normalement, les programmes RPG dont le dernier enregistrement est en fonction (LR), et les programmes COBOL. Toutefois, cette commande ne devrait pas être lancée alors qu'un programme COBOL est encore actif dans l'application.

Pour plus d'informations sur l'utilisation de cette commande, consultez la documentation associée au(x) langage(s) de programmation utilisé(s) dans l'application.

Restrictions :

  1. Cette commande n'admet pas les unités d'exécution multiples. Elle peut toutefois être exécutée dans l'unité d'exécution principale d'un travail à unités d'exécution multiples.
  2. N'indiquez pas (*CALLER) pour cette commande si elle est lancée dans un programme CL qui utilise également les commandes SNDF (Envoyer fichier écran), RCVF ( Recevoir fichier écran ou BD), SNDRCVF (Envoyer/recevoir fichier écran). Utiliser la commande RCLRSC LVL(*CALLER) dans un tel programme aboutit à des résultats imprévisibles lorsque les commandes SNDF, RCVF et SNDRCVF sont lancées alors que le programme est en cours d'exécution.
  3. N'indiquez pas LVL(*CALLER) pour cette commande si elle est lancée à partir d'une ligne de commande, car cela entraîne des résultats imprévisibles.

Paramètres

Mot-clé Description Valeurs possibles Remarques
LVL Niveau de programme *, *CALLER Facultatif, positionnel 1
OPTION Option de fermeture *NORMAL, *ABNORMAL Facultatif

Niveau de programme (LVL)

Indique le niveau de référence pour lequel les ressources doivent être récupérées.

*
Le niveau de référence est le programme (OPM) ou la procédure (ILE) contenant la commande RCLRSC. Les ressources sont récupérées pour les programmes ou les procédures dont l'exécution est terminée et qui ont rendu le contrôle à ce programme.
*CALLER
Le niveau de référence est le programme (OPM) ou la procédure (ILE) ayant appelé le programme ou la procédure contenant la commande RCLRSC. Cette valeur permet aux programmes ou procédures de contrôle écrits en langage évolué d'appeler un programme CL afin de récupérer les ressources au niveau du programme ou de la procédure de contrôle. Le résultat est le même que si la commande était utilisée à partir du programme ou de la procédure de contrôle.

Remarque :La valeur *CALLER peut produire des résultats inattendus lors de l'exécution de la commande RCLRSC à partir d'une ligne de commande ou à partir d'un programme qui fonctionne avec des fichiers ouverts.

Option de fermeture (OPTION)

Indique si une notification de fermeture normale ou anormale doit être envoyée au système hôte connecté lors de la fermeture de fichiers mixtes, ICF, BSC et de fichiers de communications. Ce paramètre ne concerne pas les autres types de fichier et d'objet.

*NORMAL
Une notification de fermeture normale est adressée au système hôte connecté lors de la fermeture de fichiers mixtes, ICF, BSC et de fichiers de communications.
*ABNORMAL
Une notification de fermeture anormale est adressée au système hôte connecté lors de la fermeture de fichiers mixtes, ICF, BSC et de fichiers de communications. Vous pouvez utiliser cette valeur lorsque le programme de contrôle détecte des conditions d'erreur devant être communiquées au système hôte (sans que ces conditions d'erreur soient nécessairement liées à un fichier).

Exemples

Exemple 1 (OPM)

PROGA
 :
CALL PROGB
RCLRSC
 :
CALL PROGC
RCLRSC
 :

Dans cet exemple, PROGA correspond à un programme de contrôle dans une application. PROGA appelle d'autres programmes, qui lui renvoient le contrôle quand leur exécution est terminée. Etant donné que le contrôle est renvoyé à l'instruction séquentielle suivante, la commande RCLRSC est émise après chaque commande CALL pour libérer la mémoire statique utilisée par le programme appelé et pour fermer les fichiers laissés ouverts.

Exemple 2 (OPM)

 PROGA         +------PROGD
 +-----------+ !    +---------------------+
 ! .         ! !    ! RCLRSC LVL(*CALLER) !
 ! .         ! !  +-! RETURN              !
 !CALL PROGB ! !  ! +---------------------+
 ! .         ! !  !
 ! .         ! !  !
 !CALL PROGC ! !  !
 ! .         ! !  !
 ! .         ! !  !
 !CALL PROGD-+-+  !
 ! . <-------+----+
 +-----------+

Dans cet exemple, PROGA correspond à un programme de contrôle écrit en langage évolué. La commande RCLRSC ne peut pas être émise dans ce programme en langage évolué. PROGD, un programme CL, est appelé pour émettre la commande. Lorsque la commande RCLRSC est émise dans PROGD, la mémoire statique utilisée par PROGB et PROGC est libérée ; les fichiers laissés ouverts sont fermés.

Exemple 3 (OPM)

   PROGA          +------->PROGB
   +------------+ !        +------------+
   ! .          ! !        ! .          !
   ! .          ! !        ! .          !
   !CALL PROGB--+-+        !CALL PROGC--+--+
   ! . <--------+----+     ! . <--------+--+-+
   !RCLRSC      !    +-----!RETURN      !  ! !
   +------------+          +------------+  ! !
                                           ! !
                                           ! !
                           PROGC<----------+ !
                           +---------+       !
                           ! .       !       !
                           ! .       !       !
                           !RETURN---+-------+
                           +---------+

Dans cet exemple, PROGA correspond à un programme de contrôle. Lorsque la commande RCLRSC est émise, la mémoire statique utilisée par PROGB et PROGC est libérée ; les fichiers laissés ouverts sont fermés.

Exemple 4 (OPM)

 PROGA                  PROGC
 +--------------+       +-------------+
 !   .          !       !   .         !
 !   .          !       !   .         !
 ! CALL PROGB   !       ! CALL PROGB  !
 !              !       !             !
 ! TFRCTL PROGC !       ! RCLRSC      !
 +--------------+       +-------------+

Dans cet exemple, PROGA appelle PROGB et une fois que celui-ci lui a renvoyé le contrôle, PROGA le transmet à PROGC. Etant donné que PROGB a déjà été appelé, il existe une mémoire statique et l'appel de PROGB à PROGC ne crée pas de nouvelle allocation pour cette mémoire statique ; PROGC ne peut pas récupérer la mémoire statique utilisée par PROGB. Si PROGB a ouvert des fichiers lorsqu'il a été appelé par PROGA, ces fichiers sont restés ouverts ; si PROGB a ouvert des fichiers lorsqu'il a été appelé par PROGC, ces fichiers sont fermés.

Exemple 5 (OPM)

Dans cet exemple, PROGA appelle PROGB, qui à son tour appelle PROGC. PROGC ouvre un fichier. Le contrôle est renvoyé à PROGA. PROGA appelle PROGB une seconde fois et PROGB fait appel à RCLRSC. Comme RCLRSC se base sur la position dans la pile de la commande d'appel en cours d'un programme, le fichier ouvert par PROGC n'est pas affecté. PROGC a été appelé plus tôt que le PROGB en cours. Pour que RCLRSC ferme le fichier, la commande RCLRSC devra être appelée par PROGA.

Exemple 6 (OPM & ILE)

 Groupe d'activation par défaut
 +----------------------------+
 !    PROGA                   !
 !    +------------+          !
 !    ! CALL PROGB !--+       !
 !    !   .        !  !       !        Groupe d'activation AG1
 !    !   .        !  !       !        +----------------------+
 !    ! RCLRSC     !<-+----+  !        !                      !
 !    +------------+  !    !  !        !                      !
 !                    !    !  !  +-----+->  PROCD             !
 !                    !    !  !  !     !    +------------+    !
 !                    !    !  !  !     !    !   .        !    !
 !    PROGB      <----+    !  !  !     !    !   .        !    !
 !    +------------+       !  !  !     !    !   .        !    !
 !    ! CALL PROCC !---+   !  !  !  +--+----! RETURN     !    !
 !    !   .        !   !   !  !  !  !  !    +------------+    !
 !    !   .        !<--+-+ !  !  !  !  !                      !
 !    ! RETURN     !---+-+-+  !  !  !  !                      !
 !    +------------+   ! !    !  !  !  !                      !
 !                     ! !    !  !  !  +----------------------+
 !                     ! !    !  !  !
 !                     ! !    !  !  !
 !    PROCC      <-----+ !    !  !  !
 !    +------------+     !    !  !  !
 !    ! CALL PROCD !     !    !  !  !
 !    !   .        !-----+----+--+  !
 !    !   .        !<----+----+-----+
 !    ! RETURN     !-----+    !
 !    +------------+          !
 +----------------------------+

Cet exemple illustre comment la commande RCLRSC affecte les procédures et les groupes d'activation ILE.

Dans cet exemple, PROGA est un programme exécuté dans le groupe d'activation par défaut. PROGA appelle le programme PROGB exécuté dans le groupe d'activation par défaut. PROGB appelle la procédure ILE PROCC exécutée dans le groupe d'activation par défaut. PROCC appelle la procédure ILE PROCD ce qui provoque la création du groupe d'activation AG1. PROCD renvoie le contrôle à PROCC. PROCC le renvoie à PROGB. PROGB le renvoie à PROGA, qui appelle la commande RCLRSC.

PROGA appelle la commande RCLRSC. Toutes les ressources utilisées par PROGA sont ouvertes, puisque PROGA est encore en cours d'utilisation. Toutes les ressources du programme PROGB ou de la procédure PROCC sont récupérées, puisque le programme et la procédure sont exécutés dans le groupe d'activation par défaut et qu'ils ne sont plus actifs. Toutes les ressources ouvertes par la procédure PROCD ne sont plus utilisées, puisque la procédure PROCD est exécutée dans le groupe d'activation AG1 et que seul le groupe d'activation par défaut est affecté par la commande RCLRSC.

Toute autre utilisation de la commande RCLRSC pourrait garder les fichiers ouverts et la mémoire allouée.

Messages d'erreur

Messages *ESCAPE

CPF180C
Fonction &1 non admise.
CPF1892
Fonction &1 non admise.

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