many thanks, but this still isn't quite what I'm looking for
using your approach, I would sort the data to group the applicable fields, then loop through and insert a blank row at 500, 1000, 1500, etc.
net result would look like
group 1 - 500 X ABC001
group 2 - 250 X ABC001 & 100 X ABC002 & 150 X ABC003
Group 3 - 500 X ABC003
Group 4 - 450 X ABC003 & 50 X ABC004
potentially this could result in any given block containing a trivial number of records that have been carried forward from a previous block, where the whole subgroup could have been contained with a block if the groups had been sorted and aligned (by the group subtotals)
if it helps, consider the CD filling model (how many files can I bestfit on a CD)
This must be do-able (the aforementioned CD tools are proof), but how??