parse_ints64 Function

public function parse_ints64(line) result(ints)

Parse positive ints from a string that also includes text

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: line

Return Value integer(kind=ip), dimension(:), allocatable


Source Code

    function parse_ints64(line) result(ints)
        character(len=*),intent(in) :: line
        integer(ip),dimension(:),allocatable :: ints ! array of integers
        integer(ip) :: i, j, n
        integer(ip) :: istart
        character(len=*),parameter :: tokens = '0123456789'

        n = len(line)
        istart = 0
        allocate(ints(0))

        do i = 1, n
            if (index(tokens,line(i:i))>0) then
                if (istart==0) istart = i
            else
                if (istart/=0) ints = [ints, int(line(istart:i-1), kind=ip)] ! get previous int
                istart = 0
            end if
        end do
        if (istart/=0) ints = [ints, int(line(istart:n), kind=ip)] ! get last int

    end function parse_ints64