diff --git a/srcF/sfx_io.f90 b/srcF/sfx_io.f90
index 6df45ba0021bb3b0b8149c611866920c7e736cfe..78a5dd85ed204e97420c3e79f4f6e4b486d1be15 100644
--- a/srcF/sfx_io.f90
+++ b/srcF/sfx_io.f90
@@ -18,7 +18,6 @@ contains
 
         ! --- local variables
         integer i
-        character(len = 7) str_stat
         ! ----------------------------------------------------------------------------
 
         open(1, FILE = trim(fname), iostat = stat)
@@ -28,7 +27,7 @@ contains
             write(1, *, iostat = stat) var1(i), var2(i)
             if (stat /= 0) exit
         end do
-        close(1, iostat = stat, STATUS = str_stat)
+        close(1, iostat = stat)
 
     end subroutine write_ascii_vec2
     ! ----------------------------------------------------------------------------
@@ -50,18 +49,17 @@ contains
 
         ! --- local variables
         integer i
-        character(len = 7) str_stat
         ! ----------------------------------------------------------------------------
 
-        open(1, FILE = trim(fname), iostat = stat)
+        open(32, FILE = trim(fname), iostat = stat)
         if (stat /= 0) return
 
         do i = 1, n
-            write(1, fmt, iostat = stat) var1(i), var2(i), var3(i), var4(i), var5(i), &
+            write(32, fmt, iostat = stat) var1(i), var2(i), var3(i), var4(i), var5(i), &
                     var6(i), var7(i), var8(i), var9(i), var10(i), var11(i)
             if (stat /= 0) exit
         end do
-        close(1, iostat = stat, STATUS = str_stat)
+        close(32, iostat = stat)
 
     end subroutine write_ascii_vec11
     ! ----------------------------------------------------------------------------
diff --git a/srcF/sfx_run.f90 b/srcF/sfx_run.f90
index 373c6de11ffdff4bca3f96c9117bb94d04662f4c..03d2a9ee4b8ba3ef668abf64af31cedb66001823 100644
--- a/srcF/sfx_run.f90
+++ b/srcF/sfx_run.f90
@@ -379,7 +379,10 @@ contains
                 call c_config_is_varname("model.id"//C_NULL_CHAR, status)
                 if (status /= 0) then
                     call c_config_get_string("model.id"//C_NULL_CHAR, config_field, status)
-                    ! *: check status
+                    if (status == 0) then
+                        ierr = 1        ! signal ERROR
+                        return
+                    end if
                     model = get_model_id(char_array2str(config_field))
                     if (model == -1) then
                         write(*, *) ' FAILURE! > unknown model [key]: ', trim(char_array2str(config_field))
@@ -391,7 +394,10 @@ contains
                 call c_config_is_varname("dataset.id"//C_NULL_CHAR, status)            
                 if (status /= 0) then
                     call c_config_get_string("dataset.id"//C_NULL_CHAR, config_field, status)
-                    ! *: check status
+                    if (status == 0) then
+                        ierr = 1        ! signal ERROR
+                        return
+                    end if
                     id = get_dataset_id(char_array2str(config_field))
                     if (id == -1) then
                         write(*, *) ' FAILURE! > unknown dataset [key]: ', trim(char_array2str(config_field))
@@ -407,7 +413,10 @@ contains
                     if ((status /= 0).or.(dataset%id == dataset_user)) then
                         !< mandatory in user dataset
                         call c_config_get_string("dataset.filename"//C_NULL_CHAR, config_field, status)
-                        ! *: check status
+                        if (status == 0) then
+                            ierr = 1        ! signal ERROR
+                            return
+                        end if
                         dataset%filename = char_array2str(config_field)
                     end if
 
@@ -415,7 +424,10 @@ contains
                     if ((status /= 0).or.(dataset%id == dataset_user)) then
                         !< mandatory in user dataset
                         call c_config_get_string("dataset.surface"//C_NULL_CHAR, config_field, status)
-                        ! *: check status
+                        if (status == 0) then
+                            ierr = 1        ! signal ERROR
+                            return
+                        end if
                         dataset%surface = get_surface_id(char_array2str(config_field))
                         if (dataset%surface == -1) then
                             write(*, *) ' FAILURE! > unknown surface [key]: ', trim(char_array2str(config_field))
@@ -428,30 +440,49 @@ contains
                     if ((status /= 0).or.(dataset%id == dataset_user)) then
                         !< mandatory in user dataset
                         call c_config_get_float("dataset.h"//C_NULL_CHAR, dataset%h, status)
+                        if (status == 0) then
+                            ierr = 1        ! signal ERROR
+                            return
+                        end if
                     end if
     
                     call c_config_is_varname("dataset.z0_m"//C_NULL_CHAR, status)
                     if ((status /= 0).or.(dataset%id == dataset_user)) then
                         !< mandatory in user dataset
                         call c_config_get_float("dataset.z0_m"//C_NULL_CHAR, dataset%z0_m, status)
+                        if (status == 0) then
+                            ierr = 1        ! signal ERROR
+                            return
+                        end if
                     end if
     
                     call c_config_is_varname("dataset.z0_h"//C_NULL_CHAR, status)
                     if ((status /= 0).or.(dataset%id == dataset_user)) then
                         !< mandatory in user dataset
                         call c_config_get_float("dataset.z0_h"//C_NULL_CHAR, dataset%z0_h, status)
+                        if (status == 0) then
+                            ierr = 1        ! signal ERROR
+                            return
+                        end if
                     end if
                 end if
     
                 call c_config_is_varname("dataset.nmax"//C_NULL_CHAR, status)
                 if (status /= 0) then
                     call c_config_get_int("dataset.nmax"//C_NULL_CHAR, dataset%nmax, status)
+                    if (status == 0) then
+                        ierr = 1        ! signal ERROR
+                        return
+                    end if
                 end if 
             
                 call c_config_is_varname("output.filename"//C_NULL_CHAR, status)
                 if (status /= 0) then
                     call c_config_get_string("output.filename"//C_NULL_CHAR, config_field, status)
-                    ! *: check status
+                    if (status == 0) then
+                        ierr = 1        ! signal ERROR
+                        return
+                    end if
                     filename_out = char_array2str(config_field)
                 
                     is_output_set = 1