TECHNISCHE UNIVERSITEIT DELFT
 

Faculteit WBMT
 

Een gewijzigde versie van het oorspronkelijke document van:
 

Faculteit Informatietechnologie en Systemen
 

Technische Wiskunde en Informatica
Vakgroep Toegepaste Analyse
Groep Computerpractica



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PRACTICUM : Numerieke Analyse (wb1422b)
COMPUTERSYSTEEM : HP Werkstations en Linux PC's
PROGRAMMEEROMGEVING : FORTRAN  

 
 
 
 
 
 
 
 

Met dank aan de faculteit der Informatietechnologie en Systemen in de persoon van Guus Segal, voor het ter beschikking stellen van het oorspronkelijke document.
Oktober 1998

Inhoud


GEBRUIK VAN DE HANDLEIDING


Leeswijzer

In deze practicumhandleiding vindt u informatie die u nodig heeft voor het doen van het practicum bij wb1422b, numerieke stromingsleer. Voor de informatie betreffende de inhoudelijke/organisatorische kant van het practicum wordt u verwezen naar het de webpagina (zie volgende bladzijde) of mededelingen tijdens het college. Wees voorbereid op eventuele wijzigingen in de opgaven, deze komen in ieder geval op het web te staan.
 

Veel succes met het practicum!


De opbouw van de handleiding

Hoofdstuk 1 bevat een aantal algemene opmerkingen met betrekking tot het practicum.
 

Een korte omschrijving met betrekking tot het bij dit practicum gebruikte besturingssysteem op het laboratorium voor aero- en hydrodynamica vindt u in hoofdstuk 2. Dit is alleen nodig voor mensen die thuis niet de beschikking over een PC hebben.
 

In hoofdstuk 3 wordt een zeer korte beschrijving gegeven van die aspecten van de programmeertaal FORTRAN die u nodig heeft voor het practicum. Hierbij wordt ervan uitgegaan dat u al een andere programmeertaal beheerst.
 
 


ALGEMEEN

Het practicum wordt verzorgd onder verantwoordelijkheid van de vakgroep stromingsleer van de faculteit WBMT.


Practicumbegeleiding

Hulp bij het practicum en informatie is te verkrijgen bij Mathieu Pourquie, toestel (015-278)2997, email M.J.B.M.Pourquie@wbmt.tudelft.nl.


De handleiding

Opmerkingen met betrekking tot de inhoud van de handleiding kunt u, onder vermelding van de titel van de handleiding, inleveren bij de begeleider. In de volgende versie van de handleiding zal getracht worden deze opmerkingen zo goed mogelijk te verwerken.


Practicumapparatuur

De meesten doen het practicum thuis onder Windows/MSDOS. Voor hen is het gedeelte van de handleiding dat op Unix betrekking heeft niet van toepassing. Dit is voor degenen die thuis geen PC tot hun beschikking hebben en het practicum op een van de werkstations van de afdeling stromingsleer moeten doen. Deze werkstations staan op het laboratorium voor aero- en hydrodynamica, rotterdamseweg 145, 2628 AL Delft. Een userid en password krijgt u van de begeleider.


Opgaven en mededelingen

De opgaven worden tussen de colleges door op een gepast moment op het web gezet, zie daartoe de homepage van de begeleider:
http://www-ah.wbmt.tudelft.nl/aio/mathieu/mathieu.html
Overige mededelingen kunnen ook op het web gezet worden, kijk hiertoe onder:
http://www-ah.wbmt.tudelft.nl/mw/fransn/wb1422b/index.htm


Uitsluiting

Indien u de apparatuur of programmatuur niet gebruikt voor het doel waarvoor deze ter beschikking zijn gesteld kan uitsluiting van het practicum het gevolg zijn.


HET BESTURINGSSYSTEEM

Tijdens het practicum maakt u van UNIX1 en het X Windows Systeem. In dit hoofdstuk worden beide systemen kort besproken. Wilt u meer weten over deze omgevingen dan wordt u verwezen naar het practicum Computervaardigheden (in252).


UNIX

UNIX is een multi-tasking/multi-user besturingssysteem voor, oorspronkelijk, microcomputers. Tijdens het practicum heeft u slechts een beperkt aantal commando's nodig, deze worden hieronder besproken.


Inloggen

