Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gfortran.dg / unf_io_convert_1.f90
blobad79fd76950d4f6f37bddb15441d9226b75db207
1 ! { dg-do run { target fd_truncate } }
2 ! { dg-options "-pedantic" }
3 ! This test verifies the most basic sequential unformatted I/O
4 ! with convert="swap".
5 ! Adapted from seq_io.f.
6 ! write 3 records of various sizes
7 ! then read them back
8 program main
9 implicit none
10 integer size
11 parameter(size=100)
12 logical debug
13 data debug /.FALSE./
14 ! set debug to true for help in debugging failures.
15 integer m(2)
16 integer n
17 real r(size)
18 integer i
19 character*4 str
21 m(1) = Z'11223344' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
22 m(2) = Z'55667788' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
23 n = Z'77AABBCC' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
24 str = 'asdf'
25 do i = 1,size
26 r(i) = i
27 end do
28 open(9,form="unformatted",access="sequential",convert="swap") ! { dg-warning "Extension: CONVERT" }
29 write(9) m ! an array of 2
30 write(9) n ! an integer
31 write(9) r ! an array of reals
32 write(9)str ! String
33 ! zero all the results so we can compare after they are read back
34 do i = 1,size
35 r(i) = 0
36 end do
37 m(1) = 0
38 m(2) = 0
39 n = 0
40 str = ' '
42 rewind(9)
43 read(9) m
44 read(9) n
45 read(9) r
46 read(9) str
48 ! check results
49 if (m(1).ne.Z'11223344') then
50 if (debug) then
51 print '(A,Z8)','m(1) incorrect. m(1) = ',m(1)
52 else
53 call abort
54 endif
55 endif
57 if (m(2).ne.Z'55667788') then
58 if (debug) then
59 print '(A,Z8)','m(2) incorrect. m(2) = ',m(2)
60 else
61 call abort
62 endif
63 endif
65 if (n.ne.Z'77AABBCC') then
66 if (debug) then
67 print '(A,Z8)','n incorrect. n = ',n
68 else
69 call abort
70 endif
71 endif
73 do i = 1,size
74 if (int(r(i)).ne.i) then
75 if (debug) then
76 print*,'element ',i,' was ',r(i),' should be ',i
77 else
78 call abort
79 endif
80 endif
81 end do
82 if (str .ne. 'asdf') then
83 if (debug) then
84 print *,'str incorrect, str = ', str
85 else
86 call abort
87 endif
88 end if
89 ! use hexdump to look at the file "fort.9"
90 if (debug) then
91 close(9)
92 else
93 close(9,status='DELETE')
94 endif
95 end program main