Appendix 2. Sammanställning över Fortran 77 satser

A 2.0 Inledning

De satser som jag ej rekommenderar har markerats med en myntsymbol ¤, i allvarliga fall till och med två ¤¤.

Nu finns faktiskt en HTML version av Fortran 77 standarden tillgänglig!

A 2.1 Deklarationer av programenheter

    PROGRAM     Huvudprogram
    FUNCTION    Funktion, FUNCTION kan föregås av 
                någon av nedanstående deklarationer 
                av variabler, utom IMPLICIT.
    SUBROUTINE  Subrutin
¤¤  ENTRY       Extra ingång i underprogram.
¤   BLOCK DATA  Gemensamma data, vilka delvis har 
                initialvärden.

A 2.2 Deklarationer av variabler

¤   IMPLICIT  IMPLICIT REAL (A-H,O-Z), INTEGER (I-N)
              är skönsvärde. Satsen kan användas för
              att låta variabler med viss begynnelsebokstav
              få viss typ, jämför Appendix 4, avsnitt 5.

    IMPLICIT NONE   Ej standard men bra, finns i Fortran 90,
                    ger "Pascal-konvention", dvs
                    att alla variabler måste deklareras.
                    På Sun och DEC kan motsvarande funktion
                    även erhållas med väljaren -u
                    i kompileringskommandot.
    INTEGER
    REAL
    DOUBLE PRECISION
    COMPLEX
    LOGICAL
    CHARACTER 

A 2.3 Ytterligare specifikationer

    DIMENSION    Kan även ges direkt i typdeklarationen, 
                 liksom i COMMON.
¤¤  COMMON       Gemensam lagringsarea för variabler som 
                 finns i flera programenheter.
¤¤  EQUIVALENCE  Gemensam lagringsarea för flera
                 variabler i samma programenhet.
    PARAMETER    Gör om variabeln till en konstant med 
                 ett visst värde.
    EXTERNAL     Talar om att ett variabelnamn svarar mot
                 en extern funktion eller underrutin.

    INTRINSIC    Talar om att ett variabelnamn svarar
                 mot en inbyggd funktion.
    SAVE         Sparar värden mellan återhopp från och 
                 nytt inhopp i underprogram.
¤   DATA         Sätter begynnelsevärden på variabler.

A 2.4 Exekverbara hoppsatser

    GOTO snr1 
                 Hopp till satsnummer snr1 (Vanlig hoppsats).

¤   GOTO (snr1, snr2, snr3), heltalsuttryck
                 Styrd hoppsats, om heltalsuttrycket
                 är 1, 2, eller 3 sker hopp till
                 satsnummer snr1, snr2, respektive snr3
                 (godtyckligt antal snr tillåtna)

¤¤  GOTO satsnummervariabel, (snr1, snr2, snr3)
                 Tilldelad hoppsats, hopp sker till det
                 satsnummer som svarar mot 
                 satsnummervariabeln.
                 (godtyckligt antal snr tillåtna).

¤¤  GOTO satsnummervariabel
                 Tilldelad vanlig hoppsats (hybrid).

¤¤  ASSIGN snr TO satsnummervariabel
                 En satsnummervariabel kan ej tilldelas
                 med en vanlig tilldelningssats 
                 (heltalsvariabel = heltalsuttryck) 
                 utan endast med ASSIGN. 
                 Den kan sedan användas både i tilldelad
                 hoppsats och i vanlig hoppsats, samt 
                 även i samband med FORMAT.

¤   IF (numeriskt_uttryck) snr1, snr2, snr3 
                 Aritmetiskt hoppvillkor, hopp till satsnummer
                    snr1 om uttrycket är negativt
                    snr2 om uttrycket är noll
                    snr3 om uttrycket är positivt
                 Kallas aritmetisk IF-sats.

A 2.5 Exekverbara andra satser

    IF (logiskt_uttryck) sats
                 Villkorssats, om det logiska uttrycket
                 är sant så utföres satsen, annars hoppar
                 man direkt till nästa sats. Satsen får
                 vara en vanlig tilldelningssats eller en
                 vanlig hoppsats eller ett anrop av
                 en underrutin. Kallas "logisk IF-sats".

    IF (logiskt_uttryck) THEN    ! Fullständig alternativsats.
                                  
                 satsföljd1 ! Varianter utan ELSE-del,
                                 ! liksom kapslade med ELSE
        ELSE                     ! ersatt med 
                                 ! ELSE IF (log_uttr) THEN
                 satsföljd2 ! finns även.
                                
        END IF

    CONTINUE     Fortsättningssats, gör inget.
                 Rekommenderas för snygg avslutning av
                 DO-slingan.

    STOP         Avslutningssats, avbryter exekveringen.

    END          Avslutningssats, avbryter kompileringen
                 av programenheten, samt även
                 exekveringen om man befinner sig där i
                 huvudprogrammet. Om ett END påträffas
                 under exekvering av ett underprogram sker
                 i stället återhopp till den anropande 
                 programdelen.

¤   PAUSE        Paussats, avbryter exekveringen 
                 tillfälligt (implementationsberoende).

    DO snr numerisk_variabel = var1, var2, var3
                 DO-slinga
