<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: PROC REPORT. obs number reported in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606693#M176212</link>
    <description>&lt;P&gt;Hi:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; The reason you are getting "odd" calculated values for your fake obs numbers is because PROC REPORT is calculating your value on EVERY row it writes and EVERY break. So you have a header row, that is row #1 and technically, the first data row on the report is absolute row #2. And, PROC REPORT is doing something at the break for MAKE so that is throwing off your COMPUTE block.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; PROC REPORT does NOT use OBS numbers like PROC PRINT. If you MUST have obs numbers, then just create them in a DATA step, they will be more accurate. Before you jump straight to macro code, always start with a working program and then macro-ize it. So I would recommend making sure the OBS column is right before macro-izing. This worked for me to make sure I had a working SAS program -- I used a DATA step to capture _n_ and in a production program, I would sort sashelp.cars first:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=sashelp.cars out=cars_make;
  by make;
run;
   
data finalcars;
   set cars_make;
      ** capture internal obs number into variable for reporting;
      ** after ensuring that data is correctly ordered by Make;
     _obs = _n_;
run;
 
** using firstobs and obs does not make sense if you are wanting to "group" by make;
** but I kept that part in the report definition;
proc report data=finalcars (firstobs= 1 obs= 50) ;
   column make _obs DISP_make _all_;
   define make /order noprint;
   define _obs /order;
   define DISP_make /computed;
   compute before make;
      cnt_make + 1;
      hold_make= make;
   endcomp;
   compute make;
      length sval $100 bk $20;
      if mod(cnt_make, 2) = 0 then bk= 'cxc4efd3'; 
      else bk= 'cxdddddd';
      sval= catt('style={background=', bk, '}');
      call define (_row_, 'style', sval);
   endcomp;
   compute DISP_make / character length= 20;
      DISP_make = hold_make;
   endcomp;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;
&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cynthia&lt;/P&gt;</description>
    <pubDate>Sat, 23 Nov 2019 17:47:37 GMT</pubDate>
    <dc:creator>Cynthia_sas</dc:creator>
    <dc:date>2019-11-23T17:47:37Z</dc:date>
    <item>
      <title>PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606682#M176204</link>
      <description>&lt;P&gt;I'm wondering why my code below starts from OBS of 2, not 1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
%let data= sashelp.cars;
%let FN= 1;
%let LN= 50;
%let column= _all_;
%let Gvar= make;
%let disp_Gvar= DISP_&amp;amp;Gvar.;
%let temp_Gvar= temp_&amp;amp;Gvar.;
%let cnt_Gvar= ctn_&amp;amp;Gvar.;
%let hold_Gvar= hold_&amp;amp;Gvar.;

	proc report data=&amp;amp;data. (firstobs= &amp;amp;FN. obs= &amp;amp;LN.) ;
		column obs &amp;amp;disp_Gvar. &amp;amp;column;
		define obs 			/computed;

		define &amp;amp;Gvar. 		/order noprint;
		define &amp;amp;disp_Gvar. 	/computed;

		compute obs;
			_obs + 1;
			obs = _obs;
			endcomp;

		compute before &amp;amp;Gvar.;
			&amp;amp;cnt_Gvar. + 1;
			&amp;amp;hold_Gvar.= &amp;amp;Gvar.;
			endcomp;
		compute &amp;amp;Gvar.;
			length sval $100 bk $20;
			if mod(&amp;amp;cnt_Gvar., 2) = 0 then bk= 'cxc4efd3'; else if bk= 'cxdddddd';
			sval= catt('style={background=', bk, '}');
			call define (_row_, 'style', sval);
			endcomp;
		compute &amp;amp;disp_Gvar. / character length= 20;
			&amp;amp;disp_Gvar. = &amp;amp;hold_Gvar.;
			endcomp;
		run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Report: Detailed and/or summarized report" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c header" scope="col"&gt;obs&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;DISP_make&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Model&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Type&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Origin&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;DriveTrain&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;MSRP&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Invoice&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;EngineSize&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Cylinders&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Horsepower&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;MPG_City&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;MPG_Highway&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Weight&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Wheelbase&lt;/TH&gt;
