program Parameter1 (output);
{ Dieses Programm hat keine sinnvolle Semantik, zeigt schlech-
ten Programmierstil und dient nur zum Ueben der Parameterueber-
gabearten. }
var
a,
b,
c : integer;
procedure globalProc ({call_by_1} var d, e, f: integer);
var
a : integer;
procedure lokalProc ({call_by_2} g, h, i: integer);
var
b : integer;
begin
g := h + i;
b := c;
a := 2 * b;
i := a + b
end; { lokalProc }
begin
a := 4;
b := 5;
c := 6;
d := e - f;
writeln(a, ' ', b, ' ', c)
lokalProc (a, d, e);
e := f - d
end; { globalProc }
begin
a := 1;
b := 2;
c := 3;
globalProc (c, b, a);
writeln (a, ' ', b, ' ', c)
end. { Parameter1 }
cHJvZ3JhbSBQYXJhbWV0ZXIxIChvdXRwdXQpOwp7IERpZXNlcyBQcm9ncmFtbSBoYXQga2VpbmUgc2lubnZvbGxlIFNlbWFudGlrLCB6ZWlndCBzY2hsZWNoLQogIHRlbiBQcm9ncmFtbWllcnN0aWwgdW5kIGRpZW50IG51ciB6dW0gVWViZW4gZGVyIFBhcmFtZXRlcnVlYmVyLQogIGdhYmVhcnRlbi4gfQoKICB2YXIgCiAgYSwKICBiLAogIGMgOiBpbnRlZ2VyOwoKICBwcm9jZWR1cmUgZ2xvYmFsUHJvYyAoe2NhbGxfYnlfMX0gdmFyIGQsIGUsIGY6IGludGVnZXIpOwoKICAgIHZhciAKICAgIGEgOiBpbnRlZ2VyOyAKCiAgICBwcm9jZWR1cmUgbG9rYWxQcm9jICh7Y2FsbF9ieV8yfSBnLCBoLCBpOiBpbnRlZ2VyKTsKCiAgICAgIHZhciAKICAgICAgYiA6IGludGVnZXI7CgogICAgYmVnaW4KICAgICAgZyA6PSBoICsgaTsKICAgICAgYiA6PSBjOwogICAgICBhIDo9IDIgKiBiOwogICAgICBpIDo9IGEgKyBiCiAgICBlbmQ7IHsgbG9rYWxQcm9jIH0KCiAgYmVnaW4KICAgIGEgOj0gNDsKICAgIGIgOj0gNTsKICAgIGMgOj0gNjsKICAgIGQgOj0gZSAtIGY7CiAgICB3cml0ZWxuKGEsICcgJywgYiwgJyAnLCBjKQogICAgbG9rYWxQcm9jIChhLCBkLCBlKTsKICAgIGUgOj0gZiAtIGQKICBlbmQ7IHsgZ2xvYmFsUHJvYyB9CgpiZWdpbgogIGEgOj0gMTsKICBiIDo9IDI7CiAgYyA6PSAzOwogIGdsb2JhbFByb2MgKGMsIGIsIGEpOwogIHdyaXRlbG4gKGEsICcgJywgYiwgJyAnLCBjKQplbmQuIHsgUGFyYW1ldGVyMSB9