program elterofuggvenyek
! figyelem!! nem hasznaljuk az implicit none parancsot

 real :: a, b			! globalis valtozok
 real :: belsobol, kulsobol	! a fuggvenyek meghivasahoz szukseges valtozok
 real :: kulso			! deklaraltuk a kulso fuggvenyt is

! kezdeti ertekeket adunk a globalis valtozoknak:
 a=1.
 b=10.
 
! kiirjuk, hogy mi volt az eredeti erteke a-nak es b-nek:
 write(*,*) 'a erteke eredetileg: ',a
 write(*,*) 'b erteke eredetileg: ',b
 write(*,*)

! meghivjuk a kulso fuggvenyt:
 kulsobol=kulso(a)
! kiirjuk, hogy hogyan valtoztak/nem valtoztak a globalis valtozok
 write(*,*) 'a erteke a kulso fuggveny meghivasa utan: ',a,' (mert argumentumban megkapta, igy meg tudta valtozatni)'
 write(*,*) 'b erteke a kulso fuggveny meghivasa utan: ',b,' (nem valtozott)'
 write(*,*)

! meghivjuk a belso fuggvenyt:
 belsobol=belso(a)
! kiirjuk, hogy hogyan valtoztak/nem valtoztak a globalis valtozok
 write(*,*) 'a erteke a belso fuggveny meghivasa utan: ',a,' (nott 1-el)'
 write(*,*) 'b erteke a belso fuggveny meghivasa utan: ',b,' (nott 1-el)'

 contains

! a belso fuggveny:

 real function belso(a)
! nem kell deklaralni semmit, mert ez a fuggveny
! ismeri a globalis valtozokat

! kiirjuk a valtozokat:
  write(*,*) 'a erteke a belso fuggvenyben megnoveles elott: ',a,' (mert megkapta&
& argumentumban es amugy is a belso fuggveny ismeri a globalis valtozokat)'
  write(*,*) 'b erteke a belso fuggvenyben megnoveles elott: ',b,' (mert a belso fuggveny ismeri a globalis valtozokat)'
  write(*,*)
  a=a+1.
  b=b+1.
  belso=a
 end function belso

end program elterofuggvenyek

! a kulso fuggveny a program lezarasa utan kovetkezik:

 real function kulso(a)
! a-t nem kell deklaralni, mert azt argumentumban
! megkapja a fuggveny,
! b-t pedig azert nem kell, mert nem hasznaljuk az 
! implicit none parancsot

  write(*,*) 'a erteke a kulso fuggvenyben megnoveles elott: ',a,' (mert megkapta argumentumban)'
  write(*,*) 'b erteke a kulso fuggvenyben megnoveles elott: ',b,' (mert nem kapta meg argumentumban, &
&nem is lett deklaralva es nem is adtunk erteket neki)'
  write(*,*)
  a=a+1.
  b=b+1.
  kulso=a

 end function kulso
!/Karol