&lt;TH class="c header" scope="col"&gt;Length&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;MDX&lt;/TD&gt;
&lt;TD class="l data"&gt;SUV&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$36,945&lt;/TD&gt;
&lt;TD class="r data"&gt;$33,337&lt;/TD&gt;
&lt;TD class="r data"&gt;3.5&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;265&lt;/TD&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="r data"&gt;23&lt;/TD&gt;
&lt;TD class="r data"&gt;4451&lt;/TD&gt;
&lt;TD class="r data"&gt;106&lt;/TD&gt;
&lt;TD class="r data"&gt;189&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;RSX Type S 2dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$23,820&lt;/TD&gt;
&lt;TD class="r data"&gt;$21,761&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;200&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;31&lt;/TD&gt;
&lt;TD class="r data"&gt;2778&lt;/TD&gt;
&lt;TD class="r data"&gt;101&lt;/TD&gt;
&lt;TD class="r data"&gt;172&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;TSX 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$26,990&lt;/TD&gt;
&lt;TD class="r data"&gt;$24,647&lt;/TD&gt;
&lt;TD class="r data"&gt;2.4&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;200&lt;/TD&gt;
&lt;TD class="r data"&gt;22&lt;/TD&gt;
&lt;TD class="r data"&gt;29&lt;/TD&gt;
&lt;TD class="r data"&gt;3230&lt;/TD&gt;
&lt;TD class="r data"&gt;105&lt;/TD&gt;
&lt;TD class="r data"&gt;183&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;TL 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$33,195&lt;/TD&gt;
&lt;TD class="r data"&gt;$30,299&lt;/TD&gt;
&lt;TD class="r data"&gt;3.2&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;270&lt;/TD&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;TD class="r data"&gt;28&lt;/TD&gt;
&lt;TD class="r data"&gt;3575&lt;/TD&gt;
&lt;TD class="r data"&gt;108&lt;/TD&gt;
&lt;TD class="r data"&gt;186&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;3.5 RL 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$43,755&lt;/TD&gt;
&lt;TD class="r data"&gt;$39,014&lt;/TD&gt;
&lt;TD class="r data"&gt;3.5&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;225&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;3880&lt;/TD&gt;
&lt;TD class="r data"&gt;115&lt;/TD&gt;
&lt;TD class="r data"&gt;197&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;3.5 RL w/Navigation 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$46,100&lt;/TD&gt;
&lt;TD class="r data"&gt;$41,100&lt;/TD&gt;
&lt;TD class="r data"&gt;3.5&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;225&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;3893&lt;/TD&gt;
&lt;TD class="r data"&gt;115&lt;/TD&gt;
&lt;TD class="r data"&gt;197&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="l data"&gt;Acura&lt;/TD&gt;
&lt;TD class="l data"&gt;NSX coupe 2dr manual S&lt;/TD&gt;
&lt;TD class="l data"&gt;Sports&lt;/TD&gt;
&lt;TD class="l data"&gt;Asia&lt;/TD&gt;
&lt;TD class="l data"&gt;Rear&lt;/TD&gt;
&lt;TD class="r data"&gt;$89,765&lt;/TD&gt;
&lt;TD class="r data"&gt;$79,978&lt;/TD&gt;
&lt;TD class="r data"&gt;3.2&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;290&lt;/TD&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;3153&lt;/TD&gt;
&lt;TD class="r data"&gt;100&lt;/TD&gt;
&lt;TD class="r data"&gt;174&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;10&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 1.8T 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$25,940&lt;/TD&gt;
&lt;TD class="r data"&gt;$23,508&lt;/TD&gt;
&lt;TD class="r data"&gt;1.8&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;170&lt;/TD&gt;
&lt;TD class="r data"&gt;22&lt;/TD&gt;
&lt;TD class="r data"&gt;31&lt;/TD&gt;
&lt;TD class="r data"&gt;3252&lt;/TD&gt;
&lt;TD class="r data"&gt;104&lt;/TD&gt;
&lt;TD class="r data"&gt;179&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;11&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A41.8T convertible 2dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$35,940&lt;/TD&gt;
&lt;TD class="r data"&gt;$32,506&lt;/TD&gt;
&lt;TD class="r data"&gt;1.8&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;170&lt;/TD&gt;
&lt;TD class="r data"&gt;23&lt;/TD&gt;
&lt;TD class="r data"&gt;30&lt;/TD&gt;
&lt;TD class="r data"&gt;3638&lt;/TD&gt;
&lt;TD class="r data"&gt;105&lt;/TD&gt;
&lt;TD class="r data"&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;12&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 3.0 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$31,840&lt;/TD&gt;
&lt;TD class="r data"&gt;$28,846&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;TD class="r data"&gt;28&lt;/TD&gt;
&lt;TD class="r data"&gt;3462&lt;/TD&gt;
&lt;TD class="r data"&gt;104&lt;/TD&gt;
&lt;TD class="r data"&gt;179&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;13&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 3.0 Quattro 4dr manual&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$33,430&lt;/TD&gt;
&lt;TD class="r data"&gt;$30,366&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="r data"&gt;26&lt;/TD&gt;
&lt;TD class="r data"&gt;3583&lt;/TD&gt;
&lt;TD class="r data"&gt;104&lt;/TD&gt;
&lt;TD class="r data"&gt;179&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;14&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 3.0 Quattro 4dr auto&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$34,480&lt;/TD&gt;
&lt;TD class="r data"&gt;$31,388&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;25&lt;/TD&gt;
&lt;TD class="r data"&gt;3627&lt;/TD&gt;
&lt;TD class="r data"&gt;104&lt;/TD&gt;
&lt;TD class="r data"&gt;179&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;15&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A6 3.0 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$36,640&lt;/TD&gt;
&lt;TD class="r data"&gt;$33,129&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;TD class="r data"&gt;27&lt;/TD&gt;
&lt;TD class="r data"&gt;3561&lt;/TD&gt;
&lt;TD class="r data"&gt;109&lt;/TD&gt;
&lt;TD class="r data"&gt;192&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;16&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A6 3.0 Quattro 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$39,640&lt;/TD&gt;
&lt;TD class="r data"&gt;$35,992&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;25&lt;/TD&gt;
&lt;TD class="r data"&gt;3880&lt;/TD&gt;
&lt;TD class="r data"&gt;109&lt;/TD&gt;
&lt;TD class="r data"&gt;192&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 3.0 convertible 2dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;Front&lt;/TD&gt;
&lt;TD class="r data"&gt;$42,490&lt;/TD&gt;
&lt;TD class="r data"&gt;$38,325&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;TD class="r data"&gt;27&lt;/TD&gt;
&lt;TD class="r data"&gt;3814&lt;/TD&gt;
&lt;TD class="r data"&gt;105&lt;/TD&gt;
&lt;TD class="r data"&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A4 3.0 Quattro convertible 2dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$44,240&lt;/TD&gt;
&lt;TD class="r data"&gt;$40,075&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;220&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;25&lt;/TD&gt;
&lt;TD class="r data"&gt;4013&lt;/TD&gt;
&lt;TD class="r data"&gt;105&lt;/TD&gt;
&lt;TD class="r data"&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;19&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A6 2.7 Turbo Quattro 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$42,840&lt;/TD&gt;
&lt;TD class="r data"&gt;$38,840&lt;/TD&gt;
&lt;TD class="r data"&gt;2.7&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;250&lt;/TD&gt;
&lt;TD class="r data"&gt;18&lt;/TD&gt;
&lt;TD class="r data"&gt;25&lt;/TD&gt;
&lt;TD class="r data"&gt;3836&lt;/TD&gt;
&lt;TD class="r data"&gt;109&lt;/TD&gt;
&lt;TD class="r data"&gt;192&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;20&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A6 4.2 Quattro 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$49,690&lt;/TD&gt;
&lt;TD class="r data"&gt;$44,936&lt;/TD&gt;
&lt;TD class="r data"&gt;4.2&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;300&lt;/TD&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;4024&lt;/TD&gt;
&lt;TD class="r data"&gt;109&lt;/TD&gt;
&lt;TD class="r data"&gt;193&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;21&lt;/TD&gt;
&lt;TD class="l data"&gt;Audi&lt;/TD&gt;
&lt;TD class="l data"&gt;A8 L Quattro 4dr&lt;/TD&gt;
&lt;TD class="l data"&gt;Sedan&lt;/TD&gt;
&lt;TD class="l data"&gt;Europe&lt;/TD&gt;
&lt;TD class="l data"&gt;All&lt;/TD&gt;
&lt;TD class="r data"&gt;$69,190&lt;/TD&gt;
&lt;TD class="r data"&gt;$64,740&lt;/TD&gt;
&lt;TD class="r data"&gt;4.2&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;330&lt;/TD&gt;
&lt;TD class="r data"&gt;17&lt;/TD&gt;
&lt;TD class="r data"&gt;24&lt;/TD&gt;
&lt;TD class="r data"&gt;4399&lt;/TD&gt;
&lt;TD class="r data"&gt;121&lt;/TD&gt;
&lt;TD class="r data"&gt;204&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To get what I would like to have, the below change works for me.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;*WRONG;
		compute obs;
			_obs + 1;
			obs = _obs;
			endcomp;


