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.