When you specify BYVALUE, compiler puts the value of the argument in the parameter list.
When you specify BYVALUE, a dummy argument is not created; however, as is also true for dummy arguments, any change to the corresponding parameter in the called routine will not be visible in the calling routine.
BYVALUE can be specified only for scalar arguments and parameters that have lengths and sizes known at compile time.