This example prints a phone list report using breakpoints. Each break is printed on a separate page. The data is not printed in columns to make it easier to see how breakpoints are set up. The employee phone list data is printed by state.
*(PHONE2.RMD)
*(example 2 - a report with break points.
An employee phone list is printed by state,
each state on a separate page.)
DEL phone.out
CON hifi
CLS
SET MESSAGE OFF
SET PAGEMODE OFF
SET LINES 15
SET VAR vState TEXT
DECLARE c1 CURSOR FOR SELECT DISTINCT state +
FROM salespeople
DECLARE c2 CURSOR FOR +
SELECT (LastName + ',' & FirstName), Phone, Lastname +
FROM salespeople WHERE state = .vState +
ORDER BY lastname
SET VAR vCol INT = 3, +
vRow INT = 2, +
vCount INT = 0, +
vPage INT = 1, +
vPageLimit = (CVAL('LINES'))
SET PAGEMODE ON
OPEN c1
FETCH c1 INTO vState ii1
WHILE SQLCODE <> 100 THEN
OUTPUT phone.out APPEND
WRITE 'List of employees in state of:', .vState, +
' Page:', .vPage AT .vRow, .vCol
SET VAR vRow = (.vRow + 1)
WRITE '----------------------------------' +
AT .vRow, .vCol
OPEN c2
FETCH c2 INTO vName i1 ,vPhone i2, vLastname i3
WHILE SQLCODE <> 100 THEN
SET VAR vRow = (.vRow + 1)
SET VAR vCount = (.vCount + 1)
IF vRow >= .vPageLimit THEN
NEWPAGE
SET VAR vRow = 2, vPage = (.vPage + 1)
WRITE 'List of employees in state of:', .VState, +
' Page:', .VPage AT .vRow, .VCol
SET VAR vRow = (.vRow + 1)
WRITE '----------------------------------' +
AT .vRow, .vCol
ENDIF
WRITE .vName=21 .vPhone AT .vRow .vCol
FETCH c2 INTO vName i1, vPhone i2, vLastname I3
ENDWH
CLOSE c2
SET VAR vRow = (.vRow + 2)
WRITE 'Number of employees for', .vState, 'is', +
.vCount AT .vRow, 10
OUTPUT SCREEN
SET VAR vRow = 3, vPage = (.vPage + 1), vCount = 0
FETCH c1 INTO vState ii1
ENDWH
OUTPUT screen
DROP CURSOR c1
DROP CURSOR c2
SET PAGEMODE OFF
SET LINES 20
TYPE phone.out