楼主: gaotao0727
8242 10

[原创博文] do循环里面的Output语句有个疑问 [推广有奖]

  • 1关注
  • 10粉丝

已卖:67份资源

副教授

79%

还不是VIP/贵宾

-

威望
0
论坛币
545 个
通用积分
11.1290
学术水平
18 点
热心指数
18 点
信用等级
12 点
经验
27715 点
帖子
873
精华
0
在线时间
855 小时
注册时间
2011-8-8
最后登录
2025-9-11

楼主
gaotao0727 发表于 2012-5-9 15:44:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. data a;
  2.   seed1=161321804;/*赋予随机数种子初始值*/
  3.   seed2=135279821;
  4.   do i=1 to 5;
  5.      x1=ranuni(seed1);
  6.      x2=ranuni(seed2);
  7.      output;
  8.   end;
  9. proc print;
  10.   title '使用随机数函数';
  11. run;
复制代码
当执行上述程序时,得到5条记录;当去掉output语句再执行时,只得到一条记录,且这时的i=6。哪位大侠帮我解释一下为什么会出现这种情况??谢谢~~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:output put语句 outpu do循环 Out title 程序 记录

回帖推荐

pl172231 发表于2楼  查看完整内容

事实上,如果你没有写output语句,那么程序会默认在下面遇到的第一个run或者proc或者data关键词前面加上output,这个output是你不可见的,但却起着output的作用,如果你的output写在do组之外(不论是你写的还是程序默认加的),那么就是等到do组执行完才会触发一次,那时output的就是do组最后一次赋值结果了

本帖被以下文库推荐

沙发
pl172231 发表于 2012-5-9 16:18:09
事实上,如果你没有写output语句,那么程序会默认在下面遇到的第一个run或者proc或者data关键词前面加上output,这个output是你不可见的,但却起着output的作用,如果你的output写在do组之外(不论是你写的还是程序默认加的),那么就是等到do组执行完才会触发一次,那时output的就是do组最后一次赋值结果了
已有 2 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子
李会超 + 100 精彩帖子

总评分: 经验 + 103  论坛币 + 3   查看全部评分

藤椅
mymine 发表于 2012-5-10 07:58:52
学习了

板凳
gaotao0727 发表于 2012-5-10 09:00:05
pl172231 发表于 2012-5-9 16:18
事实上,如果你没有写output语句,那么程序会默认在下面遇到的第一个run或者proc或者data关键词前面加上out ...
豁然开朗,非常感谢~~~~~
衣带渐宽终不悔,为伊消得人憔悴~~

报纸
yongjiang2 发表于 2012-7-4 20:34:17
学习

地板
小扣子的 发表于 2013-4-7 10:01:00
那为什么i=6呢

7
ariman911 发表于 2013-4-7 12:31:22
因為在DO迴圈中的最後還默許一個i+1
Do i = 1 to 5;
.....
i+1;
end;
output;  <--默許的不用加
此時i=5進入迴圈時執行到i+1就變成6
出迴圈遇到output才變成i=6
如果你迴圈有加output
則DATA最後默許的output則無效
則程式變為
Do i = 1 to 5;
.....
output;
i+1;
end;
此時i=5進入迴圈
output時i=5
遇到i+1後雖變成6但是沒有output

8
zhy12212728 发表于 2013-4-7 12:59:23
强啊

9
小扣子的 发表于 2013-4-9 15:30:33
ariman911 发表于 2013-4-7 12:31
因為在DO迴圈中的最後還默許一個i+1
Do i = 1 to 5;
.....
感谢您 厉害

10
丘延君 发表于 2015-6-25 13:07:40
pl172231 发表于 2012-5-9 16:18
事实上,如果你没有写output语句,那么程序会默认在下面遇到的第一个run或者proc或者data关键词前面加上out ...
也就是说楼主的代码中,如果去掉output,则系统会默认run前面会出现一个output,而这个系统默认的output已经是属于在do组外的情况了,所以最终只会输出最后一次赋值的结果?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 04:36