msg(3f) - [M_strings:TYPE] converts any standard scalar type to a string
(LICENSE:PD)
function msg(g1,g2g3,g4,g5,g6,g7,g8,g9,sep)
class(*),intent(in),optional :: g1,g2,g3,g4,g5,g6,g7,g8,g9
character(len=*),intent(in),optional :: sep
character(len=:),allocatable :: msg
msg(3f) builds a space-separated string from up to nine scalar values.
g[1-9] optional value to print the value of after the message. May
be of type INTEGER, LOGICAL, REAL, DOUBLEPRECISION, COMPLEX,
or CHARACTER.
sep separator between values. Defaults to a space
msg description to print
Sample program:
program demo_msg
use M_strings, only : msg
implicit none
character(len=:),allocatable :: pr
character(len=:),allocatable :: frmt
integer :: biggest
pr=msg('HUGE(3f) integers',huge(0),&
& 'and real',huge(0.0),'and double',huge(0.0d0))
write(*,'(a)')pr
pr=msg('real :',&
& huge(0.0),0.0,12345.6789,tiny(0.0) )
write(*,'(a)')pr
pr=msg('doubleprecision :',&
& huge(0.0d0),0.0d0,12345.6789d0,tiny(0.0d0) )
write(*,'(a)')pr
pr=msg('complex :',&
& cmplx(huge(0.0),tiny(0.0)) )
write(*,'(a)')pr
! create a format on the fly
biggest=huge(0)
frmt=msg('(*(i',int(log10(real(biggest))),':,1x))',sep='')
write(*,*)'format=',frmt
! although it will often work, using msg(3f) in an I/O statement
! is not recommended
write(*,*)msg('program will now stop')
end program demo_msg
Output
HUGE(3f) integers 2147483647 and real 3.40282347E+38
and double 1.7976931348623157E+308
real : 3.40282347E+38 0.00000000
12345.6787 1.17549435E-38
doubleprecision : 1.7976931348623157E+308 0.0000000000000000
12345.678900000001 2.2250738585072014E-308
complex : (3.40282347E+38,1.17549435E-38)
format=(*(i9:,1x))
program will now stop
John S. Urban
Public Domain
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(*), | intent(in), | optional | :: | generic1 | ||
class(*), | intent(in), | optional | :: | generic2 | ||
class(*), | intent(in), | optional | :: | generic3 | ||
class(*), | intent(in), | optional | :: | generic4 | ||
class(*), | intent(in), | optional | :: | generic5 | ||
class(*), | intent(in), | optional | :: | generic6 | ||
class(*), | intent(in), | optional | :: | generic7 | ||
class(*), | intent(in), | optional | :: | generic8 | ||
class(*), | intent(in), | optional | :: | generic9 | ||
character(len=*), | intent(in), | optional | :: | sep |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(*), | intent(in) | :: | generic1(:) | |||
class(*), | intent(in), | optional | :: | generic2(:) | ||
class(*), | intent(in), | optional | :: | generic3(:) | ||
class(*), | intent(in), | optional | :: | generic4(:) | ||
class(*), | intent(in), | optional | :: | generic5(:) | ||
class(*), | intent(in), | optional | :: | generic6(:) | ||
class(*), | intent(in), | optional | :: | generic7(:) | ||
class(*), | intent(in), | optional | :: | generic8(:) | ||
class(*), | intent(in), | optional | :: | generic9(:) | ||
character(len=*), | intent(in), | optional | :: | sep |