1 "在使用子例程是用USING和CHANGING有值传递和引用传递两种方式
2 DATA: num1 TYPE i,
3 num2 TYPE i,
4 sum TYPE i .
5
6 *引用传递
7 PERFORM a USING num1 num2 CHANGING sum .
8 "传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又称为 Call By Address, "如果在子程序中地址中的值改变了, 外部实际变量的值也会跟着改变.
9 "USING和CHANGING都用了引用传递,所以num1,num2和sum的值都会变,而且不用等子例程运行完就会改变
10
11 *值传递
12 PERFORM b USING VALUE(num1) VALUE(num2) CHANGING VALUE(sum) .
13 "传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影响外部实际变量的值.
14 "USING和CHANGING都用了值传递,num1和num2用的是USING,值不会发生改变,sum用的是CHANGING,值会发生改变,并且是子例程结束才会 "改变