*RIGHT;
		compute obs;
			_obs + 1;
			obs = _obs - 1;
			endcomp;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 23 Nov 2019 16:05:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606682#M176204</guid>
      <dc:creator>braam</dc:creator>
      <dc:date>2019-11-23T16:05:03Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606684#M176206</link>
      <description>&lt;P&gt;Try swapping:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;compute obs;
	_obs + 1;
	obs = _obs;
endcomp;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;For:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;compute obs;
	obs = _obs;
	_obs + 1;
endcomp;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 23 Nov 2019 16:19:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606684#M176206</guid>
      <dc:creator>jvdl</dc:creator>
      <dc:date>2019-11-23T16:19:32Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606687#M176207</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/290292"&gt;@jvdl&lt;/a&gt;&lt;BR /&gt;Thanks! That works.&lt;BR /&gt;&lt;BR /&gt;One more related question: In such a code, Is 1 initially assigned to _obs? Because its initial value hasn't been given.</description>
      <pubDate>Sat, 23 Nov 2019 16:55:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606687#M176207</guid>
      <dc:creator>braam</dc:creator>
      <dc:date>2019-11-23T16:55:46Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606688#M176208</link>
      <description>&lt;P&gt;Just noticed a weird pattern in the column of obs:&lt;/P&gt;
&lt;P&gt;8 and 28 are missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could anybody help me with that?&lt;/P&gt;</description>
      <pubDate>Sat, 23 Nov 2019 17:00:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606688#M176208</guid>
      <dc:creator>braam</dc:creator>
      <dc:date>2019-11-23T17:00:34Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606690#M176210</link>
      <description>&lt;P&gt;Hi:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Keep in mind that the "fake" obs number you are computing will NOT necessarily match the obs number that PROC PRINT would show.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Why are you overcomplicating this by using a macro. The best practice is to get the program working for 1 set of hardcoded variables and THEN to make the program more general by adding macro logic. It seems like you did NOT start with a working program.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cynthia&lt;/P&gt;</description>
      <pubDate>Sat, 23 Nov 2019 17:25:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606690#M176210</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2019-11-23T17:25:18Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606693#M176212</link>
      <description>&lt;P&gt;Hi:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; The reason you are getting "odd" calculated values for your fake obs numbers is because PROC REPORT is calculating your value on EVERY row it writes and EVERY break. So you have a header row, that is row #1 and technically, the first data row on the report is absolute row #2. And, PROC REPORT is doing something at the break for MAKE so that is throwing off your COMPUTE block.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; PROC REPORT does NOT use OBS numbers like PROC PRINT. If you MUST have obs numbers, then just create them in a DATA step, they will be more accurate. Before you jump straight to macro code, always start with a working program and then macro-ize it. So I would recommend making sure the OBS column is right before macro-izing. This worked for me to make sure I had a working SAS program -- I used a DATA step to capture _n_ and in a production program, I would sort sashelp.cars first:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=sashelp.cars out=cars_make;
  by make;