Bij een multi-user omgeving is het noodzakelijk dat u moet inloggen op een systeem, niet iedere gebruiker heeft immers dezelfde rechten op het systeem. In het algemeen zal de machine, een HP-werkstation of een "Linux pc", waarop u werkt aanstaan. Het beeldscherm zal soms niet aanstaan. Zet het beeldscherm dan aan, op het scherm staat onder nadere de tekst:
 

login:
 

U dient hier uw loginnaam (ook genaamd: userid) in te voeren. Na op de [ENTER]-toets gedrukt te hebben wordt er gevraagd een password in te voeren. Sluit het invoeren van het password (zie practicumsticker) af met [ENTER].
Als u éé,,n van beide of beide fout heeft ingevoerd wordt u de toegang tot het systeem geweigerd. U dient de procedure te herhalen.
Als u geen fouten heeft gemaakt krijgt u toegang tot het systeem. Als u inlogt op een Linux PC, moet u nog doorloggen naar een werkstation. Type daartoe eerst het woord: startx achter de prompt. Er komt nu een windows omgeving op. Als deze er staat, drukt u de linker muis button in, dan verschijnt er een lijstje met mogelijke machines om op in te loggen. U kiest dan dutw1500. Vervolgens komt een scherm op, en daarin moet u doorloggen naar het werkstation. Als er meteen gevraagd wordt om een password, hoeft u alleen dat maar in te tikken, uw userid is dan automatisch doorgegeven. U kunt meerdere schermen openen op dezelfde manier. Als u direct inlogt op een werkstation: op het scherm verschijnt na het inloggen onderaan het scherm een menubalk met daarin onder andere iconen met xterm of een afbeelding van een schermpje en quit. Door aanklikken van de xterm icoon of het schermpje opent u een scherm. Hierin hoeft u niet nogmaals userid en password in te tikken. U kunt er daarna nog meerdere openen door aanklikken. In de geopende schermpjes kunt u opdrachten intikken.

Uiteindelijk (via PC of direkt) bent u nu ingelogd op een werkstation. U komt altijd, onafhankelijk van het werkstation, in dezelfde directory (uw HOME-directory).
Maak als eerste een directory met uw naam, en ga naar deze directory (zie hieronder voor de vorm van de betreffende Unix opdrachten).


Uitloggen

Denk er bij uitloggen om, dat u geen schermen openlaat waarin u edit aan waardevolle files. Sluit ook eerst netjes eventueel gebruikte pakketten (tecplot, CFX, etc.) af.

Uitloggen bij direct inloggen op een werkstation: Om uit te loggen gaat u met de (muiscursor) naar quit en houdt u de linker muisknop ingedrukt. Er verschijnt een menu met:
 

Really quit?
Yes
No
 

Klik op Yes om uit te loggen.

Uitloggen bij inloggen via een PC: druk de linker muisbutton in buiten een geopend schermpje. Er verschijnt weer een lijstje met opties. Schuif met de muis naar Exit Fvwm, er komt dan een tweede lijstje met daarin de optie: Yes, really quit. Schuif met de muis naar deze optie en laat de linker muisbutton daar los. Vervolgens sluit het window systeem, dit sluit ook eventuele open schermen af. U bent nu op het lokale PC scherm terug, type hier het woord: exit en dan wordt u uitgelogd en komt de login prompt weer op het scherm.


Van directory veranderen: cd

Naam: cd = change directory
Aanroep: cd dirnaam
Omschrijving: Directory dirnaam wordt de nieuwe actieve directory voor
  de gebruiker. De directory dirnaam moet wel reeds bestaan.
Uitbreiding: Als alleen cd wordt gegeven, dus cd zonder dirnaam, dan wordt
  de HOME-directory weer de actieve directory.


Files


kopie?ren: cp

Naam: cp = copy
Aanroep: cp file1 file2
Omschrijving: file1 wordt gekopieerd. De kopie krijgt de naam file2.
  Als file2 al bestaat, wordt de inhoud van file2 overschreven door
  de inhoud van file1.
Opmerking: in plaats van file2 mag ook de naam van een directory waarnaar de file
  moet worden gecopieerd worden gegeven.Dus
  cp file1 naam_dir

 
 


afdrukken: lp

Naam: lp = lineprinter (hier laser printer)
Aanroep: lp file1
Omschrijving: file1 wordt in de printerqueue geplaatst en afgedrukt op de laser-
  printer in de zaal.
Opmerking: om een file op de matrix printer af te drukken gebruik
  matrix file1

 
 


