re PR fortran/38830 (Document lack of "Variable Format Expression" support)
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Thu, 7 May 2009 22:14:23 +0000 (22:14 +0000)
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Thu, 7 May 2009 22:14:23 +0000 (22:14 +0000)
PR fortran/38830
* gfortran.texi: Document that we don't support variable FORMAT
expressions.

From-SVN: r147258

gcc/fortran/ChangeLog
gcc/fortran/gfortran.texi

index cf4f969938f5e7c93efa0ead8a7de526e9410a40..219a1abf2d7b188df3578a8234975c2c22d32a9d 100644 (file)
@@ -1,3 +1,9 @@
+2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR fortran/38830
+       * gfortran.texi: Document that we don't support variable FORMAT
+       expressions.
+
 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
        PR fortran/39576
index af1d296108523ba1a0cb601236a85db2d5a7c81f..b7c8b82537ca8376efb91b4a52f305e0987020ae 100644 (file)
@@ -1641,7 +1641,7 @@ code that uses them running with the GNU Fortran compiler.
 * STRUCTURE and RECORD::
 @c * UNION and MAP::
 * ENCODE and DECODE statements::
-@c * Expressions in FORMAT statements::
+* Variable FORMAT expressions::
 @c * Q edit descriptor::
 @c * AUTOMATIC statement::
 @c * TYPE and ACCEPT I/O Statements::
@@ -1779,6 +1779,51 @@ c     ... Code that sets A, B and C
 @end smallexample
 
 
+@node Variable FORMAT expressions
+@subsection Variable @code{FORMAT} expressions
+@cindex @code{FORMAT}
+
+A variable @code{FORMAT} expression is format statement which includes
+angle brackets enclosing a Fortran expression: @code{FORMAT(I<N>)}. GNU
+Fortran does not support this legacy extension. The effect of variable
+format expressions can be reproduced by using the more powerful (and
+standard) combination of internal output and string formats. For example,
+replace a code fragment like this:
+
+@smallexample
+      WRITE(6,20) INT1
+ 20   FORMAT(I<N+1>)
+@end smallexample
+
+@noindent
+with the following:
+
+@smallexample
+c     Variable declaration
+      CHARACTER(LEN=20) F
+c     
+c     Other code here...
+c
+      WRITE(FMT,'("(I", I0, ")")') N+1
+      WRITE(6,FM) INT1
+@end smallexample
+
+@noindent
+or with:
+
+@smallexample
+c     Variable declaration
+      CHARACTER(LEN=20) FMT
+c     
+c     Other code here...
+c
+      WRITE(FMT,*) N+1
+      WRITE(6,"(I" // ADJUSTL(FMT) // ")") INT1
+@end smallexample
+
+
+
+
 @c ---------------------------------------------------------------------
 @c Intrinsic Procedures
 @c ---------------------------------------------------------------------