(***************************************************************

Incrivel!!! Este programa utiliza funcoes como parametro para
outras funcoes!!!!

***************************************************************)

program parametro;
uses crt,dfs;

type
  proc = procedure(para:word);
  func = function:word;

var k:char;

procedure alow(para:word); far;
begin
  putPChar(74,0,'     ');
  putword(79,0,para);
end;

function eai:word; far;
begin
  eai:=random(65535);
end;

procedure teste(ei:proc;ae:func);
begin
  ei(eai);
end;

BEGIN

repeat
  k:=readkey;
  if k=#32 then teste(alow,eai);
until k=#27

END.
