





![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: 1.2 Programmation
Sup.: 1 Format libre
Préc.: 1 Format libre
Index
Table des matières
Dans le cas le plus simple, la forme des données est analogue
à celle des
``lectures dirigées par liste'' de Fortran 77(
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 :
- insérer des commentaires dans les données,
- remplacer une donnée par une
expression arithmétique,
- utiliser des variables,
- appeler des commandes.
Les sections suivantes détaillent ces différentes notions.
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
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
Au lieu d'une constante classique
(section 1.1.1),
l'utilisateur peut donner une expression
de type numérique ou caractère :
-
Si la donnée est de type numérique,
tous les opérateurs classiques sont admis
( + - * / **).
Les fonctions Fortran connues sont :
ABS,
ACOS,
ASIN,
ATAN,
ATAN2,
COS,
EXP,
INT,
LOG,
LOG10,
MOD,
NINT,
SIGN,
SIN,
SQRT,
TAN.
Enfin, la constante
PI donne une valeur approchée de
.
Quels que soient les types des opérandes,
les calculs sont évalués en double précision
(par exemple, 1/2 est évalué comme 1.D0/2.D0,
et le résultat 0.5D0 est converti dans le type de la variable
à lire).
Les blancs et les ``retour-chariot'' sont interdits,
sauf dans les expressions entre parenthèses.
Exemple :
3.85*1.42 ( 1 / 3 ) SQRT(3)/2 PI/2
-- LES 4 VALEURS LUES SONT : 5.46700 0.333333 0.866025 1.57080
-
En ce qui concerne les chaînes de caractères, seul
l'opérateur de concaténation // est admis.
Il permet notamment de répartir une chaîne sur plusieurs
lignes. Toutefois, la longueur totale de la chaîne est limitée
à 256 caractères. Exemple :
A//B
'LE JOUR '//
'ET LA NUIT'
-- LES 2 CHAINES LUES SONT : 'AB' 'LE JOUR ET LA NUIT'
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
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).






![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: 1.2 Programmation
Sup.: 1 Format libre
Préc.: 1 Format libre
Index
Table des matières