Full resolution (JPEG) - On this page / på denna sida - Sidor ...
<< prev. page << föreg. sida << >> nästa sida >> next page >>
Below is the raw OCR text
from the above scanned image.
Do you see an error? Proofread the page now!
Här nedan syns maskintolkade texten från faksimilbilden ovan.
Ser du något fel? Korrekturläs sidan nu!
This page has never been proofread. / Denna sida har aldrig korrekturlästs.
50
Modem datateknik ■ 4 • 68
Drag hos Full FORTRAN
Två versioner av FORTRAN finns
standardiserade enligt USASI och
på förslag inom ISO, International
Standards Organization. Sten
Kallin berättar i denna artikel om
några drag hos den större versionen
och om kompilatorer för denna.
Sedan några år har
programmeringsspråket FORTRAN stabiliserats genom att två
nivåer av språket fastlagts i standardiserad
form inom USASI. Den lägre nivån, kallad
Basic FORTRAN, är avsedd att passa för
små och medelstora datamaskiner. Man
har i denna version begränsat sig till sådana
företeelser som inte är alltför tids- eller
utrymmeskrävande för kompilatorn samt
som räcker för flertalet
användningsområden. Man kan grovt säga att denna
version innehåller det som fanns i FORTRAN
II tidigare, dock modifierat så att språket
är ett äkta delspråk av Full FORTRAN,
den större versionen. Detta innebär att
program, skrivna i Basic FORTRAN,
utan ändringar skall kunna översättas av
en kompilator för Full FORTRAN.
Den större FORTRAN-versionen har
legat till grund för flera kompilatorer.
Dessa tillåter ibland ytterligare vissa
språkelement. Bland de viktigaste drag,
som återfinns hos Full
FORTRAN-kom-pilatorer men inte hos Basic FORTRAN,
kan nämnas följande:
— högre maximalt antal dimensioner och
godtyckliga indexuttryck,
— variabla dimensioner för parametrar
i subprogram,
— möjlighet ätt tilldela variabler
initialvärden vid kompileringen,
— felutgångar i läs- och skrivsatser,
— multipla in- och utgångar till
underprogram,
— namngivna COMMON-areor,
— satser för direktåtkomst på register
(finns ibland även inom kompilatorer
på Basic FORTRAN-nivå),
— logiska variabler och uttryck,
— komplexa variabler, komplex aritmetik.
Några äv dessa drag förtjänar en
närmare förklaring.
TABELLER
Det är ibland praktiskt att kunna definiera
och räkna med tabeller med fler än tre
dimensioner. Givetvis bör programmeraren
inse att användandet av flera index
sannolikt gör körningen av programmet
långsammare, men vinster i enkelhet och
överskådlighet kan uppväga detta.
Ex. En fem-dimensionell tabell kan
deklareras och utnyttjas på följande sätt:
REAL X(10,10,10,20,2)
IF (ABS(X(I,J,K+KO,NAMN,
* KOD).LT.EPSIL) GO TO 99
Som tredje index i hänvisningen till X
förekommer ett uttryck av en typ som inte
tillåtits i många tidigare
FORTRAN-ver-sioner. Man begränsade nämligen de
till-låtna typerna till några få som medger
enkel kod inom objektprogrammet
(effektivare användning av indiceringsteknik).
FELUTGÅNGAR VID LÄS- OCH
SKRIVSATSER
Ett problem i många
FORTRAN-pro-gram är att känna efter när data är slut på
ett register. Om man utan särskilda
åtgärder försöker läsa en post efter ett
registerslutsmärke, reagerar programmet
med att avbryta körningen med ett
felmeddelande. Man blir »utsparkad». Detta har
medfört att särskilda signaldata har
behövts så att programmet har kunnat testa
om data är slut innan man nått fram till
det egentliga registerslutsmärket.
Man får skriva två extra parametrar
inom parentesen i en lässats, t. ex.
READ (5,100,END =99, ERR=999)
* X,Y,Z
vilket betyder att variablerna X, Y och Z
skall tilldelas värden från poster som
beskrivs av FORMAT-satsen med
satsnummer 100. Om ett registerslutsmärke
påträffas vid läsningen, skall hopp till sats 99
ske. Skulle läsningen misslyckas genom att
paritetsfel på det yttre mediet konstaterats,
skall hopp till sats 999 ske.
Ett annat problem, som dock icke är löst
inom FORTRAN-språkets ram, är att man
ibland måste läsa en post utan att i förväg
veta vilken FORMAT-sats som skall
an
vändas. Så är det exempelvis om indata
består av en blandning av olika
transaktioner, vilka man kan identifiera först när
posten redan lästs. De flesta
dataanläggningar, där FORTRAN används i någon
större utsträckning, har därför infört någon
hjälprutin som tillåter att samma post
tolkas flera gånger med olika
FORMAT-satser.
MULTIPLA IN- OCH UTGÅNGAR
För att generalisera underprogram så att
kodningen underlättas och samma följd av
instruktioner inte skall behöva upprepas
i olika sammanhang, har man infört
möjligheten till alternativa in- och utgångar.
Ex. Ett underprogram skall beräkna och
skriva ut summan av en tabell.
Tabellelementen skall under vissa omständigheter
multipliceras med vikter vilka utgör
element i en annan, lika stor tabell.
SUBROUTINE UT(X,N)
REAL VIKT(N), X(N)
K = 1
GOTO 1
ENTRY UTV(X, VIKT.N)
K = 2
1 S = 0.0
DO 41 = 1,N
GO TO (2,3),K
2 S=S+X(I)
GO TO 4
3 S = S + X(I) * VIKT(I)
4 CONTINUE
WRITE (6,5) S
5 FORMAT (///’ SUMMA:’,E12.5)
RETURN
END
En alternativ utgång anges pä följande
sätt:
SUBROUTINE SUB(X,N,*)
RETURN 1
END
Om satsen RETURN 1 utförs, kommer I
återhopp att ske till en sats vars nummer
angivits som tredje argument i anropet:
CALL SUB(TABELL,100,&77)
Här anger symbolen &77 just satsnummer |
77 dit hopp skall ske när satsen RETURN
1 utförs.
Lär mer om programspråk
<< prev. page << föreg. sida << >> nästa sida >> next page >>