The main documentation of the Valid_State_Base_Structure Procedure contains additional explanation of this code listing.
function Valid_State_Base_Structure (Structure) result(Valid)
! Input variables.
! Variable to be checked.
type(Base_Structure_type), intent(in) :: Structure
! Output variables.
type(logical) :: Valid ! Logical state.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Start out true.
Valid = .true.
! Check for validity of internals.
Valid = Valid .and. Initialized(Structure)
Valid = Valid .and. Valid_State(Structure%Length_Vector)
Valid = Valid .and. Valid_State(Structure%Locus)
Valid = Valid .and. Valid_State(Structure%Length_Total)
Valid = Valid .and. Valid_State(Structure%Length_PE)
Valid = Valid .and. Valid_State(Structure%Last_PE)
Valid = Valid .and. Valid_State(Structure%First_PE)
if (.not.Valid) return
! Checks on the validity of Structure.
Valid = Valid .and. &
Structure%Length_Total == SUM(Structure%Length_Vector)
Valid = Valid .and. &
Structure%Length_PE == Structure%Length_Vector(this_PE)
Valid = Valid .and. &
Structure%Last_PE == SUM(Structure%Length_Vector(1:this_PE))
Valid = Valid .and. &
Structure%First_PE == Structure%Last_PE - Structure%Length_PE + 1
Valid = Valid .and. Structure%Range_PE(1) == Structure%First_PE
Valid = Valid .and. Structure%Range_PE(2) == Structure%Last_PE
return
end function Valid_State_Base_Structure