9. Formen hos ett Fortran-program

9.0 Inledning

Ett Fortran-program består av en eller flera programenheter, däribland exakt ett huvudprogram. De olika programenheterna diskuteras närmare i kapitel 14.

Tidigare skrevs alla Fortran-program i ett hålkortsbaserat system där kolumnerna var mycket viktiga, och den verkliga programtexten (källkoden) strängt taget bara fick finnas i kolumnerna 7 till 72. Sedan 1979 använder inte ens jag längre några hålkort. En ny form för källkoden har därför skapats.

9.1 Fix form

I det gamla systemet är kolumnerna 1 till 5 reserverade för eventuellt satsnummer, kolumn 6 är reserverad för eventuellt fortsättningstecken, kolumnerna 7 till 72 användes för den verkliga programtexten, och kolumnerna 73 till 80 är reserverade för kommentarer (hålkortsnummer). Under vissa system har en utvidgning av fältet för den verkliga programtexten skett, till bland annat 80 och 120. Denna gamla form kallas numera fix form, och normalt låter man namnet på motsvarande källkodsfil heta filnamn.f eller FILNAMN.FOR.

Ett vanligt fel är att man låter den verkliga programtexten börja för tidigt (före kolumn 7), vilket ger att kompilatorn oftast noterar ett fel, eller låter den fortsätta för långt åt höger (efter kolumn 72), vilket kompilatorn oftast ej noterar som fel.

9.2 Fri form

I det nya systemet är kolumnerna ej reserverade. Denna nya form kallas fri form, och normalt låter man namnet på motsvarande källkodsfil heta filnamn.f90 eller FILNAMN.F90.

En rad under fri form får innehålla upp till 132 tecken (inklusive eventuella blanka).

9.3 Fortsättningsrader

Ibland behövs mer än en rad för en sats. Detta löses olika i fix form respektive i fri form. Vi börjar med fix form, där ett godtyckligt tecken i kolumn 6 (dock ej blank eller noll) markerar att den raden är en fortsättning av den föregående.
     PRINT *, ' Detta är en lång utmatningsrads första del', 
    *' och detta är dess andra del!'
Under fix form tillåtes maximalt 19 fortsättningsrader.

Under fri form markerar man i stället på den rad som skall fortsättas att en fortsättningsrad följer,

PRINT *, ' Detta är en lång utmatningsrads första del', &
' och detta är dess andra del!'
dvs man fortsätter numera en rad med att ge ett "ampersand" eller "och son", dvs tecknet &, på slutet av den gamla raden.

Under fri form tillåtes maximalt 39 fortsättningsrader.

Ibland kan det hända att en viss identifierare eller ett visst numeriskt uttryck inte får plats på raden. Man kan då under fri form avbryta var som helst med tecknet & och sedan på nästa rad ge ett nytt & som första icke-blanka tecken. Man fortsätter sedan direkt från detta & utan blank. Tecknet & fungerar således som ett slags avstavningstecken.

        PI = 3.141592653589793
kan således skrivas helt ekvivalent
        PI = 3.14159265&
                &3589793
Notera även att det är det sista & på en rad som fungerar som fortsättningstecken, det går därför alldeles utmärkt att skriva en textsträng innehållande &.

Det kan ibland vara önskvärt att göra tvärtom, nämligen att ha flera satser på samma rad. Detta sker med hjälp av semikolon, samt med utropstecken före eventuell avslutande kommentar på raden. Det var däremot ej möjligt att ha flera logiska satser på samma rad under Fortran 77 och tidigare.

        A = 0.0 ; B = 1.0 ; C = 2.0      ! Initiering
Ovanstående gäller den nya fria formen. Även i den gamla kolumnorienterade formen får man numera använda semikolon och utropstecken mellan kolumnerna 7 och 72, men man kan där ej fortsätta med & och ej skriva kommandon i kolumn 1 till 6 eller 73 till 80.

Notera att under den nya fria formen så är blanka signifikanta, dvs mitt favoritexempel

        DO 25 I = 1. 25
ger kompileringsfel eftersom kompilatorn inte hittar något komma mellan undre och övre gräns, medan den komprimerade versionen
        DO25I = 1.25
ger samma resultat som den okomprimerade under Fortran 77 eller under den gamla fixa formen av Fortran 90, nämligen att variabeln DO25I tilldelas värdet 1,25.

9.4 Kommentarer

Under fix form inledes kommentarer med ! eller C eller * i kolumn 1. Från Fortran 77 är dessutom en helt blank rad att betrakta som en (tom) kommentar, den gav tidigare kompileringsfel. Notera att ! kom först med Fortran 90.

Under fri form inledes kommentarer med ! var som helst på raden och avslutas med radslut. Notera att C eller * ej är tillåtna som kommentartecken under den fria formen.

Observera att kommentarrader ej kan fortsättas eftersom även tecknet & där behandlas som tillhörigt kommentaren. Däremot kan man fritt lägga in kommentarrader även bland fortsättningsrader. Man kan naturligtvis "fortsätta" kommentarrader genom att ge ett ! i kolumn 1 på nästa rad, men då blir det formellt en ny kommentar.

Ovanstående gäller den nya fria formen. Utropstecken i någon av kolumnerna 1 till 5 eller 7 till 72 betyder naturligtvis kommentar även i den gamla fixa formen, men i kolumn 6 betyder både ! och ; som tidigare fortsättningsrad. Notera att under Fortran 77 är däremot utropstecken inte tillåtet i kolumn 2 till 5 (om det inte finns en kommentarsymbol redan i kolumn 1).

Övningar.

(9.1) Vad betyder följande rad?
        A = 0.0 ; B = 3.0 ! First variables ; C = 17.0 ; D = 33.0
Lösning.

(9.2) Är följande rader korrekt Fortran 90?

        Y = SIN(MAX(X1,X2)) * EXP( -COS(X3)**I ) - TAN(AT&
                & AN(X4))
Lösning.

9.5 Gemensam form

Ibland kan det vara önskvärt att ha en programenhet i Fortran skriven på ett sådant sätt att den kan användas både under En förutsättning för att samma källkod med säkerhet skall kunna utnyttjas är att programenheten verkligen följer standarden. Programenheten kan användas i alla tre fallen om man dels använder det nya fortsättningstecknet & sist på den gamla raden (men i position 73 så att det ej stör i Fortran 77) och dels väljer som det nästan godtyckliga tecknet i kolumn 6 just & för att få fortsättning enligt Fortran 77. Ett inledande & nonchaleras "i princip" av Fortran 90.
      program TEST                      ! kolumn 73
!                                            |
      write(*,*)                             &
     &     ' test '
      end
!    |
! kolumn 6
Detta är ej strikt standard Fortran 77 eftersom varken & eller ! finns i den standardiserade tecken-uppsättningen. Däremot passar ovanstående konstruktion perfekt för programsegment som med satsen INCLUDE (se närmare Appendix 3, avsnitt 1) ibland skall inkluderas i Fortran 90 programenheter under den gamla fixa formen, ibland under den nya fria formen. Programsegmentet skall då skrivas som om blanka vore signifikanta.

Filer Innehåll Ytterligare datatyper


Senast modifierad: 3 maj 1999
boein@nsc.liu.se