1! { dg-do run }
2! { dg-options "-std=legacy" }
3!
4! Test various uses of BZ and BN format specifiers.
5! Portions inspired by NIST F77 testsuite FM711.f
6! Contributed by jvdelisle@verizon.net
7program test_bn
8
9integer I1(2,2), I2(2,2,2)
10real A1(5)
11real(kind=8) A2(0:3)
12character*80 :: IDATA1="111 2 2 3 3. 3E-1  44 5 5 6 . 67 . 78 8. 8E-1"
13character*80 :: IDATA2="2345 1 34512 45123 51234 2345 1 34512 45123 5"
14character*80 :: IDATA3="-8.0D0  1.0D-4  0.50D0  0.250D0"
15character*80 :: ODATA=""
16character*80 :: CORRECT1=" 1110 2020 .30303E-07   44   55   6.6 70.07 .888E+01"
17character*80 :: CORRECT2="23450 10345. 12.45 1235 1234 2345  1345. 12.45 1235"
18character*80 :: CORRECT3="   -0.8000000000D+01    0.1000000000D-03&
19                         &    0.5000000000D+00    0.2500000000D+00"
20READ(IDATA1, 10) I1(1,2), IVI, A1(3), JVI, KVI, A1(2), AVS, A1(1)
2110 FORMAT (BZ,(2I4, E10.1, BN, 2I4, F5.2, BZ, F5.2, BN, E10.1))
22
23WRITE(ODATA, 20) I1(1,2), IVI, A1(3), JVI, KVI, A1(2), AVS, A1(1)
2420 FORMAT (2I5, 1X, E10.5, BN, 2I5, F6.1, BZ, F6.2, BN, 1X, E8.3, I5)
25
26if (ODATA /= CORRECT1) call abort
27ODATA=""
28
29READ(IDATA2, 30) I2(1,2,1), A1(3), AVS, IVI, I1(1,1), JVI, BVS, A1(2), I2(1,1,1)
3030 FORMAT (BZ, (I5, F5.0, BN, F5.2, 2I5, I5, F5.0, BN, F5.2, I5))
31
32WRITE(ODATA, 40) I2(1,2,1), A1(3), AVS, IVI, I1(1,1), JVI, BVS, A1(2), I2(1,1,1)
3340 FORMAT (I5, F7.0, BZ, 1X, F5.2, 2(1X,I4),I5, F7.0, BZ, 1X, F5.2, 1X, I4)
34
35if (ODATA /= CORRECT2) call abort
36ODATA=""
37
38READ(IDATA3, 50) A2
3950 FORMAT (4D8.0)
40
41WRITE(ODATA,60) A2
4260 FORMAT (4D20.10)
43
44if (ODATA /= CORRECT3) call abort
45
46end program test_bn
47