PROGRAM KomSat
!-------------------------------------------------------
! hesap.f95
! Komut satırından girilen iki sayı üzerinde beş işlem.
! Kullanımı: hesap sayı1 operatör sayı2
!-------------------------------------------------------
IMPLICIT NONE
INTEGER :: N
REAL :: X, Y, Z
CHARACTER(10) :: Arg1, Arg2, Arg3

  ! Arguman sayısı
  N = COMMAND_ARGUMENT_COUNT()

  IF(N < 3) STOP "Eksik parametre"
  IF(N > 3) STOP "Fazla parametre"


  CALL GET_COMMAND_ARGUMENT(1,Arg1) ! 1 inci parametre
  CALL GET_COMMAND_ARGUMENT(2,Arg2) ! 2  nci parametre
  CALL GET_COMMAND_ARGUMENT(3,Arg3) ! 3 üncü parametre

  x = KtrGer(Arg1)
  y = KtrGer(Arg3)

  SELECT CASE(Arg2(1:2))
    CASE('+');    z = x+y
    CASE('-');    z = x-y
    CASE('*');    z = x*y
    CASE('/');    z = x/y
    CASE('**');   z = x**y
    CASE DEFAULT; z = 0.0
             WRITE(*,*) "Geçersiz parametre: ", Arg2
  END SELECT

  PRINT *," Sonuc = ",z

CONTAINS

      ! Bu fonksiyon bir katarı gerçel sayıya dönüştürür
      REAL FUNCTION KtrGer(Katar)
      CHARACTER (*), INTENT(IN) :: Katar

        READ(UNIT=Katar, FMT='(F10.5)') KtrGer

      END FUNCTION KtrGer

END PROGRAM