The key bit that you need but probably aren't familiar enough with SAS to fully understand is, from the online help,
When writing SAS data to a Stata file, the EXPORT procedure saves the value labels that are associated with the variables. The procedure uses the formats that are associated with the variables to retrieve the value entries.
That means that the variable labels and formats must be attached to the data set before export.
So the steps you would take would be:
1) make sure the FORMATS are available to your current session. That means execute the Proc Format code.
2) make a version of the data set that applies the formats and the labels.
3) export that new set.
The approach to making the exportable data set would look like this (after running the code with the PROC Format):
Data toexport;
set datasetyouhave;
%include "<path>format_statmentfilename.sas";
%include "<path>label_statementfilename.sas";
run;
Path should start at the disk, or root of a drive, and include the full path to the location you saved those files (you did didn't you?).
If your system is Unix/Linux base make sure of the case of the folders.
The %include statement is a way to bring in the code stored in an external file.
Then export the Toexport data set using the approach you did before.
Instead of a exporting the catalog, which I assume you meant for the Formats as otherwise no catalog should be involved, you can create data set by adding a CNTLOUT option to the proc format code. That would look like:
Proc format cntlout=library.formatdatasetname;
<other format code>
If you don't supply a library then the data set will be written in WORK library as usual. Then you have a dataset that you could export to STATA and use as you may have thought about with the catalog. The data set will have for each observation the name of the format, the start and end values of ranges for each format, the value to display, the format value type numeric or character and some other variables that display information about the ranges and options like "OTHER","HIGH" or "LOW" range limits and include/exclude ends of actual ranges like 1-50.
The START and END will be all character so may require some massaging after import into STATA if you want to use numeric values.