锁定目录中的格式

时间:2014-07-31 18:12:36

标签: sas

我想在目录中锁定单独的格式,但我不确定是否有没有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;

对可以做什么和不能做什么以及正确的语法的任何澄清都会很棒。

1 个答案:

答案 0 :(得分:1)

据我所知,没有SAS / SHARE的SAS中的任何环境都不支持行级锁定(例如,请参阅this discussion on sascommunity)。这基本上就是这样(目录等同于数据集,因此目录条目基本上是一行或一组行。)

假设您的目标是拥有一组用户必须使用且可能无法编辑的格式,一个选项是使主格式目录完全锁定并存储在共享位置,然后允许用户自定义格式到另一种格式目录。然后使用fmtsearch设置优先级,使锁定的格式目录优先。

options fmtsearch=(master work user library);
此处必须明确列出

worklibrary,以避免默认情况下获得优先权。