| ! RUN: %S/test_errors.sh %s %t %flang_fc1 |
| ! REQUIRES: shell |
| character(kind=1,len=50) internal_file |
| character(kind=2,len=50) internal_file2 |
| character(kind=4,len=50) internal_file4 |
| character(kind=1,len=50) internal_fileA(20) |
| character(kind=1,len=111) msg |
| character(20) advance |
| character(20) :: cvar; |
| character, parameter :: const_internal_file = "(I6)" |
| character, parameter :: const_cvar = "Ceci n'est pas une pipe." |
| integer*1 stat1 |
| integer*2 stat2, id2 |
| integer*8 stat8 |
| integer :: iunit = 10 |
| integer, parameter :: junit = 11, const_size = 13, const_int = 15 |
| integer :: vv(10) = 7 |
| |
| namelist /mmm/ mm1, mm2 |
| namelist /nnn/ nn1, nn2 |
| |
| advance='no' |
| |
| open(10) |
| |
| read* |
| print*, 'Ok' |
| read(*) |
| read*, jj |
| read(*, *) jj |
| read(unit=*, *) jj |
| read(*, fmt=*) jj |
| read(*, '(I4)') jj |
| read(*, fmt='(I4)') jj |
| read(fmt='(I4)', unit=*) jj |
| read(iunit, *) jj |
| read(junit, *) jj |
| read(10, *) jj, cvar, cvar(7:17) |
| read(internal_file, *) jj |
| read(internal_fileA(3), *) jj |
| read(internal_fileA(4:9), *) jj |
| read(10, nnn) |
| read(internal_file, nnn) |
| read(internal_file, nml=nnn) |
| read(const_internal_file, *) |
| read(fmt=*, unit=internal_file) |
| read(nml=nnn, unit=internal_file) |
| read(iunit, nnn) |
| read(10, nml=nnn) |
| read(10, asynchronous='no') jj |
| read(10, asynchronous='yes') jj |
| read(10, eor=9, advance='no', fmt='(I4)') jj |
| read(10, eor=9, advance='no', fmt='(I4)') jj |
| read(10, asynchronous='yes', id=id) jj |
| read(10, '(I4)', advance='no', asynchronous='yes', blank='null', & |
| decimal='comma', end=9, eor=9, err=9, id=id, iomsg=msg, iostat=stat2, & |
| pad='no', round='processor_defined', size=kk) jj |
| |
| !ERROR: Invalid character kind for an internal file variable |
| read(internal_file2, *) jj |
| |
| !ERROR: Invalid character kind for an internal file variable |
| read(internal_file4, *) jj |
| |
| !ERROR: Internal file must not have a vector subscript |
| read(internal_fileA(vv), *) jj |
| |
| !ERROR: Input variable 'const_int' must be definable |
| read(11, *) const_int |
| |
| !ERROR: SIZE variable 'const_size' must be definable |
| read(11, pos=ipos, size=const_size, end=9) |
| |
| !ERROR: Input variable 'const_cvar' must be definable |
| read(11, *) const_cvar |
| |
| !ERROR: Input variable 'const_cvar' must be definable |
| read(11, *) const_cvar(3:13) |
| |
| !ERROR: Duplicate IOSTAT specifier |
| read(11, pos=ipos, iostat=stat1, iostat=stat2) |
| |
| !ERROR: Duplicate END specifier |
| read(11, end=9, pos=ipos, end=9) |
| |
| !ERROR: Duplicate NML specifier |
| read(10, nml=mmm, nml=nnn) |
| |
| !ERROR: READ statement must have a UNIT specifier |
| read(err=9, iostat=stat8) jj |
| |
| !ERROR: READ statement must not have a DELIM specifier |
| !ERROR: READ statement must not have a SIGN specifier |
| read(10, delim='quote', sign='plus') jj |
| |
| !ERROR: If NML appears, REC must not appear |
| read(10, nnn, rec=nn) |
| |
| !ERROR: If NML appears, FMT must not appear |
| !ERROR: If NML appears, a data list must not appear |
| read(10, fmt=*, nml=nnn) jj |
| |
| !ERROR: If UNIT=* appears, REC must not appear |
| read(*, rec=13) |
| |
| !ERROR: If UNIT=* appears, POS must not appear |
| read(*, pos=13) |
| |
| !ERROR: If UNIT=internal-file appears, REC must not appear |
| read(internal_file, rec=13) |
| |
| !ERROR: If UNIT=internal-file appears, POS must not appear |
| read(internal_file, pos=13) |
| |
| !ERROR: If REC appears, END must not appear |
| read(10, fmt='(I4)', end=9, rec=13) jj |
| |
| !ERROR: If REC appears, FMT=* must not appear |
| read(10, *, rec=13) jj |
| |
| !ERROR: If ADVANCE appears, UNIT=internal-file must not appear |
| read(internal_file, '(I4)', eor=9, advance='no') jj |
| |
| !ERROR: If ADVANCE appears, an explicit format must also appear |
| !ERROR: If EOR appears, ADVANCE with value 'NO' must also appear |
| read(10, eor=9, advance='yes') |
| |
| !ERROR: If EOR appears, ADVANCE with value 'NO' must also appear |
| read(10, eor=9) |
| |
| !ERROR: Invalid ASYNCHRONOUS value 'nay' |
| read(10, asynchronous='nay') ! prog req |
| |
| !ERROR: If ASYNCHRONOUS='YES' appears, UNIT=number must also appear |
| read(*, asynchronous='yes') |
| |
| !ERROR: If ASYNCHRONOUS='YES' appears, UNIT=number must also appear |
| read(internal_file, asynchronous='y'//'es') |
| |
| !ERROR: If ID appears, ASYNCHRONOUS='YES' must also appear |
| read(10, id=id) |
| |
| !ERROR: If ID appears, ASYNCHRONOUS='YES' must also appear |
| read(10, asynchronous='n'//'o', id=id) |
| |
| !ERROR: If POS appears, REC must not appear |
| read(10, pos=13, rec=13) jj |
| |
| !ERROR: If DECIMAL appears, FMT or NML must also appear |
| !ERROR: If BLANK appears, FMT or NML must also appear |
| !ERROR: Invalid DECIMAL value 'Punkt' |
| read(10, decimal='Punkt', blank='null') jj |
| |
| !ERROR: If ROUND appears, FMT or NML must also appear |
| !ERROR: If PAD appears, FMT or NML must also appear |
| read(10, pad='no', round='nearest') jj |
| |
| !ERROR: ID kind (2) is smaller than default INTEGER kind (4) |
| read(10, id=id2, asynchronous='yes') jj |
| |
| 9 continue |
| end |
| |
| subroutine s(aa, n) |
| integer :: aa(5,*) |
| integer, intent(in) :: n |
| integer :: bb(10), vv(10) |
| type tt |
| real :: x, y, z |
| end type tt |
| type(tt) :: qq(20) |
| |
| vv = 1 |
| |
| read(*, *) aa(n,1) |
| read(*, *) aa(n:n+2,2) |
| read(*, *) qq(2:5)%y |
| |
| !ERROR: Input variable 'n' must be definable |
| read(*, *) n |
| |
| !ERROR: Whole assumed-size array 'aa' may not appear here without subscripts |
| read(*, *) aa |
| end |