Will you only do this for 1 observation or do you want this format for EVERY observation in a group? What is your destination of interest? (RTF, PDF, HTML)? Are DOB, PHONE and ZIP character or numeric variables? SAS expects an entire column of values to be of the same type (so, for example, if you had a column for SALES, then the value for SALES for EVERY row would be numeric).
In your example, FNAME, LNAME and possibly PHONE might be character, but DOB and ZIP might be numeric -- SAS would "want" the second column to be all character -- which would mean that you would have to convert DOB and ZIP to character variables in order to display them in the same column with FNAME, LNAME and PHONE.
Could you just use PROC TRANSPOSE with a WHERE statement to identify the one observation? Here is an example.
INPUT ID $ FNAME:$12. LNAME:$12. DOB:MMDDYY10. PHONE:$12. ZIP $;
FORMAT DOB MMDDYY10.;
1 JANE DOE 01/01/2001 999-999-9999 12345
2 JOHN DOE 10/10/1910 555-555-5555 56789
3 JIM DOE 12/12/1912 111-111-1111 34567
PROC TRANSPOSE DATA=HAVE OUT=WANT(RENAME=(COL1=VALUE)) NAME=VARIABLE;
WHERE ID = '2';
It essentially transposes 4 character variables in a DATA step program and then uses PROC REPORT to create the kind of output you want. The only differences in what you would have to do is:
1) you'd subset your data so you'd only have 1 obs of interest and
2) you'd have to use a DATA step and the PUT function to convert all your numeric variables to character and this means that
3) if you had special user-defined formats, you'd have to take those into account
you'd have to run PROC TRANSPOSE -- this will be easier if you do only have ONE observation. See the example below.
** alternate approach;
proc sort data=sashelp.class
where name in ('Alfred');
** transpose all variables -- usually only numeric are transposed;
** there will be a note in the log about automatic conversion of;
** numeric to character -- if you do not want this automatic conversion,
** (for example, if you have user-defined formats);
proc transpose data=onlyone out=charout;
var _character_ _numeric_;