parse_cadence_attr Subroutine

private pure subroutine parse_cadence_attr(s, secs, ok)

Parse a cadence attribute <int><unit> (unit s/m/h/d) to seconds. ok=.false. if s is not a well-formed positive cadence.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: s
real(kind=wp), intent(out) :: secs
logical, intent(out) :: ok

Called by

proc~~parse_cadence_attr~~CalledByGraph proc~parse_cadence_attr parse_cadence_attr proc~parse_one_spec_token parse_one_spec_token proc~parse_one_spec_token->proc~parse_cadence_attr proc~parse_diag_spec parse_diag_spec proc~parse_diag_spec->proc~parse_one_spec_token proc~apply_diag_selection apply_diag_selection proc~apply_diag_selection->proc~parse_diag_spec proc~engine_configure_diag engine_configure_diag proc~engine_configure_diag->proc~apply_diag_selection proc~engine_setup engine_setup proc~engine_setup->proc~engine_configure_diag

Variables

Type Visibility Attributes Name Initial
character(len=128), private :: ferr
integer, private :: ios
integer, private :: n
character(len=1), private :: unit
integer, private :: val

Source Code

   pure subroutine parse_cadence_attr(s, secs, ok)
      !! Parse a cadence attribute `<int><unit>` (unit s/m/h/d) to seconds.
      !! `ok=.false.` if `s` is not a well-formed positive cadence.
      character(len=*), intent(in) :: s
      real(wp), intent(out) :: secs
      logical, intent(out) :: ok
      integer :: n, ios, val
      character :: unit
      character(len=128) :: ferr

      secs = -1.0_wp
      ok = .false.
      n = len_trim(s)
      if (n < 2) return
      unit = s(n:n)
      read (s(1:n - 1), *, iostat=ios, iomsg=ferr) val
      if (ios /= 0 .or. val <= 0) return
      select case (unit)
      case ("s")
         secs = real(val, wp)
      case ("m")
         secs = real(val, wp)*60.0_wp
      case ("h")
         secs = real(val, wp)*3600.0_wp
      case ("d")
         secs = real(val, wp)*86400.0_wp
      case default
         return
      end select
      ok = .true.
   end subroutine parse_cadence_attr