program collec character*6 names(200),name,testid,instid,instrs(90),instr character*6 mtest(1000),minst(1000) character*20 fname character*10 varid,mvar(1000) integer it(1000),ii(1000) logical test,inst,ok real x(1000),y(1000),z(1000),value(1000) fname(1:9)='hydrodat\' open(1,file='tests') do 10 i=1,200 read(1,'(a6)',err=11)names(i) ntests=i 10 continue 11 continue close(1) open(1,file='instrum') do 20 i=1,90 read(1,'(a6)',err=21)instrs(i) ninstrs=i 20 continue 21 continue close(1) open(1,file='malfun') i=1 30 read(1,'(a6,1x,a6,1x,a10)',err=31) mtest(i),minst(i),mvar(i) i=i+1 goto 30 31 continue nmalf=i write(*,*)' test id (wildchar=*) :' read(*,'(a6)')testid write(*,*)' instrument name (wildchar=*) :' read(*,'(a6)')instid write(*,*)' variable name :' read(*,'(a10)')varid no=0 do 100 i=1,ntests name=names(i) test=.true. do 101 ic=1,6 if (testid(ic:ic).ne.'*' .and. & testid(ic:ic).ne.name(ic:ic)) test=.false. 101 continue if (test) then do 200 j=1,ninstrs instr=instrs(j) inst=.true. do 201 ic=1,6 if (instid(ic:ic).ne.'*' .and. & instid(ic:ic).ne.instr(ic:ic)) inst=.false. 201 continue if (inst) then call check & (name,instr,varid,nmalf,mtest,minst,mvar,ok) if (ok) then no=no+1 it(no)=i ii(no)=j fname(10:15)=name call getval (fname,1,instr,varid, & value(no),x(no),y(no),z(no)) endif endif 200 continue endif 100 continue open(2,file='collec.out') write(2,'(a1,a9,2a10,a13,2a10)')'*', & ' X ',' Y ',' Z ',varid,' Test id. ',' Instrum. ' write(2,'(a4)')'BL01' write(2,*)no,4 do 300 i=1,no write(2,'(3f10.3,f13.6,2a10)')x(i),y(i),z(i),value(i), & names(it(i)),instrs(ii(i)) 300 continue end subroutine check & (name,instr,varid,nmalf,mtest,minst,mvar,ok) character*6 name,instr,mtest(nmalf),minst(nmalf) character*10 varid,mvar(nmalf) logical ok ok=.true. do 10 i=1,nmalf if (mtest(i).eq.name) then if (minst(i).eq.' ') then ok=.false. elseif (minst(i).eq.instr) then if (mvar(i).eq.' ') then ok=.false. elseif (mvar(i).eq.varid) then ok=.false. endif endif endif 10 continue end