Hi:
I can think of 2 possibilities -- if you are certain that the data are in the order you want, then use ORDER=DATA (for your group or order variable). See #1 below.
On the other hand, if you wanted to be absolutely sure that the data were in your order, you could make an ordering variable (see the variable AR_ORD) and then use that variable in your REPORT syntax. See #2 below.
With technique #1, the North area is first. With technique #2, the West area is first. For #2, you can use NOPRINT on the DEFINE statement to "hide" the AR_ORD variable from showing on the final output.
cynthia
[pre]
data myorder;
infile datalines;
input area $ subgrp $ amt;
array tmp{4} $5 _temporary_ ('West' 'South' 'East' 'North');
do i = 1 to 4 by 1;
if tmp(i) = area then ar_ord = i;
end;
return;
datalines;
North AA 100
South AA 100
East AA 100
West AA 100
North AA 100
South AA 100
East AA 100
West AA 100
North BB 100
North BB 100
South BB 150
South BB 150
East AA 175
East BB 175
West AA 200
West BB 200
;
run;
ods html file='c:\temp\certain_order.html' style=sasweb;
proc report data=myorder nowd;
title '1) using ORDER=DATA, North is first';
column area subgrp amt;
define area / group order=data;
define subgrp / group ;
define amt / sum;
run;
proc report data=myorder nowd;
title '2) using special variable, West is first';
column ar_ord area subgrp amt;
define ar_ord/ group /* noprint */;
define area / group;
define subgrp / group ;
define amt / sum;
run;
ods _all_ close;
title;
[/pre]