Index: /trunk/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 1133)
@@ -121,5 +121,5 @@
       INTEGER, INTENT( in  ) ::   kt   ! ocean time step
       !!
-      INTEGER  ::   jf, ifpr, jfpr     ! dummy indices
+      INTEGER  ::   ifpr, jfpr         ! dummy indices
       INTEGER  ::   ierror             ! return error code
       !!
@@ -140,13 +140,13 @@
 
          ! (NB: frequency positive => hours, negative => months)
-         !            !    file     ! frequency !  variable  ! time intep !  clim  ! starting !
-         !            !    name     !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-         sn_utau = FLD_N( 'utau'    ,    24.    ,  'utau'    ,  .true.    ,    0   ,     0    ) 
-         sn_vtau = FLD_N( 'vtau'    ,    24.    ,  'vtau'    ,  .true.    ,    0   ,     0    ) 
-         sn_wndm = FLD_N( 'mwnd10m' ,    24.    ,  'm_10'    ,  .true.    ,    0   ,     0    ) 
-         sn_tair = FLD_N( 'tair10m' ,    24.    ,  't_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_humi = FLD_N( 'humi10m' ,    24.    ,  'q_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_ccov = FLD_N( 'ccover'  ,   -12.    ,  'cloud'   ,  .TRUE.    ,    0   ,     0    ) 
-         sn_prec = FLD_N( 'precip'  ,   -12.    ,  'precip'  ,  .TRUE.    ,    0   ,     0    ) 
+         !            !    file     ! frequency !  variable  ! time intep !  clim   ! 'yearly' or !
+         !            !    name     !  (hours)  !   name     !   (T/F)    !  (T/F)  !  'monthly'  !
+         sn_utau = FLD_N( 'utau'    ,    24.    ,  'utau'    ,  .true.    , .false. ,   'yearly'  ) 
+         sn_vtau = FLD_N( 'vtau'    ,    24.    ,  'vtau'    ,  .true.    , .false. ,   'yearly'  ) 
+         sn_wndm = FLD_N( 'mwnd10m' ,    24.    ,  'm_10'    ,  .true.    , .false. ,   'yearly'  ) 
+         sn_tair = FLD_N( 'tair10m' ,    24.    ,  't_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_humi = FLD_N( 'humi10m' ,    24.    ,  'q_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_ccov = FLD_N( 'ccover'  ,    -1.    ,  'cloud'   ,  .true.    , .false. ,   'yearly'  ) 
+         sn_prec = FLD_N( 'precip'  ,    -1.    ,  'precip'  ,  .true.    , .false. ,  ' yearly'  ) 
 
          REWIND( numnam )                    ! ... read in namlist namsbc_clio
@@ -163,29 +163,7 @@
             CALL ctl_stop( 'sbc_blk_clio: unable to allocate sf structure' )   ;   RETURN
          ENDIF
-         !
-         DO jf = 1, jpfld
-            WRITE(sf(jf)%clrootname,'(a,a)' )   TRIM( cn_dir ), TRIM( slf_i(jf)%clname )
-            sf(jf)%freqh   = slf_i(jf)%freqh
-            sf(jf)%clvar   = slf_i(jf)%clvar
-            sf(jf)%ln_tint = slf_i(jf)%ln_tint
-            sf(jf)%nclim   = slf_i(jf)%nclim
-            sf(jf)%nstrec  = slf_i(jf)%nstrec
-         END DO
-
-         IF(lwp) THEN      ! control print
-            WRITE(numout,*)            
-            WRITE(numout,*) 'sbc_blk_clio : flux formulattion for ocean surface boundary condition'
-            WRITE(numout,*) '~~~~~~~~~~~~ '
-            WRITE(numout,*) '          namsbc_clio Namelist'
-            WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)'
-            DO jf = 1, jpfld
-                WRITE(numout,*) '               file root name: ' , TRIM( sf(jf)%clrootname ),   &
-                   &                          ' variable name: '  , TRIM( sf(jf)%clvar      )
-                WRITE(numout,*) '               frequency: '      ,       sf(jf)%freqh       ,   &
-                   &                          ' time interp: '    ,       sf(jf)%ln_tint     ,   &
-                   &                          ' climatology: '    ,       sf(jf)%nclim       ,   &
-                   &                          ' starting record: ',       sf(jf)%nstrec
-            END DO
-         ENDIF
+
+         ! fill sf with slf_i and control print
+         CALL fld_fill( sf, slf_i, cn_dir, 'sbc_blk_clio', 'flux formulation for ocean surface boundary condition', 'namsbc_clio' )
          !
       ENDIF
Index: /trunk/NEMO/OPA_SRC/SBC/sbcblk_core.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcblk_core.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcblk_core.F90	(revision 1133)
@@ -107,5 +107,4 @@
       INTEGER, INTENT( in  ) ::   kt   ! ocean time step
       !!
-      INTEGER  ::   jf       ! dummy indices
       INTEGER  ::   ierror   ! return error code
       !!
@@ -125,14 +124,14 @@
 
          ! (NB: frequency positive => hours, negative => months)
-         !            !    file     ! frequency !  variable  ! time intep !  clim  ! starting !
-         !            !    name     !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-         sn_wndi = FLD_N( 'uwnd10m' ,    24.    ,  'u_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_wndj = FLD_N( 'vwnd10m' ,    24.    ,  'v_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_qsr  = FLD_N( 'qsw'     ,    24.    ,  'qsw'     ,  .FALSE.   ,    0   ,     0    ) 
-         sn_qlw  = FLD_N( 'qlw'     ,    24.    ,  'qlw'     ,  .FALSE.   ,    0   ,     0    ) 
-         sn_tair = FLD_N( 'tair10m' ,    24.    ,  't_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_humi = FLD_N( 'humi10m' ,    24.    ,  'q_10'    ,  .FALSE.   ,    0   ,     0    ) 
-         sn_prec = FLD_N( 'precip'  ,   -12.    ,  'precip'  ,  .TRUE.    ,    0   ,     0    ) 
-         sn_snow = FLD_N( 'snow'    ,   -12.    ,  'snow'    ,  .TRUE.    ,    0   ,     0    ) 
+         !            !    file     ! frequency !  variable  ! time intep !  clim   ! 'yearly' or !
+         !            !    name     !  (hours)  !   name     !   (T/F)    !  (T/F)  !  'monthly'  !
+         sn_wndi = FLD_N( 'uwnd10m' ,    24.    ,  'u_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_wndj = FLD_N( 'vwnd10m' ,    24.    ,  'v_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_qsr  = FLD_N( 'qsw'     ,    24.    ,  'qsw'     ,  .false.   , .false. ,   'yearly'  ) 
+         sn_qlw  = FLD_N( 'qlw'     ,    24.    ,  'qlw'     ,  .false.   , .false. ,   'yearly'  ) 
+         sn_tair = FLD_N( 'tair10m' ,    24.    ,  't_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_humi = FLD_N( 'humi10m' ,    24.    ,  'q_10'    ,  .false.   , .false. ,   'yearly'  ) 
+         sn_prec = FLD_N( 'precip'  ,    -1.    ,  'precip'  ,  .true.    , .false. ,   'yearly'  ) 
+         sn_snow = FLD_N( 'snow'    ,    -1.    ,  'snow'    ,  .true.    , .false. ,   'yearly'  ) 
 
          REWIND( numnam )                    ! ... read in namlist namsbc_core
@@ -151,37 +150,6 @@
          ENDIF
 
-         DO jf = 1, jpfld
-            WRITE(sf(jf)%clrootname,'(a,a)' )   TRIM( cn_dir ), TRIM( slf_i(jf)%clname )
-            sf(jf)%freqh   = slf_i(jf)%freqh
-            sf(jf)%clvar   = slf_i(jf)%clvar
-            sf(jf)%ln_tint = slf_i(jf)%ln_tint
-            sf(jf)%nclim   = slf_i(jf)%nclim
-            sf(jf)%nstrec  = slf_i(jf)%nstrec
-         END DO
-
-         IF(lwp) THEN      ! control print
-            WRITE(numout,*)            
-            WRITE(numout,*) 'sbc_blk_core : flux formulattion for ocean surface boundary condition'
-            WRITE(numout,*) '~~~~~~~~~~~~ '
-            WRITE(numout,*) '          namsbc_core Namelist'
-            WRITE(numout,*) '          ln_2m        = ', ln_2m
-            WRITE(numout,*) '          alpha_precip = ', alpha_precip
-            WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)'
-            DO jf = 1, jpfld
-                WRITE(numout,*) '               file root name: ' , TRIM( sf(jf)%clrootname ),   &
-                   &                          ' variable name: '  , TRIM( sf(jf)%clvar      )
-                WRITE(numout,*) '               frequency: '      ,       sf(jf)%freqh       ,   &
-                   &                          ' time interp: '    ,       sf(jf)%ln_tint     ,   &
-                   &                          ' climatology: '    ,       sf(jf)%nclim       ,   &
-                   &                          ' starting record: ',       sf(jf)%nstrec
-            END DO
-            IF( ln_2m )   THEN
-               WRITE(numout,*) '          Calling TURB_CORE_2Z for bulk transfert coefficients'
-            ELSE
-               WRITE(numout,*) '          Calling TURB_CORE_1Z for bulk transfert coefficients'
-            ENDIF
-            WRITE(numout,*)            
-            !
-         ENDIF
+         ! fill sf with slf_i and control print
+         CALL fld_fill( sf, slf_i, cn_dir, 'sbc_blk_core', 'flux formulattion for ocean surface boundary condition', 'namsbc_core' )
          !
       ENDIF
Index: /trunk/NEMO/OPA_SRC/SBC/sbcflx.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcflx.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcflx.F90	(revision 1133)
@@ -106,11 +106,4 @@
       NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp
       !!---------------------------------------------------------------------
-   INTEGER , PARAMETER ::   jp_utau = 1   ! index of wind stress (i-component) file
-   INTEGER , PARAMETER ::   jp_vtau = 2   ! index of wind stress (j-component) file
-   INTEGER , PARAMETER ::   jp_qtot = 3   ! index of total (non solar+solar) heat file
-   INTEGER , PARAMETER ::   jp_qsr  = 4   ! index of solar heat file
-   INTEGER , PARAMETER ::   jp_emp  = 5   ! index of evaporation-precipation file
-
-
       !                                         ! ====================== !
       IF( kt == nit000 ) THEN                   !  First call kt=nit000  !
@@ -119,11 +112,11 @@
          cn_dir = './'        ! directory in which the model is executed
          ! ... default values (NB: frequency positive => hours, negative => months)
-         !            !   file    ! frequency !  variable  ! time intep !  clim  ! starting !
-         !            !   name    !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-         sn_utau = FLD_N( 'utau.nc' ,    24.    ,  'utau'    ,  .FALSE.   ,    0   ,     0    )
-         sn_vtau = FLD_N( 'vtau.nc' ,    24.    ,  'vtau'    ,  .FALSE.   ,    0   ,     0    )
-         sn_qtot = FLD_N( 'qtot.nc' ,    24.    ,  'qtot'    ,  .FALSE.   ,    0   ,     0    )
-         sn_qsr  = FLD_N( 'qsr.nc'  ,    24.    ,  'qsr'     ,  .FALSE.   ,    0   ,     0    )
-         sn_emp  = FLD_N( 'emp.nc'  ,    24.    ,  'emp'     ,  .FALSE.   ,    0   ,     0    )
+         !              !   file    ! frequency !  variable  ! time intep !  clim   ! 'yearly' or !
+         !              !   name    !  (hours)  !   name     !   (T/F)    !  (T/F)  !  'monthly'  !
+         sn_utau = FLD_N(   'utau'  ,    24.    ,  'utau'    ,  .false.   , .false. ,   'yearly'  )
+         sn_vtau = FLD_N(   'vtau'  ,    24.    ,  'vtau'    ,  .false.   , .false. ,   'yearly'  )
+         sn_qtot = FLD_N(   'qtot'  ,    24.    ,  'qtot'    ,  .false.   , .false. ,   'yearly'  )
+         sn_qsr  = FLD_N(   'qsr'   ,    24.    ,  'qsr'     ,  .false.   , .false. ,   'yearly'  )
+         sn_emp  = FLD_N(   'emp'   ,    24.    ,  'emp'     ,  .false.   , .false. ,   'yearly'  )
 
          REWIND ( numnam )               ! ... read in namlist namflx
@@ -137,32 +130,10 @@
          ! set sf structure
          ALLOCATE( sf(jpfld), STAT=ierror )
-         IF( ierror > 0 ) THEN
-            CALL ctl_stop( 'sbc_flx: unable to allocate sf structure' )   ;   RETURN
+         IF( ierror > 0 ) THEN   
+            CALL ctl_stop( 'sbc_flx: unable to allocate sf structure' )   ;   RETURN  
          ENDIF
 
-         DO jf = 1, jpfld
-            WRITE(sf(jf)%clrootname,'(a,a)' )   TRIM( cn_dir ), TRIM( slf_i(jf)%clname )
-            sf(jf)%freqh   = slf_i(jf)%freqh
-            sf(jf)%clvar   = slf_i(jf)%clvar
-            sf(jf)%ln_tint = slf_i(jf)%ln_tint
-            sf(jf)%nclim   = slf_i(jf)%nclim
-            sf(jf)%nstrec  = slf_i(jf)%nstrec
-         END DO
-
-         IF(lwp) THEN      ! control print
-            WRITE(numout,*)
-            WRITE(numout,*) 'sbc_flx : flux formulation for ocean surface boundary condition'
-            WRITE(numout,*) '~~~~~~~ '
-            WRITE(numout,*) '          namsbc_flx Namelist'
-            WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)'
-            DO jf = 1, jpfld
-                WRITE(numout,*) '               root filename: '  , trim( sf(jf)%clrootname ),   &
-                   &                          ' variable name: '  , trim( sf(jf)%clvar      )
-                WRITE(numout,*) '               frequency: '      ,       sf(jf)%freqh       ,   &
-                   &                          ' time interp: '    ,       sf(jf)%ln_tint     ,   &
-                   &                          ' climatology: '    ,       sf(jf)%nclim       ,   &
-                   &                          ' starting record: ',       sf(jf)%nstrec
-            END DO
-         ENDIF
+         ! fill sf with slf_i and control print
+         CALL fld_fill( sf, slf_i, cn_dir, 'sbc_flx', 'flux formulation for ocean surface boundary condition', 'namsbc_flx' )
          !
       ENDIF
Index: /trunk/NEMO/OPA_SRC/SBC/sbcice_if.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 1133)
@@ -69,7 +69,7 @@
          cn_dir = './'        ! directory in which the model is executed
          ! ... default values (NB: frequency positive => hours, negative => months)
-         !            !   file    ! frequency !  variable  ! time intep !  clim  ! starting !
-         !            !   name    !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-         sn_ice = FLD_N('ice_cover',   -12.   ,  'ice_cov'  ,  .TRUE.    ,    1   ,     0    )
+         !             !   file    ! frequency !  variable  ! time intep !  clim  ! 'yearly' or !
+         !             !   name    !  (hours)  !   name     !   (T/F)    !  (T/F) !  'monthly'  ! 
+         sn_ice = FLD_N('ice_cover',    -1.    ,  'ice_cov' ,  .true.    , .true. ,   'yearly'  )
 
          REWIND ( numnam )               ! ... read in namlist namiif
@@ -81,25 +81,6 @@
          ENDIF
 
-         ! store namelist information in sf_ice structure
-         WRITE(sf_ice(1)%clrootname,'(a,a)')   TRIM( cn_dir ), TRIM( sn_ice%clname )
-         sf_ice(1)%freqh   = sn_ice%freqh
-         sf_ice(1)%clvar   = sn_ice%clvar
-         sf_ice(1)%ln_tint = sn_ice%ln_tint
-         sf_ice(1)%nclim   = sn_ice%nclim
-         sf_ice(1)%nstrec  = sn_ice%nstrec
-
-         IF(lwp) THEN      ! control print
-            WRITE(numout,*)
-            WRITE(numout,*) 'sbc_ice_if : ice-if sea-ice model'
-            WRITE(numout,*) '~~~~~~~~~~ '
-            WRITE(numout,*) '   ice-cover data in the following file: '
-            WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)'
-            WRITE(numout,*) '               root filename: '  , trim( sf_ice(1)%clrootname ),   &
-               &                          ' variable name: '  , trim( sf_ice(1)%clvar      )
-            WRITE(numout,*) '               frequency: '      ,       sf_ice(1)%freqh       ,   &
-               &                          ' time interp: '    ,       sf_ice(1)%ln_tint     ,   &
-               &                          ' climatology: '    ,       sf_ice(1)%nclim       ,   &
-               &                          ' starting record: ',       sf_ice(1)%nstrec
-         ENDIF
+         ! fill sf_ice with sn_ice and control print
+         CALL fld_fill( sf_ice, (/ sn_ice /), cn_dir, 'sbc_ice_if', 'ice-if sea-ice model', 'namsbc_iif' )
          !
       ENDIF
Index: /trunk/NEMO/OPA_SRC/SBC/sbcrnf.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 1133)
@@ -116,9 +116,9 @@
       !                                   !   Namelist
       !                                   ! ============
