ProcedureDeclaration = ProcedureHeading ";" Block I ProcedureHeading ";" Di -('cfive I Procedureldentification ";" Block. ProcedureHeading = "procedurE - Identifier [FormalParameterList 1. Procedureldentification = "procel I. re" Procedureldentifier. Procedureldentifier = Identifier. 

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: 

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)} 

