The Numerical Algorithms Group Ltd
        Wilkinson House
        Jordan Hill Road
        Oxford OX2 8DR
        infodesk@nag.co.uk      Tel: +44 1865 511245
                                Fax: +44 1865 310139
NAG erbjuder ett Fortran 90/95 system som uppför sig helt som en kompilator men 
som i själva 
verket översätter till C (detta senare gäller dock ej PC versionen).  
Kompilatorn 
är nu i version 4.0 under UNIX och finns
även under MS-DOS. Båda fungerar bra och 
innehåller en mer utvidgad felkontroll än tidigare versioner, både under kompilering 
och exekvering. För tidiga erfarenheter se artikeln 
A First Encounter with f90 av Michael 
Metcalf  i Fortran Forum, Vol 11, nummer 1, sid 24 - 32, mars 1992. CERN hade då 80 000 rader 
kod som fungerade under NAG:s Fortran 90 kompilator, version 1.1. Bra service erhålles från 
NAG Response Centre med elektronisk post. Systemet finns för bland andra Apollo Domain, DEC 
Station Ultrix, DEC VAX/VMS, Hewlett Packard 9000, IBM 6000 och IBM PC, NeXT, Parsytec, Silicon Graphics, 
samt Sun SPARC och Sun 3. För IBM PC (MS-DOS) finns förutom det fullständiga 
systemet även en billig studentversion.
NAG erbjuder även en fullständig Fortran 95 kompilator.
        % f90 kod1.f90 kod2.f
och om man har ett helt program som skall ges ett exekveringsnamn
        % f90 -o program program.f90
Under MS-DOS är kompileringskommandot däremot FTN90 och källkoden är *.F90 
för den nya fria formen och *.FOR för den gamla fixa formen. För att få 
omedelbar exekvering lägger man till /LGO. 
        C:\> ftn90 program.f90 /lgo
Vid användning av flera programenheter i olika filer bör man först separatkompilera 
exempelvis filerna DEL1.F90 och DEL2.F90 och man får då de båda objektfilerna 
DEL1.OBJ och DEL2.OBJ, för att sedan länka dessa med LINK77 och därvid skapa 
den exekverbara modulen HELA.EXE.
        C:\> LINK77
        $LOAD DEL1
        $LOAD DEL2
        $FILE HELA.EXE
        C:\>
        C:\> HELA
Symbolen $ ovan genereras automatiskt av länkaren.
För ytterligare information om f90 under UNIX rekommenderas manualkommandot man f90. Jag listar här de viktigaste tilläggen till kompileringskommandot:
 -c       Enbart kompilering (ej länkning)
 -C       Indexkontroll
 -fixed   Gamla formen av källkod
 -free    Nya formen av källkod
 -f77     Anropskonvention konsekvent med UNIX f77
 -g       Genererar information för interaktiv
          avlusning (inkompatibelt med -O)
 -Ilista  Fortran 90 söker automatiskt efter
          moduler i aktuell filkatalog,
          eventuella filkataloger i I-listan,
          samt /usr/local/lib/f90.
 -l       Länkning av bibliotek
 -o       Namnsätter det färdiga programmet
 -O       Optimerar (inkompatibelt med -g)
 -pg      Genererar exekveringsprofil
          (användes av gprof på Sun och IBM 
          respektive prof på DEC och SGI)
 -P       Kontrollerar referenser till pekare.
 -S       Producerar källkod i språket C
 -time    Rapportera exekveringstiden för de olika
          kompileringsfaserna
 -v       Kommenterar hur kompileringen fortskrider
 -version Ger kompilatorns versionsnummer
 -w       Undertrycker varningar
Nedan följer en lista på de utvidgade deklarationerna med deras motsvarigheter i standard Fortran 90, men utnyttjande de slag, eller KIND-parametrar, som NAG valt.
        REAL*4      REAL(KIND=1)
        REAL*8      REAL(KIND=2)
        COMPLEX*8   COMPLEX(KIND=1)
        COMPLEX*16  COMPLEX(KIND=2)
        LOGICAL*1   LOGICAL(KIND=1)
        LOGICAL*4   LOGICAL(KIND=2)
        INTEGER*1   INTEGER(KIND=1)
        INTEGER*2   INTEGER(KIND=2)
        INTEGER*4   INTEGER(KIND=3)
Som synes använder NAG siffrorna 1, 2 och 3 som KIND-nummer. För att förbättra kompatibiliteten med andra leverantörer har NAG nu infört ett nytt kompileringstillägg -kind. Om man använder -kind=byte gäller således antalet bytes som KIND-nummer, om man inte anger något eller -kind=sequential gäller NAG:s egna system.
LOGICAL              Default        byte        word
  KIND number =            2           1           2
  KIND number =            3           1           3 (från 2.1)
INTEGER              Default        int8       int16       int32
  KIND number =            3           1           2           3
       digits =           31           7          15          31
        radix =            2           2           2           2
        range =            9           2           4           9
         huge =   2147483647         127       32767  2147483647
     bit_size =           32           8          16          32
REAL                    Default         single         double
  KIND number =               1              1              2
       digits =              24             24             53
  maxexponent =             128            128           1024
  minexponent =            -125           -125          -1021
    precision =               6              6             15
        radix =               2              2              2
        range =              37             37            307
      epsilon =  0.11920929E-06 0.11920929E-06 0.22204460E-15
         tiny =  0.11754944E-37 0.11754944E-37 0.22250739-307
         huge =  0.34028235E+39 0.34028235E+39 0.17976931+309
COMPLEX                 Default         single         double
  KIND number =               1              1              2
    precision =               6              6             15
        range =              37             37            307