-      !                                         ! Default values NB: frequency>0 hours, <0 months)
-      !            !   file    ! frequency !  variable  ! time intep !  clim  ! starting !
-      !            !   name    !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-      sn_rnf = FLD_N( 'runoffs',   -12.    , 'sorunoff' ,  .TRUE.    ,    1   ,     0    )
-      sn_cnf = FLD_N( 'runoffs',     0.    , 'sorunoff' ,  .FALSE.   ,    1   ,     0    )
+      ! (NB: frequency positive => hours, negative => months)
+      !            !   file    ! frequency !  variable  ! time intep !  clim  ! 'yearly' or !
+      !            !   name    !  (hours)  !   name     !   (T/F)    !  (T/F) !  'monthly'  !
+      sn_rnf = FLD_N( 'runoffs',    -1.    , 'sorunoff' ,  .TRUE.    , .true. ,   'yearly'  )
+      sn_cnf = FLD_N( 'runoffs',     0.    , 'sorunoff' ,  .FALSE.   , .true. ,   'yearly'  )
 
       !
@@ -152,20 +152,7 @@
             CALL ctl_stop( 'sbc_rnf: unable to allocate sf_rnf structure' )   ;   RETURN
          ENDIF
-         !                                         ! namelist informations stored in sf_rnf structures
-         WRITE( sf_rnf(1)%clrootname, '(a,a)' )   TRIM( cn_dir ), TRIM( sn_rnf%clname )
-         sf_rnf(1)%freqh   = sn_rnf%freqh
-         sf_rnf(1)%clvar   = sn_rnf%clvar
-         sf_rnf(1)%ln_tint = sn_rnf%ln_tint
-         sf_rnf(1)%nclim   = sn_rnf%nclim
-         sf_rnf(1)%nstrec  = sn_rnf%nstrec
-         IF(lwp) THEN                              ! control print
-            WRITE(numout,*) '   Runoffs data read in the following file: '
-            WRITE(numout,*) '               root filename: '  , trim( sf_rnf(1)%clrootname ),   &
-               &                          ' variable name: '  , trim( sf_rnf(1)%clvar      )
-            WRITE(numout,*) '               frequency: '      ,       sf_rnf(1)%freqh       ,   &
-               &                          ' time interp: '    ,       sf_rnf(1)%ln_tint     ,   &
-               &                          ' climatology: '    ,       sf_rnf(1)%nclim       ,   &
-               &                          ' starting record: ',       sf_rnf(1)%nstrec
-         ENDIF
+
+         ! fill sf_rnf with sn_rnf and control print
+         CALL fld_fill( sf_rnf, (/ sn_rnf /), cn_dir, 'sbc_rnf_init', 'read runoffs data', 'namsbc_rnf' )
          !
       ENDIF
