Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | lstring | |||
character(len=*), | intent(in) | :: | lpattern |
integer function pattern_query(lstring,lpattern) !--------------------------------------------------------------------------- ! Searches a string for a PATTERN of characters. Returns zero if the pattern ! is not found, or if the pattern or string is empty. !--------------------------------------------------------------------------- ! arguments character(len=*), intent(in) :: lstring character(len=*), intent(in) :: lpattern ! local variables integer :: k, klast, ncount integer :: len_string, len_pattern ! initialize variables ncount = 0 klast = 0 len_string = len(lstring) len_pattern = len( trim(adjustL(lpattern)) ) !--------------------------------------------------------------------------- ! error check - conduct the search only if the pattern & string are not empty !--------------------------------------------------------------------------- if( (len_pattern > 0) .and. (len_string > 0) ) then !------------------------------------------------------------------------ ! examine the string to find the find the FIRST instance of the pattern !------------------------------------------------------------------------ k = index(lstring(klast+1:len_string), trim(adjustL(lpattern) )) do while( k > 0 ) !--------------------------------------------------------------------- ! if index is nonzero, there is at least one match, increment ! through the string checking for additional matches. !--------------------------------------------------------------------- ncount = ncount + 1 ! count match klast = k + klast ! slide forward in string looking for next match k = index(lstring(klast+1:len_string), trim(adjustL(lpattern) )) enddo ! while endif pattern_query = ncount !--------------------------------------------------------------------------- end function pattern_query