anymsg(3f) - [M_msg] converts any standard scalar type to a string (LICENSE:PD)
Synopsis
Description
Options
Returns
Examples
Author
License
function anymsg(g0,g1,g2,g3,g4,g5,g6,g7,g8,g9,ga,gb,gc,gd,ge,gf,gg,gh,gi,gj,nospace)class(*),intent(in),optional :: g0,g1,g2,g3,g4,g5,g6,g7,g8,g9 class(*),intent(in),optional :: ga,gb,gc,gd,ge,gf,gg,gh,gi,gj logical,intent(in),optional :: nospace character,len=(:),allocatable :: anymsg
anymsg(3f) builds a space-separated string from up to nine scalar values.
g[0-9a-j] optional value to print the value of after the message. May be of type INTEGER, LOGICAL, REAL, DOUBLEPRECISION, COMPLEX, or CHARACTER. nospace if nospace=.true., then no spaces are added between values
anymsg description to print
Sample program:Output
program demo_msg use M_msg, only : anymsg implicit none character(len=:),allocatable :: pr character(len=:),allocatable :: frmt integer :: biggestpr=anymsg(HUGE(3f) integers,huge(0),and real,huge(0.0),and double,huge(0.0d0)) write(*,(a))pr pr=anymsg(real :,huge(0.0),0.0,12345.6789,tiny(0.0) ) write(*,(a))pr pr=anymsg(doubleprecision :,huge(0.0d0),0.0d0,12345.6789d0,tiny(0.0d0) ) write(*,(a))pr pr=anymsg(complex :,cmplx(huge(0.0),tiny(0.0)) ) write(*,(a))pr
! create a format on the fly biggest=huge(0) frmt=anymsg((*(i,int(log10(real(biggest))),:,1x)),nospace=.true.) write(*,*)format=,frmt
! although it will often work, using anymsg(3f) in an I/O statement is not recommended write(*,*)anymsg(program will now stop)
end program demo_msg
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
anymsg (3) | June 28, 2020 |