1*     Preliminary tests for a few things in the i/o library.
2*     Thrown together by Dave Love not from specific bug reports --
3*     other ideas welcome.
4
5      character *(*) fmt
6      parameter (fmt='(1x,i3,f5.1)')
7*     Scratch file makes sure we can use one and avoids dealing with
8*     explicit i/o in the testsuite.
9      open(90, status='scratch') ! try a biggish unit number
10      write(90, '()')           ! extra record for interest
11*     Formatted i/o can go wild (endless loop AFAIR) if we're wrongly
12*     assuming an ANSI sprintf.
13      write(90, fmt) 123, 123.0
14      backspace 90              ! backspace problems reported on DOSish systems
15      read(90, fmt) i, r
16      endfile 90
17      if (i/=123 .or. nint(r)/=123) call abort
18      rewind 90                 ! make sure we can rewind too
19      read(90, '()')
20      read(90, fmt) i, r
21      if (i/=123 .or. nint(r)/=123) call abort
22      close(90)
23*     Make sure we can do unformatted i/o OK.  This might be
24*     problematic on DOS-like systems if we've done an fopen in text
25*     mode, not binary.
26      open(90, status='scratch', access='direct', form='unformatted',
27     +     recl=8)
28      write(90, rec=1) 123, 123.0
29      read(90, rec=1) i, r
30      if (i/=123 .or. nint(r)/=123) call abort
31      close(90)
32      open(90, status='scratch', form='unformatted')
33      write(90) 123, 123.0
34      backspace 90
35      read(90) i, r
36      if (i/=123 .or. nint(r)/=123) call abort
37      close(90)
38*     Fails at 1998-09-01 on spurious recursive i/o check (fixed by
39*     1998-09-06 libI77 change):
40      open(90, status='scratch', form='formatted', recl=16,
41     +     access='direct')
42      write(90, '(i8,f8.1)',rec=1) 123, 123.0
43      read(90, '(i8,f8.1)', rec=1) i, r
44      if (i/=123 .or. nint(r)/=123) call abort
45      close(90)
46      end
47