Here is a somewhat more general approach with a relatively efficient macro!
The Input Program merely simulates the data!
--
INPUT PROGRAM.
+ LOOP CASEID=1 TO 210000.
+ DO REPEAT D=D1 TO D5 / X= 2 5 14 30 3.
+ COMPUTE D=TRUNC(UNIFORM(X))+1.
+ END REPEAT.
+ DO IF $CASENUM <= 250.
+ COMPUTE INTERV=1.
+ XSAVE OUTFILE "C:\TEMP\Interv.sav".
+ ELSE.
+ COMPUTE INTERV=0.
+ XSAVE OUTFILE "C:\TEMP\Control.sav".
+ END IF.
+ END CASE.
+ END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.
**BEGIN ACTUAL RELEVANT CODE HERE!!! ***.
*------.
DEFINE CTR (!POS !TOKENS(1)/ !POS !CMDEND ,).
!LET !OUTX="SUM(1,("
!DO !D !IN (!2) !LET !OUTX=!CONCAT (!OUTX,!D," EQ LAG(",!D,")&") !DOEND
!LET !OUTX=!CONCAT(!OUTX,"1)*LAG(",!1,"))")
COMPUTE !1=!OUTX .
!ENDDEFINE .
*------.
DEFINE CCMatch
(CaseFil !CHAREND ('/') /CtlFil !CHAREND ('/')/ID !CHAREND ('/')/NRep !CHAREND ('/')/Demog !CMDEND )
GET FILE !QUOTE(!CaseFil).
RENAME VARIABLES !ID=@ID_INT.
SORT CASES BY !DEMOG.
CTR @REP1 !Demog.
LOOP @REP=1 TO !NREP.
+ COMPUTE @REPLIC=(@REP1-1)*!NREP +@REP.
+ XSAVE OUTFILE !QUOTE(!CONCAT(!CaseFil,"X")).
END LOOP.
EXECUTE.
*------.
GET FILE !QUOTE(!CtlFil).
COMPUTE @RANDOM=Uniform(1).
SORT CASES BY !Demog @RANDOM.
CTR @REPLIC !Demog.
MATCH FILES / FILE * / IN=@CONTROL / FILE=!QUOTE(!CONCAT(!CaseFil,"X"))/ IN=@INTER/ BY !Demog @REPLIC.
SELECT IF @CONTROL AND @INTER.
SORT CASES BY @ID_INT.
FREQ @REPLIC.
!ENDDEFINE.
*------.
SET MPRINT ON.
CCMATCH CaseFil C:\TEMP\Interv.sav
/CtlFil C:\TEMP\Control.sav
/ID CaseID
/NRep 3
/Demog D1 D2 D3 D4 D5.
EXECUTE.