| *(PHONE3.RMD)
|
| *(example 3 - this example includes a page header
|
| along with the break header. Multiple breaks are
|
| printed per page. The break header is repeated on
|
| subsequent pages if the break detail spans a page)
|
| DEL phone.out
|
| CON hifi
|
| CLS
|
| SET MESSAGE OFF
|
| SET PAGEMODE OFF
|
| SET LINES 25
|
| 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, +
|
| vPage INT = 1, +
|
| vPageLimit = (CVAL('lines')), +
|
| vCount INT = 0
|
| SET PAGEMODE ON
|
| OUTPUT phone.out
|
| WRITE 'Employee Phone List by State' AT .vRow, 25
|
| SET VAR vRow = (.vRow + 1)
|
| WRITE .#date AT .vRow, 32
|
| WRITE 'Page:', .VPage AT .vRow, 60
|
| SET VAR vRow = (.vRow + 2)
|
| OPEN c1
|
| FETCH c1 INTO vState ii1
|
| WHILE SQLCODE <> 100 THEN
|
| WRITE 'List of employees in state of:', .VState +
|
| 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 'Employee Phone List by State' +
|
| AT .vRow, 25
|
| SET VAR vRow = (.vRow + 1)
|
| WRITE .#date AT .vRow, 32
|
| WRITE 'Page:', .vPageAT .vRow, 60
|
| SET VAR vRow = (.vRow + 2)
|
| WRITE 'List of employees in state of:', .VState +
|
| AT .vRow, .VCol
|
| SET VAR vRow = (.vRow + 1)
|
| WRITE '----------------------------------' +
|
| AT .vRow, .vCol
|
| SET VAR vRow = (.vRow + 1)
|
| 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
|
| SET VAR vRow = (.vRow + 3), 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
|