SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1339|回复: 4
打印 上一主题 下一主题

display函数和frame的返回值问题!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2003-12-6 20:16:10 | 只看该作者

display函数和frame的返回值问题!

利用display函数调用事先创建好的一个frame,需要从该frame得到其返回值,frame的entry语句如下:

entry return=char;

其中不包含任何输入或输出的参数。

调用该frame的程序如下:

variable=display('xxx.frame');

运行后变量variable为空,不知为什么?事先给variable赋值,再调用display函数,variable的值也不发生任何变化,如同根本就没有调用过display函数一样。

以上做法存在哪些问题?请大侠们指点。谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2003-12-8 12:26:07 | 只看该作者
这个variable应该是display执行是否成功的标识值吧。

你先dcl char return;这个return是update型的。
然后用call display('***.frame',return);出现的界面以及随之的scl对return变量进行处理,当新出现的界面被关掉,回到原界面时,return变量已经被重新赋值了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2003-12-8 13:21:24 | 只看该作者
似乎没有你那样的写法,只能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);
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2003-12-8 14:59:20 | 只看该作者
谢谢二位的回复,二位说的都没错,而我的做法也正确。

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的方法,只不过就是要同时指定至少一个参数,返回值才能被成功输出。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2003-12-8 15:21:38 | 只看该作者
又长见识了,多谢student兄
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-7 12:25 , Processed in 0.645503 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表