A small configuration table can store feature keys and on/off flags.

Program

Play the program to query a feature key and read the configured flag.

config_flag_lookup.f90
program config_flag_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: enabled(3)
    integer :: target_key
    integer :: i
    integer :: flag

    keys = [1, 2, 3]
    enabled = [1, 0, 1]
    target_key = 
    flag = 0
    do i = 1, 3
        if (keys(i) == target_key) flag = enabled(i)
    end do
    print '(I0, 1X, I0)', target_key, flag
end program config_flag_lookup_demo
program config_flag_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: enabled(3)
    integer :: target_key
    integer :: i
    integer :: flag

    keys = [1, 2, 3]
    enabled = [1, 0, 1]
    target_key = 
    flag = 0
    do i = 1, 3
        if (keys(i) == target_key) flag = enabled(i)
    end do
    print '(I0, 1X, I0)', target_key, flag
end program config_flag_lookup_demo
program config_flag_lookup_demo
    implicit none
    integer :: keys(3)
    integer :: enabled(3)
    integer :: target_key
    integer :: i
    integer :: flag

    keys = [1, 2, 3]
    enabled = [1, 0, 1]
    target_key = 
    flag = 0
    do i = 1, 3
        if (keys(i) == target_key) flag = enabled(i)
    end do
    print '(I0, 1X, I0)', target_key, flag
end program config_flag_lookup_demo
feature key `target_key` chooses which setting row to read.
flag table `enabled` stores compact integer flags for the feature rows.
missing default `flag` starts at zero, so unknown keys stay disabled.