Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 1.2 Programmation Sup.: 1 Format libre Préc.: 1 Format libre Index Table des matières


1.1 Utilisation

 

Dans le cas le plus simple, la forme des données est analogue à celle des ``lectures dirigées par liste'' de Fortran 77([note] Ce mode de lecture est obtenu en remplaçant le format par une étoile, comme dans :

READ (UNIT, *) ...) : il s'agit d'une liste de constantes séparées par un ou plusieurs blancs. Chaque constante doit être entièrement contenue dans un enregistrement, et se situer entre les colonnes 1 à 72 incluses. Le format libre Modulef offre cependant un grand nombre de possibilités supplémentaires :

Les sections suivantes détaillent ces différentes notions.

1.1.1 Les constantes

 

La forme des constantes est très voisine de celle de Fortran. Par suite, seuls quelques exemples sont donnés ci-dessous. Selon le cas, l'utilisateur doit fournir :

un entier :

36 -123

un réel simple précision :

12 12. 12.0 0.012E3

un réel double précision :

12 12. 12.0 0.012D3

un complexe :

Un complexe est lu comme deux réels simple précision consécutifs. Par exemple, le complexe 3.5 + 7.9 i sera obtenu par la lecture des deux réels :
3.5 7.9

un logique :

TRUE T YES Y VRAI OUI O
FALSE F NO N FAUX NON

Il est possible d'ajouter un point au début et/ou à la fin :
.TRUE. .T FAUX.

une chaîne de caractères :

L'une des formes des chaînes de caractères est celle de Fortran : la chaîne est délimitée par des apostrophes ; toute apostrophe contenue dans la chaîne est représentée par deux apostrophes consécutives :
'EXEMPLE DE CHAINE' 'AUJOURD''HUI'

L'autre forme consiste à ne pas délimiter la chaîne par des apostrophes, à condition que la chaîne ne contienne pas de caractère (blanc), ', $, -- ou //, et ne commence pas par le caractère ! ou % :
EXEMPLE3

1.1.2 Les commentaires

Les commentaires sont ignorés par les programmes de lecture, mais facilitent la compréhension d'un lecteur humain. Dans sa forme la plus fréquente, un commentaire commence par deux tirets consécutifs et se termine par la fin de la ligne :

3 -- NOMBRE DE LIGNES COURBES

0.5 -- RAYON DU CERCLE

L'autre forme est plus ancienne mais reste compatible avec la précédente. Elle est moins commode, notamment pour mettre en commentaire une ligne qui contient déjà des commentaires. Sous cette forme, chaque commentaire est délimité à gauche par le caractère dollar ( $) et à droite par le caractère dollar ou la fin de la ligne :

1 2 3 $PREMIER COMMENTAIRE$ 4 5 6 $DEUXIEME COMMENTAIRE$ 7

1 2 3 4 5 6 7 $COMMENTAIRE EN FIN DE LIGNE

1.1.3 Les expressions

 

Au lieu d'une constante classique (section 1.1.1), l'utilisateur peut donner une expression de type numérique ou caractère :

1.1.4 Les variables

 

Il est possible d'affecter une valeur à une variable et d'utiliser ensuite cette variable dans une expression.

La syntaxe de l'affectation est la suivante :

!<variable>=<expression>où :

!
est le caractère ``point d'exclamation'', qui précède la plupart des commandes (section 1.1.5),

<variable>
est le nom de la variable. Il est formé de lettres, chiffres, soulignés ( _) et points ( .), mais ne commence pas par un chiffre. Il est tronqué à 12 caractères s'il excède cette longueur. Il ne doit pas être un nom prédéfini : nom de fonction (section 1.1.3), de constante (section 1.1.3), ou de commande (section 1.1.5). Enfin, si l'ordinateur hôte permet l'emploi de majuscules et de minuscules, celles-ci sont différenciées.

=
symbolise l'affectation.

<expression>
est une expression (section 1.1.3).

Toutes les variables sont converties en double précision.

Quelques commandes sont directement liées à l'emploi des variables, notamment !DUMP et !<variable>=? (section 1.1.5). \ Exemple :

!R=1

!ALPHA=PI/3

R*COS(ALPHA)

-- LA VALEUR LUE EST : 0.5

1.1.5 Les commandes

 