overzicht: ls

Naam: ls = list
Aanroep: ls
Omschrijving: De namen van alle gewone gebruikersfiles in een directory worden
  afgedrukt.
Uitbreiding: Als achter het ls commando nog -s wordt toegevoegd, dan wordt
  voor iedere filenaam de grootte van de file in blokken weergegeven.

 
 


naam veranderen: mv

Naam: mv = move
Aanroep: mv file1 file2
Omschrijving: file1 wordt hernoemd naar file2: file1 is de oude naam en file2 is
  de nieuwe naam.
  Als file2 al bestaat, wordt de inhoud van file2 overschreven door
  de inhoud van file1.
Opmerking: in plaats van file2 mag ook de naam van een directory waarnaar de file
  moet worden verplaatst worden gegeven.Dus
  mv file1 naam_dir


verwijderen: rm

Naam: rm = remove
Aanroep: rm file1
Omschrijving: file1 wordt verwijderd van schijf.

LET OP!! Eenmaal verwijderde files onder
Unix zijn NIET meer terug te krijgen.

Verdere nuttige commando's:

mkdir    = make directory:
mkdir opgave2
maakt een directory aan met de naam opgave2

pwd  = geef pad
intypen geeft het volledige pad (de volledige directory boom) vanaf de root, bv:
/home2/stud/studah10


Het X-window systeem

U kunt een nieuw window aanmaken door op xterm te klikken. Een window wordt actief door er met de muiscursor op te klikken.

De commando's voor het uitvoeren van FORTRAN programma's ONDER UNIX zijn als volgt (voor Windows/DOS staat dat elders).


FORTRAN commando's onder UNIX op de afdeling stromingsleer

de FORTRAN text zit in een file genaamd naam.f (extensie: .f, niet: .for net als bij Windows/DOS).
Compileren:

f77 naam.f

Dit levert een executable geheten a.out, dat je uitvooert door het intypen van de naam:

a.out

Verdere nuttige FORTRAN opties zijn:

-O  (dit optmaliseert uw programma, kan een versbnelling met een factor 8 geven, nodig bij       grote        sommen)
-C  (dit controleert de array grenzen, het programma wordt nu langzamer dan zonder -C)
-o  executablename    (als u  de naam van de executable anders wil dan de default a.out, dan geeft u bijvoorbeeld : f77 -o my_job.exe naam.f, het executable heet nu my_job.exe)


Een korte samenvatting van enkele FORTRAN opdrachten

Tijdens dit practicum zult u werken met met Nedit of vi voor het maken van files. Het practicum is ingericht op het maken van oefeningenin de taal FORTRAN, voor het practicum is het nodig zelf programma's te schrijven of aangeboden programma's aan te passen.
Het is niet de bedoeling van deze handleiding om u FORTRAN te leren, slechts die aspecten die nodig zijn voor het practicum worden behandeld. Verder wordt ervan uitgegaan dat u al kennis heeft van pascal.


De structuur van een FORTRAN programma

Een FORTRAN programma bestaat uit een hoofdprogramma, eventueel gevolgd door een of meer subprogramma's.
De structuur van een programma wordt gegeven in het volgende schema:
Hoofdprogramma:
    program statement (bijvoorbeeld program opgave2)
    declaraties
    statements
    end
Subprogramma:
    subroutine ...  of function ...
    declaraties
    statements
    end
NB. In tegenstelling tot Pascal is recursief programmeren in FORTRAN niet mogelijk. Variabelen die in het hoofdprogramma gebruikt worden, zijn alleen in het hoofdprogramma bekend en niet in de subroutines. Dit geldt ook omgekeerd, variabelen in de subroutines zijn alleen lokaal bekend.
Uitwisseling van variabelen tussen hoofdprogramma en subroutines kan dus in principe alleen door de parameterlijst. Daarnaast kent FORTRAN nog een mechanisme, het zogenaamde common block. Wij zullen dat echter niet behandelen.
FORTRAN 77, zoals dat door ons gebruikt wordt is strikt kolom georienteerd. Dat houdt in dat er strenge regels zijn voor de opmaak van een programmatekst. Indien u zich hier niet aan houdt, krijgt u een zeer lange lijst van, merendeels onbegrijpelijke, foutmeldingen.
Hieronder volgt de lijst van regels:
1.
Labels mogen alleen maar in de kolommen 1 tot 5 staan.
2.
Fortran tekst mag alleen maar voorkomen in de kolommen 7 t/m 72. Alle informatie na kolom 72 wordt genegeerd.
3.
Indien een statement niet op een regel past dan kan de statement op de volgende regel(s) worden vervolgd. In positie 6 van de vervolgregel(s) moet dan wel een symbool staan (niet een spatie), bijvoorbeeld +
4.
Slechts één statement per regel is toegestaan
5.
Het karakter c of * in positie 1 betekent dat de betreffende regel uitsluitend commentaar bevat.


