BookmarkSubscribeRSS Feed
nupedoc79
Fluorite | Level 6

I have the below code. I wish to align the summary count under the correct column using the line statement with compute. Using @ doesnt seem to place the text where I need it to be. What I'm I doing wrong?

 

Options nodate nobyline pageno=1 PS=100 LS=160;

title1 "VBB Member Achievements for All Dates";    
title2 "RUN DATE: &SYSDATE9.";
title3 "&NoRecord";

proc report data=vbb_process out=vbb_out split='*' missing nowd;
 
 column incent_plan_effdt incentive_plan_name incentive_component_name last_name first_name subscriber_id
           subscriber_and_sfx relationship_code reward_earndt reward_type reward_amount incent_comp_achieve_earndt
           incent_comp_achieve_createdt elig_ruleset ;
    
 define incent_plan_effdt / group 'Incentative Plan Eff Dt' width=22;
 define incentive_plan_name / group 'Incentive Plan Name' width=19;
 define incentive_component_name / group 'Incentative Component Name' width=25;
 define last_name / order order=internal 'Last Name' width=9;
 define first_name / order order=data 'First Name' width=10;
 define subscriber_id / order order=data 'Subscriber Id' width=13;
 define subscriber_and_sfx  / order order=data 'Member Id' width=14;   
 define relationship_code / order order=data 'Relationship Code' width=17;
    define reward_earndt / order order=data'Reward Earned Dt' width=16;
 define reward_type / order order=data 'Reward Type' width=11;
 define reward_amount / order order=data 'Reward Amt' width=10 format=dollar5.2;
    define incent_comp_achieve_earndt / order order=data 'Incentative Component*Achievement Earn Dt' width=40;
 define incent_comp_achieve_createdt / order order=data 'Incentative Component*Achievement Created Dt' width=42;
 define elig_ruleset / order order=data 'Eligibility Classification' width=11;
 
 compute before incentive_plan_name;
  ipname = trim(incentive_plan_name);
 endcomp;

    compute before incentive_component_name;
     subcnt=0;
  memcnt=0;
    endcomp;

    compute after incentive_component_name;
  line @1 incentive_component_name $30. @40 subcnt 4. @45 memcnt 4.;
    endcomp;

 compute after subscriber_id;
     subcnt+1;
  subtot+1;
    endcomp;

 compute after subscriber_and_sfx;
     memcnt+1;
  memtot+1;
    endcomp;
   
 compute before incent_plan_effdt;
     subtot=0;
  memtot=0;
  ipe = incent_plan_effdt;
    endcomp;

 compute after incent_plan_effdt;
  line @1 ipname $60. 'Count' subtot 4. memtot 4.;
  line @1 ipe mmddyy10. subtot 4. memtot 4.;
    endcomp;
   
 break after incent_plan_effdt / skip;
 rbreak after / summarize dol;
run;

 

Sample Output:                                                     SubScriber_Id    Member_ID

                                                                               00000001111    000022222

                                            These are the count:           1                         1                         (what I need)

                                                                                        Theses are the counts:  1  1          (what I'm getting).

 

1 REPLY 1
Cynthia_sas
SAS Super FREQ
Hi: Typically @ controls in the LINE statement cannot be "lined up" in destinations other than the LISTING output destination. Since you did NOT show your full code, I am guessing that you are using PDF or RTF with ODS to make your output?

Basically, the LINE statement writes 1 big cell that spans the whole table in ODS destinations like PDF, RTF and HTML and so the placement underneath specific columns can be hard to manage.

There are other PROC REPORT techniques you can use, for example making a "helper" variable so you can have more than 1 break line.

Also, since you did not post any sample data, no one can run your code. It is not clear to me why you are calculating all the totals on your own, when PROC REPORT will do it for you.

And, some of your options, like SKIP, DOL, WIDTH= are all LISTING only options. So if you ARE writing to the LISTING window, then a LINE statement like
line @1 var1 $60. @56 var2 4. @72 var3 4.;
should work for you. If it doesn't work for you then you are not using the LISTING destination.

cynthia

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 938 views
  • 0 likes
  • 2 in conversation