The main documentation of the Set_Not_Up_to_Date_Mathematic_Vector Procedure contains additional explanation of this code listing.
subroutine Set_Not_Up_to_Date_MV (MV) ! Input/Output variable. type(Mathematic_Vector_type), intent(inout) :: MV ! Variable to be set. !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! Verify requirements. VERIFY(Valid_State(MV),5) ! MV is valid. ! Unset the updated? variables. MV%Average_is_Updated = .false. MV%Infinity_Norm_is_Updated = .false. MV%Maximum_is_Updated = .false. MV%Minimum_is_Updated = .false. MV%One_Norm_is_Updated = .false. MV%DV_is_Updated = .false. MV%P_Norm_is_Updated = .false. MV%Sum_is_Updated = .false. MV%Two_Norm_is_Updated = .false. ! Verify guarantees. VERIFY(Valid_State(MV),5) ! MV is still valid. return end subroutine Set_Not_Up_to_Date_MV