! call in4vec(prompt,n,vec) ! Read in up to n integers to vec; space and tab delimit. ! Retry if error in conversion; escape w/ 'QUIT' ! Note that fully ascii fields are allowed and ignored, ! IF they begin with an exclamation mark. subroutine in4vec(prompt,n,vec) implicit none integer, intent(inout):: vec(*) integer, intent(in):: n character*(*), intent(in):: prompt integer b,i,nt,begs(20),ends(20),typs(20),ints(20),err real vals(20) character*256 temp 2 print 1, trim(prompt) 1 format(' ',a,' ',$) read 101,temp 101 format(a) nt=n !max requested, may return fewer call parseme(temp,nt,begs,ends,typs,ints,vals,err) do i=1,min(nt,n) !test for not a int, not a real tokens if((typs(i) /= 2).and.(err==0)) then b=begs(i) !substring start if(temp(b:b)/='!') then !ignore if comment if(err==0) err=i !else mark first endif endif enddo if(err.gt.0) then if(temp.eq.'QUIT') return print *,' ',temp(1:ends(err)),'<- retry or QUIT' goto 2 endif do i=1,min(nt,n) !return only UP TO # requested if(typs(i) == 2) vec(i)=ints(i) !but not if comment enddo return end