For small fixed examples, index and slices can split a delimited line without adding a parser dependency.

Program

Play the program to choose which comma-separated field is copied into field.

delimited_field.f90
program delimited_field_demo
    implicit none
    integer :: field_no
    integer :: first_comma, second_comma
    character(len=20) :: line
    character(len=8) :: field

    field_no = 
    line = 'red,green,blue'
    first_comma = index(line, ',')
    second_comma = first_comma + index(line(first_comma + 1:), ',')
    select case (field_no)
        case (1)
            field = line(1:first_comma - 1)
        case (2)
            field = line(first_comma + 1:second_comma - 1)
        case default
            field = line(second_comma + 1:len_trim(line))
    end select
    print '(A)', trim(field)
end program delimited_field_demo
program delimited_field_demo
    implicit none
    integer :: field_no
    integer :: first_comma, second_comma
    character(len=20) :: line
    character(len=8) :: field

    field_no = 
    line = 'red,green,blue'
    first_comma = index(line, ',')
    second_comma = first_comma + index(line(first_comma + 1:), ',')
    select case (field_no)
        case (1)
            field = line(1:first_comma - 1)
        case (2)
            field = line(first_comma + 1:second_comma - 1)
        case default
            field = line(second_comma + 1:len_trim(line))
    end select
    print '(A)', trim(field)
end program delimited_field_demo
program delimited_field_demo
    implicit none
    integer :: field_no
    integer :: first_comma, second_comma
    character(len=20) :: line
    character(len=8) :: field

    field_no = 
    line = 'red,green,blue'
    first_comma = index(line, ',')
    second_comma = first_comma + index(line(first_comma + 1:), ',')
    select case (field_no)
        case (1)
            field = line(1:first_comma - 1)
        case (2)
            field = line(first_comma + 1:second_comma - 1)
        case default
            field = line(second_comma + 1:len_trim(line))
    end select
    print '(A)', trim(field)
end program delimited_field_demo
index `index(line, ',')` finds the position of a delimiter.
slice `line(first:last)` extracts a character section.
select case `select case` chooses the field-copy rule for this small example.