I haven't thought this all through, but maybe the STATS CARTPROD extension command available via the Extension Hub might help.
From the help...
Compute the Cartesian Product of Two Sets of Variables
The Cartesian product of two variables, say, a and b, is the collection of all combinations of the values of a with the values of b. If a has values 1, 1, 2 and b has values 'x', 'y', the Cartesian product is (1,'x'), (1,'y'), (1, 'x'), (1, 'y'), (2,'x'), (2,'y'). In SQL, this is known as the CROSS JOIN.
This command takes two sets of input variables in the same or different datasets and produces a new data file containing the Cartesian product of those variables.
• Each case in either dataset contributes to the result. Duplicate values are not eliminated.
The command either operates on the active dataset plus one other dataset or takes all variables from the active dataset. The first dataset is referred to as the left dataset, and the second as the right dataset.
►To run this procedure, from the menus choose:
Data
Data>Cartesian Product
From that you could select down to the desired cases. If these data sets are large, though, this might not be practical. With 1000 cases in each dataset, the result would have one million cases. That's not a big number for SPSS, but with 10000 cases in each file, you are looking at one hundred million cases. Still possible, but ...