PERFORM 구문과 FORM 구문 사이에 값을 주고받기 위해(공유하기 위해) 사용합니다. 이때 주고받는(공유하는) 값을 파라메터(매개변수)라고 합니다.
USING (+VALUE) | CHANGING | USING (VALUE없음) | |
---|---|---|---|
전달방법 | call by value | call by reference | call by reference |
데이터 활용 | 전달 | 전달 & (리시버의)변경 | 전달 & (리시버의)변경 |
전달 | 데이터 값 | 데이터의 주소 | 데이터의 주소 |
자신의 메모리 | 가짐 | 가지지 않음 | 가지지 않음 |
Actual Parameter (PERFORM) | 영향 X | 변경됨 | 변경됨 |
Formal Parameter (FORM) | 변경됨 | 변경됨 | 변경됨 |
USING
사용 시 FORM문에서 VALUE를 작성하지 않으면, 자신의 메모리를 가지고 연산을 돌릴 값이 없기 때문에 Call by Reference로 작동하게 된다.
PERFORM get_carrname USING gs_spfli-carrid <" ------ 인자로 이것을 사용하고>
CHANGING gs_spfli-carrname. <" -- 결과는 이것이 바뀐다.>
CALL BY REFERENCE
로 작동하지만, USING/CHANGING을 구분함으로써 코드를 볼 때 어떤 인자를 이용-결과로 어떤 것이 바뀌는지 한 눈에 보인다.PERFORM <서브루틴명> USING VALUE <값> TYPE <타입정의>.
FORM <서브루틴명> USING <pv_파라메터명> TYPE <타입정의>.
좋은 글 감사합니다.