@@ -19,17 +19,32 @@ module stdlib_io
19
19
! Private API that is exposed so that we can test it in tests
20
20
public :: parse_mode
21
21
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))
23
26
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
33
48
34
49
! > Version: experimental
35
50
! >
@@ -115,7 +130,7 @@ subroutine loadtxt_rsp(filename, d)
115
130
116
131
allocate (d(nrow, ncol))
117
132
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, :)
119
134
end do
120
135
close (s)
121
136
@@ -162,7 +177,7 @@ subroutine loadtxt_rdp(filename, d)
162
177
163
178
allocate (d(nrow, ncol))
164
179
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, :)
166
181
end do
167
182
close (s)
168
183
@@ -398,7 +413,7 @@ subroutine loadtxt_csp(filename, d)
398
413
399
414
allocate (d(nrow, ncol))
400
415
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, :)
402
417
end do
403
418
close (s)
404
419
@@ -446,7 +461,7 @@ subroutine loadtxt_cdp(filename, d)
446
461
447
462
allocate (d(nrow, ncol))
448
463
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, :)
450
465
end do
451
466
close (s)
452
467
@@ -476,7 +491,7 @@ subroutine savetxt_rsp(filename, d)
476
491
integer :: s, i
477
492
s = open (filename, " w" )
478
493
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, :)
480
495
end do
481
496
close (s)
482
497
end subroutine savetxt_rsp
@@ -503,7 +518,7 @@ subroutine savetxt_rdp(filename, d)
503
518
integer :: s, i
504
519
s = open (filename, " w" )
505
520
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, :)
507
522
end do
508
523
close (s)
509
524
end subroutine savetxt_rdp
@@ -530,7 +545,7 @@ subroutine savetxt_iint8(filename, d)
530
545
integer :: s, i
531
546
s = open (filename, " w" )
532
547
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, :)
534
549
end do
535
550
close (s)
536
551
end subroutine savetxt_iint8
@@ -557,7 +572,7 @@ subroutine savetxt_iint16(filename, d)
557
572
integer :: s, i
558
573
s = open (filename, " w" )
559
574
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, :)
561
576
end do
562
577
close (s)
563
578
end subroutine savetxt_iint16
@@ -584,7 +599,7 @@ subroutine savetxt_iint32(filename, d)
584
599
integer :: s, i
585
600
s = open (filename, " w" )
586
601
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, :)
588
603
end do
589
604
close (s)
590
605
end subroutine savetxt_iint32
@@ -611,7 +626,7 @@ subroutine savetxt_iint64(filename, d)
611
626
integer :: s, i
612
627
s = open (filename, " w" )
613
628
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, :)
615
630
end do
616
631
close (s)
617
632
end subroutine savetxt_iint64
@@ -638,7 +653,7 @@ subroutine savetxt_csp(filename, d)
638
653
integer :: s, i
639
654
s = open (filename, " w" )
640
655
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, :)
642
657
end do
643
658
close (s)
644
659
end subroutine savetxt_csp
@@ -665,7 +680,7 @@ subroutine savetxt_cdp(filename, d)
665
680
integer :: s, i
666
681
s = open (filename, " w" )
667
682
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, :)
669
684
end do
670
685
close (s)
671
686
end subroutine savetxt_cdp
0 commit comments