This is a variation on the basic one-to-many merge, thinkin of variable & formatname as a single unit. The results of PROC CONTENTS would have the name of the format and match to the format name in your CNTLOUT data set.
However if you have multiple variables using the same format you may have more out put than you really want.
Also be aware that if you have the same format name in multiple libraries and do not restrict the input library when generating the CNTLOUT dataset results may be problematic.