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:

  • 1) Study carefully the example in SQR Workbench 2.5 User's Guide on p.4-112.
  • 2) Most important - experiment in a similar way shown in this example:
    ---------------------------- 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 -------------------------