mymatch Subroutine

subroutine mymatch(expression, string, expected)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: expression
character(len=*), intent(in) :: string
logical, intent(in) :: expected

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
logical, public :: answer
integer, public :: jj
type(regex_pattern), public :: p

Source Code

subroutine mymatch(expression,string,expected)
character(len=*),intent(in) :: expression
character(len=*),intent(in) :: string
logical,intent(in)          :: expected
integer                     :: jj
logical                     :: answer
type(regex_pattern)         :: p
   jj=getpat(expression, p%pat)
   if(jj .eq. ERR) then
      write(*,'(*(g0,1x))').not.expected, 'illegal pattern for regex',expression, &
      & 'and string',string,'expected',expected,'getpat=',jj
      tally=[tally,.false.]
   else
      answer=match(string//char(10),p%pat).eq.YES
      write(*,'(*(g0,1x))') answer .eqv. expected, 'for regex',expression,'and string',string, &
      & 'expected',expected,'got',answer,'getpat=',jj
      tally=[tally,answer.eqv.expected]
   endif

end subroutine mymatch