The difference between call by value and result and call by reference lies in the time at which the values are passed back. Call by value and result and call by reference will cause different results if the subroutine terminates abnormally. This only occurs if an error message is output (MESSAGE Ennn) or when a STOP statement occurs. This causes the subroutine processing to be terminated immediately and the ENDFORM statement is not executed. However, if you leave the subroutine via the CHECK < expression> or EXIT statements, the parameters are passed back , since the subroutine is exited via ENDFORM in these cases.