begin
string (255) file
string (1) key
integer adr, adr1, pos, conad, type, start,end, flag, pattern, j, cnt
integer dummy1,dummy2
! %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 connect (string (127) file, integername start, length,
integer flags)
externalintegerfnspec readin(string (*)name file,
integer extraPages,
integername base,top,fend,limit)
externalroutinespec prompt(string (255) prompt string)
externalintegerfnspec search(integer start,finish,key)
externalintegerfnspec count(integer start,finish,key)
! t0 = cputime
! call overhead = cputime - t0
prompt("File:")
read(file)
start = 0
flag = readin(file,0,dummy1,conad,end,dummy2)
write(flag,0)and newline and stop unless flag=0
cycle
prompt("Key?")
read(key)
pattern = char no(key,1)
! t0 = cputime
cnt = count(conad+start,end,pattern) {%for j = 999,-1,0
! t call = cputime - t0 - call overhead
! t0 = cputime
! %for j = 999, -1, 0 %cycle
! adr = conad+start
! adr = adr + 1 %while adr <= conad+end %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(adr-conad-start,0) %and write(adr1-conad-start,10)
write(cnt,0)
new line
repeat
endofprogram