xref: /llvm-project/flang/test/Semantics/io01.f90 (revision 573fc6187b82290665ed7d94aa50641d06260a9e)
16c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1
264ab3302SCarolineConcatto  character(len=20) :: access = "direcT"
364ab3302SCarolineConcatto  character(len=20) :: access_(2) = (/"direcT", "streaM"/)
464ab3302SCarolineConcatto  character(len=20) :: action_(2) = (/"reaD ", "writE"/)
564ab3302SCarolineConcatto  character(len=20) :: asynchronous_(2) = (/"nO ", "yeS"/)
664ab3302SCarolineConcatto  character(len=20) :: blank_(2) = (/"nulL", "zerO"/)
764ab3302SCarolineConcatto  character(len=20) :: decimal_(2) = (/'commA', 'poinT'/)
864ab3302SCarolineConcatto  character(len=20) :: delim_(2) = (/"nonE ", "quotE"/)
964ab3302SCarolineConcatto  character(len=20) :: encoding_(2) = (/"defaulT", "utF-8  "/)
1064ab3302SCarolineConcatto  character(len=20) :: form_(2) = (/"formatteD  ", "unformatteD"/)
1164ab3302SCarolineConcatto  character(len=20) :: pad_(2) = (/"nO ", "yeS"/)
1264ab3302SCarolineConcatto  character(len=20) :: position_(3) = (/"appenD", "asiS  ", "rewinD"/)
1364ab3302SCarolineConcatto  character(len=20) :: round_(2) = (/"dowN", "zerO"/)
1464ab3302SCarolineConcatto  character(len=20) :: sign_(2) = (/"pluS    ", "suppresS"/)
1564ab3302SCarolineConcatto  character(len=20) :: status_(2) = (/"neW", "olD"/)
1664ab3302SCarolineConcatto  character(len=20) :: convert_(2) = (/"big_endiaN", "nativE    "/)
1764ab3302SCarolineConcatto  character(len=20) :: dispose_(2) = (/ "deletE", "keeP  "/)
1864ab3302SCarolineConcatto  character(len=66) :: cc, msg
1964ab3302SCarolineConcatto
2064ab3302SCarolineConcatto  integer :: new_unit
2164ab3302SCarolineConcatto  integer :: unit10 = 10
2264ab3302SCarolineConcatto  integer :: unit11 = 11
2364ab3302SCarolineConcatto  integer :: n = 40
24bce7a7edSpeter klausler  integer, parameter :: const_new_unit = 66
2564ab3302SCarolineConcatto
2664ab3302SCarolineConcatto  integer(kind=1) :: stat1
2764ab3302SCarolineConcatto  integer(kind=2) :: stat2
2864ab3302SCarolineConcatto  integer(kind=4) :: stat4
2964ab3302SCarolineConcatto  integer(kind=8) :: stat8
3064ab3302SCarolineConcatto
3164ab3302SCarolineConcatto  cc = 'scratch'
3264ab3302SCarolineConcatto
3364ab3302SCarolineConcatto  open(unit10)
3464ab3302SCarolineConcatto  open(blank='null', unit=unit10, pad='no')
3564ab3302SCarolineConcatto  open(unit=unit11, err=3)
3664ab3302SCarolineConcatto3 continue
3764ab3302SCarolineConcatto
3864ab3302SCarolineConcatto  open(20, access='sequential')
3964ab3302SCarolineConcatto  open(21, access=access, recl=n)
4064ab3302SCarolineConcatto  open(22, access=access_(2), iostat=stat1, iomsg=msg)
4164ab3302SCarolineConcatto
4264ab3302SCarolineConcatto  open(30, action='readwrite', asynchronous='n'//'o', blank='zero')
4364ab3302SCarolineConcatto  open(31, action=action_(2), asynchronous=asynchronous_(2), blank=blank_(2))
4464ab3302SCarolineConcatto
4564ab3302SCarolineConcatto  open(unit=40, decimal="comma", delim="apostrophe", encoding="utf-8")
4664ab3302SCarolineConcatto  open(unit=41, decimal=decimal_(2), delim=delim_(2), encoding=encoding_(2))
4764ab3302SCarolineConcatto
4864ab3302SCarolineConcatto  open(50, file='abc', status='unknown', form='formatted')
4964ab3302SCarolineConcatto  open(51, file=access, status=status_(2), form=form_(2))
5064ab3302SCarolineConcatto
5164ab3302SCarolineConcatto  open(newunit=new_unit, pad=pad_(2), status='scr'//'atch'//'')
5264ab3302SCarolineConcatto  open(newunit=new_unit, pad=pad_(2), status=cc)
5364ab3302SCarolineConcatto
5464ab3302SCarolineConcatto  open(unit=60, position='rewind', recl=(30+20/2), round='zero')
5564ab3302SCarolineConcatto  open(position=position_(1), recl=n, round=round_(2), unit=61)
5664ab3302SCarolineConcatto
5764ab3302SCarolineConcatto  open(unit=70, sign='suppress', &
5864ab3302SCarolineConcatto      status='unknown', iostat=stat2)
5964ab3302SCarolineConcatto  open(unit=70, sign=sign_(2), status=status_(2))
6064ab3302SCarolineConcatto
6164ab3302SCarolineConcatto  open(80, convert='big_endian', dispose='delete')
6264ab3302SCarolineConcatto  open(81, convert=convert_(2), dispose=dispose_(2))
6364ab3302SCarolineConcatto
6464ab3302SCarolineConcatto  open(access='STREAM', 90) ! nonstandard
65c9637577Speter klausler  open (unit=91, file='xfile', carriagecontrol='list') ! nonstandard
6664ab3302SCarolineConcatto
6764ab3302SCarolineConcatto  !ERROR: OPEN statement must have a UNIT or NEWUNIT specifier
6864ab3302SCarolineConcatto  !ERROR: If ACCESS='DIRECT' appears, RECL must also appear
6964ab3302SCarolineConcatto  open(access='direct')
7064ab3302SCarolineConcatto
7164ab3302SCarolineConcatto  !ERROR: If STATUS='STREAM' appears, RECL must not appear
7264ab3302SCarolineConcatto  open(10, access='st'//'ream', recl=13)
7364ab3302SCarolineConcatto
7464ab3302SCarolineConcatto  !ERROR: Duplicate NEWUNIT specifier
7564ab3302SCarolineConcatto  !ERROR: If NEWUNIT appears, FILE or STATUS must also appear
7664ab3302SCarolineConcatto  open(newunit=n, newunit=nn, iostat=stat4)
7764ab3302SCarolineConcatto
78*573fc618SPeter Klausler  !ERROR: NEWUNIT variable 'const_new_unit' is not definable
79*573fc618SPeter Klausler  !BECAUSE: '66_4' is not a variable or pointer
80bce7a7edSpeter klausler  open(newunit=const_new_unit, status=cc)
81bce7a7edSpeter klausler
8264ab3302SCarolineConcatto  !ERROR: Duplicate UNIT specifier
8364ab3302SCarolineConcatto  open(unit=100, unit=100)
8464ab3302SCarolineConcatto
8564ab3302SCarolineConcatto  !ERROR: Duplicate UNIT specifier
8664ab3302SCarolineConcatto  open(101, delim=delim_(1), unit=102)
8764ab3302SCarolineConcatto
8864ab3302SCarolineConcatto  !ERROR: Duplicate UNIT specifier
8964ab3302SCarolineConcatto  open(unit=103, &
9064ab3302SCarolineConcatto      unit=104, iostat=stat8)
9164ab3302SCarolineConcatto
9264ab3302SCarolineConcatto  !ERROR: Duplicate UNIT specifier
9364ab3302SCarolineConcatto  !ERROR: If ACCESS='DIRECT' appears, RECL must also appear
9464ab3302SCarolineConcatto  open(access='dir'//'ect', 9, 9) ! nonstandard
9564ab3302SCarolineConcatto
9664ab3302SCarolineConcatto  !ERROR: Duplicate ROUND specifier
9764ab3302SCarolineConcatto  open(105, round=round_(1), pad='no', round='nearest')
9864ab3302SCarolineConcatto
9964ab3302SCarolineConcatto  !ERROR: If NEWUNIT appears, UNIT must not appear
10064ab3302SCarolineConcatto  !ERROR: If NEWUNIT appears, FILE or STATUS must also appear
10164ab3302SCarolineConcatto  open(106, newunit=n)
10264ab3302SCarolineConcatto
10364ab3302SCarolineConcatto  !ERROR: RECL value (-30) must be positive
10464ab3302SCarolineConcatto  open(107, recl=40-70)
10564ab3302SCarolineConcatto
10664ab3302SCarolineConcatto  !ERROR: RECL value (-36) must be positive
10764ab3302SCarolineConcatto  open(108, recl=-  -  (-36)) ! nonstandard
10864ab3302SCarolineConcatto
10964ab3302SCarolineConcatto  !ERROR: Invalid ACTION value 'reedwrite'
11064ab3302SCarolineConcatto  open(109, access=Access, action='reedwrite', recl=77)
11164ab3302SCarolineConcatto
11264ab3302SCarolineConcatto  !ERROR: Invalid ACTION value 'nonsense'
11364ab3302SCarolineConcatto  open(110, action=''//'non'//'sense', recl=77)
11464ab3302SCarolineConcatto
11564ab3302SCarolineConcatto  !ERROR: Invalid STATUS value 'cold'
11664ab3302SCarolineConcatto  open(111, status='cold')
11764ab3302SCarolineConcatto
11864ab3302SCarolineConcatto  !ERROR: Invalid STATUS value 'Keep'
11964ab3302SCarolineConcatto  open(112, status='Keep')
12064ab3302SCarolineConcatto
12164ab3302SCarolineConcatto  !ERROR: If STATUS='NEW' appears, FILE must also appear
12264ab3302SCarolineConcatto  open(113, status='new')
12364ab3302SCarolineConcatto
12464ab3302SCarolineConcatto  !ERROR: If STATUS='REPLACE' appears, FILE must also appear
12564ab3302SCarolineConcatto  open(114, status='replace')
12664ab3302SCarolineConcatto
12764ab3302SCarolineConcatto  !ERROR: If STATUS='SCRATCH' appears, FILE must not appear
12864ab3302SCarolineConcatto  open(115, file='abc', status='scratch')
12964ab3302SCarolineConcatto
13064ab3302SCarolineConcatto  !ERROR: If NEWUNIT appears, FILE or STATUS='SCRATCH' must also appear
13164ab3302SCarolineConcatto  open(newunit=nn, status='old')
132c9637577Speter klausler
133c9637577Speter klausler  !ERROR: Unimplemented CARRIAGECONTROL value 'fortran'
134c9637577Speter klausler  open (unit=116, file='xfile', carriagecontrol='fortran') ! nonstandard
135c9637577Speter klausler
136c9637577Speter klausler  !ERROR: Invalid CARRIAGECONTROL value 'nonsense'
137c9637577Speter klausler  open (unit=116, file='xfile', carriagecontrol='nonsense') ! nonstandard
13864ab3302SCarolineConcattoend
139