home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
DESKTOP
/
JIMSBOOK.ZIP
/
BLKBOOK.LST
< prev
next >
Wrap
File List
|
1990-10-28
|
72KB
|
1,076 lines
BLKBOOK.CLA CLARION COMPILER v2.0
10/27/90 11:52 PM PAGE 1
1 BLKBOOK PROGRAM
2 1 INCLUDE('STD_KEYS.CLA')
3 1 INCLUDE('CTL_KEYS.CLA')
4 1 INCLUDE('ALT_KEYS.CLA')
5 1 INCLUDE('SHF_KEYS.CLA')
6 1
7 1 REJECT_KEY EQUATE(CTRL_ESC)
8 1 ACCEPT_KEY EQUATE(CTRL_ENTER)
9 1 TRUE EQUATE(1)
10 1 FALSE EQUATE(0)
11
12 1 MAP
13 2 PROC(G_OPENFILES)
14 2 PROC(MAIN_MENU) !ADDRESS/PHONE BOOK
15 2 PROC(SHO_NAME) !Show Blkbook By Name
16 2 PROC(SHO_PHONE) !Show Blkbook By Phone
17 2 PROC(UPD_BLKBOOK) !Update Blkbook
18 2 PROC(RPT_NAME) !Print Blkbook By Name
19 2 PROC(RPT_PHONE) !Print Blkbook By Phone
20 2 .
BLKBOOK.CLA CLARION COMPILER v2.0
FILE LAYOUTS 10/27/90 11:52 PM PAGE 2
22 1 BLKBOOK FILE,PRE(BLK),CREATE,RECLAIM
23 2 BY_NAME KEY(BLK:NAME),NOCASE,OPT
24 2 BY_PHONE KEY(BLK:PHONE),NOCASE,OPT
25 2 COMMENTS MEMO(10000)
26 2 RECORD RECORD
27 3 NAME STRING(25)
28 3 PHONE DECIMAL(12,0)
29 3 STREET STRING(25)
30 3 CITY STRING(25)
31 3 STATE STRING(2)
32 3 ZIP DECIMAL(5,0)
33 3 . .
34 1 GROUP,OVER(BLK:COMMENTS)
35 2 BLK_MEMO_ROW STRING(35),DIM(285)
36 2 .
37
BLKBOOK.CLA CLARION COMPILER v2.0
GLOBAL MEMORY VARIABLES 10/27/90 11:52 PM PAGE 3
39 1 ACTION SHORT !0 = NO ACTION
40 !1 = ADD RECORD
41 !2 = CHANGE RECORD
42 !3 = DELETE RECORD
43 !4 = LOOKUP FIELD
44 1 GROUP,PRE(MEM)
45 2 MESSAGE STRING(30) !Global Message Area
46 2 PAGE DECIMAL(3,0) !Report Page Number
47 2 LINE DECIMAL(3,0) !Report Line Number
48 2 DEVICE STRING(30) !Report Device Name
49 2 .
50
BLKBOOK.CLA CLARION COMPILER v2.0
CODE SECTION 10/27/90 11:52 PM PAGE 4
52 1 CODE
53 1 SETHUE(7,0) !SET WHITE ON BLACK
54 1 BLANK ! AND BLANK
55 1 G_OPENFILES !OPEN OR CREATE FILES
56 1 SETHUE() ! THE SCREEN
57 1 MAIN_MENU !ADDRESS/PHONE BOOK
58 1 RETURN !EXIT TO DOS
59
60 1 G_OPENFILES PROCEDURE !OPEN FILES & CHECK FOR ERROR
61 1 CODE
62 1 SHOW(25,1,CENTER('OPENING FILE: ' & 'BLKBOOK',80)) !DISPLAY FILE NAME
63 1 OPEN(BLKBOOK) !OPEN THE FILE
64 1 IF ERROR() !OPEN RETURNED AN ERROR
65 2 CASE ERRORCODE() ! CHECK FOR SPECIFIC ERROR
66 3 OF 46 ! KEYS NEED TO BE REQUILT
67 3 SETHUE(0,7) ! BLACK ON WHITE
68 3 SHOW(25,1,CENTER('REBUILDING KEY FILES FOR BLKBOOK',80)) !INDICATE MSG
69 3 BUILD(BLKBOOK) ! CALL THE BUILD PROCEDURE
70 3 SETHUE(7,0) ! WHITE ON BLACK
71 3 BLANK(25,1,1,80) ! BLANK THE MESSAGE
72 3 OF 2 !IF NOT FOUND,
73 3 CREATE(BLKBOOK) ! CREATE
74 3 ELSE ! ANY OTHER ERROR
75 3 LOOP;STOP('BLKBOOK: ' & ERROR()). ! STOP EXECUTION
76 3 . .
77
78 1 BLANK !BLANK THE SCREEN
79
80
BLKBOOK.CLA CLARION COMPILER v2.0
ADDRESS/PHONE BOOK 10/27/90 11:52 PM PAGE 5
82 1 MAIN_MENU PROCEDURE
83
84 1 SCREEN SCREEN PRE(SCR),WINDOW(16,30),HUE(15,3)
85 2 ROW(1,1) STRING('╔═{28}╗'),HUE(15,3)
86 2 ROW(2,1) REPEAT(14);STRING('║<0{28}>║'),HUE(15,3) .
87 2 ROW(16,1) STRING('╚═{28}╝'),HUE(15,3)
88 2 ROW(2,7) STRING('ADDRESS/PHONE BOOK')
89 2 DATE ROW(4,12) STRING(@D1),HUE(15,3)
90 2 ENTRY,USE(?FIRST_FIELD)
91 2 MENU,USE(MENU_FIELD"),REQ
92 3 ROW(6,6) STRING('Show Blkbook By Name'),HUE(1,3),SEL(0,7)
93 3 ROW(8,6) STRING('Show Blkbook By Phone'),HUE(1,3),SEL(0,7)
94 3 ROW(10,6) STRING('Print Blkbook By Name'),HUE(1,3),SEL(0,7)
95 3 ROW(12,5) STRING('Print Blkbook By Phone'),HUE(1,3),SEL(0,7)
96 3 ROW(14,14) STRING('Quit'),HUE(1,3),SEL(0,7)
97 3 . .
98
BLKBOOK.CLA CLARION COMPILER v2.0
ADDRESS/PHONE BOOK 10/27/90 11:52 PM PAGE 6
100 1 CODE
101 1 OPEN(SCREEN) !OPEN THE MENU SCREEN
102 1 SETCURSOR !TURN OFF ANY CURSOR
103 1 LOOP !LOOP UNTIL USER EXITS
104 2 SCR:DATE = TODAY()
105 2 ALERT !TURN OFF ALL ALERTED KEYS
106 2 ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
107 2 ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
108 2 ACCEPT !READ A FIELD OR MENU CHOICE
109 2 IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT
110
111 2 EDIT_RANGE# = FIELD() !SET ONE FIELD EDIT RANGE
112 2 IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
113 3 UPDATE ! MOVE ALL FIELDS FROM SCREEN
114 3 EDIT_RANGE# = ?MENU_FIELD" - 1 ! AND EDIT REMAINING FIELDS
115 3 SELECT(?MENU_FIELD") ! IF OK THEN START HERE NEXT
116 3 . !
117
118 2 LOOP FIELD# = FIELD() TO EDIT_RANGE# !EDIT FIELDS IN THE EDIT RANGE
119
120 3 CASE FIELD# !JUMP TO FIELD EDIT ROUTINE
121 4 OF ?FIRST_FIELD !FROM THE FIRST FIELD
122 4 IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
123
124 4 OF ?MENU_FIELD" !FROM THE MENU FIELD
125 4 EXECUTE CHOICE() ! CALL THE SELECTED PROCEDURE
126 5 SHO_NAME ! Show Blkbook By Name
127 5 SHO_PHONE ! Show Blkbook By Phone
128 5 RPT_NAME ! Print Blkbook By Name
129 5 RPT_PHONE ! Print Blkbook By Phone
130 5 RETURN
131 5 . . . .
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 7
133 1 SHO_NAME PROCEDURE
134
135 1 SCREEN SCREEN PRE(SCR),WINDOW(25,75),HUE(15,1)
136 2 ROW(6,3) PAINT(17,71),HUE(0,7)
137 2 ROW(1,1) STRING('╔═{73}╗'),HUE(15,1)
138 2 ROW(2,1) REPEAT(23);STRING('║<0{73}>║'),HUE(15,1) .
139 2 ROW(25,1) STRING('╚═{73}╝'),HUE(15,1)
140 2 ROW(2,29) STRING('Show Blkbook By Name')
141 2 ROW(4,22) STRING('LOCATE:'),HUE(11,1)
142 2 ROW(23,12) STRING('Ins to Add'),HUE(11,1)
143 2 COL(50) STRING('Enter to Change'),HUE(11,1)
144 2 ROW(24,12) STRING('Del to Delete'),HUE(11,1)
145 2 COL(49) STRING('Ctrl-Esc to Exit'),HUE(11,1)
146 2 LOCATOR ROW(4,29) STRING(25),HUE(11,1)
147 2 ENTRY,USE(?FIRST_FIELD)
148 2 ENTRY,USE(?PRE_POINT)
149 2 REPEAT(17),EVERY(1),INDEX(NDX)
150 3 ROW(6,4) POINT(1,69),USE(?POINT),ESC(?-1)
151 3 NAME COL(5) STRING(25)
152 3 PHONE COL(31) STRING(@P###-###-####P)
153 3 STREET COL(44) STRING(25)
154 3 STATE COL(70) STRING(2)
155 3 . .
156
157 1 NDX BYTE !REPEAT INDEX FOR POINT FIELD
158 1 ROW BYTE !ACTUAL ROW OF SCROLL AREA
159 1 COL BYTE !ACTUAL COLUMN OF SCROLL AREA
160 1 MAX LONG !LESSER OF COUNT AND RECORDS
161 1 COUNT BYTE(17) !NUMBER OF ITEMS TO SCROLL
162 1 ROWS BYTE(17) !NUMBER OF ROWS TO SCROLL
163 1 COLS BYTE(69) !NUMBER OF COLUMNS TO SCROLL
164
165
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 8
167 1 CODE
168 1 ACTION# = ACTION !SAVE ACTION
169 1 OPEN(SCREEN) !OPEN THE SCREEN
170 1 SETCURSOR !TURN OFF ANY CURSOR
171 1 NDX = 1 !PUT SELECTOR BAR ON TOP ITEM
172 1 ROW = ROW(?POINT) !REMEMBER TOP ROW AND
173 1 COL = COL(?POINT) ! LEFT COLUMN OF SCROLL AREA
174 1 IF ACTION = 4 !IF THIS IS A LOOKUP REQUEST
175 2 SET(BLK:BY_NAME,BLK:BY_NAME) ! FIND IT IN THE FILE
176 2 NEXT(BLKBOOK) ! AND READ IT
177 2 POINTER# = POINTER(BLKBOOK) ! SAVE POINTER TO CURRENT
178 2 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP RECORD
179 2 DO SHOW_TABLE ! FILL SCROLL AREA
180 2 GET(BLKBOOK,POINTER#) ! AND REFRESH CURRENT RECORD
181 2 ELSE !OTHERWISE
182 2 SET(BLK:BY_NAME) ! SET TO FIRST RECORD IN FILE
183 2 DO SHOW_TABLE ! FILL SCROLL AREA
184 2 .
185 1 RECORDS# = TRUE !INITIALIZE RECORDS FLAG
186 1 LOOP !LOOP UNTIL USER EXITS
187 2 MAX = RECORDS(BLK:BY_NAME) !SET LESSER OF FILE RECORD
188 2 IF MAX > COUNT THEN MAX = COUNT. ! COUNT AND SCROLL ITEM COUNT
189 2 ACTION = ACTION# !RESTORE ACTION
190 2 POINTER# = 0 !CLEAR ADD POINTER
191 2 IF ~RECORDS(BLK:BY_NAME) !IF THERE ARE NO RECORDS
192 3 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
193 3 ACTION = 1 ! SET ACTION TO ADD
194 3 UPD_BLKBOOK ! CALL FORM FOR FIRST RECORD
195 3 IF ~RECORDS(BLK:BY_NAME) THEN BREAK. ! IF ADD ABORTED THEN EXIT
196 3 DO SHOW_RECORD
197 3 SET(BLK:BY_NAME) ! SET TO NEW RECORD
198 3 DO SHOW_TABLE ! FILL SCROLL AREA
199 3 NDX = 1 ! PUT SELECTOR BAR ON TOP ITEM
200 3 MAX = 1 ! MAXIMUM DISPLAYED IS 1
201 3 . !
202 2 ALERT !RESET ALERTED KEYS
203 2 ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
204 2 ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
205 2 ACCEPT !READ A FIELD
206 2 IF KEYCODE() = REJECT_KEY THEN BREAK. !RETURN ON SCREEN REJECT KEY
207
208 2 EDIT_RANGE# = FIELD() !SET ONE FIELD EDIT RANGE
209 2 IF KEYCODE() = ACCEPT_KEY AND | !ON SCREEN ACCEPT KEY
210 2 EDIT_RANGE# <> ?POINT ! AND NOT ON THE POINT FIELD
211 3 UPDATE ! MOVE ALL FIELDS FROM SCREEN
212 3 EDIT_RANGE# = ?POINT - 1 ! AND EDIT REMAINING FIELDS
213 3 SELECT(?POINT) ! IF OK THEN START HERE NEXT
214 3 . !
215
216 2 LOOP FIELD# = FIELD() TO EDIT_RANGE# !EDIT FIELDS IN THE EDIT RANGE
217
218 3 CASE FIELD# !JUMP TO FIELD EDIT ROUTINE
219 4 OF ?FIRST_FIELD !FROM THE FIRST FIELD
220 4 IF KEYCODE() = ESC_KEY OR | ! RETURN ON ESC KEY
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 9
221 4 RECORDS# = FALSE ! OR NO RECORDS
222 5 RETURN
223 5 .
224 4 RECORDS# = TRUE ! ASSUME RECORDS ARE HERE
225 4 OF ?PRE_POINT !
226 4 IF KEYCODE() = ESC_KEY OR | ! IF GOING UP
227 4 KEYCODE() = UP_KEY OR | ! THE SCREEN
228 4 RECORDS# = FALSE ! OR NO RECORDS ON SCREEN
229 5 SCR:LOCATOR = '' ! CLEAR LOCATOR
230 5 SELECT(?-1) ! AND GO TO PREVIOUS FIELD
231 5 SETCURSOR ! AND TURN CURSOR OFF
232 5 ELSE ! OTHERWISE, GOING DOWN
233 5 LEN# = 0 ! RESET TO START OF LOCATOR
234 5 SETCURSOR(ROW(SCR:LOCATOR),COL(SCR:LOCATOR)) !AND TURN CURSOR ON
235 5 .
236 4 OF ?POINT !FROM THE POINT FIELD
237 4 IF KEYCODE() > 31 | !THE DISPLAYABLE CHARACTERS
238 4 AND KEYCODE() < 255 !ARE USED TO LOCATE RECORDS
239 5 IF LEN# < SIZE(SCR:LOCATOR) ! IF THERE IS ROOM LEFT
240 6 SCR:LOCATOR = SUB(SCR:LOCATOR,1,LEN#) & CHR(KEYCODE())
241 6 LEN# += 1 ! INCREMENT THE LENGTH
242 6 .
243 5 ELSIF KEYCODE() = BS_KEY !BACKSPACE UNTYPES A CHARACTER
244 5 IF LEN# > 0 ! IF THERE ARE CHARACTERS LEFT
245 6 LEN# -= 1 ! DECREMENT THE LENGTH
246 6 SCR:LOCATOR = SUB(SCR:LOCATOR,1,LEN#) ! ERASE THE LAST CHARACTER
247 6 .
248 5 ELSE !FOR ANY OTHER CHARACTER
249 5 LEN# = 0 ! ZERO THE LENGTH
250 5 SCR:LOCATOR = '' ! ERASE THE LOCATOR FIELD
251 5 .
252 4 SETCURSOR(ROW(SCR:LOCATOR),COL(SCR:LOCATOR)+LEN#) !AND RESET THE CURSOR
253 4 BLK:NAME = CLIP(SCR:LOCATOR) ! UPDATE THE KEY FIELD
254 4 IF KEYBOARD() > 31 | !THE DISPLAYABLE CHARACTERS
255 4 AND KEYBOARD() < 255 | !ARE USED TO LOCATE RECORDS
256 4 OR KEYBOARD() = BS_KEY !INCLUDE BACKSPACE
257 5 CYCLE
258 5 .
259 4 IF LEN# > 0 THEN DO FIND_RECORD. ! AND FIND THE RECORD
260 4 CASE KEYCODE() ! PROCESS THE KEYSTROKE
261 5 OF INS_KEY !INSERT KEY
262 5 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
263 5 ACTION = 1 ! SET ACTION TO ADD
264 5 UPD_BLKBOOK ! CALL FORM FOR NEW RECORD
265 5 IF ~ACTION ! IF A NEW RECORD WAS ADDED
266 6 POINTER# = POINTER(BLKBOOK) ! REMEMBER WHICH RECORD
267 6 SET(BLK:BY_NAME,BLK:BY_NAME) ! SET TO NEW RECORD AND
268 6 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP ITEM
269 6 DO SHOW_TABLE ! DISPLAY THAT PAGE
270 6 .
271 5 OF ENTER_KEY !ENTER KEY OR
272 5 OROF ACCEPT_KEY !CTRL ENTER KEY
273 5 DO GET_RECORD ! READ THE SELECTED RECORD
274 5 IF ACTION = 4 AND KEYCODE() = ENTER_KEY! IF THIS IS A LOOKUP REQUEST
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 10
275 6 ACTION = 0 ! SET ACTION TO COMPLETE
276 6 RETURN ! AND RETURN TO CALLER
277 6 . !
278 5 ACTION = 2 ! SET ACTION TO CHANGE
279 5 UPD_BLKBOOK ! CALL FORM TO CHANGE RECORD
280 5 IF ~ACTION ! IF THE RECORD WAS CHANGED
281 6 POINTER# = POINTER(BLKBOOK) ! REMEMBER WHICH RECORD
282 6 SET(BLK:BY_NAME,BLK:BY_NAME) ! SET TO CHANGED RECORD
283 6 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP ITEM
284 6 DO SHOW_TABLE ! AND DISPLAY THAT PAGE
285 6 ELSE ! OTHERWISE
286 6 SKIP(BLKBOOK,(MAX-NDX)) ! SKIP BACK TO SAME PAGE
287 6 .
288 5 OF DEL_KEY !DELETE KEY
289 5 DO GET_RECORD ! READ THE SELECTED RECORD
290 5 ACTION = 3 ! SET ACTION TO DELETE
291 5 UPD_BLKBOOK ! CALL FORM TO DELETE RECORD
292 5 IF ~ACTION ! IF RECORD WAS DELETED
293 6 SKIP(BLKBOOK,-NDX) ! SET NEXT RECORD ON TOP
294 6 DO SHOW_TABLE ! AND DISPLAY THAT PAGE
295 6 ELSE ! OTHERWISE
296 6 SKIP(BLKBOOK,(MAX-NDX)) ! SKIP BACK TO SAME PAGE
297 6 .
298 5 OF DOWN_KEY !DOWN ARROW KEY
299 5 IF NOT EOF(BLKBOOK) ! IF THERE ARE MORE RECORDS
300 6 SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) ! SCROLL THE SCREEN UP
301 6 NEXT(BLKBOOK) ! READ THE BOTTOM RECORD
302 6 DO SHOW_RECORD ! AND DISPLAY IT
303 6 .
304 5 OF PGDN_KEY !PAGE DOWN KEY
305 5 IF EOF(BLKBOOK) ! ON THE LAST PAGE
306 6 NDX = MAX ! POINT TO BOTTOM ITEM
307 6 ELSE ! OTHERWISE
308 6 DO SHOW_TABLE ! DISPLAY NEXT PAGE
309 6 .
310 5 OF CTRL_PGDN !CTRL-PAGE DOWN KEY
311 5 NDX = MAX ! POINT TO BOTTOM ITEM
312 5 IF NOT EOF(BLKBOOK) ! ON THE LAST PAGE
313 6 SET(BLK:BY_NAME) ! SET TO BOTTOM RECORD MINUS
314 6 SKIP(BLKBOOK,-COUNT) ! ONE PAGE OF RECORDS
315 6 DO SHOW_TABLE ! DISPLAY THE LAST PAGE
316 6 .
317 5 OF UP_KEY !UP ARROW KEY
318 5 SKIP(BLKBOOK,-(COUNT-1)) ! SET TO TOP RECORD MINUS 1
319 5 IF NOT BOF(BLKBOOK) ! IF THERE IS A PRIOR RECORD
320 6 PREVIOUS(BLKBOOK) ! READ THE TOP RECORD
321 6 IF NOT ERROR() ! IF READ A RECORD
322 7 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
323 7 DO SHOW_RECORD ! AND DISPLAY IT
324 7 ELSIF ERRORCODE() = 33 ! ELSIF RECORD NOT AVAILABLE
325 7 NEXT(BLKBOOK) ! RETRIEVE FIRST ONE
326 7 . .
327 5 SKIP(BLKBOOK,COUNT-1) ! SET RECORD FOR NEXT PAGE
328
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 11
329 5 OF PGUP_KEY !PAGE UP KEY
330 5 SKIP(BLKBOOK,-(COUNT-1)) ! SET TO TOP RECORD MINUS ONE
331 5 IF BOF(BLKBOOK) ! IF THERE IS NO PRIOR RECORD
332 6 NDX = 1 ! THEN POINT TO TOP ITEM
333 6 SKIP(BLKBOOK,COUNT-1) ! SET RECORD FOR THIS PAGE
334 6 ELSE ! OTHERWISE
335 6 SKIP(BLKBOOK,-(COUNT+1)) ! SET RECORD FOR PRIOR PAGE
336 6 DO SHOW_TABLE ! AND DISPLAY THE PAGE
337 6 .
338 5 OF CTRL_PGUP !CTRL-PAGE UP KEY
339 5 SET(BLK:BY_NAME) ! SET TO FIRST RECORD
340 5 NDX = 1 ! POINT TO TOP ITEM
341 5 DO SHOW_TABLE ! AND DISPLAY THE PAGE
342 5 .
343 4 . . .
344 1 RETURN !RETURN TO CALLER
345
346 1 SHOW_TABLE ROUTINE !DISPLAY A PAGE OF RECORDS
347 1 SKIP(BLKBOOK,COUNT-1) ! SET TO THE BOTTOM RECORD
348 1 IF EOF(BLKBOOK) ! FOR A PARTIAL PAGE
349 2 SET(BLK:BY_NAME) ! SET TO THE LAST RECORD
350 2 SKIP(BLKBOOK,-COUNT) ! AND BACK UP ONE PAGE
351 2 ELSE ! OTHERWISE
352 2 SKIP(BLKBOOK,-(COUNT-1)) ! SET RECORD FOR THIS PAGE
353 2 .
354 1 NDX# = NDX ! SAVE REPEAT INDEX
355 1 LOOP NDX = 1 TO COUNT ! LOOP THRU THE SCROLL AREA
356 2 IF EOF(BLKBOOK) THEN BREAK. ! BREAK ON END OF FILE
357 2 NEXT(BLKBOOK) ! READ THE NEXT RECORD
358 2 DO SHOW_RECORD ! AND DISPLAY IT
359 2 IF POINTER(BLKBOOK) = POINTER#
360 3 NDX# = NDX ! POINT TO CORRECT RECORD
361 3 . .
362 1 NDX = NDX# ! RESTORE REPEAT INDEX
363 1 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
364 1 IF RECORDS(BLK:BY_NAME) < COUNT ! IF RECORDS DO NOT FILL
365 2 NDX#= RECORDS(BLK:BY_NAME) * 1 ! GET NUMBER TIMES SIZE
366 2 BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS) ! BLANK REMAINING AREA
367 2 .
368
369 1 SHOW_RECORD ROUTINE !DISPLAY A RECORD
370 1 SCR:NAME = BLK:NAME
371 1 SCR:PHONE = BLK:PHONE
372 1 SCR:STREET = BLK:STREET
373 1 SCR:STATE = BLK:STATE
374
375 1 GET_RECORD ROUTINE !READ SELECTED RECORD
376 1 SKIP(BLKBOOK,-(MAX-NDX+1)) ! SET TO SELECTED RECORD
377 1 NEXT(BLKBOOK) ! AND READ IT
378
379 1 FIND_RECORD ROUTINE !LOCATE REQUESTED RECORD
380 1 SET(BLK:BY_NAME,BLK:BY_NAME) ! SET TO REQUESTED RECORD
381 1 IF EOF(BLKBOOK) ! IF BEYOND END OF FILE
382 2 PREVIOUS(BLKBOOK) ! GET THE LAST RECORD
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Name 10/27/90 11:52 PM PAGE 12
383 2 ELSE ! ELSE
384 2 NEXT(BLKBOOK) ! READ THIS RECORD
385 2 .
386 1 POINTER# = POINTER(BLKBOOK) ! SAVE ITS RECORD POINTER
387 1 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP RECORD
388 1 DO SHOW_TABLE ! AND FILL THE SCROLL AREA
389
390 1 SAME_PAGE ROUTINE !SET TO SAME PAGE ROUTINE
391 1 POINTER# = POINTER(BLKBOOK) ! SAVE ITS RECORD POINTER
392 1 GET(BLKBOOK,POINTER#) ! GET THE RECORD
393 1 SET(BLK:BY_NAME,BLK:BY_NAME) ! SET TO THE SAME RECORD
394 1 SKIP(BLKBOOK,-1) ! SKIP TO TOP OF SAME PAGE
395
BLKBOOK.CLA CLARION COMPILER v2.0
Update Blkbook 10/27/90 11:52 PM PAGE 13
397 1 UPD_BLKBOOK PROCEDURE
398
399 1 SCREEN SCREEN PRE(SCR),WINDOW(15,50),HUE(15,4)
400 2 ROW(1,1) STRING('╔═{48}╗'),HUE(15,4)
401 2 ROW(2,1) REPEAT(13);STRING('║<0{48}>║'),HUE(15,4) .
402 2 ROW(15,1) STRING('╚═{48}╝'),HUE(15,4)
403 2 ROW(2,19) STRING('Update Blkbook')
404 2 ROW(4,4) STRING('NAME :'),HUE(7,4)
405 2 ROW(5,4) STRING('PHONE :'),HUE(7,4)
406 2 ROW(6,4) STRING('STREET :'),HUE(7,4)
407 2 ROW(7,4) STRING('CITY :'),HUE(7,4)
408 2 ROW(8,4) STRING('STATE :'),HUE(7,4)
409 2 ROW(9,4) STRING('ZIP {5}:'),HUE(7,4)
410 2 ROW(10,4) STRING('COMMENTS:'),HUE(7,4)
411 2 MESSAGE ROW(3,11) STRING(30),HUE(15,4)
412 2 ENTRY,USE(?FIRST_FIELD)
413 2 ROW(4,13) ENTRY(@S25),USE(BLK:NAME),LFT,UPR,INS,HUE(15,4) |
414 2 SEL(0,7)
415 2 ROW(5,13) ENTRY(@P###-###-####P),USE(BLK:PHONE),NUM,INS |
416 2 HUE(15,4),SEL(0,7)
417 2 ROW(6,13) ENTRY(@S25),USE(BLK:STREET),LFT,UPR,INS,HUE(15,4) |
418 2 SEL(0,7)
419 2 ROW(7,13) ENTRY(@S25),USE(BLK:CITY),LFT,UPR,INS,HUE(15,4) |
420 2 SEL(0,7)
421 2 ROW(8,13) ENTRY(@S2),USE(BLK:STATE),UPR,INS,HUE(15,4),SEL(0,7)
422 2 ROW(9,13) ENTRY(@N_5),USE(BLK:ZIP),NUM,INS,HUE(15,4),SEL(0,7)
423 2 ROW(10,13) TEXT(4,35),USE(BLK:COMMENTS),LFT,HUE(15,4),SEL(0,7)
424 2 ENTRY,USE(?LAST_FIELD)
425 2 PAUSE(''),USE(?DELETE_FIELD)
426 2 .
427
BLKBOOK.CLA CLARION COMPILER v2.0
Update Blkbook 10/27/90 11:52 PM PAGE 14
429 1 CODE
430 1 OPEN(SCREEN) !OPEN THE SCREEN
431 1 SETCURSOR !TURN OFF ANY CURSOR
432 1 ACTION# = ACTION !SAVE ACTION VALUE
433 1 ACTION = ACTION# !RESET ACTION
434 1 DISPLAY !DISPLAY THE FIELDS
435 1 EXECUTE ACTION !SET THE CURRENT RECORD POINTER
436 2 POINTER# = 0 ! NO RECORD FOR ADD
437 2 POINTER# = POINTER(BLKBOOK) ! CURRENT RECORD FOR CHANGE
438 2 POINTER# = POINTER(BLKBOOK) ! CURRENT RECORD FOR CHANGE
439 2 .
440 1 LOOP !LOOP THRU ALL THE FIELDS
441 2 MEM:MESSAGE = CENTER(MEM:MESSAGE,SIZE(MEM:MESSAGE)) !DISPLAY ACTION MESSAGE
442 2 SCR:MESSAGE = MEM:MESSAGE
443 2 ALERT !RESET ALERTED KEYS
444 2 ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
445 2 ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
446 2 ACCEPT !READ A FIELD
447 2 IF KEYCODE() = REJECT_KEY THEN RETURN. !RETURN ON SCREEN REJECT KEY
448 2 EXECUTE ACTION !SET ACTION MESSAGE
449 3 MEM:MESSAGE = 'Record will be Added' !
450 3 MEM:MESSAGE = 'Record will be Changed' !
451 3 MEM:MESSAGE = 'Press Enter to Delete' !
452 3 .
453 2 EDIT_RANGE# = FIELD() !SET ONE FIELD EDIT RANGE
454 2 IF KEYCODE() = ACCEPT_KEY !ON SCREEN ACCEPT KEY
455 3 UPDATE ! MOVE ALL FIELDS FROM SCREEN
456 3 EDIT_RANGE# = FIELDS() ! AND EDIT REMAINING FIELDS
457 3 . !
458 2 LOOP FIELD# = FIELD() TO EDIT_RANGE# !EDIT FIELDS IN THE EDIT RANGE
459 3 CASE FIELD# !JUMP TO FIELD EDIT ROUTINE
460 4 OF ?FIRST_FIELD !FROM THE FIRST FIELD
461 4 IF KEYCODE() = ESC_KEY THEN RETURN. ! RETURN ON ESC KEY
462 4 IF ACTION = 3 THEN SELECT(?DELETE_FIELD).! OR CONFIRM FOR DELETE
463
464 4 OF ?BLK:NAME
465 4 IF BLK:NAME = '' !IF REQUIRED FIELD IS EMPTY
466 5 BEEP ! SOUND KEYBOARD ALARM
467 5 SELECT(?BLK:NAME) ! AND STAY ON THIS FIELD
468 5 BREAK !
469 5 .
470 4 GET(BLKBOOK,BLK:BY_NAME) !READ THE RECORD BY KEY
471 4 IF NOT ERROR() !IF A RECORD IS FOUND
472 5 IF POINTER(BLKBOOK) <> POINTER# ! BUT NOT THE SAME RECORD
473 6 CLEAR(BLK:RECORD) ! CLEAR IN CASE OF ADD
474 6 GET(BLKBOOK,POINTER#) ! RE-READ THE OLD RECORD
475 6 UPDATE ! RE-UPDATE THE RECORD
476 6 MEM:MESSAGE = 'CREATES DUPLICATE KEY'! MOVE AN ERROR MESSAGE
477 6 SELECT(?BLK:NAME) ! STAY ON THE SAME FIELD
478 6 BEEP ! SOUND THE KEYBOARD ALARM
479 6 BREAK ! AND LOOP AGAIN
480 6 . .
481 4 GET(BLKBOOK,POINTER#) ! RE-READ THE OLD RECORD
482 4 UPDATE ! AND RE-UPDATE THE RECORD
BLKBOOK.CLA CLARION COMPILER v2.0
Update Blkbook 10/27/90 11:52 PM PAGE 15
483
484 4 OF ?BLK:PHONE
485 4 IF BLK:PHONE = '' !IF REQUIRED FIELD IS EMPTY
486 5 BEEP ! SOUND KEYBOARD ALARM
487 5 SELECT(?BLK:PHONE) ! AND STAY ON THIS FIELD
488 5 BREAK !
489 5 .
490 4 GET(BLKBOOK,BLK:BY_PHONE) !READ THE RECORD BY KEY
491 4 IF NOT ERROR() !IF A RECORD IS FOUND
492 5 IF POINTER(BLKBOOK) <> POINTER# ! BUT NOT THE SAME RECORD
493 6 CLEAR(BLK:RECORD) ! CLEAR IN CASE OF ADD
494 6 GET(BLKBOOK,POINTER#) ! RE-READ THE OLD RECORD
495 6 UPDATE ! RE-UPDATE THE RECORD
496 6 MEM:MESSAGE = 'CREATES DUPLICATE KEY'! MOVE AN ERROR MESSAGE
497 6 SELECT(?BLK:PHONE) ! STAY ON THE SAME FIELD
498 6 BEEP ! SOUND THE KEYBOARD ALARM
499 6 BREAK ! AND LOOP AGAIN
500 6 . .
501 4 GET(BLKBOOK,POINTER#) ! RE-READ THE OLD RECORD
502 4 UPDATE ! AND RE-UPDATE THE RECORD
503
504 4 OF ?BLK:STREET
505
506 4 OF ?BLK:CITY
507
508 4 OF ?BLK:STATE
509
510 4 OF ?BLK:ZIP
511
512 4 OF ?BLK:COMMENTS
513
514 4 OF ?LAST_FIELD !FROM THE LAST FIELD
515 4 EXECUTE ACTION ! UPDATE THE FILE
516 5 ADD(BLKBOOK) ! ADD NEW RECORD
517 5 PUT(BLKBOOK) ! CHANGE EXISTING RECORD
518 5 DELETE(BLKBOOK) ! DELETE EXISTING RECORD
519 5 .
520 4 IF ERROR() THEN STOP(ERROR()). ! CHECK FOR UNEXPECTED ERROR
521 4 ACTION = 0 ! SET ACTION TO COMPLETE
522 4 RETURN ! AND RETURN TO CALLER
523
524 4 OF ?DELETE_FIELD !FROM THE DELETE FIELD
525 4 IF KEYCODE() = ENTER_KEY | ! ON ENTER KEY
526 4 OR KEYCODE() = ACCEPT_KEY ! OR CTRL-ENTER KEY
527 5 SELECT(?LAST_FIELD) ! DELETE THE RECORD
528 5 ELSE ! OTHERWISE
529 5 BEEP ! BEEP AND ASK AGAIN
530 5 . . . .
531
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 16
533 1 SHO_PHONE PROCEDURE
534
535 1 SCREEN SCREEN PRE(SCR),WINDOW(25,75),HUE(15,1)
536 2 ROW(6,3) PAINT(17,71),HUE(0,7)
537 2 ROW(1,1) STRING('╔═{73}╗'),HUE(15,1)
538 2 ROW(2,1) REPEAT(23);STRING('║<0{73}>║'),HUE(15,1) .
539 2 ROW(25,1) STRING('╚═{73}╝'),HUE(15,1)
540 2 ROW(2,28) STRING('Show Blkbook By Phone')
541 2 ROW(4,29) STRING('LOCATE:'),HUE(11,1)
542 2 ROW(23,12) STRING('Ins to Add'),HUE(11,1)
543 2 COL(50) STRING('Enter to Change'),HUE(11,1)
544 2 ROW(24,12) STRING('Del to Delete'),HUE(11,1)
545 2 COL(49) STRING('Ctrl-Esc to Exit'),HUE(11,1)
546 2 LOCATOR ROW(4,36) STRING(@P###-###-####P),HUE(11,1)
547 2 ENTRY,USE(?FIRST_FIELD)
548 2 ENTRY,USE(?PRE_POINT)
549 2 REPEAT(17),EVERY(1),INDEX(NDX)
550 3 ROW(6,4) POINT(1,69),USE(?POINT),ESC(?-1)
551 3 PHONE COL(5) STRING(@P###-###-####P)
552 3 NAME COL(18) STRING(25)
553 3 STREET COL(44) STRING(25)
554 3 STATE COL(70) STRING(2)
555 3 . .
556
557 1 NDX BYTE !REPEAT INDEX FOR POINT FIELD
558 1 ROW BYTE !ACTUAL ROW OF SCROLL AREA
559 1 COL BYTE !ACTUAL COLUMN OF SCROLL AREA
560 1 MAX LONG !LESSER OF COUNT AND RECORDS
561 1 COUNT BYTE(17) !NUMBER OF ITEMS TO SCROLL
562 1 ROWS BYTE(17) !NUMBER OF ROWS TO SCROLL
563 1 COLS BYTE(69) !NUMBER OF COLUMNS TO SCROLL
564
565
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 17
567 1 CODE
568 1 ACTION# = ACTION !SAVE ACTION
569 1 OPEN(SCREEN) !OPEN THE SCREEN
570 1 SETCURSOR !TURN OFF ANY CURSOR
571 1 NDX = 1 !PUT SELECTOR BAR ON TOP ITEM
572 1 ROW = ROW(?POINT) !REMEMBER TOP ROW AND
573 1 COL = COL(?POINT) ! LEFT COLUMN OF SCROLL AREA
574 1 IF ACTION = 4 !IF THIS IS A LOOKUP REQUEST
575 2 SET(BLK:BY_PHONE,BLK:BY_PHONE) ! FIND IT IN THE FILE
576 2 NEXT(BLKBOOK) ! AND READ IT
577 2 POINTER# = POINTER(BLKBOOK) ! SAVE POINTER TO CURRENT
578 2 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP RECORD
579 2 DO SHOW_TABLE ! FILL SCROLL AREA
580 2 GET(BLKBOOK,POINTER#) ! AND REFRESH CURRENT RECORD
581 2 ELSE !OTHERWISE
582 2 SET(BLK:BY_PHONE) ! SET TO FIRST RECORD IN FILE
583 2 DO SHOW_TABLE ! FILL SCROLL AREA
584 2 .
585 1 RECORDS# = TRUE !INITIALIZE RECORDS FLAG
586 1 LOOP !LOOP UNTIL USER EXITS
587 2 MAX = RECORDS(BLK:BY_PHONE) !SET LESSER OF FILE RECORD
588 2 IF MAX > COUNT THEN MAX = COUNT. ! COUNT AND SCROLL ITEM COUNT
589 2 ACTION = ACTION# !RESTORE ACTION
590 2 POINTER# = 0 !CLEAR ADD POINTER
591 2 IF ~RECORDS(BLK:BY_PHONE) !IF THERE ARE NO RECORDS
592 3 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
593 3 ACTION = 1 ! SET ACTION TO ADD
594 3 UPD_BLKBOOK ! CALL FORM FOR FIRST RECORD
595 3 IF ~RECORDS(BLK:BY_PHONE) THEN BREAK. ! IF ADD ABORTED THEN EXIT
596 3 DO SHOW_RECORD
597 3 SET(BLK:BY_PHONE) ! SET TO NEW RECORD
598 3 DO SHOW_TABLE ! FILL SCROLL AREA
599 3 NDX = 1 ! PUT SELECTOR BAR ON TOP ITEM
600 3 MAX = 1 ! MAXIMUM DISPLAYED IS 1
601 3 . !
602 2 ALERT !RESET ALERTED KEYS
603 2 ALERT(REJECT_KEY) !ALERT SCREEN REJECT KEY
604 2 ALERT(ACCEPT_KEY) !ALERT SCREEN ACCEPT KEY
605 2 ACCEPT !READ A FIELD
606 2 IF KEYCODE() = REJECT_KEY THEN BREAK. !RETURN ON SCREEN REJECT KEY
607
608 2 EDIT_RANGE# = FIELD() !SET ONE FIELD EDIT RANGE
609 2 IF KEYCODE() = ACCEPT_KEY AND | !ON SCREEN ACCEPT KEY
610 2 EDIT_RANGE# <> ?POINT ! AND NOT ON THE POINT FIELD
611 3 UPDATE ! MOVE ALL FIELDS FROM SCREEN
612 3 EDIT_RANGE# = ?POINT - 1 ! AND EDIT REMAINING FIELDS
613 3 SELECT(?POINT) ! IF OK THEN START HERE NEXT
614 3 . !
615
616 2 LOOP FIELD# = FIELD() TO EDIT_RANGE# !EDIT FIELDS IN THE EDIT RANGE
617
618 3 CASE FIELD# !JUMP TO FIELD EDIT ROUTINE
619 4 OF ?FIRST_FIELD !FROM THE FIRST FIELD
620 4 IF KEYCODE() = ESC_KEY OR | ! RETURN ON ESC KEY
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 18
621 4 RECORDS# = FALSE ! OR NO RECORDS
622 5 RETURN
623 5 .
624 4 RECORDS# = TRUE ! ASSUME RECORDS ARE HERE
625 4 OF ?PRE_POINT !
626 4 IF KEYCODE() = ESC_KEY OR | ! IF GOING UP
627 4 KEYCODE() = UP_KEY OR | ! THE SCREEN
628 4 RECORDS# = FALSE ! OR NO RECORDS ON SCREEN
629 5 SCR:LOCATOR = '' ! CLEAR LOCATOR
630 5 SELECT(?-1) ! AND GO TO PREVIOUS FIELD
631 5 SETCURSOR ! AND TURN CURSOR OFF
632 5 ELSE ! OTHERWISE, GOING DOWN
633 5 LEN# = 0 ! RESET TO START OF LOCATOR
634 5 SETCURSOR(ROW(SCR:LOCATOR),COL(SCR:LOCATOR)) !AND TURN CURSOR ON
635 5 .
636 4 OF ?POINT !FROM THE POINT FIELD
637 4 IF KEYCODE() > 31 | !THE DISPLAYABLE CHARACTERS
638 4 AND KEYCODE() < 255 !ARE USED TO LOCATE RECORDS
639 5 IF LEN# < SIZE(SCR:LOCATOR) ! IF THERE IS ROOM LEFT
640 6 SCR:LOCATOR = SUB(SCR:LOCATOR,1,LEN#) & CHR(KEYCODE())
641 6 LEN# += 1 ! INCREMENT THE LENGTH
642 6 .
643 5 ELSIF KEYCODE() = BS_KEY !BACKSPACE UNTYPES A CHARACTER
644 5 IF LEN# > 0 ! IF THERE ARE CHARACTERS LEFT
645 6 LEN# -= 1 ! DECREMENT THE LENGTH
646 6 SCR:LOCATOR = SUB(SCR:LOCATOR,1,LEN#) ! ERASE THE LAST CHARACTER
647 6 .
648 5 ELSE !FOR ANY OTHER CHARACTER
649 5 LEN# = 0 ! ZERO THE LENGTH
650 5 SCR:LOCATOR = '' ! ERASE THE LOCATOR FIELD
651 5 .
652 4 SETCURSOR(ROW(SCR:LOCATOR),COL(SCR:LOCATOR)+LEN#) !AND RESET THE CURSOR
653 4 BLK:PHONE = DEFORMAT(SCR:LOCATOR) ! UPDATE THE KEY FIELD
654 4 IF KEYBOARD() > 31 | !THE DISPLAYABLE CHARACTERS
655 4 AND KEYBOARD() < 255 | !ARE USED TO LOCATE RECORDS
656 4 OR KEYBOARD() = BS_KEY !INCLUDE BACKSPACE
657 5 CYCLE
658 5 .
659 4 IF LEN# > 0 THEN DO FIND_RECORD. ! AND FIND THE RECORD
660 4 CASE KEYCODE() ! PROCESS THE KEYSTROKE
661 5 OF INS_KEY !INSERT KEY
662 5 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
663 5 ACTION = 1 ! SET ACTION TO ADD
664 5 UPD_BLKBOOK ! CALL FORM FOR NEW RECORD
665 5 IF ~ACTION ! IF A NEW RECORD WAS ADDED
666 6 POINTER# = POINTER(BLKBOOK) ! REMEMBER WHICH RECORD
667 6 SET(BLK:BY_PHONE,BLK:BY_PHONE) ! SET TO NEW RECORD AND
668 6 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP ITEM
669 6 DO SHOW_TABLE ! DISPLAY THAT PAGE
670 6 .
671 5 OF ENTER_KEY !ENTER KEY OR
672 5 OROF ACCEPT_KEY !CTRL ENTER KEY
673 5 DO GET_RECORD ! READ THE SELECTED RECORD
674 5 IF ACTION = 4 AND KEYCODE() = ENTER_KEY! IF THIS IS A LOOKUP REQUEST
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 19
675 6 ACTION = 0 ! SET ACTION TO COMPLETE
676 6 RETURN ! AND RETURN TO CALLER
677 6 . !
678 5 ACTION = 2 ! SET ACTION TO CHANGE
679 5 UPD_BLKBOOK ! CALL FORM TO CHANGE RECORD
680 5 IF ~ACTION ! IF THE RECORD WAS CHANGED
681 6 POINTER# = POINTER(BLKBOOK) ! REMEMBER WHICH RECORD
682 6 SET(BLK:BY_PHONE,BLK:BY_PHONE) ! SET TO CHANGED RECORD
683 6 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP ITEM
684 6 DO SHOW_TABLE ! AND DISPLAY THAT PAGE
685 6 ELSE ! OTHERWISE
686 6 SKIP(BLKBOOK,(MAX-NDX)) ! SKIP BACK TO SAME PAGE
687 6 .
688 5 OF DEL_KEY !DELETE KEY
689 5 DO GET_RECORD ! READ THE SELECTED RECORD
690 5 ACTION = 3 ! SET ACTION TO DELETE
691 5 UPD_BLKBOOK ! CALL FORM TO DELETE RECORD
692 5 IF ~ACTION ! IF RECORD WAS DELETED
693 6 SKIP(BLKBOOK,-NDX) ! SET NEXT RECORD ON TOP
694 6 DO SHOW_TABLE ! AND DISPLAY THAT PAGE
695 6 ELSE ! OTHERWISE
696 6 SKIP(BLKBOOK,(MAX-NDX)) ! SKIP BACK TO SAME PAGE
697 6 .
698 5 OF DOWN_KEY !DOWN ARROW KEY
699 5 IF NOT EOF(BLKBOOK) ! IF THERE ARE MORE RECORDS
700 6 SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) ! SCROLL THE SCREEN UP
701 6 NEXT(BLKBOOK) ! READ THE BOTTOM RECORD
702 6 DO SHOW_RECORD ! AND DISPLAY IT
703 6 .
704 5 OF PGDN_KEY !PAGE DOWN KEY
705 5 IF EOF(BLKBOOK) ! ON THE LAST PAGE
706 6 NDX = MAX ! POINT TO BOTTOM ITEM
707 6 ELSE ! OTHERWISE
708 6 DO SHOW_TABLE ! DISPLAY NEXT PAGE
709 6 .
710 5 OF CTRL_PGDN !CTRL-PAGE DOWN KEY
711 5 NDX = MAX ! POINT TO BOTTOM ITEM
712 5 IF NOT EOF(BLKBOOK) ! ON THE LAST PAGE
713 6 SET(BLK:BY_PHONE) ! SET TO BOTTOM RECORD MINUS
714 6 SKIP(BLKBOOK,-COUNT) ! ONE PAGE OF RECORDS
715 6 DO SHOW_TABLE ! DISPLAY THE LAST PAGE
716 6 .
717 5 OF UP_KEY !UP ARROW KEY
718 5 SKIP(BLKBOOK,-(COUNT-1)) ! SET TO TOP RECORD MINUS 1
719 5 IF NOT BOF(BLKBOOK) ! IF THERE IS A PRIOR RECORD
720 6 PREVIOUS(BLKBOOK) ! READ THE TOP RECORD
721 6 IF NOT ERROR() ! IF READ A RECORD
722 7 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
723 7 DO SHOW_RECORD ! AND DISPLAY IT
724 7 ELSIF ERRORCODE() = 33 ! ELSIF RECORD NOT AVAILABLE
725 7 NEXT(BLKBOOK) ! RETRIEVE FIRST ONE
726 7 . .
727 5 SKIP(BLKBOOK,COUNT-1) ! SET RECORD FOR NEXT PAGE
728
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 20
729 5 OF PGUP_KEY !PAGE UP KEY
730 5 SKIP(BLKBOOK,-(COUNT-1)) ! SET TO TOP RECORD MINUS ONE
731 5 IF BOF(BLKBOOK) ! IF THERE IS NO PRIOR RECORD
732 6 NDX = 1 ! THEN POINT TO TOP ITEM
733 6 SKIP(BLKBOOK,COUNT-1) ! SET RECORD FOR THIS PAGE
734 6 ELSE ! OTHERWISE
735 6 SKIP(BLKBOOK,-(COUNT+1)) ! SET RECORD FOR PRIOR PAGE
736 6 DO SHOW_TABLE ! AND DISPLAY THE PAGE
737 6 .
738 5 OF CTRL_PGUP !CTRL-PAGE UP KEY
739 5 SET(BLK:BY_PHONE) ! SET TO FIRST RECORD
740 5 NDX = 1 ! POINT TO TOP ITEM
741 5 DO SHOW_TABLE ! AND DISPLAY THE PAGE
742 5 .
743 4 . . .
744 1 RETURN !RETURN TO CALLER
745
746 1 SHOW_TABLE ROUTINE !DISPLAY A PAGE OF RECORDS
747 1 SKIP(BLKBOOK,COUNT-1) ! SET TO THE BOTTOM RECORD
748 1 IF EOF(BLKBOOK) ! FOR A PARTIAL PAGE
749 2 SET(BLK:BY_PHONE) ! SET TO THE LAST RECORD
750 2 SKIP(BLKBOOK,-COUNT) ! AND BACK UP ONE PAGE
751 2 ELSE ! OTHERWISE
752 2 SKIP(BLKBOOK,-(COUNT-1)) ! SET RECORD FOR THIS PAGE
753 2 .
754 1 NDX# = NDX ! SAVE REPEAT INDEX
755 1 LOOP NDX = 1 TO COUNT ! LOOP THRU THE SCROLL AREA
756 2 IF EOF(BLKBOOK) THEN BREAK. ! BREAK ON END OF FILE
757 2 NEXT(BLKBOOK) ! READ THE NEXT RECORD
758 2 DO SHOW_RECORD ! AND DISPLAY IT
759 2 IF POINTER(BLKBOOK) = POINTER#
760 3 NDX# = NDX ! POINT TO CORRECT RECORD
761 3 . .
762 1 NDX = NDX# ! RESTORE REPEAT INDEX
763 1 CLEAR(BLK:RECORD) ! CLEAR RECORD AREA
764 1 IF RECORDS(BLK:BY_PHONE) < COUNT ! IF RECORDS DO NOT FILL
765 2 NDX#= RECORDS(BLK:BY_PHONE) * 1 ! GET NUMBER TIMES SIZE
766 2 BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS) ! BLANK REMAINING AREA
767 2 .
768
769 1 SHOW_RECORD ROUTINE !DISPLAY A RECORD
770 1 SCR:PHONE = BLK:PHONE
771 1 SCR:NAME = BLK:NAME
772 1 SCR:STREET = BLK:STREET
773 1 SCR:STATE = BLK:STATE
774
775 1 GET_RECORD ROUTINE !READ SELECTED RECORD
776 1 SKIP(BLKBOOK,-(MAX-NDX+1)) ! SET TO SELECTED RECORD
777 1 NEXT(BLKBOOK) ! AND READ IT
778
779 1 FIND_RECORD ROUTINE !LOCATE REQUESTED RECORD
780 1 SET(BLK:BY_PHONE,BLK:BY_PHONE) ! SET TO REQUESTED RECORD
781 1 IF EOF(BLKBOOK) ! IF BEYOND END OF FILE
782 2 PREVIOUS(BLKBOOK) ! GET THE LAST RECORD
BLKBOOK.CLA CLARION COMPILER v2.0
Show Blkbook By Phone 10/27/90 11:52 PM PAGE 21
783 2 ELSE ! ELSE
784 2 NEXT(BLKBOOK) ! READ THIS RECORD
785 2 .
786 1 POINTER# = POINTER(BLKBOOK) ! SAVE ITS RECORD POINTER
787 1 SKIP(BLKBOOK,-1) ! MAKE IT THE TOP RECORD
788 1 DO SHOW_TABLE ! AND FILL THE SCROLL AREA
789
790 1 SAME_PAGE ROUTINE !SET TO SAME PAGE ROUTINE
791 1 POINTER# = POINTER(BLKBOOK) ! SAVE ITS RECORD POINTER
792 1 GET(BLKBOOK,POINTER#) ! GET THE RECORD
793 1 SET(BLK:BY_PHONE,BLK:BY_PHONE) ! SET TO THE SAME RECORD
794 1 SKIP(BLKBOOK,-1) ! SKIP TO TOP OF SAME PAGE
795
BLKBOOK.CLA CLARION COMPILER v2.0
Print Blkbook By Name 10/27/90 11:52 PM PAGE 22
797
798 1 RPT_NAME PROCEDURE
799
800 1 TITLE REPORT LENGTH(59),WIDTH(143),PRE(TTL)
801 2 RPT_HEAD DETAIL
802 3 . .
803 1 REPORT REPORT LENGTH(59),WIDTH(143),PAGE(MEM:PAGE),LINE(MEM:LINE),PRE(RPT)
804 2 PAGE_HEAD HEADER
805 3 COL(62) STRING('Print Blkbook By Name')
806 3 ROW(+2,1) STRING('NAME {29}PHONE STREET {20}CITY {22}STATE ZIP {8}COMMENTS') CTL(@LF2)
807 3 .
808 2 DETAIL DETAIL
809 3 COL(1) STRING(25),USE(BLK:NAME)
810 3 COL(27) STRING(@P###-###-####P),USE(BLK:PHONE)
811 3 COL(40) STRING(25),USE(BLK:STREET)
812 3 COL(66) STRING(25),USE(BLK:CITY)
813 3 COL(92) STRING(2),USE(BLK:STATE)
814 3 COL(98) STRING(@N_5),USE(BLK:ZIP)
815 3 COL(109) STRING(35),USE(BLK:COMMENTS) CTL(@LF)
816 3 .
817 2 DETAILA DETAIL
818 3 MEMO_1 COL(109) STRING(35) CTL(@LF)
819 3 .
820 2 DETAILB DETAIL
821 3 .
822 2 RPT_FOOT DETAIL
823 3 .
824 2 PAGE_FOOT FOOTER
825 3 ROW(+1,69) STRING('PAGE')
826 3 COL(74) STRING(@N3),USE(MEM:PAGE) CTL(@LF)
827 3 CTL(@FF)
828 3 . .
829
830
831 1 CODE
832 1 DONE# = 0 !TURN OFF DONE FLAG
833 1 CLEAR(BLK:RECORD) !MAKE SURE RECORD CLEARED
834 1 PRINT(TTL:RPT_HEAD) !PRINT TITLE PAGE
835 1 CLOSE(TITLE) !CLOSE TITLE REPORT
836 1 SET(BLK:BY_NAME) !SET TO FIRST RECORD
837 1 DO NEXT_RECORD !READ FIRST RECORD
838 1 MEM:DEVICE = '+' & MEM:DEVICE !APPEND DISK RPT TO TITLE
839 1 OPEN(REPORT) !OPEN THE REPORT
840 1 LOOP UNTIL DONE# !READ ALL RECORDS IN FILE
841 2 SAVE_LINE# = MEM:LINE ! SAVE LINE NUMBER
842 2 LAST_REC# = POINTER(BLKBOOK)
843 2 PRINT(RPT:DETAIL) ! PRINT DETAIL LINES
844 2 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
845 2 LOOP MEMO_1# = 285 TO 2 BY -1 !BACKSCAN THE MEMO FIELD TO
846 3 IF BLK_MEMO_ROW[MEMO_1#] <> '' THEN BREAK. ! FIND NUMBER OF ROWS USED
847 3 . ! END OF MEMOLEN
848 2 J# = 2 !START WITH SECOND ROW
849 2 LOOP !LOOP THRU ALL USED ROWS
850 3 MEMODONE# = 0 ! NO MEMOS DONE YET
BLKBOOK.CLA CLARION COMPILER v2.0
Print Blkbook By Name 10/27/90 11:52 PM PAGE 23
851 3 IF J# <= MEMO_1# !IF IN THE RANGE OF THIS MEMO
852 4 RPT:MEMO_1 = BLK_MEMO_ROW[J#] ! MOVE A MEMO FIELD ROW
853 4 MEMODONE# = 1 ! MEMO HAS BEEN MOVED
854 4 ELSE !OTHERWISE
855 4 RPT:MEMO_1 = '' ! NO MEMO TO DO
856 4 . ! END OF SETMEMO
857 3 IF MEMODONE# = 0 ! ALL MEMOS PRINTED
858 4 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
859 4 BREAK ! EXIT MEMO PRINT LOOP
860 4 . !
861 3 PRINT(RPT:DETAILA) !PRINT THE DETAIL RECORD
862 3 J# += 1 ! INCREMENT COUNTER
863 3 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
864 3 .
865 2 PRINT(RPT:DETAILB) !PRINT THE DETAIL RECORD
866 2 DO NEXT_RECORD ! GET NEXT RECORD
867 2 . !
868 1 PRINT(RPT:RPT_FOOT) !PRINT GRAND TOTALS
869 1 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
870 1 CLOSE(REPORT) !CLOSE REPORT
871 1 MEM:DEVICE = SUB(MEM:DEVICE,2,LEN(MEM:DEVICE)-1) !TURN OFF APPEND REPORT
872 1 RETURN !RETURN TO CALLER
873
874
875 1 NEXT_RECORD ROUTINE !GET NEXT RECORD
876 1 LOOP UNTIL EOF(BLKBOOK) ! READ UNTIL END OF FILE
877 2 NEXT(BLKBOOK) ! READ NEXT RECORD
878 2 EXIT ! EXIT THE ROUTINE
879 2 . !
880 1 DONE# = 1 ! ON EOF, SET DONE FLAG
881
882 1 CHECK_PAGE ROUTINE !CHECK FOR NEW PAGE
883 1 IF MEM:LINE <= SAVE_LINE# ! ON PAGE OVERFLOW
884 2 SAVE_LINE# = MEM:LINE ! RESET LINE NUMBER
885 2 .
886 1 LOOP UNTIL NOT KEYBOARD() !LOOK FOR KEYSTROKE
887 2 ASK
888 2 IF KEYCODE() = REJECT_KEY THEN RETURN. !ABORT REPORT
889 2 .
890
BLKBOOK.CLA CLARION COMPILER v2.0
Print Blkbook By Phone 10/27/90 11:52 PM PAGE 24
892
893 1 RPT_PHONE PROCEDURE
894
895 1 TITLE REPORT LENGTH(59),WIDTH(143),PRE(TTL)
896 2 RPT_HEAD DETAIL
897 3 . .
898 1 REPORT REPORT LENGTH(59),WIDTH(143),PAGE(MEM:PAGE),LINE(MEM:LINE),PRE(RPT)
899 2 PAGE_HEAD HEADER
900 3 COL(64) STRING('Print Blkbook By Phone')
901 3 ROW(+2,1) STRING('NAME {29}PHONE STREET {20}CITY {22}STATE ZIP {8}COMMENTS') CTL(@LF2)
902 3 .
903 2 DETAIL DETAIL
904 3 COL(1) STRING(25),USE(BLK:NAME)
905 3 COL(27) STRING(@P###-###-####P),USE(BLK:PHONE)
906 3 COL(40) STRING(25),USE(BLK:STREET)
907 3 COL(66) STRING(25),USE(BLK:CITY)
908 3 COL(92) STRING(2),USE(BLK:STATE)
909 3 COL(98) STRING(@N_5),USE(BLK:ZIP)
910 3 COL(109) STRING(35),USE(BLK:COMMENTS) CTL(@LF)
911 3 .
912 2 DETAILA DETAIL
913 3 MEMO_1 COL(109) STRING(35) CTL(@LF)
914 3 .
915 2 DETAILB DETAIL
916 3 .
917 2 RPT_FOOT DETAIL
918 3 .
919 2 PAGE_FOOT FOOTER
920 3 ROW(+1,71) STRING('PAGE')
921 3 COL(76) STRING(@N3),USE(MEM:PAGE) CTL(@LF)
922 3 CTL(@FF)
923 3 . .
924
925
926 1 CODE
927 1 DONE# = 0 !TURN OFF DONE FLAG
928 1 CLEAR(BLK:RECORD) !MAKE SURE RECORD CLEARED
929 1 PRINT(TTL:RPT_HEAD) !PRINT TITLE PAGE
930 1 CLOSE(TITLE) !CLOSE TITLE REPORT
931 1 SET(BLK:BY_PHONE) !SET TO FIRST RECORD
932 1 DO NEXT_RECORD !READ FIRST RECORD
933 1 MEM:DEVICE = '+' & MEM:DEVICE !APPEND DISK RPT TO TITLE
934 1 OPEN(REPORT) !OPEN THE REPORT
935 1 LOOP UNTIL DONE# !READ ALL RECORDS IN FILE
936 2 SAVE_LINE# = MEM:LINE ! SAVE LINE NUMBER
937 2 LAST_REC# = POINTER(BLKBOOK)
938 2 PRINT(RPT:DETAIL) ! PRINT DETAIL LINES
939 2 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
940 2 LOOP MEMO_1# = 285 TO 2 BY -1 !BACKSCAN THE MEMO FIELD TO
941 3 IF BLK_MEMO_ROW[MEMO_1#] <> '' THEN BREAK. ! FIND NUMBER OF ROWS USED
942 3 . ! END OF MEMOLEN
943 2 J# = 2 !START WITH SECOND ROW
944 2 LOOP !LOOP THRU ALL USED ROWS
945 3 MEMODONE# = 0 ! NO MEMOS DONE YET
BLKBOOK.CLA CLARION COMPILER v2.0
Print Blkbook By Phone 10/27/90 11:52 PM PAGE 25
946 3 IF J# <= MEMO_1# !IF IN THE RANGE OF THIS MEMO
947 4 RPT:MEMO_1 = BLK_MEMO_ROW[J#] ! MOVE A MEMO FIELD ROW
948 4 MEMODONE# = 1 ! MEMO HAS BEEN MOVED
949 4 ELSE !OTHERWISE
950 4 RPT:MEMO_1 = '' ! NO MEMO TO DO
951 4 . ! END OF SETMEMO
952 3 IF MEMODONE# = 0 ! ALL MEMOS PRINTED
953 4 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
954 4 BREAK ! EXIT MEMO PRINT LOOP
955 4 . !
956 3 PRINT(RPT:DETAILA) !PRINT THE DETAIL RECORD
957 3 J# += 1 ! INCREMENT COUNTER
958 3 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
959 3 .
960 2 PRINT(RPT:DETAILB) !PRINT THE DETAIL RECORD
961 2 DO NEXT_RECORD ! GET NEXT RECORD
962 2 . !
963 1 PRINT(RPT:RPT_FOOT) !PRINT GRAND TOTALS
964 1 DO CHECK_PAGE ! DO PAGE BREAK IF NEEDED
965 1 CLOSE(REPORT) !CLOSE REPORT
966 1 MEM:DEVICE = SUB(MEM:DEVICE,2,LEN(MEM:DEVICE)-1) !TURN OFF APPEND REPORT
967 1 RETURN !RETURN TO CALLER
968
969
970 1 NEXT_RECORD ROUTINE !GET NEXT RECORD
971 1 LOOP UNTIL EOF(BLKBOOK) ! READ UNTIL END OF FILE
972 2 NEXT(BLKBOOK) ! READ NEXT RECORD
973 2 EXIT ! EXIT THE ROUTINE
974 2 . !
975 1 DONE# = 1 ! ON EOF, SET DONE FLAG
976
977 1 CHECK_PAGE ROUTINE !CHECK FOR NEW PAGE
978 1 IF MEM:LINE <= SAVE_LINE# ! ON PAGE OVERFLOW
979 2 SAVE_LINE# = MEM:LINE ! RESET LINE NUMBER
980 2 .
981 1 LOOP UNTIL NOT KEYBOARD() !LOOK FOR KEYSTROKE
982 2 ASK
983 2 IF KEYCODE() = REJECT_KEY THEN RETURN. !ABORT REPORT
984 2 .
985
986
NO MESSAGES THIS COMPILE