Q: My ON-BREAK is not working as I am expecting it to work. Why?
A: Many novice users of SQR have problems with ON-BREAK format command and its parameters. We suggest the following:
---------------------------- Example code begins here -------------------------
!
! This report shows how multiple ON-BREAK's AFTER, BEFORE and LEVEL parameters
! interact.
!
begin-report
do main
do main2
do main3
end-report
begin-setup
page-size 55 75
end-setup
begin-heading 1
date-time (2,55) mm/dd/yy
date-time (2,64) hh24:mi
end-heading
begin-footing 1
page-number (1,60) 'Page '
end-footing
begin-procedure main
print 'In procedure main1' (+1,1)
begin-select
soc_sec_num &ssn1 (+1,1) on-break after=ss1_break level=1
psgr_lname &lname1 (+1,1) on-break before=lname1_break level=1
psgr_fname &fname1 (+1,1) on-break after=fname1_break level=2
address &address1 (+1,1) on-break before=address1_break level=2
city &city1 ! (+1,1)
state &state1 ! (+1,1)
let $new=&city1||' '||&state1
print $new (+1,1) on-break after=new_break
let #page-count=33
display #page-count
from passenger
end-select
new-page
end-procedure
begin-procedure main2
print 'In procedure main2' (+1,1)
begin-select
soc_sec_num &ssn2 (+1,1)
psgr_lname &lname2 (+1,1)
psgr_fname &fname2 (+1,1)
address &address2 (+1,1)
city &city2 (+1,1)
state &state2 (+1,1)
from passenger
end-select
new-page
end-procedure
begin-procedure main3
print 'In procedure main3' (+1,1)
begin-select
soc_sec_num &ssn3 (+1,1)
psgr_lname &lname3 (+1,1)
psgr_fname &fname3 (+1,1)
address &address3 (+1,1)
city &city3 (+1,1)
state &state3 (+1,1)
from passenger
end-select
new-page
end-procedure
begin-procedure ss1_break
print 'In ss1_break - this is an after proc. - level1' (+2,10)
end-procedure
begin-procedure lname1_break
print 'In lname1_break - this is a before proc. - level1' (+2,10)
end-procedure
begin-procedure fname1_break
print 'In fname1_break - this is an after proc. - level2' (+2,10)
end-procedure
begin-procedure address1_break
print 'In address1_break - this is a before proc. - level2' (+2,10)
end-procedure
begin-procedure new_break
print 'In new_break - this is a after proc.' (+2,10)
end-procedure
---------------------------- Example code ends here ---------------------------
Follows an example of using multiple breaks with output:
---------------------------- Example code begins here -------------------------
begin-report
do get-employees
end-report
... ! page setup and heading section
begin-procedure get-employees
begin-select
emp_state (0,1) on-break print=change/top-page skiplines=2
after=print-tot-for-state save=$old_state level=1
emp_city (,9) on-break print=change/top-page skiplines=2
after=print-tot-for-city save=$old_city level=2
emp_zip
move &emp_zip to $edit_zip xxxxx-xxxx
print $edit_zip (,27)
on-break print=change/top-page skiplines=2
after=print-tot-for-zip save=$old_zip level=2
emp_lname
emp_fname
... ! concatenate first and last name with comma to format for report and print
! concatenated field
emp_street (,62)
add 1 to #zip_emp_count ! variables to track number of
add 1 to #city_emp_count ! employees within each address
add 1 to #state_emp_count ! breakdown
add 1 to #emp_count
from employee
order by emp_state, emp_city, emp_zip, emp_lname
end-select
do print-grand-total
end-procedure
... ! procedures to print totals for state, city, zip to be called on breaks
! and grand totals using count variables listed above
---------------------------- Example code ends here ---------------------------
---------------------------- Example output begins here -----------------------
EMPLOYEES BY CITY, STATE, AND ZIP CODE
State City Zip Code Name Street
----- ----------- ---------- -------------------- --------------------
CA Long Beach 90806-1234 Evans, Edgar 14 Apple Way
King, Marsha 27 Kings Road
------------------------------------------------------
# of Employees with zip 90806-1234: 2
------------------------------------------------------
90064-5678 Mitchell, Pete 33 Smokey Drive
O'Brian, Tom 7 Palmer Street
------------------------------------------------------
# of Employees with zip 90806-5678: 2
------------------------------------------------------
--------------------------------------
# of Employees in Long Beach: 4
--------------------------------------
Los Angeles 90064-1234 Flynn, Erin 19 Will Road
------------------------------------------------------
# of Employees with zip 90o64-1234: 2
------------------------------------------------------
--------------------------------------
# of Employees in Los Angeles: 1
--------------------------------------
--------------------------------
# of Employees in CA: 1
--------------------------------
---------------------------- Example output ends here -------------------------