从程序员到数据科学家:SAS 编程基础 (03)
2017-04-26 00:36
218 查看
如果你要运行调试 SAS 代码,则需要安装SAS运行环境SAS Foundation;你也可以安装更加高级的 Windows 桌面客户端 SAS
Enterprise Guide,或者使用Web 客户端 SAS Studio来远程提交执行代码。
不管哪一种窗口界面,安装完毕后大体都会有三个窗口:编写/提交 SAS 代码的 [编辑] 窗口,查看SAS 代码运行细节的 [日志] 窗口,显示输出结果的 [输出] 窗口。
在代码窗口中输入如下代码,然后点击菜单 [运行(R)]à[提交(S)] 或者直接点击工具然上面的运行按钮,就可以在日志窗口中看到提交代码的细节和执行结果:在 [日志] 窗口中输出Hello
World!
Data _null_; put "Hello World!"; run;
在SAS 代码提交编译运行时,SAS 会检查语法错误,并将语法错误输出到日志窗口中。语句中常见的语法错误包括的关键字拼写错误,无效选项,引号不匹配,或者语句结束符分号缺失等。
语法错误信息包括出错的行列,以及错误的详细描述,显示在Log窗口中。语法错误包括ERROR和WARNING两大类,分别以红色和绿色显示。由于SAS具有强大的拼写错误容错能力,SAS能够智能修正的错误被归入WARNNING类错误,代码依然能正常运行。而红色表示SAS 未能修正的错误,用户必须修正后才能正常执行。比如:
procx printx datax=sashelp.class; run;
但对于一些参数错误,比如指定了不存在的数据集 sashelp.classx,SAS会以 ERROR显示。
59 proc print data=sashelp.classx; ERROR: 文件“SASHELP.CLASSX.DATA”不存在。 60 run;
注意:有时正是因为 SAS 运行环境对代码的容错能力太强,有些错误会隐藏得较深,并不能立马发现。我们可以采用分块调试的办法将语法错误限制在最小的范围内。比如:title "Hello World; SAS 只在第三次提交的时候才会报告错误。
SAS 程序编译之后,SAS扫描整个步骤,在到达 Step边界时如果没有语法错误则执行该步骤,直到整个SAS程序被处理完毕。
当代码编辑窗口激活时,你可以随时点击菜单 [文件(F)]à[保存(S)] 来保存您的代码。代码缺省以对应语言的编码(比如 中文是 Simplified
Chinese (EUC) )来保存。你也可以在保存代码对话框中指定Unicode UTF-8, UTF-16LE或 UTF-16BE编码格式,有/或者没有字节顺序标记的方式存储SAS 程序。
小知识:字节顺序标记BOM就是告诉文件读/写程序在文件最开始的2或3字节处有特殊值:EF
BB BF,FF FE,FE FF 分别表示UTF-8,UTF-16 Little Endian和 UTF-16
Big Endian。
你可能有疑问,为什么输出窗口竟然没有任何输出。与我们传统编程的I/O不同,SAS 的输出窗口是给前面提到的SAS输出传送系统ODS的LISTING 目标用的。上面的代码中没有任何ODS 输出,自然输出窗口中没有结果。让我们尝试创建一个数据,然后将数据打印到该窗口中:
/* InsideSAS * Ex1: output to ODS LISTING; */ data mydata; Name="Yinliang"; Sex='M'; Age=30; Height=175; Weight=83.5; run; ods _all_ close; *Close all ODS Destination; ods listing; *Open Listing Destination; proc print data=mydata; run;
提交代码执行后,输出窗口会打印用户创建的数据集 work.mydata, Work 是当用户没有显式指定时,SAS 运行时默认的 SAS 工作库。
在输出窗口,SAS 会打印出用户新创建的数据集 WORK.MyData
如果需要查看SAS 数据集的数据结构和定义,可以使用 PROC CONTENTS.比如:
proc contents data=mydata; run;
执行结果将显示在输出窗口中。
相关文章推荐
- 从程序员到数据科学家:SAS 编程基础 (08)- 表达式
- 从程序员到数据科学家:SAS 编程基础 (04)
- 从程序员到数据科学家:SAS 编程基础 (06)- DATA步与PDV
- 从程序员到数据科学家:SAS 编程基础 (05)
- 从程序员到数据科学家:SAS 编程基础 (02)
- 从程序员到数据科学家:SAS 编程基础 (07)- 常量与变量
- 从程序员到数据科学家:SAS 编程基础 (01)
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
- C#数据库编程基础之sql语句操作数据库数据
- 使用Java API压缩和解压缩数据-Java基础-Java-编程开发
- 数据处理的两个基本问题03 - 零基础入门学习汇编语言40
- 第9讲AE编程基础_数据加载与数据显示
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序
- 数据类型,运算符和表达式03 - 零基础入门学习C语言04
- 数据类型,运算符和表达式03 - 零基础入门学习C语言04
- DirectShow基础编程 采集视频数据
- Java中将数据由UTF8转换成GB2312格式-Java基础-Java-编程开发
- 全面理解Java中的String数据类型-Java基础-Java-编程开发
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03