run;
   
data finalcars;
   set cars_make;
      ** capture internal obs number into variable for reporting;
      ** after ensuring that data is correctly ordered by Make;
     _obs = _n_;
run;
 
** using firstobs and obs does not make sense if you are wanting to "group" by make;
** but I kept that part in the report definition;
proc report data=finalcars (firstobs= 1 obs= 50) ;
   column make _obs DISP_make _all_;
   define make /order noprint;
   define _obs /order;
   define DISP_make /computed;
   compute before make;
      cnt_make + 1;
      hold_make= make;
   endcomp;
   compute make;
      length sval $100 bk $20;
      if mod(cnt_make, 2) = 0 then bk= 'cxc4efd3'; 
      else bk= 'cxdddddd';
      sval= catt('style={background=', bk, '}');
      call define (_row_, 'style', sval);
   endcomp;
   compute DISP_make / character length= 20;
      DISP_make = hold_make;
   endcomp;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;
&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cynthia&lt;/P&gt;</description>
      <pubDate>Sat, 23 Nov 2019 17:47:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606693#M176212</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2019-11-23T17:47:37Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606702#M176217</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/38890"&gt;@cynthia&lt;/a&gt;&lt;BR /&gt;&lt;BR /&gt;Thanks a lot for your kind explanation. I would follow your suggestion.&lt;BR /&gt;&lt;BR /&gt;Regarding FIRSTOBS and OBS, I am having them because I just would like to see the first 50 observations. I hope that they do not raise up any issues. (Well, PROC REPORT is still strange to me...)</description>
      <pubDate>Sat, 23 Nov 2019 19:15:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606702#M176217</guid>
      <dc:creator>braam</dc:creator>
      <dc:date>2019-11-23T19:15:54Z</dc:date>
    </item>
    <item>
      <title>Re: PROC REPORT. obs number reported</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606728#M176232</link>
      <description>Hi:&lt;BR /&gt;  FIRSTOBS and OBS work at the data set level, returning rows BEFORE they go to PROC REPORT. Trying to duplicate the internal observation number with PROC REPORT isn't something I would recommend trying in a COMPUTE block for the reasons previously mentioned.&lt;BR /&gt;Cynthia</description>
      <pubDate>Sat, 23 Nov 2019 23:10:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-REPORT-obs-number-reported/m-p/606728#M176232</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2019-11-23T23:10:43Z</dc:date>
    </item>
  </channel>
</rss>

