demo_match.f90 Source File


Contents

Source Code


Source Code

           program demo_match
           use :: M_match, only : getpat, match
           use :: M_match, only : MAXPAT, MAXARG, MAXLINE, YES, ERR
           implicit none
           ! find _ find patterns in text
           integer                      :: pat(MAXPAT)
           character(len=MAXARG-1)      :: argument
           integer                      :: stat
           integer                      :: ios
           integer                      :: len_arg
           character(len=MAXLINE-2)     :: line
           call get_command_argument(1, argument,status=stat,length=len_arg)
           if(stat.ne.0.or.argument.eq.'')then
              write(*,*)"usage: find pattern."
           elseif(getpat(argument(:len_arg), pat) .eq. ERR) then
              write(*,*)"illegal pattern."
           else
              INFINITE: do
                 read(*,'(a)',iostat=ios)line
                 if(ios.ne.0)exit
                 if(match(trim(line), pat) .eq. YES) then
                    write(*,'(*(a))')trim(line)
                 endif
              enddo INFINITE
           endif
           end program demo_match