@@ -238,12 +225,9 @@
       IF(lwp) WRITE(numout,*) '~~~~~~~~~ '
 
-      WRITE(cl_rnfile, '(a,a)')   TRIM( cn_dir ), TRIM( sn_cnf%clname )
-      SELECT CASE( sn_cnf%nclim )
-      CASE( 0 )
-         WRITE(cl_rnfile, '(a,a,"_",i4,".nc")' ) TRIM( cn_dir ), TRIM( sn_cnf%clname ), nyear
-      CASE( 1 )
-         WRITE(cl_rnfile, '(a,a,  ".nc")' ) TRIM( cn_dir ), TRIM( sn_cnf%clname )
-      END SELECT
-
+      cl_rnfile = TRIM( cn_dir )//TRIM( sn_cnf%clname )
+      IF( .NOT. sn_cnf%ln_clim ) THEN   ;   WRITE(cl_rnfile, '(a,"_y",i4)' ) TRIM( cl_rnfile ), nyear    ! add year
+         IF( sn_cnf%cltype == 'monthly' )   WRITE(cl_rnfile, '(a,"m",i2)'  ) TRIM( cl_rnfile ), nmonth   ! add month
+      ENDIF
+  
       ! horizontal mask (read in NetCDF file)
       CALL iom_open ( cl_rnfile, inum )                           ! open file
