4. Utilitaires fortran#
Nom |
Fonction |
U2MESS |
Imprime un message simple |
U2MESK |
Imprime à la fois un message et des valeurs de type caractère |
U2MESI |
Imprime à la fois un message et des valeurs de type entière |
U2MESR |
Imprime à la fois un message et des valeurs de type réelle |
U2MESG |
Imprime à la fois un message, des valeurs de type caractère, entière et réel |
4.1. Impression de messages simples#
SUBROUTINE U2MESS( TYPE , IDMESS)
TYPE |
IN |
Type de message (E,F,A,I) |
IDMESS |
IN |
identificateur du message |
Exemple:
CALL U2MESS('A','CHATON_1')
Imprime le message suivant :
<A> <CHATON_1>
Le petit chat est de couleur verte Ouf !
4.2. Impression de messages et des valeurs de type caractère#
SUBROUTINE U2MESK( TYPE , IDMESS , NK , VALK )
TYPE |
IN |
Type de message (E,F,A,I) |
IDMESS |
IN |
Identificateur du message |
NK |
IN |
Nombre paramètres de type caractère |
VALK |
IN |
Valeurs des paramètres de type caractères |
Exemple :
VALK = 'ROSE'
CALL U2MESK('A',CHATON_2', 1, VALK)''
Imprime le message suivant :
<A> <CHATON_2>
Le petit chat est de couleur rose.
4.3. Impression de messages et des valeurs de type entière#
SUBROUTINE U2MESI( TYPE , IDMESS , NI , VALI)
TYPE |
IN |
Type de message (E,F,A,I) |
IDMESS |
IN |
Identificateur du message |
NI |
IN |
Nombre de paramètres de type entier |
VALI |
IN |
Valeurs des paramètres de type entier |
Exemple :
VALI (1) = 4
VALI (2) = 2
CALL U2MESI('A','CHATON_3', 2, VALI)''
Imprime le message suivant :
<A> <CHATON_3>
Le petit chat a 4 pattes et 2 yeux.
4.4. Impression de messages et des valeurs de type réel#
SUBROUTINE U2MESR( TYPE , IDMESS , NR , VALR)
TYPE |
IN |
Type de message (E,F,A,I) |
IDMES |
IN |
Identificateur du message |
NR |
IN |
Nombre paramètres de type réel |
VALR |
IN |
Valeurs des paramètres de type réel |
Exemple :
VALR (1) = 130.
CALL U2MESR('A','CHATON_4', 1, VALR)''
Imprime le message suivant :
<A> <CHATON_4>
Le petit chat pèse 130.0 kilogrammes.
4.5. Impression de messages des valeurs de type caractères, entières et réelles#
SUBROUTINE U2MESG( TYPE , IDMESS , NK , VALK , NI , VALI , NR , VALR )
TYPE |
IN |
Type de message (E,F,A,I) |
IDMESS |
IN |
Identificateur du message |
NK |
IN |
Nombre de paramètres de type caractère |
VALK |
IN |
Valeurs des paramètres de type caractère |
NI |
IN |
Nombre de paramètres de type entier |
VALI |
IN |
Valeurs des paramètres de type entier |
NR |
IN |
Nombre de paramètres de type réel |
VALR |
IN |
Valeurs des paramètres de type réel |
Exemple :
VALK (1) = “bleue” VALK (2) = “rose” VALI = 5 VALR = 130. U2MESG(“A”,”CHATON_5”, 2, VALK, 1 , VALI, 1,VALR)””
Imprime le message suivant :
<E> <CHATON_5>
ATTENTION: Votre chat est bizarre, il :
- a plus de 4 pattes, il en a 5 ,
- est de couleur bleue et rose,
- est trop gros, il pèse 130.0 kilogrammes.
On arrête les frais, ce n'est pas un chat !!
4.6. Impression d’un message en plusieurs « morceaux »#
Il est parfois pratique d’émettre un message «par morceaux» c’est à dire d’appeler plusieurs fois la routine U2MESG. Ceci est en pricipe impossible pour les messages d’erreur fatale (F/E) car le code s’arrête dès le premier message !
Par ailleurs, on souhaite que le message complet apparaisse à l’utilisateur comme un message unique. En particulier on veut qu’il apparaisse dans un même cadre.
Pour cela, on dispose du mécanisme “A+”, “F+”, … Le principe est d’ajouter un “+” au type du message tant que le message n’est pas terminé. Le dernier message du groupe (sans le “+”) termine le message.
On pourra par exemple écrire un message en 2 morceaux en écrivant :
CALL U2MESK(“F+”, “FONCT0_11”,1,NOMF)
CALL U2MESR(“F”, “FONCT0_26”,3,VALR)
Ce qui, associé au catalogue suivant :
11 : _(u » » »
L’interpolation de la fonction “%(k1)s” n’est pas autorisée.
Le type d’interpolation de la fonction vaut “NON”
-> Risque & Conseil :
Voir le mot-clé INTERPOL des commandes qui créent des fonctions.
« « »),
26 : _(u » » »
abscisse demandée : %(r1)f
intervalle trouvé : [%(r2)f, %(r3)f]
« « »),
conduira à un message ressemblant à :
!———————————————————————-!
! <F> <FONCT0_11> !
! !
! L’interpolation de la fonction fonc3 n’est pas autorisée. !
! Le type d’interpolation de la fonction vaut “NON” !
! !
! -> Risque & Conseil : !
! Voir le mot-clé INTERPOL des commandes qui créent des fonctions. !
! !
! abscisse demandée : 105. !
! intervalle trouvé : [0., 100.] !
!———————————————————————-!
Remarques:
Dans un groupe de messages produisant un message «par morceaux», le type des différents messages dot être le même (F/A/I).
L’identifiant du message imprimé est celui du premier message du groupe.