! This file: ! http://ftp.aset.psu.edu/pub/ger/fortran/hdk/OptionalArgs.f90 ! ! Example of using F90 Optional Arguments ! module demo implicit none contains ! An explicit Interface is required. subroutine anysub(intarg1, outarg, intarg2) integer :: intarg1, intarg2 real :: outarg intent(in) :: intarg1, intarg2 intent(out) :: outarg optional :: outarg, intarg2 print *, " " print *, "intarg1=",intarg1 if (present(outarg)) then outarg=intarg1*10 print *, "outarg=",outarg endif if (present(intarg2)) then print *, "intarg2=",intarg2 endif end subroutine anysub end module demo program main use demo intarg1=1 call anysub(intarg1, outarg, 2) call anysub(intarg1, outarg) call anysub(intarg1, intarg2=3) call anysub(intarg1) end program main ! Results: ! intarg1= 1 ! outarg= 10.0000000 !intarg2= 2 !intarg1= 1 !outarg= 10.0000000 !intarg1= 1 !intarg2= 3 !intarg1= 1