我想在目录中锁定单独的格式,但我不确定是否有没有SAS / SHARE的方式。以下是一些示例格式:
proc format ;
picture testfmt1 low-high='000,000' (prefix='$');
picture testfmt2 low-high='000,000' ;
run;
我可以使用下面的代码锁定整个目录,但我只想锁定目录中的1种格式,我无法找出正确的语法,也找不到所用语法的任何具体示例。用于锁定整个目录的代码:
lock work.formats.catalog;
lock work.formats.catalog clear;
我没有SAS / SHARE,但文档似乎表示需要锁定单个条目。我并不熟悉术语,因此存在混淆:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001517609.htm
上述文档说锁定条目的语法是:
LOCK libref<.member-name<.member-type | .entry-name.entry-type>> <LIST | QUERY | SHOW | CLEAR>;
看起来管道符号表示我想要使用的语法是libref.entry-name.entry-type;
但是我已经尝试了所有我能想到的组合而没有运气。
奇怪的是,下面的代码运行虽然我不确定它在做什么,因为它似乎不是有效的语法:
lock work.formats.catalog.format;
对可以做什么和不能做什么以及正确的语法的任何澄清都会很棒。
答案 0 :(得分:1)
据我所知,没有SAS / SHARE的SAS中的任何环境都不支持行级锁定(例如,请参阅this discussion on sascommunity)。这基本上就是这样(目录等同于数据集,因此目录条目基本上是一行或一组行。)
假设您的目标是拥有一组用户必须使用且可能无法编辑的格式,一个选项是使主格式目录完全锁定并存储在共享位置,然后允许用户自定义格式到另一种格式目录。然后使用fmtsearch
设置优先级,使锁定的格式目录优先。
options fmtsearch=(master work user library);
此处必须明确列出 work
和library
,以避免默认情况下获得优先权。