Hi:
In the documentation for the REPLACE statement, it says that:
If you use the REPLACE statement to create a style element in the new style definition, all style elements that inherit from that element inherit the definition that is in the new style definition. If you want to keep any attributes that are specified in the definition that is in the parent, you must respecify them in the definition that you create in the child style definition.
From the 9.1.3 doc as outlined here:
http://support.sas.com/rnd/base/early-access/odsdoc2/sashtml/tw5195/z1072349.htm
One reason for using REPLACE in 9.1.3 is that if you used the STYLE statement WITHOUT the correct FROM, inheritance did not cascade down to all the child elements, especially in situations with multiple parent templates involved. The use of REPLACE, especially with respecifying, allowed inheritance to happen after the style changes were applied. For example, if you only needed to change 2 colors in the color list, if you used REPLACE, and only specified the 2 colors, all the other colors in the color list would be undefined and would take on a default value. If you used REPLACE, you had to respecify ALL the colors including the 2 colors you wanted to change.
I'm not clear on why you think that the CLASS statement is -more- work than the REPLACE statement. In prior versions of SAS, you -did- have to trace inheritance. In SAS 9.2, I find that I do NOT have to do much inheritance tracing at all, in order to make my change. I just have to know what the style element is that needs to change. Compare these ways to make the header foreground color purple:
[pre]
** 9.2 syntax:
style Header /
foreground=purple;
class Header /
foreground=purple;
style Header from _self_/
foreground = purple;
** 9.1.3 syntax:
style Header from HeadersandFooters /
foreground = purple;
replace Header /
foreground=purple
background=white
font= fonts('HeadingFont');
[/pre]
You should find in SAS 9.2 that every element that inherits from Header will now show a color of purple, no matter which statement form you use. In SAS 9.1.3, different ways of specifying STYLE or REPLACE would have an adverse impact on inheritance -- sometimes you'd get purple, sometimes you wouldn't. That's the reason that REPLACE went away. For more information about the new syntax, refer to:
http://www2.sas.com/proceedings/sugi31/053-31.pdf
For help with a specific style template or the conversion of a 9.1.3 style template to a 9.2 style template, you might wish to work with Tech Support. In my experience, when converting from SAS 9.1.3 to SAS 9.2 syntax, my templates got shorter using the CLASS statement.
You say you find it useful to update a style element, but not have an impact on other style elements. That seems to defeat the purpose of having inheritance in the first place. I'm not sure you have an issue with the REPLACE statement. It sounds to me like you need to define an entirely new style element and then point to that style element for the report pieces where you don't want any impact from inheritance.
cynthia