The main documentation of the Get Value Statistics Functions contains additional explanation of this code listing.
define([ACCESS_ROUTINE],[
pushdef([VALUE], [$1])
ifelse(
VALUE, [Count],
[pushdef([TYPE], [integer])],
VALUE, [Totally_Positive],
[pushdef([TYPE], [logical])],
[pushdef([TYPE], [real])])
pushdef([Get_VALUE_Stats], expand(Get_VALUE_Stats))
pushdef([Global_VALUE], expand(Global_VALUE))
pushdef([PE_VALUE], expand(PE_VALUE))
function Get_VALUE_Stats (Statistics, Global) result(VALUE)
! Input variables.
type(logical), optional, intent(in) :: Global ! Global/Local toggle.
! Input/Output variables.
type(Statistics_type), intent(inout) :: Statistics ! Statistics object.
! Output variables.
type(TYPE) :: VALUE ! Statistics value to be output.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
VERIFY(Valid_State(Statistics),5) ! Statistics is valid.
! Set value.
if (PRESENT(Global)) then
if (Global) then
call Update_Global_Statistics (Statistics)
VALUE = Statistics%Global_VALUE
else
VALUE = Statistics%PE_VALUE
end if
else
VALUE = Statistics%PE_VALUE
end if
! Verify guarantees - none.
return
end function Get_VALUE_Stats
popdef([VALUE])
popdef([Get_VALUE_Stats])
popdef([Global_VALUE])
popdef([PE_VALUE])
])
fortext([Value],[Arithmetic_Mean Count Geometric_Mean Harmonic_Mean
Maximum Minimum Standard_Deviation Sum Totally_Positive],[
ACCESS_ROUTINE(Value)
])
function Get_Name_Stats (Statistics) result(Name)
! Input variable.
type(Statistics_type), intent(in) :: Statistics ! Statistics object.
! Output variable.
type(character,80) :: Name ! Statistics value to be output.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
VERIFY(Valid_State(Statistics),5) ! Statistics is valid.
! Set value.
Name = Statistics%Name
! Verify guarantees - none.
return
end function Get_Name_Stats