* Travel Expenses on Every Trip--by PUT ; DATA EXPENSE; INFILE 'A:\SASII\EXPENSES.TXT'; INPUT TRAVEL $ NAME $ ITEM $ EXPENSE; proc sort data=expense out=temp; by travel; data expense1; set temp; by travel; NO=first.travel; OPTIONS LS=64; DATA EXPENSE; INFILE 'A:\SASII\EXPENSES.TXT'; INPUT TRAVEL $ NAME $ ITEM $ EXPENSE; PROC SORT DATA=EXPENSE OUT=TEMP; BY NAME TRAVEL; * get the total expense of every travel; PROC MEANS DATA=TEMP NOPRINT; BY NAME TRAVEL; VAR EXPENSE; OUTPUT OUT=EXPENSE2 SUM=EXPENSE ; PROC SORT DATA=EXPENSE2; BY NAME ; * get the total and average expense of everyone; PROC MEANS DATA=EXPENSE2 NOPRINT; BY NAME ; VAR EXPENSE ; OUTPUT OUT=EXPENSE3 SUM=TEXPENSE MEAN=AVERAGE ; PROC SORT DATA=EXPENSE3; BY NAME; * put the total expense of everyone under his expense; DATA EXPENSE4; SET EXPENSE2 EXPENSE3; BY NAME; IF TRAVEL=' ' THEN EXPENSE=TEXPENSE; DATA EXPENSE5; MERGE EXPENSE4 EXPENSE3; BY NAME; * put the average exp of everyone at the first.name; PROC MEANS DATA=EXPENSE NOPRINT; VAR EXPENSE; * get the total expense of all persons; OUTPUT OUT=AA MIN=MINEX MAX=MAXEX SUM=SUM; * get the minimun and maximun bills; DATA AA; SET AA; NAME='ZZZZ'; DATA TOTAL; SET EXPENSE5 AA; BY NAME; * put SUM MIN MAX at the last obs of above data set; IF FIRST.NAME=1 THEN NAME1=NAME; ELSE NAME1=' '; * define a new variable NAME1; PROC PRINT;RUN; DATA _NULL_; SET TOTAL; BY NAME; FILE PRINT NOTITLES HEADER=PAGETOP; IF FIRST.NAME AND LAST.NAME=0 THEN PUT @6 53*'ƒ'/ @9 NAME CHAR6. ' averagely spent ' AVERAGE DOLLAR7.2 ' on every trip.'/ @6 53*'ƒ'// @15 NAME1 @27 TRAVEL @40 EXPENSE DOLLAR7.2; IF FIRST.NAME=0 AND LAST.NAME=0 THEN PUT @15 NAME1 @27 TRAVEL @40 EXPENSE DOLLAR7.2; IF FIRST.NAME=0 AND LAST.NAME THEN PUT @38 9*'ƒ'/ @40 EXPENSE DOLLAR7.2/; IF FIRST.NAME AND LAST.NAME THEN PUT @15 6*'=' @38 9*'='/ @15 'TOTAL' @38 SUM DOLLAR9.2/ @15 6*'=' @38 9*'='/// @15 33*'$'/ @15 '$' @47 '$'/ @15 '$ The MINIMUM bill is ' MINEX DOLLAR6.2 @47 '$'/ @15 '$ The MAXIMUM bill is ' MAXEX DOLLAR6.2 @47 '$'/ @15 '$' @47 '$'/ @15 33*'$'; RETURN; PAGETOP: PUT @17 'Travel Expenses on Every Trip'// @33 "By Xiao Chen on &sysdate"// @16 'Name' @25 'Travel No.' @40 'Expense'/ @15 6*'ƒ' @24 12*'ƒ' @39 9*'ƒ'; RETURN; RUN;