专栏首页老Z的博客SAS宏程序中的查询

SAS宏程序中的查询

我们在写相对复杂的宏的时候,通常会在开始位置加一些判断,比如判断某个变量是否在、一个路径是否存在、一个路径下面某种文件是否存在。。。

前面两个在sascommunity中已经有了,链接分别为变量路径。搬运如下:

  1.  判断某个变量是否在
%macro VarExist(ds,var);
    %local rc dsid result;
    %let dsid=%sysfunc(open(&ds));
    %if %sysfunc(varnum(&dsid, &var)) > 0 %then %do;
        %let result=1;
        %put NOTE: Var &var exists in &ds;
    %end;
    %else %do;
        %let result=0;
        %put NOTE: Var &var not exists in &ds;
    %end;
    %let rc=%sysfunc(close(&dsid));
    &result
%mend VarExist;
  1. 判断一个路径是否存在
%macro DirExist(dir) ; 
   %local rc fileref return; 
   %let rc = %sysfunc(filename(fileref, &dir)) ; 
   %if %sysfunc(fexist(&fileref))  %then %let return=1;    
   %else %let return=0;
   &return
%mend DirExist;
  1. 判断一个路径下面某种文件(txt)是否存在可以用FILENAME PIPE,程序如下:
%let fexist=1;

filename fexist pipe "ls &dir.*.txt";

data _null_;
    infile fexist truncover end=eof;
    input;
    if prxmatch('/(\*\.txt not found)/', _INFILE_) then call symputx('fexist', 0);
run;

filename fexist clear;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SAS获取某目录下所有指定类型的文件名称

    今天看到一个群友提的一个问题:SAS中如何简单地获取某一目录下所有指定类型的文件名称并赋值为宏变量?用常规的方法可能要20多行代码,如果用FILENAME PI...

    专业余码农
  • 一道小学生的趣味数学题

    据说上图(来源于网络)中这道小学生趣味题只要聪明一点的小学生都可以解出来,成年人估计只要一分钟。我也试着用SAS来解答, 思路如下:首先获取所有的数字出现的位置...

    专业余码农
  • SAS矩阵重组

    最近看到一个群友提的一个问题:将上图中的名为HAVE的数据集转置成名为WANT的数据集。实现的方法有多种,最易懂的方法应该是TRANSPOSE,下面介绍其他几种...

    专业余码农
  • 用欧拉计划学Rust编程(第67题)

    如果知道一个节点的左、右节点的最大路径,可以很容易地计算出当前节点的最大路径,从底层开始,逐层计算每个节点到底部节点的最大路径上一层的最大路径,所以从每一层中最...

    申龙斌
  • iOS 开发中的 ViewModel

    MVVM 这个模式可能大家耳朵都听出茧了,但却没有多少人真正在项目中应用过,毕竟 Cocoa Touch 整体是基于“MVC”的,没有 Controller 根...

    Sheepy
  • iOS runtime--获取类信息

    在iOS中可以通过runtime获取一个类的相关信息:有哪些方法、有哪些协议、有哪些属性、有哪些成员变量。安排的明明白白,老铁O(∩_∩)O哈哈~

    用户6094182
  • BigGAN学会“七十二变”:跟着视频模仿动物,看到啥就能变啥

    以前BigGAN只是用来生成静态图片,现在它已经学会了孙悟空的“七十二变”。给它一段视频,它就可以随着视频实时变化。

    量子位
  • BigGAN学会“七十二变”:跟着视频模仿动物,看到啥就能变啥

    以前BigGAN只是用来生成静态图片,现在它已经学会了孙悟空的“七十二变”。给它一段视频,它就可以随着视频实时变化。

    量子位
  • C语言判断某年是否只闰年

    解题思路:首先要想出如果这一年是闰年的条件,闰年是公历中的名词,分为普通闰年和世纪闰年,普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年;世纪闰年...

    C语言入门到精通
  • C语言 | 判断某年是否只闰年

    这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。

    公众号C语言与CPP编程

扫码关注云+社区

领取腾讯云代金券