program demo_show_string2number use, intrinsic :: iso_fortran_env, only : integer_kinds, int8, int16, int32, int64 use, intrinsic :: iso_fortran_env, only : real32, real64, real128 use M_overload, only : int ! allow strings to be converted to integers use M_overload, only : real,dble ! allow strings to be converted to floating point use M_overload, only : operator(//) use M_overload, only : merge implicit none character(len=*), parameter :: gen='(*("[",g0,"]":,","))' if(int('1234') .eq. 1234 ) write(*,*)'int("STRING") works ' if(abs(real('1234.56789') - 1234.56789) .lt. 2*epsilon(0.0)) write(*,*)'real("STRING") works ' if(abs(dble('1234.5678901234567')- 1234.5678901234567d0).lt. epsilon(0.0d0)) write(*,*)'dble("STRING") works ' write(*,*) merge('int works for .FALSE.','int fails for .FALSE.',int(.FALSE.).ne.0) write(*,*) merge('int works for .TRUE.','int fails for .TRUE.',int(.TRUE.).eq.0) write(*,*)' The value is '//10//' which is less than '//20.2 end program demo_show_string2number