Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!brutus.cs.uiuc.edu!psuvax1!psuvm!cunyvm!byuvax!hallidayd From: hallidayd@yvax.byu.edu Newsgroups: comp.lang.fortran Subject: Re: Standard conformance Message-ID: <803hallidayd@yvax.byu.edu> Date: 18 Sep 89 21:20:46 GMT Lines: 111 Markku Sakkinen (sakkinen@tukki.jyu.fi) posed the following _incorrect_ Fortran program in message (<1301@tukki.jyu.fi>) > > INTEGER I, J > IF (I .LT. 100000) GOTO 2 > DO 9 I = 1, 10 >2 J = I * I > WRITE (6, 100) I, J >9 CONTINUE >100 FORMAT (2I12) > END > >It contains a GOTO into a DO loop, which is illegal in Fortran-77. >Furthermore, very trivial static analysis could detect that the GOTO >here cannot be legal even according to the "extended range" rules >of Fortran-66. > >I just tried this kind of example once again with Digital's VAX/VMS >Fortran compiler, turning on all possible STANDARD and WARNING switches >(I should think). The result: it compiled without the slightest complaint. I tried this problem on the updated (version 5.3) version of VAX/VMS Fortran with the following listing (I used the new SEMANTIC, STANDARD option --- STANDARD=SYNTAX is insufficient) 18-Sep-1989 12:54:50 VAX FORTRAN V5.3-50 Page 1 18-Sep-1989 12:52:00 $SCRATCH:[HALLIDAYD]TEMP.FOR;2 0001 INTEGER I, J 0002 IF (I .LT. 100000) GOTO 2 0003 DO 9 I = 1, 10 0004 2 J = I * I %FORT-I-EXTILBRNCH, Extension to FORTRAN-77: Nonstandard branch into block [ 2] in module TEMP$MAIN 0005 WRITE (6, 100) I, J 0006 9 CONTINUE 0007 100 FORMAT (2I12) 0008 END PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 84 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 5 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 4 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 93 ENTRY POINTS Address Type Name 0-00000000 TEMP$MAIN VARIABLES Address Type Name Address Type Name 2-00000000 I*4 I ** I*4 J LABELS Address Label Address Label Address Label 0-0000001C 2 ** 9 1-00000000 100' 18-Sep-1989 12:54:50 VAX FORTRAN V5.3-50 Page 2 18-Sep-1989 12:52:00 $SCRATCH:[HALLIDAYD]TEMP.FOR;2 0001 COMMAND QUALIFIERS FORTRAN/STANDARD=(SEMANTIC)/LIST=TEMP TEMP /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW) /DEBUG=(NOSYMBOLS,TRACEBACK) /SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE) /STANDARD=(SEMANTIC,NOSOURCE_FORM,NOSYNTAX) /WARNINGS=(NODECLARATIONS,GENERAL,NOULTRIX,NOVAXELN) /CONTINUATIONS=19 /NOCROSS_REFERENCE /NOD_LINES /NOEXTEND_SOURCE /F77 /NOG_FLOATING /I4 /NOMACHINE_CODE /OPTIMIZE /NOPARALLEL /NOANALYSIS_DATA /NODIAGNOSTICS /LIST=$SCRATCH:[HALLIDAYD]TEMP.LIS;1 /OBJECT=$SCRATCH:[HALLIDAYD]TEMP.OBJ;1 COMPILATION STATISTICS Run Time: 0.34 seconds Elapsed Time: 1.09 seconds Page Faults: 575 Dynamic Memory: 377 pages _____________________________________________________________________ / David Halliday \ | | | Internet: hallidayd@yvax.byu.edu or hallidayd@acoust.byu.edu | | BITNET: hallidayd@byuvax or hallidayd%acoust.byu.edu@utahcca | | Us Mail: BYU Physics Department | | 296 ESC | | Provo, UT 84602 | \_____________________________________________________________________/