Text Data Processing
Delimited Field
Pick a Column
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.