function Sneaky (X: IntegE:): Integer; begin Z := Z - X { side effec" on Z }; Sneaky := Sqr(X) end { Sneaky}; begin Z := 10; A:= Sneaky(Z); Write1n(Output, A, Z); Z := 10; A:= Sneaky(10): A:= A * Sneaky(Z); Write1n(Output, A, Z); Z := 10; A:= Sneaky(Z); A:= A * Sneaky(10); Write1n(Output, A, Z); end { SideEffect } . Produces as results: 100 0 o 0 10000 -10 

## H.C. Forward Declarations 

Procedure (function) identifiers may be used before the procedure (function) declaration if there i~, a forward declaration. Forward declarations are necessary to allow mutually recursive procedures and functions that are not nested. The form is as follows: (Notice that the parameter list and result type ,Ire written only in the forward declaration. ) 

procedure Q(X: T); For,'rd; procedure PlY: T); begin Q(A) end; procedure Q; { parameters and res "I types are not repeated} begin P(B) end; 

