From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18679 invoked by alias); 11 May 2011 08:50:45 -0000 Received: (qmail 18670 invoked by uid 22791); 11 May 2011 08:50:44 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 11 May 2011 08:50:31 +0000 From: "thenlich at users dot sourceforge.net" To: gcc-bugs@gcc.gnu.org Subject: [Bug libfortran/48960] New: OPEN statement modifies NEWUNIT variable on error X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: libfortran X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: thenlich at users dot sourceforge.net X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Wed, 11 May 2011 08:51:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-05/txt/msg00897.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48960 Summary: OPEN statement modifies NEWUNIT variable on error Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libfortran AssignedTo: unassigned@gcc.gnu.org ReportedBy: thenlich@users.sourceforge.net If the NEWUNIT= specifier in the OPEN statement is used, the variable is modified if an error occurs during the execution of the OPEN statement. This does not conform to Fortran 2008 which demands: 9.5.6.12 NEWUNIT= specifier in the OPEN statement 1 The variable is defined with a processor determined NEWUNIT value if no error occurs during the execution of the OPEN statement. If an error occurs, the processor shall not change the value of the variable. Example: program test_newunit integer :: st, un = 0 open (newunit=un, file='nonexisting.dat', status='old', iostat=st) if (un /= 0) call abort end program test_newunit Result: If the file 'nonexisting.dat' does not exist, the program aborts. Expected result: If the file 'nonexisting.dat' does not exist, the program should not abort.