SAS 程序的构成 1、SAS 程序的基本构成单位是SAS 语言元素,SAS 语言元素包括: (1)SAS 语句:主要指具有特定功能的关键词,宽泛的概念还包括SAS 中的变量、常量、SAS 名、运算符、控制符及其他特殊字符等。详见本章SAS 语句概念一节。 (2)SAS 系统选项:指影响SAS 作业的规则,可以控制SAS 执行操作,诸如SAS 系统的初始化、硬件和软件界面接口、输入、处理、输出SAS 作业或文件等。参见OPTIONS 语句。 (3)SAS 数据集选项:是指定和应用于数据集的动作,其他选项、参数、说明项也有类似作用,只是对象不同。本章DATA 语句中有数据集选项相关的一些介绍。 (4)SAS 函数和CALL 子程序:SAS 函数是一个子程序,根据函数的参数进行计算或系统处理,返回一个值;CALL 子程序的功能和函数类似,只是不能用于赋值语句中,可以改变量的值或执行系统函数。 (5)ARM 宏:当应用程序执行时,提供了测量应用程序效能的一种方法。ARM 宏是ARM(Application Response Measurement 应用程序响应测量)接口的一部分,而不是宏语言工具的一部分。 (6)SAS 输入和输出格式:SAS 规定的读写数据值的结构。本章INFORMAT 和FORMAT 语句有相关的一些内容。 2、语句的详细解释 - 1 /****************************\
- 2 | 10名学龄儿童的身高体重资料 |
- 3 \****************************/
- 4 OPTIONS nodate number=0;
- 5 DATA SASTJFX48_1;
- 6 INPUT name $ height weight @@;
- 7 BMI=weight/(height/100)**2;
- 8 LABLE BMI=‘body mass index’;
- 9 DATALINES; 25 ODS HTML CLOSE;
- 10 WangHB 149.4 30.8 WuCJ 167.6 46.6
- 11 ChenF 146.3 33.1 GaoSY 170.7 44.0
- 12 ZhanZL 161.5 36.3 LiYZ 164.6 40.8
- 13 ShenJJ 155.5 36.7 ZhaoJH 158.5 35.4
- 14 ZhangHX 149.4 33.1 WangXS 156.4 31.8
- 15 ;
- 16 RUN;
- 17 ODS HTML;
- 18 PROC MEANS data=SASTJFX48_1;
- 19 VAR bmi;
- 20 OUTPUT out=result mean=BMImean;
- 21 RUN;
- 22 PROC PRINT data=result (keep=BMImean);
- 23 FORMAT BMImean 4.1;
- 24 RUN;
- 25 ODS HTML CLOSE;
复制代码第1-3 行:为注释语句,并不是真正意义上的SAS 程序,是用户对程序或语句的注解和说明。 第4 行:为SAS 系统选项语句,以关键词“OPTIONS”开头,其后为OPTIONS 语句的参数(或称为选项);nodate 参数,指定不在结果标题中显示时间;number=0 选项,也可以写成nonumber,指定不在结果标题中显示页数。以分号(;)指示一条SAS 语句结束。 第5 行:数据步开始,以关键词“DATA”语句开头,后接数据集名,“SASTJFX19_1”是用户自定义的SAS 数据集名。 第6 行:“INPUT”是创建变量、读取数据值、给变量赋值语句,指定将读取的变量值赋予相应的变量,“name、height、weight”是用户自定义的输入变量名,“name”后跟随美元符号($)指定变量“name”为字符型变量,“height、weight”后未跟随美元符号,默认为数值型变量。“@@”符号是读取数据值的指针控制符号,指定在同一数据行可以读取2 个以上的观测数据。 第7 行: 是一个赋值语句, 建立BMI 变量, 通过等号( = ) 将表达式“weight/(height/100)**2”的返回值赋予变量BMI。 第8 行:通过“LABEL”语句设置变量BMI 的标签为“body mass index”。 第9 行:“DATALINES”语句单独占用一行,指示其后为数据行。 第10-15 行:为数据行,是用户在程序中输入原始数据的区域,这种在SAS 程序中录入并记取的数据也称为数据流数据。当到达SAS 数据集或原始数据(包括数据流数据和外部文件数据)末端再无数据可读取时,SAS 数据步反复读取数据的过程结束。第15 行单独一个分号(;)占用一行,称为空语句,指示数据行结束(所以DATALINES 语句是数据步的最后一个语句)。 第16 行:“RUN”语句指定运行上述程序。 第17 行:ODS 输出语句,指定结果以HTML 格式输出。 第18 行:“PROC”指示数据步开始,后接过程名,“MEANS”为SAS 过程名,可以在MEANS后加max、min、std 等参数,计算用户想得到的统计量,此处未加任何参数,计算得到默认的一些统计量;‘data=’为数据集选项,指定过程步分析的数据集为“SASTJFX48_1”。 第19 行:“VAR”语句后跟变量名,指定分析的变量。 第20 行:“OUTPUT”语句将运行结果输出,OUT 后为用户自定义的输出数据集名,mean为结果中的均数名,等号(=)后是用户自定义的输出名。 第21 行:“RUN”语句指定运行上述程序。 第22 行:调用PRINT 过程在结果窗口显示RESULT 数据集。圆括号中的‘keep=’是数据集选项,指定保留的变量,其后是变量名。 第23 行:“FORMAT”语句规定变量的输出格式,其后是变量名和输出格式,‘4.1’是标准数值型变量输出格式,指定输出变量占用4 个字符,并保留一位小数。 第24 行:“RUN”语句指定运行上述程序。 第25 行:与第17 行成对出现的ODS 语句,指示关闭HTML 格式输出。 SAS 程序的书写规则 SAS 程序具有比较自由、灵活的书写规则: 1、每条SAS 语句以分号(;)结尾。 2、SAS 语句可以从任何一行、任何一列开始,一行上可以写多条SAS 语句。 3、一条SAS 语句可以写在多行上,但不能把一个语法单位分开写在不同的行上。 4、一般情况下,一条语句中不同的语法单位要用空格或换行符分隔,但是一些字符的前方或后方,可以不用空格分隔,SAS 可以自动分析语句结构、识别语法单位。例如,表达式中大部分的运算符前后都不需要空格,如x + 1 / y 通常写作x+1/y。通常两个语法单位之间一个空格和多个空格的效果相同,但在双引号中把空格当作单词的一部分的情况除外。 5、SAS 语句书写不区分字母的大小写,但在一些特殊场合除外。例如,在单引号或双引号中的字符型常量区分大小写字母。 SAS 程序的书写格式 虽然SAS 书写程序比较灵活,但在书写格式上应当保持良好习惯,做到结构紧凑,条理清晰,便于阅读。 1、一行上一般只写一条SAS 语句。虽然一行上可以写多条SAS 语句,但一行上写一句使得程序更清晰、易读。 2、较长的语句可以占多行,从第二行起使用缩进格式以突出语句结构。 3、由于SAS 对空格的数目没有严格的限制,所以建议将SAS 程序写成便于阅读的分层嵌入式结构,其第一个语句和最后的RUN 语句由第一列开始书写,其他语句按程序的逻辑结构层次遵循缩进格式书写,以使得程序结构更为清晰。 4、为保持结构紧密,在不需要空格的地方不写空格。例如,由一些运算符连接的表达式之中。 5、所有的数据步和过程步均主动加上“RUN”或“QUIT”语句作为结束,使得程序各部分的边界更清楚。 6、尽量只使用小写字母,或者主要单词首字母大写,其余部分使用小写字母。例如,变量名stuname 可以写成StuName。 7、在较长的程序前后加上空行、注释语句等突出分段。 8、将自定义的SAS 名写成具有实际意义、简洁、便于记忆的名字,有利于书写其他语句或便于读者读懂SAS 程序。例如程序SASTJFX19_1 中的身高、体重、BMI 指数分别命名为height、weight、BMI,在用户读SAS 程序和结果时,都能快捷、自然的联想到这些变量的实际含义。 9、由于SAS 对中文的支持并不是很好,建议所有的语句及符号尽量在英文输入法状态下键入。 SAS 注释语句(SAS Comment) SAS 注释语句是方便读者阅读SAS 程序、语句的说明,SAS 在编译程序时将忽略这些注释语句。 SAS 注释语句有以下两种形式: *用户书写的说明或注解; 即以星号(*)开始,以分号(;)结束,其间为用户书写的说明或注解。这种形式要求 注释语句类似单独一条SAS 语句来书写,其内容不能包含分号。这种形式的注释语句不能用于宏程序中,如果需要在宏程序中添加注释语句,必须使用下面这种形式。 /*用户书写的说明或注解*/ 即以斜杠星号(/*)开始,以星号斜杠(*/)结束,其间为用户书写的说明或注解。这种形式的注释语句不能写成套嵌结构。 注释语句可以出现在SAS 程序除数据行的任何地方,并且没有长度限制,一般用来对程序、语句等进行说明、添加批注或者对要点进行记叙,也可以在调试SAS 程序时把某些语句暂时标注成注释格式,使之不被SAS 系统执行。将语句标注成为注释语句的快捷键是“Ctrl+/”,选中SAS 程序的一行或多行按下“Ctrl+/”后,选中的语句前后两端即分别加上“/*”和“*/”,使之成为注释语句,反之,去除这种格式的快捷键为“Ctrl+Shift+/”。 虽然注释语句并不是SAS 程序,但合理的注释是一个好的SAS 程序重要组成部分。写注释语句时应注意,其内容应当有实际意义,并且简洁,没有歧义,方便自己和他人阅读。为了使注释更加醒目、美观,注释语句可以有多种形式,如以下几种形式: - /********************
- This is a sample
- ********************/
复制代码- *------------------*
- | 这是一个样例 |
- *------------------*;
复制代码- /********************/
- /* This is a sample */
- /********************/
复制代码
|