One of the new features in F2018 is assumed-rank arrays and "select rank()" construct.
the "select rank()" construct should be allowed to accept one or more scalar integer, like "select case()"
example:
subroutine sub(a)
integer :: a(..)
select rank(a)
rank(0)
...
rank(1:3)
...
rank(4:)
...
end select
end subroutine sub
this will allow for more generic programming.