NumFirms: gives the number of firms for each sector
IP1 until IP67: deflators  
IPUsado: the number of the deflator used for each sector
In another dataset (main dataset), I have some variables ordered by
Sector, Firm, Year
I would like to build a column containing all the deflators used in 
order to merge it with my main dataset.
A simplified subset of my dataset of IPS would look like:
NumFirms  IP1   IP2  ... IP67     IPUsado
2         1     1         1          2
4         1.23  1.12      1.08       1
3          1.45  1.23      1.12      67
.         1.50  1.34      1.16       2 
.         1.53  1.43      1.23       1
I need to create a new variable which would look like:
IP
1        
1.12        
1.23          this is the IP2 used for the first firm of the first 
1.34          sector  
1.43  
1        
1.12        
1.23          this is the IP2 used for the second firm of the first 
1.34          sector  
1.43  
1     
1.23  
1.45          this is the IP1 used for the first firm of the
1.50          second sector
1.53 
...
1     
1.23  
1.45          this is the IP1 used for the last(3rd) firm of the
1.50          last sector
1.53 
Should anyone find another possibility to accomplish that aim, I would be 
very glad to learn it.
 
I had already succeeded in creating the variable by using the following 
approach. It is really a na�ve one but faster than a nested sequence of fors 
as Mr Winter has warned me.
____________________________________________________________________________
clear
set more off
local deflator="C:\DATA\RJ\def_96.dta" /*the name of the file containing the 
      deflators*/
local num_anos=5 /*number of years*/
use `deflator' 
local q=0
foreach var of varlist _all { 
use `deflator' 
local q=`q'+1
keep `var'
ren `var' var1
save ip`q'.dta, replace}
use "C:\DATA\RJ\Concatena_Oficial.dta", clear /*dataset which contains 
IPUsado and NumF*/
gen parmer=_n
local varMer=NumFirms[1]*`num_anos' /*para nao ter missing na primeira*/
local IPF1=IPUsado[1]
sort parmer
save "C:\DATA\RJ\Col_IP_oficial.dta", replace
su NumFirms, meanonly
local Tot_set=r(N)
set obs `varMer'
cd C:\DATA
merge using  ip`IPF1'.dta
drop _merge parmer
ren var1 var2
local step1=var2[1]
local step2=var2[2]
local step3=var2[3]
local step4=var2[4]
local step5=var2[5]
egen var1=fill( `step1' `step2' `step3' `step4' `step5' `step1' `step2' 
`step3' `step4' `step5')
drop var2
forvalues sector=2 3 to `Tot_set' {
        local Tot_Firm=NumFirms[`sector']   
        local IP=IPUsado[`sector']      
        forvalues firm=1 2 to `Tot_Firm' { 
               append using"c:\Data\ip`IP'.dta" 
        }
}
____________________________________________________________________
I am new to Stata, and I am meaning to use it as much as possible,
thanks again for the attention,
Euler
Ps.:A matlab code to achieve the same result would be sth like:  
Super=[];
for i=1:size(NumFirms,1)
   Super=[Super; repmat(IPA(:,IPUsado(i,1)),NumFirms(i,1),1)];
end
clear i
but I do not feel like changing packages every time I need to solve a problem.
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/