Enhancing a Report
/*--------------------------------------------------------------
SAS Sample Library
Name: ctaex02.sas
Description: Example program from SAS/ETS User's Guide,
The COMPUTAB Procedure
Title: Enhancing a Report
Product: SAS/ETS Software
Keys: programmable tabular reports
PROC: COMPUTAB
Notes:
--------------------------------------------------------------*/
data incomrep;
length type $ 8;
input type :$8. date :monyy7.
sales retdis tcos selling randd
general admin deprec other taxes;
format date monyy7.;
datalines;
BUDGET JAN1989 4600 300 2200 480 110 500 210 14 -8 510
BUDGET FEB1989 4700 330 2300 500 110 500 200 14 0 480
BUDGET MAR1989 4800 360 2600 500 120 600 250 15 2 520
ACTUAL JAN1989 4900 505 2100 430 130 410 200 14 -8 500
ACTUAL FEB1989 5100 480 2400 510 110 390 230 15 2 490
;
title 'Computab Report without Any Specifications';
proc computab data=incomrep;
run;
title 'Column Selection by Month';
proc computab data=incomrep;
rows sales--other;
columns jana feba mara;
mnth = month(date);
if type = 'ACTUAL';
jana = mnth = 1;
feba = mnth = 2;
mara = mnth = 3;
run;
proc computab data=incomrep;
/* add a new column to be selected */
/* qtr1 column will be selected several times */
columns actual1-actual3 qtr1 / nozero;
array collist[3] actual1-actual3;
rows sales retdis netsales tcos grosspft selling randd general
admin deprec operexp operinc other taxblinc taxes netincom;
if type='ACTUAL';
i = month(date);
if i <= 3 then qtr1 = 1;
collist[i]=1;
rowcalc:
if sales = . then return;
netsales = sales - retdis;
grosspft = netsales - tcos;
operexp = selling + randd + general + admin + deprec;
operinc = grosspft - operexp;
taxblinc = operinc + other;
netincom = taxblinc - taxes;
run;
/* now get the report to look the way you want it */
title 'Pro Forma Income Statement';
title2 'XYZ Computer Services, Inc.';
title3 'Period to Date Actual';
title4 'Amounts in Thousands';
proc computab data=incomrep;
columns actual1-actual3 qtr1 /
nozero f=comma7. +3 ' ';
array collist[3] actual1-actual3;
columns actual1 / 'Jan';
columns actual2 / 'Feb';
columns actual3 / 'Mar';
columns qtr1 / 'Total' 'Qtr 1';
rows sales / ' '
'Gross Sales ';
rows retdis / 'Less Returns & Discounts';
rows netsales / 'Net Sales' +3 ol;
rows tcos / ' '
'Total Cost of Sales';
rows grosspft / ' '
'Gross Profit';
rows selling / ' '
'Operating Expenses:'
' Selling';
rows randd / ' R & D';
rows general / +3;
rows admin / ' Administrative';
rows deprec / ' Depreciation' ul;
rows operexp / ' ' skip;
rows operinc / 'Operating Income';
rows other / 'Other Income/-Expense' ul;
rows taxblinc / 'Taxable Income';
rows taxes / 'Income Taxes' ul;
rows netincom / ' Net Income' dul;
if type = 'ACTUAL';
i = month( date );
collist[i] = 1;
colcalc:
qtr1 = actual1 + actual2 + actual3;
rowcalc:
if sales = . then return;
netsales = sales - retdis;
grosspft = netsales - tcos;
operexp = selling + randd + general + admin + deprec;
operinc = grosspft - operexp;
taxblinc = operinc + other;
netincom = taxblinc - taxes;
run;