1. -- 
  2. --  Uwe R. Zimmer, Australia, September 2011 
  3. -- 
  4.  
  5. package body Sub_Ranges is 
  6.  
  7.    function Range_First (Range_No : Positive) return Full_Range is 
  8.  
  9.    begin 
  10.       if Range_No = 1 then 
  11.          return Full_Range'First; 
  12.       else 
  13.          return Full_Range ((Natural (Range_No) - 1) * Natural (Full_Range'Last - Full_Range'First) / Natural (No_Of_Sub_Ranges) 
  14.                             + Integer (Full_Range'First) + 1); 
  15.       end if; 
  16.    end Range_First; 
  17.  
  18.    function Range_Last (Range_No : Positive) return Full_Range is 
  19.  
  20.    begin 
  21.       if Range_No = No_Of_Sub_Ranges then 
  22.          return Full_Range'Last; 
  23.       else 
  24.          return Full_Range (Natural (Range_No) * Natural (Full_Range'Last - Full_Range'First) / Natural (No_Of_Sub_Ranges) 
  25.                             + Integer (Full_Range'First)); 
  26.       end if; 
  27.    end Range_Last; 
  28.  
  29. end Sub_Ranges;