Использование команды записи для создания нового синтаксиса - проблема с нежелательными пробелами - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь выполнить команду в списке переменных, которые хранятся в виде значений в другом файле.Для этого я создаю новый синтаксис, основанный на именах переменных, например:

WRITE OUT="\Selection.sps" 
    /"VARIABLE ATTRIBUTE VARIABLES = Final_",Var1," ATTRIBUTE=selectVars('yes')." .
EXECUTE.

Проблема между Final и Var1, я получаю 11 пробелов.Файл, в котором я хочу использовать этот макрос, имеет имена переменных как Final_Var1 (поэтому в новом файле Final добавляется к имени каждой переменной).Как я могу удалить пробел, чтобы на новую переменную можно было ссылаться правильно?Должен ли я создать новый файл или команды COMPUTE и CONCAT?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я нашел временное решение, чтобы удалить пробелы из переменных, я создаю новую переменную, используя:

    *Add a variable to use in .sps file.
NUMERIC A(F4).
COMPUTE A = Var1. 
ALTER TYPE A (A25).
STRING CMD (A100).
COMPUTE CMD = CONCAT("VARIABLE ATTRIBUTE VARIABLES = Final_", LTRIM (A) , ATTRIBUTE=selectVars('yes').").   
EXECUTE.

WRITE OUT="File location\Selection.sps" /CMD.
EXECUTE.

, и теперь макрос может быть создан с помощью Selection.sps.

Если существует более простой способ, пожалуйста, дайте мне знать!

0 голосов
/ 05 февраля 2019

Команда write ограничена подобным образом - вы не можете избежать пробелов или использовать trim.Для таких команд, как та, над которой вы работаете, нет способа собрать команду с помощью команды write - вам нужно заранее скомпоновать текст, а затем поместить его в команду write, поэтому -

strimg mycmd(a100).
compute mycmd=concat("VARIABLE ATTRIBUTE VARIABLES = Final_", 
      ltrim(string(Var1,f4)), 
      " ATTRIBUTE=selectVars('yes').").
WRITE OUT="\Selection.sps" /mycmd .
exe.

Обратите внимание, что это не единственный способ работы со списками переменных - вы можете использовать код Python в синтаксисе для более эффективного построения списков переменных.

...