SAS编程proc report

102:proc report(四讲)---proc templ

2022-03-31  本文已影响0人  SASPRO的打工人生活

我们今天接着讲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下面包含什么 ,这个太多了,

太多了,看公司需求吧,我就不讲了

上一篇 下一篇

猜你喜欢

热点阅读