Page Breaking In SQR

The page breaking functionality in SQR is really one of the most useful features in the language. The power of the page breaking functionality (on-break) is that you can break as required while processing rows being returned in a begin-select … end-select block.

So this means you can simply order the data selected out of the database and page-break as required rather than having to check for complex page break conditions manually using variables to store the last value(s) processed.

The key to the on-break code is the level parameter which is essentially acts a priority (level 1 is the first priority, then level 2, then level 3 and so on).

For example, here's a snippet of code used to break based on three selected columns:

begin-select
CRSE_ID ()
    on-break level=1
    print=never
CAMPUS ()
    on-break level=2
    print=never
ACAD_GROUP ()
    on-break level=3
    print=never
    before=Print-New-Page()
. . .
end-select

In this example, it will break in order of level priority, that is first on on a change to CRSE_ID, then on a change to CAMPUS and third on a change to ACAD_GROUP.

Note the procedure call to Print-New-Page() is made using the before keyword which means that the break happens before the next row change in ascending order of break levels. That is, the Print-New-Page procedure will happen before the change in data for a new CRSE_ID, CAMPUS and ACAD_GROUP combination.

sqr
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License