The main documentation of the Set_Status Procedure contains additional explanation of this code listing.
subroutine Set_Status (S, Selector_Flag)
! Input variable.
! String to select status value.
type(character,*), intent(in) :: Selector_Flag
! Output variable.
type(Status_type), intent(out) :: S ! Status to be set.
! Internal variable.
type(integer) :: i ! Loop counter.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
! Selector_Flag must be one of the possible flags.
VERIFY(ANY(Selector_Flag == status_flag%selector),1)
! Determine which flag is to be set.
do i = 1, NFlags
if (Selector_Flag == status_flag(i)%selector) S%status = i
end do
! Verify guarantees.
VERIFY(Valid_State(S),1) ! S is now valid.
return
end subroutine Set_Status