Avant de taper une donnée, on peut lancer une commande. La plupart des commandes commencent par le caractère point d'exclamation ( !). Certaines commandes plus anciennes, qui commencent par le caractère pour-cent ( %), ont été conservées pour compatibilité.

!ADRESSAGE
demande une impression chaque fois qu'un tableau dynamique est alloué. !NOADRESSAGE supprime cet effet.

!BAVARDAGE <expression>
modifie le taux d'impression Modulef (de 0 à 10) : plus il est élevé, plus les impressions sont nombreuses.

!DEBUGING,
au nom explicite, est cité ici uniquement pour mémoire !

!DUMP
imprime le nom et la valeur de chaque variable.

!ECHO
demande l'impression de chaque ligne lue. !NOECHO supprime cet effet.

!ECRIRE <fichier>
(ou !IMPRIMANTE <fichier>) redirige toutes les impressions sur un fichier. Si <fichier> est le caractère *, la redirection est effectuée sur l'imprimante initiale. Si <fichier> est le nom d'un fichier qui existe déjà, celui-ci est écrasé.

!IDEM
ne modifie pas la valeur de la variable à lire. Si le programme appelant a préalablement affecté une valeur par défaut, celle-ci est conservée.

!IMPRIMANTE <fichier>
: voir !ECRIRE.

!LIRE <fichier>
redirige les lectures sur un fichier. Si <fichier> est le caractère *, la redirection est effectuée sur le lecteur initial. Un fichier de lecture peut lui-même contenir des commandes !LIRE. La commande !RETOUR ou une fin de fichier fait revenir au fichier précédent.

!NOADRESSAGE
: voir !ADRESSAGE.

!NOECHO
: voir !ECHO.

!NOSOUFFLEUR
: voir !SOUFFLEUR.

!NOTRACE
: voir !TRACE.

!RETOUR
: voir !LIRE.

!SOUFFLEUR
imprime, avant chaque lecture, le type de la donnée demandée.

!NOSOUFFLEUR supprime cet effet.

!TERMINAL <expression>
change le type du terminal Modulef (peu utilisé actuellement) : 0 batch, 1 console alphanumérique, 2 console graphique.

!TRACE <fichier>
recopie dans un fichier tout ce qui est tapé sur le lecteur initial. !NOTRACE supprime cet effet.

!TRACEBACK
imprime le nom de chaque fichier ouvert (par le format libre ou autre).

!<variable>=<expression>
évalue une expression et l'affecte à une variable (section 1.1.4).

!<variable>=?
demande à l'utilisateur la valeur d'une variable.

!!<commande systeme>
lance une commande du système hôte. Si la commande contient un ou plusieurs blancs, elle doit être délimitée par des apostrophes. Par exemple, sous Unix, !!ls ou !!'ls -lg' imprime le contenu d'un directory.

Les anciennes commandes, qui commencent par le caractère %, ont été conservées pour que tous les jeux de données existants restent utilisables. Il suffit en fait de taper le début de ces commandes, jusqu'à ce qu'il y ait suffisamment de lettres pour lever toute ambiguïté (exemple : %R). La flèche ( ) indique le nom de la nouvelle commande équivalente, si elle existe.

%ADRESSAGE n
: !ADRESSAGE ; !NOADRESSAGE.

%BAVARDAGE n
!BAVARDAGE n.

%ECHO n
: !ECHO ; !NOECHO.

%IMPRIMANTE n
: !ECRIRE <fichier>, où <fichier> est le nom du fichier de numéro logique n ; !ECRIRE *.

%LECTEUR n
!LIRE <fichier>, où <fichier> est le nom du fichier de numéro logique n. Toutefois, %LECTEUR est utilisable sur un fichier déjà ouvert (et lit alors à la suite des dernières données lues), alors que !LIRE ne l'est pas.

%OUVRIR n
!LIRE <fichier>, où <fichier> est le nom du fichier de numéro logique n.

%RETOUR
!RETOUR.

%SAUVER n
!TRACE <fichier>, où <fichier> est le nom du fichier de numéro logique n.

%SOUFFLEUR n
: !SOUFFLEUR ; !NOSOUFFLEUR.

%TERMINAL n
!TERMINAL n.

%?
: imprime le type de la donnée demandée (voir aussi %SOUFFLEUR).


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 1.2 Programmation Sup.: 1 Format libre Préc.: 1 Format libre Index Table des matières