Index: /trunk/NEMO/OPA_SRC/SBC/sbcssr.F90
===================================================================
--- /trunk/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 1132)
+++ /trunk/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 1133)
@@ -86,8 +86,8 @@
          cn_dir = './'       ! directory in which the model is executed
          ! ... default values (NB: frequency positive => hours, negative => months)
-         !            !   file    ! frequency !  variable  ! time intep !  clim  ! starting !
-         !            !   name    !  (hours)  !   name     !   (T/F)    !  (0/1) !  record  !
-         sn_sst = FLD_N( 'sst'     ,    24.    ,  'sst'     ,  .FALSE.   ,    0   ,     0    )
-         sn_sss = FLD_N( 'sss'     ,   -12.    ,  'sss'     ,  .TRUE.    ,    0   ,     0    )
+         !            !   file    ! frequency !  variable  ! time intep !  clim   ! 'yearly' or !
+         !            !   name    !  (hours)  !   name     !   (T/F)    !  (T/F)  !  'monthly'  !
+         sn_sst = FLD_N( 'sst'    ,    24.    ,  'sst'     ,  .false.   , .false. ,   'yearly'  )
+         sn_sss = FLD_N( 'sss'    ,    -1.    ,  'sss'     ,  .true.    , .false. ,   'yearly'  )
 
          REWIND ( numnam )         ! ... read in namlist namflx
