\chapter{Fortran} \label{chap:Fortran} \index{Fortran} Fortran (\textsc{FORmula TRANslator}) est, avec le Cobol\index{Cobol}, un des premiers langages évolués. Il a été conçu après la seconde guerre mondiale, en 1954, par John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM}, % ======================================== \section{F77} Dernière version à exiger le format '80 colonnes' des cartes perforées, cette version est aussi (aux yeux de vieux dinos) la plus pure, à cause d'instructions comme le \textsl{computed goto} ou le mythique \textsl{comefrom}. Nom officiel : \texttt{ANSI X3.9-1978}. % ============****************=============== % https://linuxfr.org/users/vmagnin/journaux/taptempo-fortran \section{Gfortan} \index{gfortran} Puis ce langage du passé a subi une évolution lente vers quelque chose de bien plus moderne : le Fortran 90. Les dinos vont devoir s'adapter. Et utiliser \texttt{gfortran}, de la Gnu Compiler Collection\index{gcc}. Il est obligatoire d'avoir l'exemple canonique, donc le voilà. Il faut l'enregister dans un fichier nommé \texttt{hello.f90} pour que le compilateur puisse admettre que c'est écrit en \textsl{free form format}. \begin{verbatim} $ cat hello.f90 program hello implicit none print *, "hello world" end $ gfortran -Wall hello.f90 -o hello && ./hello hello world $ \end{verbatim} % -------------------------------------------------------- \section{Args \& Env} Un fort beau programme, mais il est un peu fermé au monde extérieur. Quand on lance un programme, il peut recevoir des instructions par (mais pas que) deux canaux : les arguments de la ligne de commande et les variables d'environnement. \begin{verbatim} program rum_me implicit none integer :: nbarg, foo character(len=32) :: arg nbarg = IARGC() if (nbarg .GT. 0) then do foo=1, nbarg call GETARG(foo, arg) print *, foo," ", arg enddo endif end \end{verbatim} % -------------------------------------------------------- \subsection{Tableaux} Rank, Size, \textsc{allocatable}, toussa\dots % -------------------------------------------------------- \subsection{Modules} Une notion essentielle, à mon avis, pour écrire des programmes au-delà de 104 lignes. Oui, j'avoue, j'ai bien changé depuis l'époque où je confectionnait des procédures \textsl{monoblc} de 1200 lignes, avec une bonne centaine de \texttt{GOTO} dedans. % -------------------------------------------------------- \subsection{Images ?} Plplot semble être un bon choix pour commencer. % ========================================