Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_LocStream), | intent(in) | :: | locstream | |||
character(len=*), | intent(in) | :: | keyName | |||
type(ESMF_Array), | intent(out) | :: | keyArray | |||
type(ESMF_KeywordEnforcer), | optional | :: | keywordEnforcer | |||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_LocStreamGetKeyArray(locstream, keyName, keyArray, & keywordEnforcer, rc) ! ! !ARGUMENTS: type(ESMF_Locstream), intent(in) :: locstream character (len=*), intent(in) :: keyName type(ESMF_Array), intent(out) :: keyArray type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! Get ESMF Array associated with key. ! ! The arguments are: ! \begin{description} ! \item [locstream] ! The {\tt ESMF\_LocStream} object to get key from. ! \item [keyName] ! The name of the key to get. ! \item [keyArray] ! Array associated with key. ! \item [{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} !EOP !------------------------------------------------------------------------------ type(ESMF_LocStreamType), pointer :: lstypep integer :: i,keyIndex integer :: localrc ! Initialize localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL ! check variables ESMF_INIT_CHECK_DEEP(ESMF_LocStreamGetInit,locstream,rc) ! get the pointer to the locstream lstypep => locstream%lstypep ! find the index of the key keyIndex=0 do i=1,lstypep%keyCount if (trim(keyName) .eq. trim(lstypep%keyNames(i))) then keyIndex=i exit endif enddo ! If nothing found return error if (keyIndex==0) then if (ESMF_LogFoundError(ESMF_RC_ARG_WRONG, & msg=" - unable to find the following LocStream key: "//keyName, & ESMF_CONTEXT, rcToReturn=rc)) return endif ! Get Array keyArray=lstypep%keys(keyIndex) ! return success if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_LocStreamGetKeyArray