这应是考【UDFPARMS】设置,你的程序前面少了Set UDFPARMS语句吧?
写这个挺累,我不回答估计没人再跟你说了。
唉,费些口舌给你解释一下【参数传递】吧......
1、先解释【Set udfparms】,上面是语句,下面是注释。
Set UDFPARMS TO VALUE && 系统默认
*PLUS修改参数后,返回时不保留修改后的值,也就是【按值】
Set UDFPARMS TO REFERENCE
*PLUS修改参数后,返回时保留修改后的值,也就是【按地址】
2、再解释【直接指定方式】
X加括号就是【按值】,前面加@就是【按地址】
PLUS((X),Y) && X保留原值,Y按UDFPARMS设置。
PLUS(@X,Y) && X按修改值,Y按UDFPARMS设置。
PLUS(X,Y) && X和Y都按UDFPARMS设置。
3、如此一来,来看你的问题
默认情况下UDFPARMS=VALUE,你的答案应该是【C.3和5】
如果设置了UDFPARMS=REFERENCE,你的答案应该是【B.3和13】
这个回答给加100分不过分吧,哈哈
一开始X=3,Y=5.
在“PLUS((X),Y)”中,Y是“按地址传递”(双向传递,即实参值传给调用程序的形参,接着在调用程序中计算出的新的形参值又返回给实参),而X加了括号表示“按值传递”(单向传递,简单说X永远等于3,不管后面怎么运算)。
在“PROCEDURE PLUS”中算出形参A2=13,返回给实参Y=13,算出形参A1=8,但不返回给X,X依然等于3.
因此选B
答案是A