L4G >  Onintgo  

Afficher tout Masquer tout

Onintgo permet dans un traitement de déclarer une étiquette où se déroutera l'exécution du traitement sur appui de la touche d'interruption.

 

Syntaxe

   Onintgo [ étiquette ] [ From traitement ]

 

Paramètres

Elément

Description

Restrictions

étiquette

Etiquette de branchement en cas d'interruption.

Aucune.

traitement

Traitement dans lequel est définie l'étiquette (par défaut, il s'agit du traitement courant), sous l'une des formes suivantes :
nom_d'OBJet '='
exp_nomtrt

Le traitement doit être accessible.

exp_nomtrt

Expression alphanumérique dont le résultat est un nom de traitement.

Le traitement doit être accessible.

 

Exemples

   # Sur appui de la touche d'interruption, l'exécution du traitement
   # se déroute sur l'étiquette LECTURE.
   # Le traitement est interruptible
    Inter
   # sur <INTERRUPTION>, aller en LECTURE
    Onintgo LECTURE
    For [LNS]CLE(1)
       For [LNS]CLE
          Infbox num$(ZV)
       Next
       Infbox num$(TOTAL)
    Next
    End
   #
   # traitement de l'interruption
    LECTURE
       Call VERIF From GESINTER
    Resume

 

Description

Onintgo permet de définir une étiquette où se déroute l'exécution d'un traitement sur appui de la touche d'interruption. Si une interruption est déclenchée après l'ordre Onintgo, la partie de traitement qui suit l'étiquette est exécutée.

Dans le traitement de l'interruption, la fonction errl contient le numéro de ligne du traitement où l'interruption a été déclenchée.

Un traitement d'interruption se termine soit par Resume, soit par End. Dans le premier cas, l'exécution du traitement interrompu reprendra à l'instruction suivant celle où s'est produit l'interruption. Dans le deuxième cas, le traitement est interrompu de façon définitive.

L'interruption se déclenche à condition :

  • que le traitement soit interruptible (instruction Inter),
  • d'avoir défini la touche d'interruption dans le fichier de configuration X3.ini .Par défaut, on utilise la touche <Q>.

On peut définir l'étiquette appelée par Onintgo dans un autre traitement que le traitement courant. Il faut alors en préciser le nom dans l'instruction Onintgo. Ce mécanisme permet de se constituer des traitements généraux de gestion des interruptions.

Onintgo sans étiquette supprime la référence à une étiquette en cas d'interruption; par la suite, tout déroutement devient impossible.

 

Remarques

Une déclaration Onintgo reste valide tant que l'on ne quitte pas le traitement.

Dès qu'une gestion des interruptions est faite dans un traitement, elle agit aussi dans chaque sous-programme appelé par Call. Cependant, si un sous-programme ne comporte pas d'Onintgo, et qu'une interruption est déclenchée lors de son exécution, le sous-programme va s'arrêter, et le traitement appelant traiter l'interruption. Si l'instruction Resume termine le traitement de gestion d'erreur, son exécution relancera les instructions du traitement appelant, celles du sous-programme placées après la dernière exécutée étant alors ignorées (dans le cas d'un End, l'arrêt du traitement sera définitif). Il est donc impératif d'utiliser Onintgo dans un sous-programme appelé par Call pour y gérer les interruptions spécifiques (on peut aussi rendre le sous-programme ininterruptible).

Le traitement de gestion d'interruption ne peut en aucun cas terminer une transaction, que ce soit par Commit ou par Rollback, car il ne peut être du même niveau de localité que le traitement qui l'a initié.

S'il y a une transaction en cours au moment où l'interruption est confirmée, elle est annulée automatiquement si le traitement se termine par End. L'utilisateur en sera averti.

 

Erreurs associées

Erreur

Description

PAFIC (20)

Traitement inexistant.

ERLAB (39)

Etiquette inexistante (dans la syntaxe "Onintgo étiquette", une étiquette inexistante est détectée dès la validation du traitement).

ERMODE (10)

exp_nomtrt n'est pas de type Char.

 

Mots-clés associés

INTER - RESUME - END - ERRL - CALL