/* (Вопрос) Требуется передать имя переменной из файла данных в качестве аргумента */ /* макроса. Затем я хочу, чтобы макрос работал со значениями этой переменной. */ /* Допустим, я передаю имя переменной V1 в макрос. V1 может принимать значения 243, */ /* 78, 432 или 8. Я хочу передать эти значения уже макропеременной. То есть что-то вроде...*/ /* !DO !I !IN(!MACVAR) . */ /* итерации со значениями переменной V1... */ /* !DOEND .*/ /* Возможно ли это? */ /* (Ответ) Размещён в новостной группе SPSS, 19.11.2002. Автор: Raynald Levesque. */ /* Следующий код делает то, что вам надо. */ SET MPRINT=no. *////////////////////. DEFINE !getval(fpath=!TOKENS(1) /varn=!TOKENS(1)) GET FILE=!fpath. COMPUTE nobreak=1. AGGREGATE /OUTFILE=* /BREAK=!varn /nbval = N(nobreak). COMPUTE nobreak=1. MATCH FILES FILE=* /BY nobreak /LAST=last. DO IF $CASENUM=1. - WRITE OUTFILE='c:\\temp\\syntax.sps' /'DEFINE !macvar()'!varn. ELSE IF NOT last. - WRITE OUTFILE='c:\\temp\\syntax.sps' /' '!varn. ELSE. - WRITE OUTFILE='c:\\temp\\syntax.sps' /' '!varn'!ENDDEFINE.'. END IF. EXECUTE. GET FILE=!fpath. INCLUDE 'c:\\temp\\syntax.sps'. !ENDDEFINE. *////////////////////. SET MPRINT=yes. * Пример. !getval fpath ='c:\\program files\\spss\\employee data.sav' varn =educ. * Вот содержимое файла syntax.sps, сгенерированного макросом. DEFINE !macvar() 8 12 14 15 16 17 18 19 20 21!ENDDEFINE.