This should work - with the clarification that the combination of rcd and company must maintain the same βcounterβ, even if it appears for several consecutive periods. I added a few lines to the test data to make sure I get the correct result.
Like Serg solutions (which answer another question), the solution makes one pass over the basic data, and then a second pass based on the results of the first pass (everything is in memory, so it should be relatively fast). There is no way around this - it requires two different analytic functions, where each depends on the results of the other, and nested analytic functions are not allowed. (This part of the answer is addressed by the OP comment on Sergey's answer.)
with test_data ( emplid, rcd, company, effdt, salary ) as ( select 100, 0, 'xyz', to_date('1/1/2000' , 'mm/dd/yyyy'), 1000 from dual union all select 100, 0, 'xyz', to_date('1/15/2000', 'mm/dd/yyyy'), 1100 from dual union all select 100, 0, 'xyz', to_date('1/31/2000', 'mm/dd/yyyy'), 1200 from dual union all select 100, 0, 'ggg', to_date('2/15/2000', 'mm/dd/yyyy'), 1500 from dual union all select 100, 1, 'abc', to_date('3/1/2000' , 'mm/dd/yyyy'), 2000 from dual union all select 100, 1, 'abc', to_date('4/1/2000' , 'mm/dd/yyyy'), 2100 from dual union all select 100, 0, 'xyz', to_date('5/1/2000' , 'mm/dd/yyyy'), 2200 from dual union all select 100, 1, 'ggg', to_date('8/15/2000', 'mm/dd/yyyy'), 2300 from dual )