Okay, Here is something that seems to be working for me.
Instead of 6 different cursors I create single cursor. Something like : (For now lets assume 2 cursors)
Select "a" as fld1, "b" as fld2, " " as fld3 from cursor1 ;
union all ;
select "1" as fld1, "2" as fld2, "3" as fld3 from cursor2 ;
into cursor ReportCursor
Ofcourse all the columns will have to be in same data type. Which doesnt seem to be big problem.
Now comes the logic-
Prior to report execution, I must know the count(*) from cursor1 and cursor2(gnCntCur1 & gnCntCur2)
In the report create Data Group on some variable (gnPageBreak). Set Initial value to 0 and Value to store to itself. Start each group on new page.
On exit of detail band, CheckForPageBreak()
PROCEDURE CheckForPageBreak
IF RECNO() = gnCntCur1
gnPageBreak = gnPageBreak +1 && This will create
another group on the report
ENDIF
ENDPROC
Ofcourse for different groups I need different labels. For that Set Print When to RECNO() > gnCntCur1. Proper check can be made for each labels.
And for that extra column from cursor1 (i.e. fld3) It is just to ensure both queries have equal number of columns.
Report formatting can become time consuming but isnt that very difficult.
I tried to explain what I am doing as much clear as I could.
Thanks Mike for the solution you provided. I am going to try that as well. Do let me know if you see any problems/bugs with what I am trying to implement.