SAS: Как добавить значение в скобках и кавычках в шаге данных? - PullRequest
0 голосов
/ 25 июня 2018

Я хочу создать таблицу с использованием шага данных в SAS, содержащего коды формата отображения для SSRS.

Например, у меня есть несколько таких кодов, как '#, 0; (#, 0)'но я получаю ошибки, когда пытаюсь присвоить это значение в шаге данных.Я также попытался сначала поместить его в макрос, но это не помогло.

Код:

%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;

data FORMAT_XREF;   
    length METRIC_TYPE DSP_FORMAT $ 20;

    if  METRIC_TYPE = 'TOT_ACCT' then
            do;
                DSP_FORMAT = quote(&fmt1.);
            end;
run;

Ошибка: 34 #, 0; (#, 0) _ _ 386 180_ 76 ОШИБКА 386-185: ожидание арифметического выражения.

ОШИБКА 180-322: оператор недопустим или используется не по порядку.

ОШИБКА 76-322: синтаксическая ошибка,заявление будет проигнорировано.

1 Ответ

0 голосов
/ 25 июня 2018

Ваша проблема здесь в том, что вы думаете, что функция quote делает что-то другое, чем она делает.

Функция кавычек добавляет к чему-либо двойные кавычки символов , а не кавычки, которые будут служить для разделения значения символа. Он по-прежнему принимает символьное значение в качестве ввода, которое вы не предоставляете (макро-переменная содержит текст, а не символьные значения, запомните).

Так что вам нужно:

%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;

data FORMAT_XREF;   
    length METRIC_TYPE DSP_FORMAT $ 20;

    if  METRIC_TYPE = 'TOT_ACCT' then
            do;
                DSP_FORMAT = "&fmt1.";
            end;
run;

Это должно хорошо сработать для вас. Если вам действительно нужны кавычки в значении , а также , вы можете обернуть вокруг него функцию quote (поэтому DSP_FORMAT = quote("&fmt1."); сохранит в переменной "#,0;(#,0)", включая символы ").

...