diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 50ebaf230c06b4400adc82fc8f80d4a97769395e..3ecabcd06abe2ccc27503539a3af3fabf4bb4eb6 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libgfortran/27634
+	* io/format.c (parse_format_list): Allow missing period in format only
+	if -std=legacy.
+
 2006-05-28  Thomas Koenig  <Thomas.Koenig@online.de>
 
 	* intrinsics/string_intrinsics.c (compare_string):
diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c
index 96d7019eedcdf59e136892bd9e415ea4ed20c17e..5af5c6e8bdea56cacb0c776e773971578c528bad 100644
--- a/libgfortran/io/format.c
+++ b/libgfortran/io/format.c
@@ -725,8 +725,16 @@ parse_format_list (st_parameter_dt *dtp)
       t = format_lex (fmt);
       if (t != FMT_PERIOD)
 	{
-	  fmt->error = period_required;
-	  goto finished;
+	  /* We treat a missing decimal descriptor as 0.  Note: This is only
+	     allowed if -std=legacy, otherwise an error occurs.  */
+	  if (compile_options.warn_std != 0)
+	    {
+	      fmt->error = period_required;
+	      goto finished;
+	    }
+	  fmt->saved_token = t;
+	  tail->u.real.d = 0;
+	  break;
 	}
 
       t = format_lex (fmt);