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