Datatypen, variabelen en declaraties

Namen van variabelen in FORTRAN bestaan uit letters en cijfers, het eerste symbool moet altijd een letter zijn.
FORTRAN kent als type integer, real, double precision, complex, complex * 16 en logical plus nog wat types die hier niet van belang zijn.
Hoewel FORTRAN formeel niet eist dat alle variabelen expliciet gedeclareerd worden is dat voor het practicum wel verplicht. Men kan dit forceren door als eerste statement in het programma, voor alle andere declaraties op te nemen:
      implicit none
Dit moet in ieder subprogramma herhaald worden. In de opgaven moeten alle real variabelen als real of als double precision worden gedeclareerd, afhankelijk van de opgave. Voor zover van toepassing, complex variabelen als complex * 8 of als complex * 16. (Een complex getal wordt gerepresenteerd met twee reals, complex * 8 heeft een lengte van twee gewone reals (geen double precision) en gebruikt dus enkele precisie reals). Met dubbele precisie bestaat ieder re"eel getal uit ongeveer 16 decimalen.
Een variabele van het type logical is het zelfde als een variabele van het type Boolean in Pascal. Hij kan alleen de waarde .true. of .false. hebben.
Typische voorbeelden van declaraties zijn:
      implicit none
      integer i, loop, index
      double precision alpha, beta, gamma
      complex * 16 c1, c2
Arrays worden gedeclareerd door in de expliciete declaratie de dimensies mee te geven. Als de ondergrens niet wordt opgegeven dan wordt als ondergrens 1 verondersteld. De grenzen mogen uitsluitend gehele getallen of integer expressies zijn.
Voorbeelden:
      implicit none
      integer i(1:100), j(-3:1,1:2), k(100)
      double precision alpha(200,30), beta(-7:-5,1:9,10)
      complex * 16 c1(8), c2(5,4)
In FORTRAN is een konstante een getal van het type real of integer, of de logische waarde .true. of .false. of een tekst. Een tekst is rij karakters tussen apostrofes, bijvoorbeeld 'tekst'.
Een real getal wordt aangegeven met een punt, bijvoorbeeld 3.1415 of met een exponent bijv. 3.1415e0 of 3.1415d0. Indien geen exponent of de exponent E wordt gebruik dan is de konstante enkele precisie (7 decimalen). Wordt de D als exponent gebruikt dan is de konstante dubbele precisie (16 decimalen). Voorbeelden zijn: 1d-3 (=10-3),
4.1d7 (=4.1 * 107).
Een integer getal is een getal zonder punt. Voorbeeld 1014
 

Arrays worden als volgt gebruikt:

   x=a(i)
   b=g(i,j)+c(i)


Expressies-volgorde van uitwerking

De volgende tabel geeft een vergelijking tussen operatoren in Pascal en Fortran.
 
 
  Pascal Fortran
rekenkundige operatoren    
- machtsverheffen   **
- vermenigvuldiging * *
- deling / /
- gehele deling div, mod  
- optelling + +
- aftrekking - -
relatie operatoren    
- kleiner < .lt.
- kleiner of gelijk <= .le.
- groter > .gt.
- groter of gelijk >= .ge.
- gelijk = .eq.
- niet gelijk <> .ne.
logische operatoren    
- niet not .not.
- en and .and.
- of or .or.

 

De volgorde waarin expressies worden uitgevoerd is als volgt:

1.
**
2.
* en /
3.
+ en -
4.
.lt., .le., .eq., .ne., .ge. en .gt.
5.
.not.
6.
.and.
7.
.or.
Binnen deze niveau's vindt de evaluatie van links naar rechts plaats.
De volgorde kan worden gewijzigd door het gebruik van haakjes.
Voorbeeld:
      program volgorde
      implicit none
      integer n, nmax
      logical konv, uitkomst
      konv = .true.
      n = 5
      nmax = 20
      uitkomst = .not. konv .and. 2*n .lt. nmax
      print *, 'uitkomst = ', uitkomst
      end
