SAS学习笔记43 宏语句
流程控制
%GOTO语句与%label语句是结合起来使用的。首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的。可实现与%IF %THEN / %ELSE相同的功能。
其中%GOTO语句中的label就是%label语句当中定义个label;%label语句中label后面的冒号不能省略(注:%label语句中的label不是个关键字,而是一个标记的名字。可用任何有效的SAS名代替)
提示:在使用%GOTO和%label语句的时候要非常谨慎,一不小心就会导致程序执行顺序错乱,出现死循环。
%RETURN语句用于跳出当前的宏程序,不再继续往下执行该宏。类似于循环中的BREAK语句
%ABORT语句用来对SAS程序做异常捕获。如果符合某些特殊条件,需要停止SAS执行,甚至结束当前的进程。这种情况下就需要该语句。根据不同的选项及环境有会有不同的结果。其语法形式为:
%ABORT <ABEND | CANCEL | <FILE> | RETURN | <n>>;
%ABORT语句会触发一个错误消息显示在日志当中,提示程序停止执行
ABEND选项将会导致直接关闭并退出当前的SAS会话进程
CANCEL选项不会导致关闭并退出当前的会话进程
RETURN选项同样会导致关闭并退出当前的会话进程
由于%ABORT语句基本上不会用到,此处就不做详细阐述
%GOTO、%label、%RETURN、%ABORT这四个语句是比较早的流程控制语句,在日常工作中几乎很少用到
有关宏变量
%LOCAL语句在宏内部用于声明某个宏变量是局部宏变量,与全局的宏变量进行区分(即使名字一样,在内外也是不一样的)。另外,该语句还可以在声明时设定宏变量为只读的
%LOCAL / READONLY macro-variable=value;
SAS学习笔记43 宏语句的更多相关文章
- SAS学习笔记41 宏变量存储及间接引用
Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...
- SAS学习笔记46 宏变量的可使用范围
全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...
- SAS学习笔记10 宏变量
一个宏变量存放的值保持不变直到被修改(全局变量) 引用时,变量名前加上"&" 宏变量在引用时放在双引号之间会被解读(单引号不会被解读) 用户定义的宏变量,有三种方式: %l ...
- SAS学习笔记44 宏函数
类SAS函数的宏函数 该部分函数共5个,其无论是名字.语法.功能都与SAS函数类似,只是在函数名前多了一个“%”.这5个宏函数分别是: %INDEX %LENGTH %SCAN %SUBSTR %UP ...
- SAS学习笔记37 宏程序中parmbuff选项
该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...
- SAS学习笔记42 宏程序
Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...
- SAS学习笔记7 合并语句(set、merge函数)
set函数:纵向合并数据集 set语句进行纵向合并.set语句的作用是将若干个数据集依次纵向连接,并存放到data语句建立的数据集中.若set后面只有一个数据集,此时相当于复制的作用 注:data语句 ...
- SAS学习笔记35 options语句
- SAS学习笔记32 select语句
随机推荐
- redis能否对set数据的每个member设置过期时间
第一种方法,拆分成多个key,每个key设置过期时间.第二种方法改为hashMap存储,加一个过期时间的字段.可以用sorted set,把要过期的member和key的信息放在sorted set的 ...
- DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件开发和交付的效率和质量提升方面的意义
DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件 ...
- C# GDI+ 简单实现图片写文字和图片叠加(水印)(转)
using System; using System.Collections; using System.Configuration; using System.Data; using System. ...
- MediaPlayer: BufferQueue has been abandoned 解决方案
最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfac ...
- 创建Bitmap之BitmapFactory
package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...
- 最简易的python web框架的后端实现
1.源代码 #!/usr/bin/python #encoding=utf-8 from flask import json, Flask, request app = Flask(__name__) ...
- Linux/CentOS下修改MAC地址
Linux/CentOS下修改MAC地址 摘自:https://blog.csdn.net/qq_33233768/article/details/64906265 2017年03月22日 11:06 ...
- python中列表,元组的乘法
直接上code吧,还可以这么玩儿 li=[1,] li=li*3 print(li) out: [1, 1, 1] =========== >>> t=(1,2) >>& ...
- SUBMIT标准程序取ALV数据
示例1: 调用J3RFLVMOBVEDH ,取物料的期初/ 期末庫存数.金额 FORM frm_call_j3rflvmobvedh. DATA: lr_bukrs TYPE RANGE OF buk ...
- 实例解析Python设计模式编程之桥接模式的运用
实例解析Python设计模式编程之桥接模式的运用 这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #e ...