¤                Flyttal tillåtes tyvärr som variabler
                 i DO-slingor.

A 2.6 In/utmatningssatser

    OPEN         Öppna fil  ! Öppna en fil innan
                            ! programmet kan använda den.
                                 
    CLOSE        Stänga fil ! En fil som ej har
                            ! stängts kan vara 
                            ! omöjlig att läsa!
    READ         Inläsning
    WRITE        Utmatning
¤   PRINT        Tidigare utmatning till radskrivaren,
                 numera synonym till WRITE 
                 (implementationsberoende)
    INQUIRE      Förfrågan om fil-status
    REWIND       Återspola en fil till början
    BACKSPACE    Återspola en fil en post
    ENDFILE      Markera filslut
    FORMAT       Fortrans specialitet (se nedan)

A 2.7 Anropssatser

    CALL         Anropa en underrutin
    fnktn        En funktion anropas genom att bara ge
                 funktionsnamnet
    RETURN       Återhopp från underprogram 
                 (underrutin eller funktion)

A 2.8 FORMAT-bokstäverna

                     Exempel

    Heltal       I   I5     5 positioner reserveras.
    Flyttal      F   F8.3   8 positioner, varav
                            3 för decimalerna.
                 E   E14.6 14 positioner, varav
                            6 för decimalerna,
                            4 för exponenten,
                            1 för tecken,
                            1 för inledande nolla,
                            1 för decimalpunkt, samt
                            1 för inledande blank.
                 D D28.12   Som E fast för dubbel-
                            precisionstal.
                 G G14.6    Som F om talet ryms i 
                            fältet, annars som E.

    Komplexa tal            Som par av flyttal.
    Logiska      L

    Textsträng A  A7   Exempel (7 bokstäver ryms i A7)
                           
                       '    '   'Exempel'
¤                       nH      7HExempel   Hollerith-konstant

    Positionering   Tn      n positioner från början
                    TLn     n positioner åt vänster
                    TRn     n positioner åt höger
                    nX      n positioner åt höger
¤   Ej ny rad       $       Användes då man vill göra
                            inmatning i direkt
                            anslutning till utmatning
                            Ej standard! Ej Fortran 90!
    Avbryt          :       Om listan är slut avbryts 
                            formatet här.
    Ny post         /       Normalt ny rad
    Binär      B            Ej standard men Fortran 90
    Oktal           O       Ej standard men Fortran 90
    Hexadecimal     Z       Ej standard men Fortran 90

A 2.8.1 Behandling av tecken och blanka

Utmatning SP + skrives ut SS + skrives ej ut S Standard (normalt SS) Inmatning BZ Blanka tolkas som noll BN Blanka nonchaleras
BN är standard under ULTRIX, under hålkortseran var BZ standard. Jämför BLANK='ZERO' respektive 'NULL' i OPEN-satsen, se avsnitt 8.1.1.

OBS: S, SP, SS, BN och BZ gäller formatet ut, eller till dess en ny av samma slag uppträder.

A 2.8.2 Skalning av variabler

    Skalfaktor      kP
Inmatning:
Vid exponent, ingen verkan;
Utan exponent multipliceras talet med 10**(-k) före tilldelning, dvs ändring av värdet.
Utmatning:
Vid exponent multipliceras mantissan med 10**k och exponenten reduceras med k, dvs oförändrat värde;
Utan exponent multipliceras talet med 10**k före utskrift, dvs ändring av värdet. OBS: kP gäller formatet ut, eller till dess en ny uppträder. Skalning kP är bra på E-format, för då undvikes att den inledande siffran är noll och därigenom erhålls mer information. Skalning kP är katastrof på F-format, men den var dock intressant på hålkortstiden.

A 2.8.3 Tillägg i Fortran 90 beträffande FORMAT-bokstäverna

Man kan nu ersätta E som markering för utmatning i exponentiell form med ES och får då en naturvetenskaplig (Scientific) form med utmatning av en siffra skild från noll före decimalpunkten. Om man i stället använder EN får man en teknisk (ENgineering) form med en till tre siffror före decimalpunkten och exponent delbar med tre. Om det utmatade värdet är noll erhålles samma utmatning från ES och EN som från E.

En annan utvidgning är att FORMATen I, B, O och Z kan skrivas Iw.m, Bw.m, Ow.m och Zw.m, där w är den vanliga fältbredden, medan det valfria tillägget m indikerar ett minimalt antal siffror, med ledande nollor om så erfordras.

A 2.8.4 Tillägg i Fortran 95 beträffande minimalt fält vid utmatning

För att erhålla ett maximalt utnyttjande av antalet positioner är det nu möjligt att enbart ge det eventuella antalet decimaler och inte hela fältbredden vid formaten B, F, I, O och Z. Exempel är I0 och F0.6. Det blir naturligtvis inte ett fält med noll tecken, utan ett med lagom många tecken.

Fortran och Pascal Innehåll Informell sammanställning över de nya satserna i Fortran 90


Senast modifierad: 22 augusti 2001
boein@nsc.liu.se