102:proc report(四讲)---proc templ
我们今天接着讲proc template;
100:proc report(四讲)---proc template
define语句就不讲了,看以前的文章吧。主要是知道如何定义自己的template名称和如何继承父类template。
一:style语句:
STYLE style-element-name(s)
existing-style-element-name | _SELF_><"text">
style-attribute-specification(s)>;
参数1.style-element-name:指定要创建或修改的一个或多个样式元素。如果style-element-name是一个新的样式元素,那么PROC TEMPLATE将该样式元素存储在当前的样式中。如果style-element-name覆盖了另一个元素的父元素的样式元素,那么style-element-name的所有后代,包括那些从父元素继承的后代,也将继承新的属性。
总之style-element-name继承遵循的原则是以下几点:假设我们前面写了parent = styles.rtf,也就是继承的parent模板是rtf
(一)如果子样式中已经存在同名的样式元素,并且不是通过使用FROM选项创建的,那么子样式中的样式元素将覆盖父样式中同名的样式元素。
也就是这样写:style data 然后rtf中也有一个元素名称叫data,那么在这个style data定义的新的子元素都将覆盖rtf data中的子元素(也要是名字一样的)
(二)如果子样式中已经存在同名的样式元素,并且它是通过使用FROM选项创建的,那么来自父样式元素的样式属性将被吸收到子样式中的样式元素中。
也就是这样写:style data from data(后面的这个data是rtf中的),那么rtf中data定义的属性都将继承到新的data中,如果我们自己又在data中定义了新的元素属性,那么重名的就覆盖,不重名的就当作新的元素属性起作用。
(三)如果在一个样式中指定了多个相同的样式元素名称,并且不止一次指定了一个属性,则使用最后指定的属性的值。
也就是说如果
style data from data / color = red
color = black
color = white;
那么只有这个white起作用.
参数2. FROM existing-style-element-name| _SELF_:指定前面的style-element-name继承现有的style-element-name的样式属性。
style data1 from data2 / color=black;这句话的意思就是我们自己创建了一个style element叫dta1,继承的是data2,然后我们还往我们自己data1里面创建了一个
style-attribute------color=black
_SELF_:
specifies that the parent of the style element should have the same name as the new style element.指定样式元素的父元素应与新样式元素具有相同的名称。
一开始我没理解这个翻译,按理说不是说儿子要跟父亲保持一致吗?父亲叫什么名字儿子也要叫什么名字,怎么是样式元素的父元素应与新样式元素具有相同的名称。换一个角度,这个“指定”可以换成“要求",也就是如果你用了_SELF_ 选项,那么你新建的style element 就要跟父类的名字一样。这个_SELF_ 选项就默认包括了parent所有的style element。
看下面的例子:
style data,data1,dataemptyfrom _self_ / color = red
backgroundcolor = black;
等价于下面3个
style data from data/ color = red
backgroundcolor = black;
style data1 from data1/ color = red
backgroundcolor = black;
style dataempty from dataempty/
color = red
backgroundcolor = black
当你在一个style里面定义多个style element name(data\data1\dataempty),要用逗号分隔开。红色代表是我们自己创建的style element name,红色是parent里面存在的style element name,选哪种写法你自己看看是不是重复的,重复的就可以用第一种写法,减少代码量。
还有跟在existing-style-element-name | _SELF_> 的这个<"text">是什么意思?
提供关于STYLE语句的信息。这种类型的文本将成为已编译模板的一部分,您可以使用SOURCE语句查看该模板,而SAS注释不会成为已编译样式的一部分。
解释这些就很费时间了,有时间我再结合例子,现在只要是对这些语句有了解,知道是什么,怎么用。
参数3:</ style-attribute-specification(s)> 包括
style-attribute-name=< | >style-attribute-value两个部分
像color = red
color 就是style-attribute-name,red就是style-attribute-value
style语句就这些,介绍到这里,接着下一个:
二:class语句
你可能看过这样的写法:
style fonts from fonts;这其实就等价于classfonts,同时也等价于style fonts from _self_;这3句都是一样的作用。
所以class跟style的区别就是把"from","from _self_"隐藏了,但是起的作用是一样的
class语句的作用就是从名称类似(相同)的样式元素创建新样式元素。
CLASS style-element-name(s) <"text"> </ style-attribute-specification(s)>;
这两个参数跟style用法一样,class就这么点东西,所以style语句要认真看。
如果你看很久以前的文章,可能还会看到用replace选项的,但是replace语句已经被style替代了,停用了
但是还可以讲一下replace和style的区别,就是如果我们继承了某个父类的模板,然后想修改某个style element里面的style-attribute,用replace语句就得先把父类的style element都先复制下来,然后才能修改。
黄色部分是我们想修改的,你看得把整个fonts复制下来,然后才能修改。
但是用style语句,就不用这么麻烦了。
虽然还有这下面几个语句,但是不常用,所以就不介绍了,想了解的自己去SAS官网看看吧。
有人可能会问,我们工作中可能会用到什么style-element-name?然后style-element-name下面包含什么 ,这个太多了,
太多了,看公司需求吧,我就不讲了