Ignore:
Timestamp:
06/03/13 11:21:19 (11 years ago)
Author:
ymipsl
Message:

Enhancement : Add fortran interface to know if an attribute is set or not
ex : CALL xios_is_defined_field_attr("field_A",enabled=ok)

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran_attr/ifile_attr.F90

    r415 r432  
    1313  SUBROUTINE xios(set_file_attr)  & 
    1414    ( file_id, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    15     , split_freq, sync_freq, type ) 
     15    , split_freq, split_freq_format, sync_freq, type ) 
    1616     
    1717    IMPLICIT NONE 
     
    2828      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access 
    2929      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq 
     30      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format 
    3031      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: sync_freq 
    3132      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
     
    3435      CALL xios(set_file_attr_hdl_)   & 
    3536      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    36       , split_freq, sync_freq, type ) 
     37      , split_freq, split_freq_format, sync_freq, type ) 
    3738     
    3839  END SUBROUTINE xios(set_file_attr) 
     
    4041  SUBROUTINE xios(set_file_attr_hdl)  & 
    4142    ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    42     , split_freq, sync_freq, type ) 
     43    , split_freq, split_freq_format, sync_freq, type ) 
    4344     
    4445    IMPLICIT NONE 
     
    5455      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access 
    5556      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq 
     57      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format 
    5658      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: sync_freq 
    5759      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
     
    5961      CALL xios(set_file_attr_hdl_)  & 
    6062      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    61       , split_freq, sync_freq, type ) 
     63      , split_freq, split_freq_format, sync_freq, type ) 
    6264     
    6365  END SUBROUTINE xios(set_file_attr_hdl) 
     
    6567  SUBROUTINE xios(set_file_attr_hdl_)   & 
    6668    ( file_hdl, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_, output_level_  & 
    67     , par_access_, split_freq_, sync_freq_, type_ ) 
     69    , par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
    6870     
    6971    IMPLICIT NONE 
     
    7981      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access_ 
    8082      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_ 
     83      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format_ 
    8184      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: sync_freq_ 
    8285      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
     
    119122      ENDIF 
    120123       
     124      IF (PRESENT(split_freq_format_)) THEN 
     125        CALL cxios_set_file_split_freq_format(file_hdl%daddr, split_freq_format_, len(split_freq_format_)) 
     126      ENDIF 
     127       
    121128      IF (PRESENT(sync_freq_)) THEN 
    122129        CALL cxios_set_file_sync_freq(file_hdl%daddr, sync_freq_, len(sync_freq_)) 
     
    133140  SUBROUTINE xios(get_file_attr)  & 
    134141    ( file_id, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    135     , split_freq, sync_freq, type ) 
     142    , split_freq, split_freq_format, sync_freq, type ) 
    136143     
    137144    IMPLICIT NONE 
     
    148155      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access 
    149156      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq 
     157      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format 
    150158      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: sync_freq 
    151159      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
     
    154162      CALL xios(get_file_attr_hdl_)   & 
    155163      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    156       , split_freq, sync_freq, type ) 
     164      , split_freq, split_freq_format, sync_freq, type ) 
    157165     
    158166  END SUBROUTINE xios(get_file_attr) 
     
    160168  SUBROUTINE xios(get_file_attr_hdl)  & 
    161169    ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    162     , split_freq, sync_freq, type ) 
     170    , split_freq, split_freq_format, sync_freq, type ) 
    163171     
    164172    IMPLICIT NONE 
     
    174182      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access 
    175183      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq 
     184      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format 
    176185      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: sync_freq 
    177186      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
     
    179188      CALL xios(get_file_attr_hdl_)  & 
    180189      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
    181       , split_freq, sync_freq, type ) 
     190      , split_freq, split_freq_format, sync_freq, type ) 
    182191     
    183192  END SUBROUTINE xios(get_file_attr_hdl) 
     
    185194  SUBROUTINE xios(get_file_attr_hdl_)   & 
    186195    ( file_hdl, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_, output_level_  & 
    187     , par_access_, split_freq_, sync_freq_, type_ ) 
     196    , par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
    188197     
    189198    IMPLICIT NONE 
     
    199208      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access_ 
    200209      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_ 
     210      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format_ 
    201211      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: sync_freq_ 
    202212      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
     
    239249      ENDIF 
    240250       
     251      IF (PRESENT(split_freq_format_)) THEN 
     252        CALL cxios_get_file_split_freq_format(file_hdl%daddr, split_freq_format_, len(split_freq_format_)) 
     253      ENDIF 
     254       
    241255      IF (PRESENT(sync_freq_)) THEN 
    242256        CALL cxios_get_file_sync_freq(file_hdl%daddr, sync_freq_, len(sync_freq_)) 
     
    251265  END SUBROUTINE xios(get_file_attr_hdl_) 
    252266   
     267  SUBROUTINE xios(is_defined_file_attr)  & 
     268    ( file_id, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
     269    , split_freq, split_freq_format, sync_freq, type ) 
     270     
     271    IMPLICIT NONE 
     272      TYPE(txios(file))  :: file_hdl 
     273      CHARACTER(LEN=*), INTENT(IN) ::file_id 
     274      LOGICAL, OPTIONAL, INTENT(OUT) :: description 
     275      LOGICAL(KIND=C_BOOL) :: description_tmp 
     276      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled 
     277      LOGICAL(KIND=C_BOOL) :: enabled_tmp 
     278      LOGICAL, OPTIONAL, INTENT(OUT) :: min_digits 
     279      LOGICAL(KIND=C_BOOL) :: min_digits_tmp 
     280      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
     281      LOGICAL(KIND=C_BOOL) :: name_tmp 
     282      LOGICAL, OPTIONAL, INTENT(OUT) :: name_suffix 
     283      LOGICAL(KIND=C_BOOL) :: name_suffix_tmp 
     284      LOGICAL, OPTIONAL, INTENT(OUT) :: output_freq 
     285      LOGICAL(KIND=C_BOOL) :: output_freq_tmp 
     286      LOGICAL, OPTIONAL, INTENT(OUT) :: output_level 
     287      LOGICAL(KIND=C_BOOL) :: output_level_tmp 
     288      LOGICAL, OPTIONAL, INTENT(OUT) :: par_access 
     289      LOGICAL(KIND=C_BOOL) :: par_access_tmp 
     290      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq 
     291      LOGICAL(KIND=C_BOOL) :: split_freq_tmp 
     292      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format 
     293      LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp 
     294      LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq 
     295      LOGICAL(KIND=C_BOOL) :: sync_freq_tmp 
     296      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
     297      LOGICAL(KIND=C_BOOL) :: type_tmp 
     298       
     299      CALL xios(get_file_handle)(file_id,file_hdl) 
     300      CALL xios(is_defined_file_attr_hdl_)   & 
     301      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
     302      , split_freq, split_freq_format, sync_freq, type ) 
     303     
     304  END SUBROUTINE xios(is_defined_file_attr) 
     305   
     306  SUBROUTINE xios(is_defined_file_attr_hdl)  & 
     307    ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
     308    , split_freq, split_freq_format, sync_freq, type ) 
     309     
     310    IMPLICIT NONE 
     311      TYPE(txios(file)) , INTENT(IN) :: file_hdl 
     312      LOGICAL, OPTIONAL, INTENT(OUT) :: description 
     313      LOGICAL(KIND=C_BOOL) :: description_tmp 
     314      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled 
     315      LOGICAL(KIND=C_BOOL) :: enabled_tmp 
     316      LOGICAL, OPTIONAL, INTENT(OUT) :: min_digits 
     317      LOGICAL(KIND=C_BOOL) :: min_digits_tmp 
     318      LOGICAL, OPTIONAL, INTENT(OUT) :: name 
     319      LOGICAL(KIND=C_BOOL) :: name_tmp 
     320      LOGICAL, OPTIONAL, INTENT(OUT) :: name_suffix 
     321      LOGICAL(KIND=C_BOOL) :: name_suffix_tmp 
     322      LOGICAL, OPTIONAL, INTENT(OUT) :: output_freq 
     323      LOGICAL(KIND=C_BOOL) :: output_freq_tmp 
     324      LOGICAL, OPTIONAL, INTENT(OUT) :: output_level 
     325      LOGICAL(KIND=C_BOOL) :: output_level_tmp 
     326      LOGICAL, OPTIONAL, INTENT(OUT) :: par_access 
     327      LOGICAL(KIND=C_BOOL) :: par_access_tmp 
     328      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq 
     329      LOGICAL(KIND=C_BOOL) :: split_freq_tmp 
     330      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format 
     331      LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp 
     332      LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq 
     333      LOGICAL(KIND=C_BOOL) :: sync_freq_tmp 
     334      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
     335      LOGICAL(KIND=C_BOOL) :: type_tmp 
     336       
     337      CALL xios(is_defined_file_attr_hdl_)  & 
     338      ( file_hdl, description, enabled, min_digits, name, name_suffix, output_freq, output_level, par_access  & 
     339      , split_freq, split_freq_format, sync_freq, type ) 
     340     
     341  END SUBROUTINE xios(is_defined_file_attr_hdl) 
     342   
     343  SUBROUTINE xios(is_defined_file_attr_hdl_)   & 
     344    ( file_hdl, description_, enabled_, min_digits_, name_, name_suffix_, output_freq_, output_level_  & 
     345    , par_access_, split_freq_, split_freq_format_, sync_freq_, type_ ) 
     346     
     347    IMPLICIT NONE 
     348      TYPE(txios(file)) , INTENT(IN) :: file_hdl 
     349      LOGICAL, OPTIONAL, INTENT(OUT) :: description_ 
     350      LOGICAL(KIND=C_BOOL) :: description__tmp 
     351      LOGICAL, OPTIONAL, INTENT(OUT) :: enabled_ 
     352      LOGICAL(KIND=C_BOOL) :: enabled__tmp 
     353      LOGICAL, OPTIONAL, INTENT(OUT) :: min_digits_ 
     354      LOGICAL(KIND=C_BOOL) :: min_digits__tmp 
     355      LOGICAL, OPTIONAL, INTENT(OUT) :: name_ 
     356      LOGICAL(KIND=C_BOOL) :: name__tmp 
     357      LOGICAL, OPTIONAL, INTENT(OUT) :: name_suffix_ 
     358      LOGICAL(KIND=C_BOOL) :: name_suffix__tmp 
     359      LOGICAL, OPTIONAL, INTENT(OUT) :: output_freq_ 
     360      LOGICAL(KIND=C_BOOL) :: output_freq__tmp 
     361      LOGICAL, OPTIONAL, INTENT(OUT) :: output_level_ 
     362      LOGICAL(KIND=C_BOOL) :: output_level__tmp 
     363      LOGICAL, OPTIONAL, INTENT(OUT) :: par_access_ 
     364      LOGICAL(KIND=C_BOOL) :: par_access__tmp 
     365      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_ 
     366      LOGICAL(KIND=C_BOOL) :: split_freq__tmp 
     367      LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format_ 
     368      LOGICAL(KIND=C_BOOL) :: split_freq_format__tmp 
     369      LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq_ 
     370      LOGICAL(KIND=C_BOOL) :: sync_freq__tmp 
     371      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
     372      LOGICAL(KIND=C_BOOL) :: type__tmp 
     373       
     374      IF (PRESENT(description_)) THEN 
     375        description__tmp=cxios_is_defined_file_description(file_hdl%daddr) 
     376        description_=description__tmp 
     377      ENDIF 
     378       
     379      IF (PRESENT(enabled_)) THEN 
     380        enabled__tmp=cxios_is_defined_file_enabled(file_hdl%daddr) 
     381        enabled_=enabled__tmp 
     382      ENDIF 
     383       
     384      IF (PRESENT(min_digits_)) THEN 
     385        min_digits__tmp=cxios_is_defined_file_min_digits(file_hdl%daddr) 
     386        min_digits_=min_digits__tmp 
     387      ENDIF 
     388       
     389      IF (PRESENT(name_)) THEN 
     390        name__tmp=cxios_is_defined_file_name(file_hdl%daddr) 
     391        name_=name__tmp 
     392      ENDIF 
     393       
     394      IF (PRESENT(name_suffix_)) THEN 
     395        name_suffix__tmp=cxios_is_defined_file_name_suffix(file_hdl%daddr) 
     396        name_suffix_=name_suffix__tmp 
     397      ENDIF 
     398       
     399      IF (PRESENT(output_freq_)) THEN 
     400        output_freq__tmp=cxios_is_defined_file_output_freq(file_hdl%daddr) 
     401        output_freq_=output_freq__tmp 
     402      ENDIF 
     403       
     404      IF (PRESENT(output_level_)) THEN 
     405        output_level__tmp=cxios_is_defined_file_output_level(file_hdl%daddr) 
     406        output_level_=output_level__tmp 
     407      ENDIF 
     408       
     409      IF (PRESENT(par_access_)) THEN 
     410        par_access__tmp=cxios_is_defined_file_par_access(file_hdl%daddr) 
     411        par_access_=par_access__tmp 
     412      ENDIF 
     413       
     414      IF (PRESENT(split_freq_)) THEN 
     415        split_freq__tmp=cxios_is_defined_file_split_freq(file_hdl%daddr) 
     416        split_freq_=split_freq__tmp 
     417      ENDIF 
     418       
     419      IF (PRESENT(split_freq_format_)) THEN 
     420        split_freq_format__tmp=cxios_is_defined_file_split_freq_format(file_hdl%daddr) 
     421        split_freq_format_=split_freq_format__tmp 
     422      ENDIF 
     423       
     424      IF (PRESENT(sync_freq_)) THEN 
     425        sync_freq__tmp=cxios_is_defined_file_sync_freq(file_hdl%daddr) 
     426        sync_freq_=sync_freq__tmp 
     427      ENDIF 
     428       
     429      IF (PRESENT(type_)) THEN 
     430        type__tmp=cxios_is_defined_file_type(file_hdl%daddr) 
     431        type_=type__tmp 
     432      ENDIF 
     433       
     434       
     435     
     436  END SUBROUTINE xios(is_defined_file_attr_hdl_) 
     437   
    253438END MODULE ifile_attr 
Note: See TracChangeset for help on using the changeset viewer.