| Path: | anvarputattrreal.f90 | 
| Last Update: | Wed Jul 20 18:22:22 JST 2005 | 
Copyright (C) GFD Dennou Club, 2000. All rights reserved
| Subroutine : | |
| var : | type(AN_VARIABLE), intent(in) | 
| name : | character(len = *), intent(in) | 
| value(:) : | double precision, intent(in) | 
| err : | logical, intent(out), optional | 
subroutine ANVarPutAttrDouble(var, name, value, err)
    use an_types, only: AN_VARIABLE, an_variable_entry
    use an_vartable, only: vtable_lookup
    use an_file, only: ANFileDefineMode
    use netcdf_f77, only: NF_PUT_ATT_DOUBLE, NF_NOERR, NF_DEL_ATT, NF_ENOTINDEFINE, NF_DOUBLE, NF_GLOBAL
    use dc_url, only: GT_PLUS
    use dc_error
    implicit none
    type(AN_VARIABLE), intent(in):: var
    character(len = *), intent(in):: name
    double precision, intent(in):: value(:)
    logical, intent(out), optional:: err
    type(an_variable_entry):: ent
    integer:: stat
continue
    stat = vtable_lookup(var, ent)
    if (stat /= 0) goto 999
    if (size(value) == 0) then
        if (name(1:1) == GT_PLUS) then
            stat = nf_del_att(ent%fileid, NF_GLOBAL, name=name(2:))
        else
            stat = nf_del_att(ent%fileid, ent%varid, name=name)
        endif
        goto 999
    endif
    stat = ANFileDefineMode(ent%fileid)
    if (stat /= NF_NOERR) goto 999
    if (name(1:1) == GT_PLUS) then
        stat = nf_put_att_double(ent%fileid, NF_GLOBAL, name=name(2:), xtype=NF_DOUBLE, len=size(value), dvals=value)
    else
        stat = nf_put_att_double(ent%fileid, ent%varid, name=name, xtype=NF_DOUBLE, len=size(value), dvals=value)
    endif
999 continue
    call StoreError(stat, 'ANVarPutAttrDouble', err)
end subroutine
          | Subroutine : | |
| var : | type(AN_VARIABLE), intent(in) | 
| name : | character(len = *), intent(in) | 
| value(:) : | real, intent(in) | 
| err : | logical, intent(out), optional | 
subroutine ANVarPutAttrReal(var, name, value, err)
    use an_types, only: AN_VARIABLE, an_variable_entry
    use an_file, only: ANFileDefineMode
    use an_vartable, only: vtable_lookup
    use netcdf_f77, only: NF_PUT_ATT_REAL, NF_NOERR, NF_DEL_ATT, NF_ENOTINDEFINE, NF_FLOAT, NF_GLOBAL
    use dc_url, only: GT_PLUS
    use dc_error
    implicit none
    type(AN_VARIABLE), intent(in):: var
    character(len = *), intent(in):: name
    real, intent(in):: value(:)
    logical, intent(out), optional:: err
    type(an_variable_entry):: ent
    integer:: stat
continue
    stat = vtable_lookup(var, ent)
    if (stat /= NF_NOERR) goto 999
    if (size(value) == 0) then
        if (name(1:1) == GT_PLUS) then
            stat = nf_del_att(ent%fileid, NF_GLOBAL, name=name(2:))
        else
            stat = nf_del_att(ent%fileid, ent%varid, name=name)
        endif
        goto 999
    endif
    stat = ANFileDefineMode(ent%fileid)
    if (stat /= NF_NOERR) goto 999
    if (name(1:1) == GT_PLUS) then
        stat = nf_put_att_real(ent%fileid, NF_GLOBAL, name=name(2:), xtype=NF_FLOAT, len=size(value), rvals=value)
    else
        stat = nf_put_att_real(ent%fileid, ent%varid, name=name, xtype=NF_FLOAT, len=size(value), rvals=value)
    endif
999 continue
    call StoreError(stat, 'ANVarPutAttrReal', err)
end subroutine