‎2007 Aug 03 1:38 AM
Hi,
I am trying to check the difference between pass by value, pass by reference, pass by return value to a subroutine. When I tried integers as parameters the following functionality worked. When I am using xstring as parameters I am not getting desired results.
Some one please explain me how the xstring's are passed to a subroutine.
Here I am giving the code and output of the code.
data : s_passbyref type xstring,
s_passbyval type xstring,
s_passbyretval type xstring.
* Pass by Value, Pass by Reference, Pass by return value - STRINGS
s_passbyref = 'ABCD'.
s_passbyval = 'ABCD'.
s_passbyretval = 'ABCD'.
write : / 'ByRef :', s_passbyref, 20 'By Val :', s_passbyval, 40 'By Return Value : ', s_passbyretval.
perform call_str_sub using s_passbyref s_passbyval changing s_passbyretval.
write : / 'ByRef :', s_passbyref, 20 'By Val :', s_passbyval, 40 'By Return Value : ', s_passbyretval.
form call_str_sub using ps_passbyref value(ps_passbyval) changing value(ps_passbyretval).
ps_passbyretval = 'XYZ'.
ps_passbyref = 'XYZ'.
ps_passbyval = 'XYZ'.
endform.
OUTPUT
ByRef : ABCD By Val : ABCD By Return Value : ABCD
ByRef : By Val : ABCD By Return Value :
Thanks in advance
Naveen
‎2007 Aug 03 1:50 AM
try this
write : / 'ByRef :', s_passbyref, 20 'By Val :', s_passbyval, 40 'By Return Value : ', ps_passbyretval.
‎2007 Aug 03 1:53 AM
The parameter "ps_passbyretval" is local to subroutine. Its not accessible in the main program.