The prlevel and prvtime subroutines can just be added to degrib2.F90, making this a one-file solution, much simpler.
This can be done for most of the utils. If the resulting file is going to be too big, then don't do this, but do it for all the utils with just a few files.
The utils directory has one file per subroutine, which leads to messy directories.
Instead, where reasonable, the util should contain it's subroutines within the one file. For example we have:
add_executable(degrib2 degrib2.F90 prlevel.F90 prvtime.F90)
The prlevel and prvtime subroutines can just be added to degrib2.F90, making this a one-file solution, much simpler.
This can be done for most of the utils. If the resulting file is going to be too big, then don't do this, but do it for all the utils with just a few files.