subroutine ESMF_AttributeSetAttPackCplCompLG(target, name, value, attpack, keywordEnforcer, itemcount, attnestflag, rc)
! 39.11.35/37 - Target is a NOOP only the attpack is used; itemcount is NOOP; attnestflag is NOOP
type(ESMF_CplComp), intent(in) :: target
character(len=*), intent(in) :: name
logical, intent(in) :: value
type(ESMF_AttPack), intent(in) :: attpack
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer ! must use keywords below
integer, intent(in), optional :: itemcount
type(ESMF_AttNest_Flag), intent(in), optional :: attnestflag
integer, intent(out), optional :: rc
integer :: localrc
character(:), allocatable :: pkey
type(ESMF_Info) :: info
logical :: is_present
type(ESMF_AttNest_Flag) :: local_attnestflag
localrc = ESMF_FAILURE
if (present(rc)) rc = ESMF_RC_NOT_IMPL
! Check object initialization
ESMF_INIT_CHECK_DEEP(ESMF_CplCompGetInit, target, rc)
if (present(attnestflag)) then
local_attnestflag = attnestflag
else
local_attnestflag = ESMF_ATTR_DEFAULT_ATTNEST
end if
pkey = attpack%formatKey(rc=localrc)
if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
info = attpack%getPayload(rc=localrc)
if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
! is_present = ESMF_InfoIsPresent(info, TRIM(pkey)//"/"//TRIM(name), attnestflag=local_attnestflag, isPointer=.true., rc=localrc)
! if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
is_present = .true.
if (is_present) then
call ESMF_InfoSet(info, TRIM(name), value, force=ESMF_ATTR_DEFAULT_FORCE, pkey=TRIM(pkey), rc=localrc)
if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, ESMF_CONTEXT, rcToReturn=rc)) return
else
if (ESMF_LogFoundError(ESMF_RC_ATTR_ITEMSOFF, msg="Attribute must be added before it is set", ESMF_CONTEXT, rcToReturn=rc)) return
endif
if (present(rc)) rc = ESMF_SUCCESS
end subroutine ESMF_AttributeSetAttPackCplCompLG