1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
* Автор: Rolf Kjoeller.
* Этот макрос конвертирует указанный ему файл синтаксиса в формат VB-скрипта
* так, чтобы его можно было скопировать и вставить в процедуру в скрипт.
* В итоге все команды синтаксиса будут содержаться в строке strCommands, которую можно будет запустить
* на выполнение средствами скрипта.

Set MPRINT=yes.
DEFINE publish (!POSITIONAL !CMDEND)

/* Файл синтаксиса читается как данные из текстового файла. Пустые строки опускаются */
DATA LIST FILE=!1 /#Text(A250) .
Select If Not RTrim(#Text) EQ "" .

/* Двойные кавычки заменяются одинарными */
Loop If RINDEX(#Text,'"') GT 0 .
  COMPUTE #pos=RINDEX(#Text,'"') .
  COMPUTE #Text=CONCAT(SUBSTR(#Text,1,#pos-1),"'",SUBSTR(#Text,#pos+1)) .
End Loop .

/* Добавляем формирование строки strCommands, объединяющей все команды */
String Text (A250) .
If RTrim(#Text) NE "" Text=CONCAT('strCommand = strCommand &','"',RTRIM(LTRIM(#text)),'" & vbCrLf') .

/* Теперь показываем получившиеся строки скрипта. Их можно вставлять в процедуру: */
Preserve .
Set WIDTH=250 .
LIST CASES /VARIABLES Text .
RESTORE .

!ENDDEFINE .

* Вызываем макрос с указанием пути к файлу синтаксиса, который нужно конверитровать.
publish "d:\\data\\syntax\\distributions\\Tests for significant differences in proportion.SPS" .