* Что делать, если конечное значение индекса цикла !DO в макросе нужно определить из данных. * Автор: rlevesque@videotron.ca. SET MPRINT=no. DATA LIST LIST /id(F8) var1(F8). BEGIN DATA. 1 1 1 3 1 2 2 20 2 25 3 15 3 25 END DATA. LIST. SAVE OUTFILE='c:\\temp\\data.sav'. COMPUTE break_v=(id=1). AGGREGATE /OUTFILE=* /BREAK=break_v /var1_1 = SUM(var1). DO IF break_v=1. WRITE OUTFILE 'c:\\temp\\temp.sps' /"DEFINE !sum_1()"/var1_1/"!ENDDEFINE.". END IF. EXE. INCLUDE 'c:\\temp\\temp.sps'. GET FILE='c:\\temp\\data.sav'. DEFINE !doit(nb_loop=!TOKENS(1)) !DO !cnt=1 !TO !nb_loop COMPUTE !CONCAT(var,!cnt)=!cnt. !DOEND !ENDDEFINE SET MPRINT=yes !doit nb_loop=!sum_1. SET MPRINT=no EXECUTE.