SAS中文论坛
标题:
display函数和frame的返回值问题!
[打印本页]
作者:
shiyiming
时间:
2003-12-6 20:16
标题:
display函数和frame的返回值问题!
利用display函数调用事先创建好的一个frame,需要从该frame得到其返回值,frame的entry语句如下:
entry return=char;
其中不包含任何输入或输出的参数。
调用该frame的程序如下:
variable=display('xxx.frame');
运行后变量variable为空,不知为什么?事先给variable赋值,再调用display函数,variable的值也不发生任何变化,如同根本就没有调用过display函数一样。
以上做法存在哪些问题?请大侠们指点。谢谢!
作者:
shiyiming
时间:
2003-12-8 12:26
这个variable应该是display执行是否成功的标识值吧。
你先dcl char return;这个return是update型的。
然后用call display('***.frame',return);出现的界面以及随之的scl对return变量进行处理,当新出现的界面被关掉,回到原界面时,return变量已经被重新赋值了。
作者:
shiyiming
时间:
2003-12-8 13:21
似乎没有你那样的写法,只能call dispaly(test.frame, ID, Name, RC);
在上述语句中看不出类型,你必须在test.scl中最上面申明:
entry ID:input:num Name:update:char(50) optional=RC:output:num;
init:
......
input表示只读输入变量,返回调页面时值不改变;update表示可变变量,经过所调用页面的运算,会返回最新的值;output表示输出变量,返回最新值。你的需求应该update或output都能用。
option=表示可以不带此参数而调用页面。call dispaly(test.frame, ID, Name);
作者:
shiyiming
时间:
2003-12-8 14:59
谢谢二位的回复,二位说的都没错,而我的做法也正确。
display函数有两种用法,其一就是call display()的方法,其二就是我所用的vairable=display()的形式。前者在调用某个frame时可以同时指定参数,参数可反映在frame中所作的变化(update或output型参数),后者可直接得到从被调用frame中返回的值,如同调用某个method。frame中应包含如下代码:
entry x: input: num return=char;
init:
dcl char string;
...
other statements;
...
return string;
我已经成功实现第二种调用diaplay的方法,只不过就是要同时指定至少一个参数,返回值才能被成功输出。
作者:
shiyiming
时间:
2003-12-8 15:21
又长见识了,多谢student兄
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2