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