Als we voorgaand programma uitvoeren dan wordt het resultaat van de expressie als volgt geëvalueerd:
1.
2*n, resultaat r1 = 10
2.
r1 .lt. nmax, resultaat r2 = .true.
3.
.not. konv, resultaat r3 = .false.
4.
r3 .and. r2, resultaat: .false.
Het programma print dus: uitkomst = .false.


Standaard funkties

De volgende standaard funkties ( intrinsic functions in Fortran) zijn beschikbaar:
exp, log (=ln), log10 (= 10log), sin, cos, tan, atan (=arctan)
sqrt, abs, min, max
Er zijn uiteraard meer standaard funkties.
Als het argument enkele precisie is, is het resultaat ook enkele precisie. Een dubbele precisie argument geeft een dubbele precisie resultaat.
Dus exp(1.) is enkele precisie en exp(1d0) is dubbele precisie.


Toekenningsopdracht

De assignment statement in fortran heeft de vorm
  variabele = expressie
Als de variabele van het type LOGICAL is, moet de expressie logisch zijn. Als de variabele van het type integer is moet de expressie van het type integer zijn of er wordt afgerond in het geval van een real expressie. Als de variabele van het type real is mag de expressie zowel van het type real als integer zijn.
Deling van twee integers (ook in expressies) is in feite heling; het resultaat is integer en wordt niet afgerond maar afgekapt.
Voorbeelden
  7/3 wordt 2
  3d0*(1/2) wordt 0
Bij machtsverheffen maakt het verschil of de exponent real of integer is. Bij een integer exponent wordt de machtsverheffing als herhaaldelijke vermenigvuldiging uitgevoerd, bij een real exponent m.b.v. een logaritme en exponent funktie. Het gevolg is bijvoorbeeld dat -2d0**2 gelijk is aan 4, maar 2d0 ** 2d0 een foutmelding geeft.


Herhalingsopdrachten


Subprogramma's

Een subprogramma in FORTRAN kan zijn: Een subroutine in FORTRAN is een zelfstandig programma dat vanuit het hoofdprogramma of vanuit een ander subprogramma kan worden aangeroepen door een CALL statement. De statement call piet in het hoofdprogramma roept de subroutine met de naam piet aan. De subroutine zelf begint met het woord subroutine, dan de naam van de subroutine, hier piet, en dan tussen haakjes de formele parameters. De subroutine-tekst eindigt met het woord end. (Opmerking: in het voorbeeld hierboven heeft de subroutine piet geen parameters).
De parameters worden gebruikt in de zin van `call by reference`. `Call by value` bestaat niet in Fortran.
 

De variabelen in een subroutine die niet in de parameterlist (of common block) voorkomen zijn lokaal, dus alleen in de subroutine bekend. Waarden worden vanuit het aanroepende programma (hoofdprogramma of subprogramma) naar de subroutine overgedragen via het parameter mechanisme. Dit geldt ook andersom (overdragen van waarden van subroutine naar aanroepend programma).
Subroutines mogen ook andere Fortran subroutines aanroepen, maar niet recursief.
In FORTRAN bestaat ook nog het FUNCTION subprogramma. De function begint met het woord function, dan volgt de naam van de function en tussen haakjes de formele parameters. De function eindigt net als de subroutine met het woord end. Binnen de function subroutine moet de naam van de function een waarde krijgen.
 

Declaraties binnen een subroutine of function hebben zowel betrekking op de lokale variabelen, de variabelen in de parameter lijst en op de naam van de function. De function moet ook gedeclareerd worden in het aanroepende programma (of subprogramma).
Arrays in de parameterlijst moeten in het subprogramma worden gedeclareerd als arrays. Voor vaste arrays gelden dezelfde regels als in het hoofdprogramma. Daarnaast mogen in de parameterlijst ook nog variabele arrays voorkomen waarvan de lengte met een integer expressie wordt aangegeven. Hierbij mogen variabelen uit de parameterlist worden gebruikt.
Daarnaast kan voor variabele lengte arrays ook nog de optie * worden gebruikt voor de bovengrens in de laatste dimensie van het array. (NB. alleen voor formele parameters van functions en subroutines).
Voorbeeld:

   double precision a(3:*), b(*), c(1:n,*), d(4,5,*)
