Register Hereor login if you are already a member
To start, there is no "call by value" nor "call by reference". Instead, it's passing a parameter by value or by reference. Either the value of a parameter is passed or a reference (i.e., an address) to the parameter is passed. Each parameter in a parameter list can be passed by value or by reference.
A fundamental restriction is that RPG can only pass by value to a procedure, not to a program. The way to specify "by value" is to use the VALUE keyword on the parameter when defining the procedure prototype. An example would simply have the VALUE keyword while the keyword wouldn't be used for a "by reference" parameter.