J3/15-213 To: J3 From: Van Snyder Subject: Interp on nonadvancing I/O and DO CONCURRENT Date: 2015 August 06 ---------------------------------------------------------------------- NUMBER: F08/0144 TITLE: Is nonadvancing I/O allowed during execution of DO CONCURRENT? KEYWORDS: nonadvancing I/O, DO CONCURRENT DEFECT TYPE: Erratum STATUS: J3 consideration in progress QUESTION: Consider program P integer :: I do concurrent ( I = 1:10 ) write ( *, *, advance='NO' ) i end do write ( *, * ) end program P Q1. Is this conforming and if so, what output is produced? program Q integer :: I logical :: L(10) = .FALSE. real :: X(10) = 0 do concurrent ( I = 1:10 ) if ( mod(i,2) == 0 ) then read ( *, '(g15.6)', advance='no' ) x(i) else read ( *, '(l3)', advance='no' ) l(i) end if end do print *,x,l end program Q2. Is this conforming and what kind of output would be expected? ANSWER: No, these programs are not conforming as no interpretation is established for them. OPTION ONE: It was intended that nonadvancing input/output on a single unit not be permitted during more than one iteration of a DO CONCURRENT construct. An edit is provided to address this oversight. OPTION TWO: It was intended that nonadvancing input/output not be permitted within a DO CONCURRENT construct. An edit is provided to address this oversight. END OPTIONS EDITS ONE: [10-007r1:178:18+ at the end of the list in 8.1.6.7p1] insert a list item: " o If a nonadvancing input/output statement is executed during one iteration, an input/output statement that accesses the same unit shall not be executed during a different iteration. " EDITS TWO: [10-007r1:178:18+ at the end of the list in 8.1.6.7p1] insert a list item: " o A DO CONCURRENT construct shall not contain an input/output statement that has an ADVANCING= specifier." SUBMITTED BY: Van Snyder HISTORY: 15-xxx m207 F08/0144 submitted ----------------------------------------------------------------------