Belangrijk is dat de grenzen van de arrays in het hoofdprogramma exact hetzelfde moeten zijn als in de subroutine. Deze restrictie geldt niet voor de bovengrens van de laatste dimensie.
Voorbeeld:
      program voorbeeld
      implicit none
      double precision a(100), x1(100), y1(100), gemiddelde, v
      integer n, i
      read *, n
      read *, (a(i),i=1,n)
      v = gemiddelde(a,n)
      read *, n
      read *, (x1(i),i=1,n)
      call copy ( x1, y1, n )
      end

      function gemiddelde ( a, n )
      implicit none
      integer n, j
      double precision a(n), gemiddelde, som
      som = 0d0
      do j = 1, n
         som = som + a(j)
      end do
      gemiddelde = som / n
      end

      subroutine copy ( x, y, n )
      implicit none
      integer n, i
      double precision x(*), y(*)
      do i = 1, n
         y(i) = x(i)
      end do
      end
NB. De FORTRAN compiler test de arraygrenzen niet. Overschrijden van de arraygrenzen heeft meestal onverwachte gevolgen met onbegrijpelijke foutmeldingen.
 

Een function wordt aangeroepen door het gebruik van de naam met eventuele parameters, in een expressie.
Voorbeeld:

      v = gemiddelde(a,100)
Een subroutine wordt aangeroepen door een call statement.
Voorbeeld:
      call copy ( x1, y1, 100 )


Invoer en uitvoer

FORTRAN kent vele faciliteiten voor lezen van, of schrijven naar respectievelijk invoer- en uitvoermedia. Slechts het hoogst noodzakelijke wordt hier besproken.
De leesopdracht luidt:
      read *, <variabele list>
De <variabele list> is een rij van variabelen gescheiden door komma's. De in te lezen getallen moeten worden gescheiden door èèn of meer spaties, een komma of einde van een regel. Elke nieuwe READ opdracht leest van een nieuwe regel.
Voorbeeld
      read *, a, b, c
De <variabele list> kan ook een zgn. implied do-statement zijn.
Voorbeeld
      read *, (a(i), i = 1, 100)
De variabelen a(1) t/m a(100) worden ingelezen.
 

De schrijfopdracht luidt:

      read *, <output list>
De <output list> is een rij van variabelen gescheiden door komma's.
Voorbeeld
      print *, 'a = ',a
De <output list> kan ook weer een implied do-statement zijn.
Voorbeeld
      print *, (a(i), i = 1, 100)
De implied do-statement wordt gebruikt bij het lezen en schrijven van een array.
Voorbeeld
      program voorbeeld
      implicit none
      integer i, j
      double precision a(1:100,-2:2)
      do i = 1, 100
         read *, (a(i,j),j=-2,2)
      end do
      print *, 'Het array A is:'
      do i = 1, 100
         print *, (a(i,j),j=-2,2)
      end do
De invoerfile kan er als volgt uitzien:
 1 2 4 2 1         eerste regel in de file (= eerste rij van a)
 1 2 4 2 1         tweede regel in de file (= tweede rij van a)
   .
 1 2 4 2 1         vierde regel in de file (= vierde rij van a)
   .
   .
   .
De uitvoer wordt dan:
Het array A is:
 1 2 4 2 1
 1 2 4 2 1
   .
 1 2 4 2 1
   .
   .
   .


Enige veel voorkomende fouten

De melding van het systeem bij fouten is niet altijd even duidelijk.
Bekende foutmeldingen zijn bijvoorbeeld:
  Floating point exception
  Underflow
  Bus error
  Memory fault
  Segmentation violation
De 3 laatste geven eigenlijk alleen maar aan dat er iets geweldig mis is, zonder dat je weet wat.
De eerste melding komt vaak bij delen door 0. Ga dan na op welke plaatsen u een deling uitvoert.
De melding underflow geeft vaak aan dat iets geen waarde heeft.
Soms wordt er wat extra informatie gegeven over de plaats waar de fout optreedt. Deze aanwijzing helpt bij het zoeken.
U doet er verstandig aan om bij het opsporen van fouten, printopdrachten in uw Fortran programma op te nemen.
Mochten er teveel fouten op het scherm komen gebruik dan weer redirection naar een file, waarbij voor systeem meldingen altijd >& gebruikt moet worden.

Literatuur



Footnotes

... UNIX1
UNIX is een geregistreerd handelsmerk van AT&T



Mathieu Pourquie

26 April 1999