begin 
  string (255) file
  string (1) key
  integer   adr, adr1, pos, conad, type, start,end, flag, pattern, j
  externallongrealfnspec  cputime alias  "S#CPUTIME"
  longreal  call overhead, t0, t inline, t call
  externalroutinespec  emas3string(stringname  vec,val)
  externalroutinespec  emas3integer(stringname  vec,integername  val)
external  routine  spec  CONNECT alias  "s#connect"(string  (255) FILE,
   integer  MODE, HOLE, PROT, integername  CONAD, TYPE, START, END, FLAG)
  externalintegerfnspec  search(integer  start,finish,key)
  externalintegerfnspec  search back(integer  start,finish,key)
  t0 = cputime
  call overhead = cputime - t0
  emas3string("File;fileormem;?;;",file)
  connect(file,0,0,0,conad,type,start,end,flag)
  write(flag,0)and   newline and  stop  unless  flag=0
  cycle 
    emas3string("Key;any;?;;",key)
    pattern = char no(key,1)
    t0 = cputime
    adr1 = search back(conad+start,conad+end,pattern) for  j = 999,-1,0
    t call = cputime - t0 - call overhead
    t0 = cputime
    for  j = 999, -1, 0 cycle 
       adr = conad+end
       adr = adr - 1 while  adr >= conad+start and  byteinteger(adr) # pattern
    repeat 
    t inline = cputime - t0 - call overhead
    print fl(t inline,8); print fl(t call,8); newline
    if  adr1 = 0 then  printstring("Not Found") else  c 
      write(conad+end-adr,0) and  write(conad+end-adr1,10)
    new line
  repeat 
endofprogram