Professional Documents
Culture Documents
par
Patrice LIGNELET
H 2 120
12 - 1993
1.
1.1
1.2
1.3
2.
2.1
2.2
2.3
2.4
Types et oprateurs.................................................................................
Types scalaires prdfinis...........................................................................
Types structures (ou drivs ) ...............................................................
Tableaux .......................................................................................................
Objets points ..............................................................................................
3
3
4
5
5
3.
3.1
3.2
3.3
5
5
6
6
4.
4.1
4.2
4.3
6
6
7
7
5.
5.1
5.2
5.3
5.4
5.5
5.6
Procdures .................................................................................................
Dfinitions ....................................................................................................
Classification des procdures par localisation..........................................
Paramtres et modes de transmission ......................................................
Caractristiques spcifiques aux fonctions ...............................................
Blocs dinterface et applications.................................................................
Macrofonctions ............................................................................................
10
10
10
10
11
11
11
6.
6.1
6.2
6.3
Modularit..................................................................................................
Prsentation .................................................................................................
Entits visibles et prives............................................................................
Importation des ressources dun module..................................................
11
11
12
12
7.
7.1
7.2
7.3
7.4
Entres-sorties ..........................................................................................
Fichiers .........................................................................................................
Ordres gnraux ..........................................................................................
Instructions de lecture-criture...................................................................
Les fichiers de texte.....................................................................................
13
13
13
13
14
8.
8.1
8.2
8.3
8.4
15
15
16
16
16
9.
Conclusion .................................................................................................
17
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 - 2
Doc. H 2 120
H 2 120 1
FORTRAN _____________________________________________________________________________________________________________________________
1. Structure gnrale
du langage
Le programme de la figure 1 dtermine les principales statistiques
sur un chantillon dune variable qualitative (par exemple, une
couleur). Il illustre essentiellement les aspects vectoriels de
Fortran 90, notamment les constructeurs de tableaux, la transmission en paramtre par descripteur, des fonctions prdfinies varies
(telles MAXLOC ou COUNT), etc. Il prsente aussi le MODULE
comme outil dexploitation fiable dun service logiciel (ici la procdure Q_STATS).
H 2 120 2
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
2. Types et oprateurs
Tout programme manipule de linformation, qui peut revtir un
certain nombre de formes simples prdfinies dans un langage, ou
tre construite par composition de telles formes simples : ce sont
les types de donnes, caractriss pour lensemble des valeurs
possibles, et les oprateurs dfinis sur ces valeurs.
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 3
FORTRAN _____________________________________________________________________________________________________________________________
H 2 120 4
&
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
2.3 Tableaux
Un tableau est une collection de donnes homognes. Cette
homognit a permis de btir des architectures matrielles massivement parallles, dites vectorielles, pour appliquer simultanment une mme opration tout ou partie dun tableau. Fortran 90
sadapte ce progrs technologique, en traitant le tableau comme
un objet de premire classe (comme en PL /1), escort dune
panoplie doutils favorisant le calcul vectoriel.
En Fortran, la structure de tableau est une proprit de lobjet (et
non un type) ; elle se dfinit par les caractristiques suivantes :
son rang, ou nombre de dimensions ( 7 en Fortran) ; par
convention, tout scalaire est de rang 0 ;
chaque dimension possde un intervalle de dfinition, donn
par deux entiers, et une tendue, qui est la longueur de cet intervalle
(bornes comprises). En Fortran 90, une tendue peut tre nulle, le
tableau tant alors vide ;
la taille dun tableau est le produit de ses tendues. Un
tableau vide est de taille 0 ;
son profil est le vecteur (tableau de rang 1) de ses tendues.
Le profil dun scalaire est le vecteur vide. Deux tableaux sont dits
compatibles sils ont le mme profil ; par convention, un scalaire est
compatible avec tout tableau.
Fortran 90 permet de dfinir des tableaux profil explicite
(constant ou calculable), et profil diffr (tableaux dynamiques).
Dans le cas dun profil explicite, la structure du tableau est
indique dans un attribut de dimension par la liste des intervalles
de dfinition de ses diverses dimensions :
(i 1 : s 1 , i 2 : s 2 , ... , i n : s n )
n7
avec
! rang = 2
T3 (1 , i * j , k /i + 2)
Exemple
INTEGER, DIMENSION (4) : : INDEX = (/ 2, 0, 1, 10/)
DIMENSION VECT (0 : 20)
alors VECT (INDEX) dsigne le vecteur :
(/ Vect (2), Vect (0), Vect (1), Vect (10) /)
Un indice vectoriel peut contenir des valeurs en double, avec
certaines limitations quant leur emploi, lorsque lopration entrane
une smantique ambigu.
! objet point
! pointeur
3. Instructions de dclaration
3.1 Typage des objets
Il existe deux sortes dobjets (ou donnes) : les constantes, et les
variables. Les variables se dsignent toujours par un identificateur.
Les constantes peuvent aussi le cas chant tre nommes ( 3.2,
attribut PARAMETER). Les objets nomms (constantes et variables)
doivent tre typs en Fortran. Ce typage sopre soit implicitement,
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 5
FORTRAN _____________________________________________________________________________________________________________________________
PUBLIC / PRIVATE
H 2 120 6
4. Charpente algorithmique
des programmes
Toute unit procdurale (programme principal ou procdure)
comprend deux parties : une section dclarant les entits locales
lunit, et une squence dinstructions excutables exprimant la suite
des calculs mener pour rsoudre un problme donn. Ces instructions comprennent les instructions simples, et des instructions
composes traduisant la structure algorithmique de lunit.
Ces diverses instructions font intervenir des expressions, au
sens mathmatique du terme, que lon prsente en premier lieu.
4.1 Expressions
Une expression exprime un calcul, et possde une valeur, rsultat
de ce calcul lorsque lexpression est value. Elle prend la forme
dune constante, dune variable (la valeur tant celle de la variable
au moment de lvaluation), dun sous-objet (dune constante ou
dune variable tableau, structure ou chane de caractres), dun
constructeur de tableau ou de structure ( 2.2 et 2.3), dun appel
de fonction (prdfinie ou non), dune opration portant sur des
facteurs qui sont des expressions, ou dune expression entre
parenthses.
Dans le cas dune expression combinant plusieurs oprateurs,
lordre dvaluation repose sur des rgles de priorit entre oprateurs, comme en algbre :
b
a + b / c d est ainsi valu comme a + ----- d
c
Nous avons donn les priorits relatives des oprateurs pour
chaque type de donnes ( 2.1). Ces catgories doprateurs sont
eux-mmes hirarchiss ainsi, selon lordre croissant des priorits :
1) oprateurs logiques
2) concatnation
3) oprateurs de comparaison
4) oprateurs arithmtiques.
Lorsquune opration arithmtique ou de comparaison porte
sur 2 facteurs de types numriques diffrents, il y a conversion de
lun des facteurs en une valeur aussi semblable que possible du type
de lautre facteur, selon lordre hirarchique croissant des types :
1) entier
2) rel
3) complexe
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
Il existe deux catgories dexpressions utilisables dans les dclarations, et soumises certaines restrictions spcifiques :
Exemple
PARAMETER (MAXI = 50, IRESTE = MOD (MAXI, 6))
les expressions de spcification (scalaires de type entier),
dfinissant les bornes des tableaux ou les longueurs des chanes
automatiques.
Exemple
SUBROUTINE SSP (N, C)
CHARACTER (LEN = *) C ; DIMENSION IV (N + LEN (C))
GOTO tiquette
o ltiquette est un entier positif prfixant linstruction vise.
4.2.1 Affectation
( 2.4) :
PREMIER => TEMP
PVECT
=> CIBLE (: , 1)
Exemples
ALLOCATE (MAT (0 : N **2, N-1 : N+M) )
DEALLOCATE (P, MAT, PVECT)
Dans les deux cas, la variable scalaire optionnelle reoit la valeur 0
si tout sest bien pass, et une valeur positive sinon.
En dehors de celles-ci, il existe dautres instructions simples
spcialises pour les entres-sorties ( 7), ou lies aux structures
algorithmiques ( 4.3.2).
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 7
FORTRAN _____________________________________________________________________________________________________________________________
H 2 120 8
4.3.2 Boucles DO
Les boucles permettent de rpter volont lexcution dune
squence. En Fortran 90, leur criture subit un profond rajeunissement syntaxique. Elles enrichissent en outre de schmas algorithmiques absents du langage antrieurement.
Il y a deux sortes de boucles DO en Fortran 90 :
Boucle de parcours :
DO variable indice = a, b [, r]
squence dinstructions excutables
END DO
donne successivement lindice les valeurs de la progression arithmtique de premier terme a et de raison r extraite de lintervalle
[a, b] ( 2.3, notation par triplet), et excute la squence pour chaque
valeur (0 fois si la progression est vide).
Exemple
HARMO
= 0.0
DO I
= 100, 1, 1
HARMO = HARMO + 1.0 / I
END DO
a, b et r peuvent tre des expressions scalaires quelconques de
type entier. Lindice doit aussi tre scalaire et de type entier ; aprs
sortie normale de la boucle, il est gal la premire valeur de la
progression extrieure lintervalle (soit 0 dans lexemple ci-dessus),
comme en PL /1 ou en C.
Boucles de recherche :
DO WHILE (expression scalaire logique)
squence dinstructions excutables
END DO
qui excute la squence tant que lexpression vaut vrai.
Exemple : figure 2, lignes 78-85.
Le test darrt dune boucle de recherche WHILE est effectu au
dbut de chaque itration. Fortran 90 permet de le placer en un point
quelconque du corps de la boucle grce au schma (dit boucle
n + 1 /2 de Dijkstra) :
DO
squence1
IF (expression logique test darrt) EXIT
squence2
END DO
La boucle WHILE correspond une squence1 vide, la boucle
repeat....until du Pascal (ou do....while de C) une squence2 vide.
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 9
FORTRAN _____________________________________________________________________________________________________________________________
5. Procdures
5.1 Dfinitions
Les procdures (ou sous-programmes selon les langages, en Ada
par exemple) sont dfinies dans larticle Langages de programmation. Introduction [H 2 000]. Elles concourent dcouper une application en units rduites, plus facilement comprhensibles, et
accroissent de ce fait sa maintenabilit.
Une procdure est comparable un programme principal, tant au
plan de sa logique dexcution, que de sa structure syntaxique. La
diffrence majeure est que le programme est lanc par une
commande du systme dexploitation, tandis quune procdure
sexcute par appel depuis une instruction Fortran.
Il y a deux catgories syntaxiques de procdures en Fortran :
les sous-programmes (SUBROUTINE), qui dfinissent une
action, et qui sont appels par une instruction CALL ( 4.2.2) ; ils
correspondent aux procdures de Pascal ou Ada, et aux fonctions
de type void en C ;
les fonctions (FUNCTION), qui calculent une valeur scalaire ou
tableau (procdure .... returns .... en PL /1), et dont lappel se place
dans une expression.
Une procdure admet un nombre fixe (ventuellement nul) de
paramtres (ou arguments formels) permettant un change
dinformation avec lunit appelante.
La figure 1 montre un exemple de sous-programme (Q_STATS,
lignes 16-39), la figure 2 dautres exemples de sous-programmes
et un de fonction (L_VIDE, lignes 28-33).
En Fortran 90, une procdure peut en contenir dautres ( 5.2). Les
procdures peuvent tre optionnellement rcursives : leur entte
doit alors tre prfix du mot-cl RECURSIVE (comme en PL /1).
Fortran offre en outre un grand nombre de procdures prdfinies
(plus dune centaine) ( 8).
H 2 120 10
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
Exemple
SUBROUTINE SSP (U, X, Y)
DIMENSION U (: , :) ! profil hrit.
REAL, INTENT (IN), DIMENSION (SIZE (U,1)) : : X, Y
Affectation gnralise
Un sous-programme ayant deux paramtres, dont le premier a le
mode de transmission OUT ou INOUT et le second le mode IN,
peut tre appel par une affectation de valeur au premier
paramtre :
INTERFACE ASSIGNMENT (=)
SUBROUTINE CHAR_TO_NUM (N, CH)
INTENT (OUT) : : N
CHARACTER (LEN = *), INTENT (IN) : : CH
END SUBROUTINE
END INTERFACE
permet toute affectation dune chane de caractres une
variable scalaire entire dtre interprte comme un appel de
CHAR_TO_NUM.
Gnricit
Il faut entendre ce terme la manire de PL /1 : dfinition dun
nom unique pour la mme opration conceptuelle ralise techniquement par diverses procdures selon le contexte ; en Ada, lquivalent est assur par la surcharge, ou homonymie naturelle propre
ce langage (la gnricit y dfinit un modle paramtr la
compilation). Ce concept nest pas nouveau en Fortran : depuis la
norme 77, la plupart des fonctions prdfinies sont gnriques.
Ainsi, pour dfinir une opration gnrique dchange de la
valeur de deux variables :
INTERFACE ECHANGER ! la procdure gnrique
SUBROUTINE I_SWAP (I, J)
INTENT (INOUT) : : I, J
END
SUBROUTINE R_SWAP (U, V)
INTENT (INOUT) : : U, V
END
SUBROUTINE MAT_SWAP (M1, M2)
REAL, INTENT (INOUT), DIMENSION (: , :) : : M1, M2
END
END INTERFACE
5.6 Macrofonctions
la manire de C (#define), Fortran permet de dfinir des
macrofonctions, dintrt purement local aux units procdurales
qui les dfinissent, et destines crire une seule fois une expression de structure donne.
Exemple
IMPLICIT LOGICAL (B)
BON_DIM (I, J, K) = K > 0. AND. K < I + J
BON_TRIANGLE (I, J, K) =
&
Bon_dim (i, j, k) .and. Bon_dim (j, k, i).and. Bon_dim (k, i, j)
6. Modularit
6.1 Prsentation
Le module Fortran correspond la classe introduite par Simula 67,
au package (paquetage) de Ada, et lunit de mme nom en Pascal
tendu et Modula-2. Le concept est prsent dans larticle Langages
de programmation. Introduction [H 2 000] de ce trait. Son adoption
permet Fortran 90 doprer un saut qualitatif fondamental, et rend
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 11
FORTRAN _____________________________________________________________________________________________________________________________
H 2 120 12
le type est entirement visible, nom et structure (il a, implicitement ou explicitement, lattribut PUBLIC) ;
le type est visible, mais sa structure est cache (type t is
private ; en Ada) ; exemple : figure 2, le type LISTE (lignes 10-12) ;
le type est entirement cach (en Ada, dfini dans la section
private de linterface, ou dans le corps du module) ; le type reoit,
implicitement ou explicitement, lattribut PRIVATE ; exemple :
figure 2, le type MAILLON (lignes 5-8).
Remarque : lquivalent des types Ada limited private nexiste
pas en Fortran 90 : laffectation reste toujours utilisable pour un type
priv ; mais le module peut la redfinir ( 5.5).
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
Plus gnralement, en particulier pour des modules de type bibliothque, on peut restreindre la liste des entits importes, ventuellement en les renommant.
Exemple
MODULE M
PRIVATE
PUBLIC:: A, B, C, D
..................................
PROGRAM principal
USE M, ONLY : B, VLOC => A
nimporte que B (sous son nom), et A renomm localement VLOC.
La relation dimportation est transitive : un module M2 important
une entit dun module M1 peut la rexporter librement. On peut
limiter cette rexportation en rendant PRIVATE dans M2 les noms
locaux des entits importes.
7. Entres-sorties
7.1 Fichiers
Paradoxalement, Fortran, langage scientifique par excellence, dispose dune assez belle panoplie doutils pour manipuler les fichiers,
encore enrichie par la rcente norme.
On distingue deux types de fichiers selon la forme de leur
contenu :
les fichiers de texte, dont les enregistrements (ou composants)
contiennent exclusivement des suites de caractres (fichiers de type
text en Pascal ; offerts par le paquetage prdfini text_io en Ada ;
crs sous le contrle dun format ddition en Fortran, et en mode
stream en PL /1) ;
les fichiers binaires, dont les enregistrements sont des suites
de valeurs quelconques (ou fichiers sans format).
Deux mthodes daccs aux enregistrements sont disponibles en
Fortran :
squentielle (offerte en Ada par le paquetage prdfini
squential_io pour les fichiers binaires ; cest la seule possible en
Pascal ISO) ;
directe par le rang (paquetage direct_io en Ada pour les fichiers
binaires ; type file [....]of.... en Pascal tendu).
Sur certains systmes, les fichiers enregistrements de longueur fixe peuvent admettre les deux mthodes.
En Fortran, tout fichier peut tre trait en criture seulement, en
lecture seulement, ou en modification ; cest un paramtre spcifique
(ACTION =) de linstruction OPEN ( 7.2) qui dtermine lutilisation
possible. En accs squentiel, on peut aussi allonger un fichier
existant (grce au paramtre POSITION = append de lordre
OPEN).
Dans un programme Fortran, un fichier est dsign par un numro
dunit logique, qui est un entier positif ou nul, choisi louverture
du fichier. Si le fichier est rmanent, il est connu du systme sous
un nom externe dfinissable et accessible en Fortran.
Il existe deux units prdfinies, dnotes * ; lune en lecture (sysin
en PL /1, input en Pascal, standard_input en Ada), lautre en criture
(sysprint en PL /1, output en Pascal, standard_output en Ada). En
mode dexcution dialogu, toutes deux correspondent au terminal
de lutilisateur ; elles dsignent toujours un fichier de texte
squentiel.
correspond la procdure prdfinie rewrite en Pascal ; la procdure reset correspond ACTION = read.
Une fois le traitement du fichier termin, il est recommand de
le fermer par linstruction :
CLOSE ([UNIT =] ul [, STATUS = action prendre])
qui correspond aux procdures close ou delete en Ada (selon la
valeur de STATUS).
Remarque : toutes les instructions dentre-sortie Fortran
peuvent en outre comporter les paramtres suivants :
ERR = tiquette de transfert en cas derreur ;
IOSTAT = variable scalaire entire (= 0, 0 en cas derreur), dont
la logique correspond celle de STAT pour les instructions
ALLOCATE / DEALLOCATE ( 4.2.5).
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 13
FORTRAN _____________________________________________________________________________________________________________________________
H 2 120 14
[r] (flist)
r : facteur de rptition (constante entire > 0).
Le principe est de faire correspondre, chaque donne dite, un
modle ddition de donne adapt son type, et dcrire la mise
en place des champs dits laide de modles auxiliaires.
Liste des modles ddition de donnes
Remarque : w dsigne le nombre de caractres du champ dit
sur la ligne ;
d : nombre de chiffres de la partie fractionnaire ;
e : nombre de chiffres de lexposant ;
m : nombre minimal de chiffres afficher ;
s : nombre de chiffres significatifs ;
pour un entier : lw, Bw, Ow, Zw, et leurs variantes lw.m, etc en
sortie (pour les bases de numration respectivement 10, 2, 8 et 16),
pour un rel : Fw.d, Ew.d [E.e], Dw.d, ENw.d [E.e], ESw.d [E.e] ;
en lecture, tous sont quivalents ; en sortie, ils permettent dobtenir
diverses variantes de prsentation,
pour une chane de caractres : Aw (avec en sortie troncature
ou compltion par des espaces de la valeur dite),
pour une valeur logique : Lw (T / F reprsentent les valeurs
logiques),
pour tous types : Gw.s [E.e] o seul w est utilis en dehors du
type rel.
Une valeur complexe est transmise laide de deux modles rels ;
une structure, laide dautant de modles que de champs scalaires.
Modles prcisant ldition numrique
BN, BZ
interprtation des espaces non initiaux en lecture ;
S, SS, SP
traitement du signe + en sortie ;
kP
facteur dchelle (k constante entire).
Rgles gnrales pour ldition numrique
En lecture, les espaces initiaux ne sont pas significatifs. Linterprtation des autres espaces est dirige par le contrle despace en
vigueur (cf. BLANK =, BN, BZ).
la lecture dun rel, un point dcimal dans le champ lu supplante lindication du modle.
En sortie, la reprsentation est cadre droite. Si la valeur transmise est trop grande pour tre reprsentable selon le modle, le processeur produit un champ de w astrisques.
Modles de positionnement des champs
La transmission du prochain caractre vers ou depuis la ligne
courante soprera partir du caractre :
Tc
de rang c sur la ligne ;
TLc
situ c positions avant la position courante ;
TRc ou cX
situ c positions aprs la position courante.
Autres modles
libell en sortie ; transmis tel quel (figure 1, ligne 59) ;
/
provoque la fin du traitement de la ligne courante ;
:
arrte lexploration du format aprs puisement des
donnes.
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
(2.5E3, 3.14)
2* ,1 3
Exemple
INTRINSIC COS
CALL CALCUL (COS, ....)
Exemple
10
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 15
FORTRAN _____________________________________________________________________________________________________________________________
8.2 Fonctions-attributs
DOT_PRODUCT
MATMUL
TRANSPOSE
PACK
UNPACK
SPREAD
Externes
EPSILON, PRECISION, HUGE (+), TINY (plus petit rel > 0),
RANGE (rciproque de r dans une fonction SELECTED_t_KIND).
Internes
BIT_SIZE pour un entier, MINEXPONENT et MAXEXPONENT pour
un rel et, pour les deux types : DIGITS (nombre de chiffres
significatifs ; attribut de mme nom en Ada), et RADIX.
Autres fonctions
RESHAPE
EOSHIFT, CSHIFT
produit scalaire.
produit matriciel.
transpose dune matrice.
fonction de restructuration
(figure 1, lignes 26-29).
construit un vecteur dlments
(figure 1, lignes 26-27).
fonction inverse de PACK.
construit un tableau par duplication dun
autre.
dcalages (avec expulsion, ou circulaire).
H 2 120 16
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
____________________________________________________________________________________________________________________________ FORTRAN
9. Conclusion
Fortran vient de soffrir une vritable rvolution culturelle, au bon
sens du terme, Des constructions saines et rigoureuses, accroissant
le pouvoir dexpression du langage et amliorant la fiabilit des
programmes, sont venues balayer un certain nombre de conceptions
archaques. Fortran sort ainsi renforc dans son domaine de
prdilection : le calcul intensif, tout en rejoignant enfin ! les
proccupations du gnie logiciel. Toutefois, cette modernisation
pousse a d conserver les caractristiques obsolescentes de
Fortran 77, pour dvidents motifs de rutilisation du code existant :
cela entrane la co-existence actuelle de deux styles dcriture
antinomiques, alourdissant considrablement les compilateurs
jusquau niveau de lanalyse lexicale ! De mme, si le professionnel
de la programmation ne peut quaccueillir avec faveur le rajeunis-
Toute reproduction sans autorisation du Centre franais dexploitation du droit de copie est strictement interdite.
Techniques de lIngnieur, trait Informatique
H 2 120 17
P
O
U
R
Fortran
par
Patrice LIGNELET
cole Nationale Suprieure dlectronique et de ses Applications (ENSEA)
(division des Administrateurs)
Animateur du groupe Fortran lAFNOR
Caractristiques obsolescentes
La norme indique comme telles des caractristiques de Fortran 77 sexprimant de meilleure faon en Fortran 90, et voues une probable disparition
ds la prochaine norme. Tout compilateur doit en signaler lemploi dans un programme. Elles comprennent des caractristiques dj obsolescentes de fait en
Fortran 77 (le descripteur Hollerith nH, linstruction PAUSE, les tiquettes de
FORMAT dfinies par ASSIGN), de douteux apports de Fortran 77 (indices ou
paramtres de boucles rels !, branchement vers ENDIF depuis lextrieur dun
IF), danciennes caractristiques rendues obsoltes par de nouvelles
constructions : IF arithmtique ternaire (utiliser un CASE pour les entiers, ou
un schma IF pour les rels), boucles DO embotes fin commune, ou sur une
instruction excutable (utiliser un END DO propre chaque boucle), ASSIGN
et GOTO assign (utiliser une procdure interne), et mme certaines caractristiques officiellement normalises par Fortran 77 (paramtres de type tiquette (*) et retour ventil, remplacer par un code de retour test par un CASE).
le format fixe de texte source avec zonage rigide (et espaces non
significatifs) ;
les zones communes (COMMON) et (BLOCK DATA) associs,
remplaces chacune par un module ;
lassociation de mmoire (EQUIVALENCE), remplace par les pointeurs
et les cibles (TARGET) ;
les paramtres tableaux borne implicite : utiliser un profil hrit ;
les points dentre secondaire (ENTRY) : utiliser un MODULE avec
autant de procdures distinctes ;
le GOTO de ventilation, remplac par le CASE ;
les noms spcifiques des fonctions prdfinies gnriques (dj
osboltes en Fortran 77) ;
et la nouvelle directive INCLUDE, dj rendue inutile par les modules,
qui oprent linclusion au niveau smantique.
E
N
S
A
V
O
I
R
mlangeant les deux types le cas chant. Des procdures spcifiques sont
ajoutes :
VAR_STR (CHAR) pour convertir explicitement largument CHARacter
en VARYING_STRING ;
GET, PUT et PUT_LINE pour les entres-sorties du nouveau type ;
enfin, INSERT, REPLACE, REMOVE, EXTRACT et SPLIT pour manipuler
le contenu dune chane variable.
Dautres projets sont en crous dtude pour raliser des passerelles entre
Fortran et des normes relatives dautres domaines (le traitement graphique,
le langage daccs aux bases de donnes SQL, le systme dexploitation
POSIX, etc.)
Doc. H 2 120
12 - 1993
DEC station 3100, HP9000 / 700, IBM Risc system /6000, NeXT, Silicon Graphics
4D, SUN 3 et 4 Unix 4.2 bsd, Apollo Domain : F90 version 2 (la version 1 est
disponible sur HP9000 /400 et VAX /VMS).
Un compilateur maison pour IBP 9000 vient dtre install chez certains
clients privilgis. On annonce encore un compilateur chez Hewlett-Packard,
chez SUN (partiellement construit partir du compilateur NAG), chez Digital
Equipement (DEC), chez CRAY (CF90, version Sparc), Microsoft, Lahey,
Portland, ACRI (pour machine Alpha)...
Ils sont commercialiss, hors maintenance, des prix hors taxes de 5 940 F
12 000 F (mars 1993). noter lexistence dune version de base pour processeur INTEL 386 SX ou +, propose 990 FH.T.
Salford Software offre un compilateur de mme nature (ralis en collaboration avec NAG) pour PC systmes DOS ou UNIX (FTN 90). (Salford
Software Marketing Ltd., Maxwell Building, The Crescent, Salford M5 4WT,
Grande-Bretagne).
Doc. H 2 120 1
P
L
U
S
P
O
U
R
E
N
FORTRAN _____________________________________________________________________________________________________________________________
Bibliographie
ABERTI (C.). Fortran 90. Initiation partir du
Fortran 77 . Srie Informatique, SI ditions,
Menton (1992).
BRAINERD (W.S.), GOLDBERG (C.H.) et ADAMS
(J.C.). Programmers Guide to Fortran 90 .
McGraw-Hill, New-York (1991).
BRAINERD (W.S.) et alii. The Fortran
90 Hand-book . Unicomp (1992).
COUNIHAN. Fortran 90 . Pitman (1991).
DELANNOY (C.). Programmer en Fortran 90 .
Eyrolles (1993).
S
A
V
O
I
R
Normalisation
Norme internationale
ISO /IEC 1539
1991
ISO /IEC 1539-2
France (AFNOR)
ISO /CEI 1539
tats-Unis (ANSI)
X 3.198
1992
P
L
U
S
Doc. H 2 120 2