代码之家  ›  专栏  ›  技术社区  ›  David Locke

我可以将关于未初始化变量的注释升级为错误吗

  •  12
  • David Locke  · 技术社区  · 9 年前

    当SAS遇到未初始化的变量时,它将向日志输出一条注释,内容如下:

    NOTE: Variable not_in_data is uninitialized.
    

    SAS是否可以将该消息作为警告或错误输出?

    1 回复  |  直到 9 年前
        1
  •  17
  •   Joe    9 年前

    是(9.4或更高版本):

    option varinitchk = error;

    默认值为 note ,其他可能的值为 nonote warning .

    还有一个未记录的功能可以将某些注释更改为错误。您可以使用 option dsoptions = note2err ; 或通过添加 / note2err 到数据语句。我在SAS-L上找到了一个注释列表,该选项将更改为错误:

    19   Variable %*v is uninitialized.
    97   Missing values were generated as a result of
    98   Division by zero detected at %2q.
    99   Mathematical operations could not be performed
    108  Invalid numeric data, '%*s' , at %2q.
    109  Invalid character data, %f , at %2q.
    110  Invalid %sargument to function %b at %2q.
    139  Argument to function %*s is not a known variable name:  %*v.
    140  Argument to function %*s is not a valid variable name:  %*s.
    205  Invalid argument(s) to the exponential operator "**" at %2q.
    208  Invalid numeric data, %*s='%*s' , at %2q.
    209  Invalid character data, %*s=%f , at %2q.
    223  A number has become too large at %2q. %w%*s
    224  A number has become too large during the compilation phase.
    225  Division by zero detected during the compilation phase.
    242  Invalid argument(s) to the exponential operator "**".
    258  Invalid argument to function %*b at %2q.
    259  Invalid first argument to function %*b at %2q.
    260  Invalid second argument to function %*b at %2q.
    261  Invalid third argument to function %*b at %2q.
    262  Invalid fourth argument to function %*b at %2q.
    267  Argument %d to function %*b at %2q is invalid.
    356  The SUBSTR pseudo-variable function does not allow character
    424  Character values have been converted to numeric
    425  Numeric values have been converted to character
    429  A number has become too large during the compilation phase,
    430  Division by zero detected during the compilation phase,
    484  Format %*b was not found or could not be loaded.
    485  Informat %*b was not found or could not be loaded.
    

    Source