my_status_string Function

public function my_status_string(key, info) result(val)

This function returns the string in the line which starts with the specified key string in the text returned from print_self_status. The key string itself is excluded from the returned string. If the specified key is not found in the text an empty string will be returned.

info can be used to change the input that should be read, it defaults to '/proc/self/status'.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: key
character(len=*), intent(in), optional :: info

Return Value character(len=80)


Calls

proc~~my_status_string~~CallsGraph proc~my_status_string my_status_string proc~newunit newunit proc~my_status_string->proc~newunit proc~print_self_status print_self_status proc~my_status_string->proc~print_self_status proc~print_self_status->proc~newunit

Called by

proc~~my_status_string~~CalledByGraph proc~my_status_string my_status_string proc~my_status_int my_status_int proc~my_status_int->proc~my_status_string proc~tem_reportstatus tem_reportStatus proc~tem_reportstatus->proc~my_status_string proc~tem_global_vmhwm tem_global_vmhwm proc~tem_global_vmhwm->proc~my_status_int proc~tem_trackmem tem_trackmem proc~tem_trackmem->proc~my_status_int

Source Code

  function my_status_string(key, info) result(val)
    ! ---------------------------------------------------------------------------
    character(len=*), intent(in) :: key !< Case sensitive!
    character(len=*), intent(in), optional :: info
    character(len=80) :: val
    ! ---------------------------------------------------------------------------
    integer :: scratchUnit
    character(len=80) :: bufline
    integer :: ios
    integer :: keylen
    logical :: match
    ! ---------------------------------------------------------------------------

    scratchUnit = newUnit()

    val = ''
    keylen = len_trim(key)
    open(unit = scratchUnit, status = 'scratch')

    call print_self_status(scratchUnit, info=info)
    rewind(scratchUnit)
    read(scratchUnit, '(a)', iostat=ios) bufline
    match = (bufline(1:keylen) == trim(key))
    do while ((ios == 0) .and. (.not.match))
      read(scratchUnit, '(a)', iostat=ios) bufline
      match = (bufline(1:keylen) == trim(key))
    end do
    close(scratchUnit)
    if (match) val = trim(bufline(len_trim(key)+1:))
    val = adjustl(val)
  end function my_status_string