@@ -111,20 +111,7 @@
                CALL ctl_stop( 'sbc_ssr: unable to allocate sf_sst structure' )   ;   RETURN
             ENDIF
-            ! namelist informations stored in sf_sst structures
-            WRITE( sf_sst(1)%clrootname, '(a,a)' )   TRIM( cn_dir ), TRIM( sn_sst%clname )
-            sf_sst(1)%freqh   = sn_sst%freqh
-            sf_sst(1)%clvar   = sn_sst%clvar 
-            sf_sst(1)%ln_tint = sn_sst%ln_tint
-            sf_sst(1)%nclim   = sn_sst%nclim  
-            sf_sst(1)%nstrec  = sn_sst%nstrec  
-            IF(lwp) THEN             ! control print
-               WRITE(numout,*) '   SST restoring term toward SST data in the following file: '
-               WRITE(numout,*) '               root filename: '  , trim( sf_sst(1)%clrootname ),   &
-                  &                          ' variable name: '  , trim( sf_sst(1)%clvar      )
-               WRITE(numout,*) '               frequency: '      ,       sf_sst(1)%freqh       ,   &
-                  &                          ' time interp: '    ,       sf_sst(1)%ln_tint     ,   &
-                  &                          ' climatology: '    ,       sf_sst(1)%nclim       ,   &
-                  &                          ' starting record: ',       sf_sst(1)%nstrec
-            ENDIF
+            ! fill sf_sst with sn_sst and control print
+            CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr' )
+
          ENDIF
          !
