SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 643|回复: 2
打印 上一主题 下一主题

请高手看看宏程序里面的条件语句为什么不能跳转?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-12-6 17:58:28 | 只看该作者

请高手看看宏程序里面的条件语句为什么不能跳转?

%macro lab1;
%if %sysfunc(exist(labo)) ne 0 %then %do;
proc datasets lib=work nolist;
  delete labo;
quit;
%end;
%do i= 1 %to 9;
data labout;
  set dog;
  where zc10&i. in(2,3) or zc70&i. in(2,3) or zc90&i. in(2,3) or zc130&i. in(2,3) or zch&i. in(2,3) ;
  typevar=lab10&i.;
  if vtype(typevar)="N"  then do;
  lab1 =put(lab10&i.,best.);
  lab7 =put(lab70&i.,best.);
  lab9 =put(lab90&i.,best.);
  lab13 =put(lab130&i.,best.);
  labh =put(labh&i.,best.);
  end;
  else do;
  lab1 =lab10&i.;
  lab7 =lab70&i.;
  lab9 =lab90&i.;
  lab13 =lab130&i.;
  labh =labh&i.;
  end;
  rename  zc10&i.=zc1 zc70&i.=zc7 zc90&i.=zc9 zc130&i.=zc13 zch&i.=zch;
  name=&i.;
run;
data laboo;
  length lab1  lab7  lab9  lab13  labh  $60.;
  set labout;
  keep no group treat_  name lab1 zc1 lab7 zc7 lab9 zc9 lab13 zc13 labh zch;
run;
proc append base=labo data=laboo force;run;
%end;
%mend;
option mprint ;
%lab1
如果typevar是字符型的话,应该运行这里:
  lab1 =lab10&i.;
  lab7 =lab70&i.;
  lab9 =lab90&i.;
  lab13 =lab130&i.;
  labh =labh&i.;
但是事实上没有。。。所以就出现错误
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-12-7 10:28:47 | 只看该作者

Re: 请高手看看宏程序里面的条件语句为什么不能跳转?

something wrong about using put funciton.
you can consider the ways like the following:

1.
typevar=lab101;
if vtype(typevar)="N" then do;
lab1 =putn(lab101,'best.');...
; else lab1 =lab101;
....
2.
in fact, in your case the cats() also works in a very elegant way:
lab1 =cats(lab101); *regardless of whatever type of lab101;

I did not know how come put() not working here: it looks like put() was verified in advance; and I met with the exact problem months ago.
Jingju
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-12-7 16:26:19 | 只看该作者

Re: 请高手看看宏程序里面的条件语句为什么不能跳转?

cats  thanks!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-7 23:53 , Processed in 0.070934 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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