2 ! Check real value edit descriptors
3 ! Also checks that rounding is performed correctly
8 parameter (x
= "xxxxxxxxxxxxxxxxxxxx")
10 ! W append a "z" onto each test to check the field is the correct width
13 write (s
, '(G10.3,A)') 12.36, "z"
14 if (s
.ne
. " 12.4 z") call abort
17 write (s
, '(G10.3,A)') -0.0012346, "z"
18 if (s
.ne
. "-0.123E-02z") call abort
21 write (s
, '(G10.3e1,a)') 12.34, "z"
22 if (s
.ne
. " 12.3 z") call abort
23 ! E format with excessive precision
24 write (t
, '(E199.192,A)') 1.5, "z"
25 if ((t(1:7) .ne
. " 0.1500") .or
. (t(194:200) .ne
. "00E+01z")) call abort
28 write (s
, '(EN15.3,A)') 12873.6, "z"
29 if (s
.ne
. " 12.874E+03z") call abort
30 ! EN format, negative exponent
32 write (s
, '(EN15.3,A)') 12.345e-6, "z"
33 if (s
.ne
. " 12.345E-06z") call abort
36 write (s
, '(ES10.3,A)') 16.235, "z"
37 if (s
.ne
. " 1.624E+01z") call abort
38 ! F format, small number
40 write (s
, '(F10.8,A)') 1.0e-20, "z"
41 if (s
.ne
. "0.00000000z") call abort
42 ! E format, very large number.
43 ! Used to overflow with positive scale factor
45 write (s
, '(1PE10.3,A)') huge(0d0), "z"
46 ! The actual value is target specific, so just do a basic check
47 if ((s(1:1) .eq
. "*") .or
. (s(7:7) .ne
. "+") .or
. &
48 (s(11:11) .ne
. "z")) call abort
49 ! F format, round up with carry to most significant digit.
51 write (s
, '(F10.3,A)') 0.9999, "z"
52 if (s
.ne
. " 1.000z") call abort
53 ! F format, round up with carry to most significant digit < 0.1.
55 write (s
, '(F10.3,A)') 0.0099, "z"
56 if (s
.ne
. " 0.010z") call abort
57 ! E format, round up with carry to most significant digit.
59 write (s
, '(E10.3,A)') 0.9999, "z"
60 if (s
.ne
. " 0.100E+01z") call abort
61 ! EN format, round up with carry to most significant digit.
63 write (s
, '(EN15.3,A)') 999.9999, "z"
64 if (s
.ne
. " 1.000E+03z") call abort
65 ! E format, positive scale factor
67 write (s
, '(2PE10.4,A)') 1.2345, "z"
68 if (s
.ne
. '12.345E-01z') call abort
69 ! E format, negative scale factor
71 write (s
, '(-2PE10.4,A)') 1.25, "z"
72 if (s
.ne
. '0.0013E+03z') call abort
73 ! E format, single digit precision
75 write (s
, '(E10.1,A)') 1.1, "z"
76 if (s
.ne
. ' 0.1E+01z') call abort