@@ -135,20 +122,7 @@
                CALL ctl_stop( 'sbc_ssr: unable to allocate sf_sss structure' )   ;   RETURN
             ENDIF
-            ! namelist informations stored in sf_sss structures
-            WRITE( sf_sss(1)%clrootname, '(a,a)' )   TRIM( cn_dir ), TRIM( sn_sss%clname )
-            sf_sss(1)%freqh   = sn_sss%freqh
-            sf_sss(1)%clvar   = sn_sss%clvar
-            sf_sss(1)%ln_tint = sn_sss%ln_tint
-            sf_sss(1)%nclim   = sn_sss%nclim
-            sf_sss(1)%nstrec  = sn_sss%nstrec
-            IF(lwp) THEN             ! control print
-               WRITE(numout,*) '   SSS dampming  term toward SSS data in the following file: ' 
-               WRITE(numout,*) '               root filename: '  , trim( sf_sss(1)%clrootname ),   &
-                  &                          ' variable name: '  , trim( sf_sss(1)%clvar      )
-               WRITE(numout,*) '               frequency: '      ,       sf_sss(1)%freqh       ,   &
-                  &                          ' time interp: '    ,       sf_sss(1)%ln_tint     ,   &
-                  &                          ' climatology: '    ,       sf_sss(1)%nclim       ,   &
-                  &                          ' starting record: ',       sf_sss(1)%nstrec
-            ENDIF
+            ! fill sf_sss with sn_sss and control print
+            CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr' )
+
          ENDIF
          !
