【基本概念】
--------------------------------------------------
简单说:
"过程",用Porcedure定义,没有返回值。
"函数",用Function定义,有返回值。
做完一件事,要返回参数结果的用函数,否则用过程。
--------------------------------------------------
关于参数:
对于过程和函数,可以传递参数(一般是变量,如:x,y等)
关于参数调用模式:
参数的变量调用,有2中模式:一种是调用中,可以改变变量的值(value——值模式);一种是值不改变,保持原值(reference——引用模式
)。
值——变量随程序计算而变化;
引用——变量被程序计算后,值保持不变。
--------------------------------------------------
使用方法:
第一种方法(命令):
SET UDFPARMS TO VALUE | REFERENCE
说明:
这个命令就是定义参数传递的模式,是“值(value)”还是“引用(refenrence)”。
值——变量随程序计算而变化;
引用——变量被程序计算后,值保持不变。
udfparms=user difind function parameters(用户自定义函数-参数的意思)
第二张方法(符号):
(1)要通过“值”传递数据时,可以将每个参数放入圆括号 (()) 中,
显示如下示例中:myFunc((var1),( var2))
(2)要通过“引用”传递数据时,在变量或数组名前用一个(@)前缀,
显示如下示例中:myFunc(@var1, var2)
--------------------------------------------------
回到题目:
一:clear &&清屏
store 3 to x &&x=3
store 5 to y &&y=5
&&这里可以理解还有一个语句,“默认情况,通过‘引用’将变量和数组传递给‘过程’。”
plus((x),y)
&&调用过程plus,输入参数是(x),y,其中(x)是值模式,y是引用模式,执行完过程,x=8(变化了),y=5(不变)
?x,y
&&屏幕显示x,y的值。8,5
procedure plus &&定义一个过程,名称plus
parameters a1,a2 &&plus 过程有2各输入参数a1,a2
a1=a1+a2
&&过程开始执行,参数a1+参数a2后,把值赋给a1=3+5=8,由于是值模式,变量x=8;
a2=a1+a2
&&过程继续执行,新a1+参数a2后,把值赋给a2,新a2值实际变为=8+5=13,由于是引用模式,变量y=5;
endproc &&过程结束
二:clear &&清屏
a=10 &&赋值,a=10
b=20 &&复制,b=20
set upfparms to reference
&&设置参数——引用模式,不改变参数值。
do sq with(a),(b)
&&执行过程,(a)(b)——参数值模式,这里程序故意对上一句做了一个不同模式的设置,验证效果;
?a,b
&&由于是值模式,参数值被调用后,会变化,所以打印:100,200
procedure sq &&过程定义sq
parameters x1,y1 &&参数x1,y1
x1=x1*x1 &&X1=10*10=100
y1=2*x1 &&Y1=2*100=200,参数b的值,这里没被用上,就被赋了新值。
endproc
温馨提示:答案为网友推荐,仅供参考