A sorted table can tell where a new value belongs by counting values below it.

Program

Play the program to change the score and see its insertion position.

insert_position.f90
program insert_position_demo
    implicit none
    integer :: sorted(4)
    integer :: score
    integer :: i
    integer :: position

    sorted = [10, 20, 30, 40]
    score = 
    position = 1
    do i = 1, 4
        if (score > sorted(i)) position = i + 1
    end do
    print '(I0, 1X, I0)', score, position
end program insert_position_demo
program insert_position_demo
    implicit none
    integer :: sorted(4)
    integer :: score
    integer :: i
    integer :: position

    sorted = [10, 20, 30, 40]
    score = 
    position = 1
    do i = 1, 4
        if (score > sorted(i)) position = i + 1
    end do
    print '(I0, 1X, I0)', score, position
end program insert_position_demo
program insert_position_demo
    implicit none
    integer :: sorted(4)
    integer :: score
    integer :: i
    integer :: position

    sorted = [10, 20, 30, 40]
    score = 
    position = 1
    do i = 1, 4
        if (score > sorted(i)) position = i + 1
    end do
    print '(I0, 1X, I0)', score, position
end program insert_position_demo
sorted table The existing values are already ordered from low to high.
insertion position `position` advances once for every sorted value below `score`.
rank idea The final position is a rank-like answer for where the score belongs.