@@ -19,17 +19,32 @@ module stdlib_io
1919 ! Private API that is exposed so that we can test it in tests
2020 public :: parse_mode
2121
22- ! Format strings with edit descriptors for each type and kind
22+ ! > Version: experimental
23+ ! >
24+ ! > Format strings with edit descriptors for each type and kind
25+ ! > ([Specification](../page/specs/stdlib_io.html))
2326 character (* ), parameter :: &
24- FMT_INT = ' (*(i0,1x))' , &
25- FMT_REAL_SP = ' (*(es15.8e2,1x))' , &
26- FMT_REAL_DP = ' (*(es24.16e3,1x))' , &
27- FMT_REAL_XDP = ' (*(es26.18e3,1x))' , &
28- FMT_REAL_QP = ' (*(es44.35e4,1x))' , &
29- FMT_COMPLEX_SP = ' (*(es15.8e2,1x,es15.8e2))' , &
30- FMT_COMPLEX_DP = ' (*(es24.16e3,1x,es24.16e3))' , &
31- FMT_COMPLEX_XDP = ' (*(es26.18e3,1x,es26.18e3))' , &
32- FMT_COMPLEX_QP = ' (*(es44.35e4,1x,es44.35e4))'
27+ ! > Format string for integers
28+ FMT_INT = ' (i0)' , &
29+ ! > Format string for single precision real numbers
30+ FMT_REAL_SP = ' (es15.8e2)' , &
31+ ! > Format string for souble precision real numbers
32+ FMT_REAL_DP = ' (es24.16e3)' , &
33+ ! > Format string for extended double precision real numbers
34+ FMT_REAL_XDP = ' (es26.18e3)' , &
35+ ! > Format string for quadruple precision real numbers
36+ FMT_REAL_QP = ' (es44.35e4)' , &
37+ ! > Format string for single precision complex numbers
38+ FMT_COMPLEX_SP = ' (es15.8e2,1x,es15.8e2)' , &
39+ ! > Format string for double precision complex numbers
40+ FMT_COMPLEX_DP = ' (es24.16e3,1x,es24.16e3)' , &
41+ ! > Format string for extended double precision complex numbers
42+ FMT_COMPLEX_XDP = ' (es26.18e3,1x,es26.18e3)' , &
43+ ! > Format string for quadruple precision complex numbers
44+ FMT_COMPLEX_QP = ' (es44.35e4,1x,es44.35e4)'
45+
46+ public :: FMT_INT, FMT_REAL_SP, FMT_REAL_DP, FMT_REAL_XDP, FMT_REAL_QP
47+ public :: FMT_COMPLEX_SP, FMT_COMPLEX_DP, FMT_COMPLEX_XDP, FMT_COMPLEX_QP
3348
3449 ! > Version: experimental
3550 ! >
@@ -115,7 +130,7 @@ subroutine loadtxt_rsp(filename, d)
115130
116131 allocate (d(nrow, ncol))
117132 do i = 1 , nrow
118- read (s, FMT_REAL_sp) d(i, :)
133+ read (s, " (* " // FMT_REAL_sp( 1 : len (FMT_REAL_sp) - 1 ) // " ,1x)) " ) d(i, :)
119134 end do
120135 close (s)
121136
@@ -162,7 +177,7 @@ subroutine loadtxt_rdp(filename, d)
162177
163178 allocate (d(nrow, ncol))
164179 do i = 1 , nrow
165- read (s, FMT_REAL_dp) d(i, :)
180+ read (s, " (* " // FMT_REAL_dp( 1 : len (FMT_REAL_dp) - 1 ) // " ,1x)) " ) d(i, :)
166181 end do
167182 close (s)
168183
@@ -398,7 +413,7 @@ subroutine loadtxt_csp(filename, d)
398413
399414 allocate (d(nrow, ncol))
400415 do i = 1 , nrow
401- read (s, FMT_COMPLEX_sp) d(i, :)
416+ read (s, " (* " // FMT_COMPLEX_sp( 1 : len (FMT_COMPLEX_sp) - 1 ) // " ,1x)) " ) d(i, :)
402417 end do
403418 close (s)
404419
@@ -446,7 +461,7 @@ subroutine loadtxt_cdp(filename, d)
446461
447462 allocate (d(nrow, ncol))
448463 do i = 1 , nrow
449- read (s, FMT_COMPLEX_dp) d(i, :)
464+ read (s, " (* " // FMT_COMPLEX_dp( 1 : len (FMT_COMPLEX_dp) - 1 ) // " ,1x)) " ) d(i, :)
450465 end do
451466 close (s)
452467
@@ -476,7 +491,7 @@ subroutine savetxt_rsp(filename, d)
476491 integer :: s, i
477492 s = open (filename, " w" )
478493 do i = 1 , size (d, 1 )
479- write (s, FMT_REAL_sp) d(i, :)
494+ write (s, " (* " // FMT_REAL_sp( 1 : len (FMT_REAL_sp) - 1 ) // " ,1x)) " ) d(i, :)
480495 end do
481496 close (s)
482497 end subroutine savetxt_rsp
@@ -503,7 +518,7 @@ subroutine savetxt_rdp(filename, d)
503518 integer :: s, i
504519 s = open (filename, " w" )
505520 do i = 1 , size (d, 1 )
506- write (s, FMT_REAL_dp) d(i, :)
521+ write (s, " (* " // FMT_REAL_dp( 1 : len (FMT_REAL_dp) - 1 ) // " ,1x)) " ) d(i, :)
507522 end do
508523 close (s)
509524 end subroutine savetxt_rdp
@@ -530,7 +545,7 @@ subroutine savetxt_iint8(filename, d)
530545 integer :: s, i
531546 s = open (filename, " w" )
532547 do i = 1 , size (d, 1 )
533- write (s, FMT_INT) d(i, :)
548+ write (s, " (* " // FMT_INT( 1 : len (FMT_INT) - 1 ) // " ,1x)) " ) d(i, :)
534549 end do
535550 close (s)
536551 end subroutine savetxt_iint8
@@ -557,7 +572,7 @@ subroutine savetxt_iint16(filename, d)
557572 integer :: s, i
558573 s = open (filename, " w" )
559574 do i = 1 , size (d, 1 )
560- write (s, FMT_INT) d(i, :)
575+ write (s, " (* " // FMT_INT( 1 : len (FMT_INT) - 1 ) // " ,1x)) " ) d(i, :)
561576 end do
562577 close (s)
563578 end subroutine savetxt_iint16
@@ -584,7 +599,7 @@ subroutine savetxt_iint32(filename, d)
584599 integer :: s, i
585600 s = open (filename, " w" )
586601 do i = 1 , size (d, 1 )
587- write (s, FMT_INT) d(i, :)
602+ write (s, " (* " // FMT_INT( 1 : len (FMT_INT) - 1 ) // " ,1x)) " ) d(i, :)
588603 end do
589604 close (s)
590605 end subroutine savetxt_iint32
@@ -611,7 +626,7 @@ subroutine savetxt_iint64(filename, d)
611626 integer :: s, i
612627 s = open (filename, " w" )
613628 do i = 1 , size (d, 1 )
614- write (s, FMT_INT) d(i, :)
629+ write (s, " (* " // FMT_INT( 1 : len (FMT_INT) - 1 ) // " ,1x)) " ) d(i, :)
615630 end do
616631 close (s)
617632 end subroutine savetxt_iint64
@@ -638,7 +653,7 @@ subroutine savetxt_csp(filename, d)
638653 integer :: s, i
639654 s = open (filename, " w" )
640655 do i = 1 , size (d, 1 )
641- write (s, FMT_COMPLEX_sp) d(i, :)
656+ write (s, " (* " // FMT_COMPLEX_sp( 1 : len (FMT_COMPLEX_sp) - 1 ) // " ,1x)) " ) d(i, :)
642657 end do
643658 close (s)
644659 end subroutine savetxt_csp
@@ -665,7 +680,7 @@ subroutine savetxt_cdp(filename, d)
665680 integer :: s, i
666681 s = open (filename, " w" )
667682 do i = 1 , size (d, 1 )
668- write (s, FMT_COMPLEX_dp) d(i, :)
683+ write (s, " (* " // FMT_COMPLEX_dp( 1 : len (FMT_COMPLEX_dp) - 1 ) // " ,1x)) " ) d(i, :)
669684 end do
670685 close (s)
671686 end subroutine savetxt_cdp
0 commit comments