182  Pascal Report  The use of the procedure identifier in a procedure statement within  the  block  of its  declaration  implies  recursive  execution  of the  procedure.  Example o/procedure declaratiolls:  ProcedureDeclaration  =  ProcedureHeading  ";"  Block  I  ProcedureHeading  ";"  Di -('cfive  I  Procedureldentification  ";"  Block.  ProcedureHeading  = "procedurE - Identifier [FormalParameterList  1.  Procedureldentification  = "procel  I.  re" Procedureldentifier.  Procedureldentifier  =  Identifier.  procedure ReadInteger  (va· F:  Text;  var X:  Integer);  var S:  Natural;  begin  while Fi <>  '  ,  do Get (}  I;  S  :=  0;  while Fi in  [' 0' .. ' 9' 1 ,(> begin  S:= 10  * S +  (ord(FJI-ord('O'));  Get  (F)  end;  X := S  end  { ReadInteger  } ;  procedure Bisect (function F(X:  Real):  Real;  A,  B:  Real;  var Z:  Real);  var M:  Real;  begin  { assume F(A)  < 0  ~~d  F(B)  > 0  while abs(A-N)  >  1e-10  •  abs(A)  do begin  M :=  (A  + B)  /  2.0;  if F(M)  < 0  then  A·  M  else  B:= M  end;  Z  .- M  end  { Bisect  } ;  procedure GCD (M,  N:  Inte,  { Greatest Cornmon  Div  M >=  0  and N >  0;  E  var A1, A2,  B1, B2,  C,  begin  A1  := 0;  A2:= 1;  B1  C  := M;  D:= N;  while D <>  0  do begin  t'l;  var X,  Y,  Z:  Integer);  i.  r  X of M and N,  assuming  fnded Euclid's Algorithm.  Q,  R:  Integer;  1;  B2:  =  0;  Al*M+B1*N  = D,  A2*M+B2*N  = C  and  GCD(C,D)  =  GCD(M,N)} 