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
* Макрос обеспечивает слияние любого количества последовательно
* поименованных файлов, по 50 файлов за итерацию.

*////////////.
DEFINE !merge4 (path=!TOKENS(1) /stem=!TOKENS(1) /n1=!TOKENS(1) /n2=!TOKENS(1))
GET FILE = !QUOTE(!CONCAT(!UNQUOTE(!path),!UNQUOTE(!stem),!n1,'.sav')).
!LET !inifile='*'
!DO !cnt=!n1 !TO !n2 !BY 49
!IF (!cnt=!n1) !THEN
  !LET !cnt1=!LENGTH(!CONCAT(!BLANK(!cnt),!BLANK(1))) 
!ELSE
  !LET !cnt1=!cnt
!IFEND

  !LET !cnt2=!LENGTH(!CONCAT(!BLANK(!cnt),!BLANK(48)))
  !IF (!BLANK(!cnt2) !GT !BLANK(!n2)) !THEN !LET !cnt2=!n2 !IFEND

ADD FILES FILE=!inifile
  !DO !fn=!cnt1 !TO !cnt2 /FILE=!QUOTE(!CONCAT(!UNQUOTE(!path),!UNQUOTE(!stem),!fn,'.sav')) !DOEND.

!DOEND
SAVE OUTFILE=!path + 'master.sav'.
!ENDDEFINE.
*////////////.

SET MPRINT=yes.
* Сливаем файлы (добавляем наблюдения) из файлов с file2 по file60.
!merge4 path="c:\\temp\\" stem=file n1=2 n2=60.