A sparse lookup scans stored keys and returns zero when the requested key is absent.

Program

Play the program to query a present or missing sparse key.

sparse_lookup.f90
program sparse_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: values(3)
    integer :: query_key
    integer :: i
    integer :: result

    keys = [10, 20, 30]
    values = [5, 8, 13]
    query_key = 
    result = 0
    do i = 1, 3
        if (keys(i) == query_key) result = values(i)
    end do
    print '(I0, 1X, I0)', query_key, result
end program sparse_lookup_demo
program sparse_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: values(3)
    integer :: query_key
    integer :: i
    integer :: result

    keys = [10, 20, 30]
    values = [5, 8, 13]
    query_key = 
    result = 0
    do i = 1, 3
        if (keys(i) == query_key) result = values(i)
    end do
    print '(I0, 1X, I0)', query_key, result
end program sparse_lookup_demo
program sparse_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: values(3)
    integer :: query_key
    integer :: i
    integer :: result

    keys = [10, 20, 30]
    values = [5, 8, 13]
    query_key = 
    result = 0
    do i = 1, 3
        if (keys(i) == query_key) result = values(i)
    end do
    print '(I0, 1X, I0)', query_key, result
end program sparse_lookup_demo
stored keys `keys` identifies only positions that have stored values.
zero default `result` starts at zero, which represents a missing sparse value.
lookup scan A matching key copies the stored value into `result`.