Boundary Conditions
Clamped Index
Staying Inside an Array
Boundary checks can clamp a requested index so an array access stays inside valid limits.
Program
Play the program to choose an index and see how the boundary rule protects the lookup.
clamped_index.f90
program clamped_index_demo
implicit none
integer :: values(4)
integer :: raw_index
integer :: used_index
integer :: picked
values = [10, 20, 30, 40]
raw_index =
used_index = max(1, min(raw_index, 4))
picked = values(used_index)
print '(I0, 1X, I0, 1X, I0)', raw_index, used_index, picked
end program clamped_index_demo
program clamped_index_demo
implicit none
integer :: values(4)
integer :: raw_index
integer :: used_index
integer :: picked
values = [10, 20, 30, 40]
raw_index =
used_index = max(1, min(raw_index, 4))
picked = values(used_index)
print '(I0, 1X, I0, 1X, I0)', raw_index, used_index, picked
end program clamped_index_demo
program clamped_index_demo
implicit none
integer :: values(4)
integer :: raw_index
integer :: used_index
integer :: picked
values = [10, 20, 30, 40]
raw_index =
used_index = max(1, min(raw_index, 4))
picked = values(used_index)
print '(I0, 1X, I0, 1X, I0)', raw_index, used_index, picked
end program clamped_index_demo
boundary
Valid array positions are bounded by the first and last index.
clamp
`max(1, min(raw_index, 4))` keeps the index inside `1..4`.
safe lookup
The lookup uses `used_index`, not the unchecked requested index.