L4G >  Inter  

Afficher tout Masquer tout

Inter permet de rendre un traitement interruptible depuis le clavier ou au contraire de le rendre non interruptible.

 

Syntaxe

   Inter [ expr_l ]

 

Paramètres

Elément

Description

Restrictions

expr_l

expression_logique.

Aucune.

 

Exemples

   # Pas d'interruption durant cette partie de traitement
    Inter 0 : # Nointer, ou Nointer 1, sont équivalents

   # ... suite du traitement...
  # Maintenant, on peut interrompre le traitement
    Inter : # Inter 1, ou Nointer 0 sont équivalents.

  # traitement interruptible, avec interprétation de l'interruption effectuée 
Local Integer I , STOP , OK
Call OUVRE_BOITE(mess(2,100,1),0) From GESECRAN
Inter
Onintgo FIN
For I=1 To 5
  Call SET_BOITE("i="+num$(I),2) From GESECRAN
  For J=1 To 2
    Call
AFF_BOITE("",J,OK) From GESECRAN
    Sleep 1
  Next J
  If STOP : Break : Endif
Next I
Call
FERME_BOITE From GESECRAN
If STOP
  Infbox "Interrompu"
Else
  Infbox "terminé normalement"
Endif
End

$FIN
STOP = 2
Call ABANDON(STOP) From GESECRAN
If STOP<>2 : STOP = 0 : Endif
Resume

 

Description

Un traitement Adonix peut être interrompu au cours de son exécution par la frappe d'une séquence de touches appelée "séquence d'interruption soft". On utilise communément la séquence de touches <CTRL> + <ALT> + <Q> à cette fin. La touche <Q> est définie par défaut dans le fichier de configuration X3.INI et elle est modifiable.

Lorsqu'on frappe cette touche, une boîte de question affiche le message suivant: 'Exécution interrompue en ligne N ... Voulez-vous arrêter (O/N)?'. Si l'on répond Non à cette question, le traitement reprend son cours, sinon il est interrompu.

Un traitement rendu interruptible peut être dérouté sur une étiquette grâce à l'instruction Onintgo, lorsqu'on frappe sur la touche d'interruption. Dans ce cas, il n'y a pas de message affiché par Adonix, mais le sous-programme défini à l'étiquette est exécuté avec un retour possible au traitement .

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

S'il y a une transaction en cours quand l'interruption est confirmée, elle est annulée automatiquement (Rollback) si le traitement appelé se termine par End. L'utilisateur en sera averti.

Dans un contexte de développement, il peut être intéressant d'interrompre un traitement soit définitivement, soit le temps de passer en mode trace du debugger ou de vérifier la valeur d'une variable.

Inter permet d'autoriser ou d'inhiber ce fonctionnement; un traitement en mode Inter 0 ne pourra être interrompu de la sorte.

 

Remarques

Par défaut, un traitement est en mode Inter 0 (non interruptible).

Un sous-programme lancé par Call devient interruptible si le traitement qui l'a lancé était interruptible. Inter dans un sous-programme permet de le rendre interruptible (ou non interruptible), par contre il ne peut pas rendre interruptible (ou non interruptible) le traitement appelant.

Il est prudent de ne rester en mode Inter que durant le développement d'une application, afin de pouvoir interrompre un traitement qui se bloquerait par erreur, ou de pouvoir passer en debugger. Par contre, il est dangereux sauf exception de laisser la possibilité à un utilisateur final d'interrompre à tout moment un traitement. En outre, la scrutation permanente du clavier rend l'exécution des traitements plus lente.

Particularités Web

Non disponible en version Web.

Erreurs associées

Erreur

Description

ERMODE (10)

L'argument n'est pas de type numérique.

 

Mots-clés associés

NOINTER - ONINTGO - TRBEGIN - COMMIT - ROLLBACK