It may not be the best syntax, but I couldn't get any smaller code...
First, compute a new variable that equals a future date. Then compute another variable usind the DATEDIFF function:
Code:
COMPUTE datedif=DATEDIFF(<future variable name here>,data,"days").
Now, the syntax will restructure the data in order to have a single case for each ID and extract the early date based on the difference computed before.
Code:
SORT CASES BY person.
CASESTOVARS
/ID=person
/GROUPBY=VARIABLE.
COMPUTE earlydate=max(datedif.1 to datedif.X).
EXECUTE.
IF (earlydate=datedif.1) Date=data.1.
IF (earlydate=datedif.2) Date=data.2.
IF (earlydate=datedif.3) Date=data.3.
IF (earlydate=datedif.4) Date=data.4.
IF (earlydate=datedif.X) Date=data.X.
EXCUTE.
The DATE variable is the earliest date. Just change the syntax according to the number of cases you have.