I think if you use -tsset- to tell Stata it's a quarterly panel, you
can
then use -tsfill- to have Stata fill in the observations (with missing
data).

Thanks for the recommendation. In the end, I couldn't see how to get
-tsfill- to work in my case. However, I did come up with a solution
that might be helpful to others.

Recall the data are organized by row, with column headings of the form
"jul1959", "apr1960", "jul1960", "jul1961", etc. -- i.e. multiple
quarterly observations for some years, and at least one April (Q2) or
July (Q3) observation per year. Below is the code I used to get these
data into the desired balanced panel format in Stata:

The key, which took some experimenting, is to -reshape long- _twice_,
and to use both "id" and "year" as i() variables the second time
through. That, and some foresight in choosing the variable names x1 -
x4.