"Value parameter(s)" are passed to procedures and functions as static value(s). That means you
send to the procedure or function a value (it's put on the call stack as the value). "Variable
parameter(s)" are passed to procedures and functions as dynamic and are the address(es) of the
variable. With the address you can pass values to and from the procedure(s) or function(s). As
examples:
{value passing}
procedure valproc ( a, b : integer ); { can be used in the procedure, but nothing
can be sent back }
{variable passing}
procedure varproc ( var x, y : integer ); { can be used and can be sent back with
the same or different values }
{both types}
procedure bothproc ( a, b : integer; var x, y : integer );