First off thanks for providing some example code and output, that makes answering the question a lot easier.
When using a greedy method that matches without replacement, PROC PSMATCH will print a warning message like the one you are seeing if there are some treated units in the support region that cannot be matched to any control unit. This could occur because of some constraint on the matching (the caliper constraint or variables specified in the EXACT= option) or because there are simply more control units than treated units in the support region. The optimal matching methods in PROC PSMATCH would return an error if there are unmatched treated units in the support region, but for the greedy matching methods the procedure will continue the analysis using the observations it can successfully match.
Because the OBS=MATCH option was specified in the OUTPUT statement, the output data set only contains the matched observations. So that is why it contains 3356 observations, one treated unit and one control unit from each of the 1678 matched pairs as indicated in the Matching Information table you provided.
... View more