| Path: | gtvarcopyattrall.f90 | 
| Last Update: | Sun Jan 15 19:04:57 +0900 2006 | 
| Authors: | Eizi TOYODA, Yasuhiro MORIKAWA | 
| Version: | $Id: gtvarcopyattrall.f90,v 1.3 2006-01-15 10:04:57 morikawa Exp $ | 
| Tag Name: | $Name: gt4f90io-20080727 $ | 
| Copyright: | Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved. | 
| License: | See COPYRIGHT | 
以下のサブルーチン、関数は gtdata_generic から gtdata_generic#Copy_Attr として提供されます。
| Subroutine : | |
| to : | type(gt_variable), intent(inout) | 
| from : | type(gt_variable), intent(inout) | 
| err : | logical, intent(out), optional | 
| global : | logical, intent(in), optional | 
変数 from の全ての属性を変数 to へコピーします。
デフォルトでは大域属性もコピーしますが、 global に .false. を与える場合、大域属性をコピーしません。
Copy_Attr は 2 つのサブルーチンの総称名であり、 他にも属性を指定してコピーする方法もあります。 上記のサブルーチンを参照ください。
subroutine GTVarCopyAttrAll(to, from, err, global)
  !
  !== 属性のコピー
  !
  ! 変数 *from* の全ての属性を変数 *to* へコピーします。
  !
  ! デフォルトでは大域属性もコピーしますが、
  ! *global* に .false. を与える場合、大域属性をコピーしません。
  !
  ! *Copy_Attr* は 2 つのサブルーチンの総称名であり、
  ! 他にも属性を指定してコピーする方法もあります。
  ! 上記のサブルーチンを参照ください。
  !
  use gtdata_types, only: gt_variable
  use gtdata_generic, only: attr_rewind, attr_next, gtvarcopyattr
  use dc_present,only:present_and_true, present_and_false
  use dc_url,   only: GT_PLUS
  use dc_error, only: dumperror
  use dc_trace, only: beginsub, endsub, DbgMessage
  use dc_types, only: string
  type(gt_variable), intent(inout):: to
  type(gt_variable), intent(inout):: from
  logical, intent(out), optional:: err
  logical, intent(in), optional:: global
  character(len = *), parameter:: subnam = "GTVarCopyAttrAll"
  character(len = STRING):: aname
  logical:: end
continue
  if (present(err)) err = .false.
  call beginsub(subnam)
  call attr_rewind(from)
  do
    call attr_next(from, aname, end)
    if (end) exit
    if ( (present_and_false(global)) .and. (aname(1:1) == GT_PLUS) ) then
      call DbgMessage("Ignored attr=%c", c1=aname)
      cycle
    end if
    call DbgMessage("Copied attr=%c", c1=aname)
    call GTVarCopyAttr(to=to, attrname=aname, from=from, err=err)
    if (present_and_true(err)) err = .false.
  enddo
  call endsub(subnam)
end subroutine GTVarCopyAttrAll