Modified Pass by Name Example

changed the local variable in SWAP_BY_NAME to P to eliminate ambiguity

program

   I : integer;

   A :  integer array;

 

SWAP_BY_NAME :  procedure (X : name, Y : name)

    P : integer;

  begin

Trace

 

 

 

 

 

 

Output

 

 

 

 

 

 

     P := X;

P := I

P <-3

 

     X := Y;

I := A[I]

I <- 6

 

     Y := P;

A[I] := P

A[I] = A[6] <- 3

 

   end;

 

begin

 

 

 

 

 

 

  I := 3;

I <- 3     6

 

  A[I] := 6;

A[I] = A[3] <- 6

 

  output  I,  A[3];

 

3,  6

  SWAP_BY_NAME (I,  A[I]);

 

 

  output I, A[3];

 

6, 6

end;