AQì U‹ì3Û¸PS¸Y+PS¸Pšµ%‹å]Ëd— GENERAL.PRGd¹d Ç—* general.prgd Œd �—* creation date ŽŽÙŒd �—* created by IONET ž†Œd �—*Œd�—*Œd�—* Locks.prg from Clipper Œd�—*Œd�—* Assumes SET EXCLUSIVE OFFŒd�—*Œd�—* UDF's for:Œd�—,* Command PurposeŒd�—5* ----------------------- ------------------------Œd�—:* 1. USE [EXCLUSIVE] Share/Deny others USEŒd�—6* 2. FLOCK() Lock current fileŒd�—8* 3. RLOCK()/LOCK() Lock current recordŒd�—:* 4. APPEND BLANK Lock new blank recordŒd�d�—*-*Œd�—* NET_USE functionŒd�—*Œd�—3* Trys to open a file for exclusive or shared use.ÜŒd�—2* SET INDEXes in calling procedure if successful.Œd �— * Pass the following parametersŒd!�—1* 1. Character - name of the .DBF file to openŒd"�—:* 2. Logical - mode of open (exclusive/.NOT. exclusive)Œd#�—4* 3. Numeric - seconds to wait (0 = wait forever)Œd$�—*Œd%�— * Example:Œd&�—#* IF NET_USE("Accounts", .T., 5)Œd'�—* SET INDEX TO NameŒd(�— * ELSEŒd)�—&* ? "Account file not available"Œd*�— * ENDIFŒd+�d,�—FUNCTION NET_USEŒd-�—PARAMETERS file, ex_use, waitŒd.�—PRIVATE foreverŒd/�d0�—forever = (wait = 0)Œd1�— DO WHILE (forever .OR. wait > 0)Œd2�d3�—, IF ex_use && exclusiveçŒd4�— USE &file EXCLUSIVEçŒd5�— ELSEäŒd6�—& USE &file && sharedçŒd7�— ENDIFŒd8�d9�—. IF .NOT. NETERR() && USE succeedsçŒd:�— RETURN (.T.)Œd;�— ENDIFŒd<�d=�—- INKEY(1) && wait 1 secondçŒd>�— wait = wait - 1Œd?�—ENDDOŒd@�—)RETURN (.F.) && USE failsçŒdA�—* End - NET_USEŒdB�dC�dD�—*-*ŒdE�—* FIL_LOCK functionŒdF�—*ŒdG�—'* Trys to lock the current shared fileŒdH�—* Pass the following parameterŒdI�—4* 1. Numeric - seconds to wait (0 = wait forever)ŒdJ�—*ŒdK�— * Example:ŒdL�—* IF FIL_LOCK(5)ŒdM�—)* REPLACE ALL Price WITH Price * 1.1ŒdN�— * ELSEŒdO�—* ? "File not available"ŒdP�— * ENDIFŒdQ�dR�—FUNCTION FIL_LOCK÷ŒdS�—PARAMETERS waitŒdT�—PRIVATE foreverŒdU�dV�— IF FLOCK()ŒdW�—& RETURN (.T.) && lockedçŒdX�—ENDIFŒdY�dZ�—forever = (wait = 0)Œd[�— DO WHILE (forever .OR. wait > 0)Œd\�d]�—/ INKEY(.5) && wait 1/2 secondçŒd^�— wait = wait - .5Œd_�d`�— IF FLOCK()Œda�—& RETURN (.T.) && lockedçŒdb�— ENDIFŒdc�dd�—ENDDOŒde�—*RETURN (.F.) && not lockedçŒdf�—* End - FIL_LOCKŒdg�dh�di�—*-*Œdj�—* REC_LOCK functionŒdk�—*Œdl�—"* Trys to lock the current recordŒdm�—* Pass the following parameterŒdn�—4* 1. Numeric - seconds to wait (0 = wait forever)Œdo�—*Œdp�— * Example:Œdq�—* IF REC_LOCK(5)Œdr�—"* REPLACE Price WITH newpriceöŒds�—* ELSEŒdt�—* ? "Record not available"Œdu�— * ENDIFŒdv�dw�—FUNCTION REC_LOCKŒdx�—PARAMETERS waitŒdy�—PRIVATE foreverŒdz�d{�— IF RLOCK()Œd|�—& RETURN (.T.) && lockedçŒd}�—ENDIFŒd~�d�—forever = (wait = 0)Œd€�— DO WHILE (forever .OR. wait > 0)Œd��d‚�— IF RLOCK()Œdƒ�—& RETURN (.T.) && lockedçŒd„�— ENDIFŒd…�d†�—/ INKEY(.5) && wait 1/2 secondçŒd‡�— wait = wait - .5Œdˆ�d‰�—ENDDOŒdŠ�—*RETURN (.F.) && not lockedçŒd‹�—* End - REC_LOCKŒdŒ�d��dŽ�—*-*Œd��—* ADD_REC functionŒd��—*Œd‘�—?* Returns true if record appended. The new record is currentŒd’�—* and locked.Œd“�— * Pass the following parameter÷Œd”�—4* 1. Numeric - seconds to wait (0 = wait forever)Œd•�—*Œd–�d—�—FUNCTION ADD_RECŒd˜�—PARAMETERS waitŒd™�—PRIVATE foreverŒdš�d›�— APPEND BLANKŒdœ�—IF .NOT. NETERR()Œd��— RETURN (.T.)Œdž�—ENDIFŒdŸ�d �—forever = (wait = 0)Œd¡�— DO WHILE (forever .OR. wait > 0)Œd¢�d£�— APPEND BLANKŒd¤�— IF .NOT. NETERR()Œd¥�— RETURN .T.Œd¦�— ENDIFŒd§�d¨�—/ INKEY(.5) && wait 1/2 secondçŒd©�— wait = wait - .5Œdª�d«�—ENDDOŒd¬�—*RETURN (.F.) && not lockedçŒd­�— * End ADD_RECŒd®�d¯�d°�d±�—*-* easylock EXCLUSIVE drbŒd²�—** Trys to open a file for exclusive use.Œd³�—* trys for 5 secondsŒd´�—5* if not sucessful saves screen and gives option ofÜŒdµ�—$* continue,exit,or quit on line 24Œd¶�—.* if screen was changed then restores screenŒd·�d¸�—FUNCTION use_EŒd¹�—PARAMETERS fileŒdº�—PRIVATE cleared_Œd»�—cleared_ = .f.Œd¼�— DO WHILE .t.Œd½�— * check if openŒd¾�— IF net_use('&file', .t., 5)çŒd¿�— RETURN (.t.)ŒdÀ�— ELSEŒdÁ�— cleared_ = .t.ŒdÂ�— SAVE SCREENŒdÃ�— @ 24,0 clearŒdÄ�— store 'C' to m_waitŒdÅ�—` @ 24,0 say ' File is in Use - C)ontinue waiting, E)xit, Q)uit ' get m_wait pict '!'ŒdÆ�— READŒdÇ�— DO CASEŒdÈ�— CASE m_wait='E'ŒdÉ�— IF cleared_ŒdÊ�— RESTORE SCREENŒdË�— ENDIF cleared_ŒdÌ�— RELE cleared_ŒdÍ�— RETURN (.f.)ìŒdÎ�— CASE m_wait='C'ŒdÏ�— LOOPŒdÐ�— CASE m_wait='Q'ŒdÑ�— QUITŒdÒ�— ENDCASEŒdÓ�— ENDIF netuseŒdÔ�—ENDDO tŒdÕ�dÖ�—*-* easylock SHARED drbŒd×�—'* Trys to open a file for shared use.ŒdØ�—* trys for 5 secondsŒdÙ�—5* if not sucessful saves screen and gives option ofŒdÚ�—$* continue,exit,or quit on line 24ŒdÛ�—.* if screen was changed then restores screenŒdÜ�dÝ�—FUNCTION use_SŒdÞ�—PARAMETERS fileŒdß�—PRIVATE cleared_Œdà�—cleared_ = .f.Œdá�— DO WHILE .t.Œdâ�— * check if openŒdã�— IF net_use('&file', .f., 5)çŒdä�— RETURN (.t.)Œdå�— ELSEŒdæ�— cleared_ = .t.Œdç�— SAVE SCREENŒdè�— @ 24,0 clearŒdé�— store 'C' to m_waitíŒdê�—` @ 24,0 say ' File is in Use - C)ontinue waiting, E)xit, Q)uit ' get m_wait pict '!'Œdë�— READŒdì�— DO CASEŒdí�— CASE m_wait='E'Œdî�— IF cleared_Œdï�— restore screenŒdð�— ENDIF cleared_Œdñ�— RELE cleared_Œdò�— RETURN (.f.)Œdó�— CASE m_wait='C'Œdô�— LOOPŒdõ�— CASE m_wait='Q'Œdö�— QUITŒd÷�— ENDCASEŒdø�— ENDIF netuseŒdù�—ENDDO tŒdú�dû�—* EOF - easylocksŒdü�d�d�—P*-------------------------------------------------------------------------------Œd�d�—P*-------------------------------------------------------------------------------Œd�—PROCEDURE PRINTERŒd�—PARAMETER Prow_top, Pcol_leftöŒd�—3STORE "" TO ML5,ML10,ML12,ML17,ML20,ML5210,ML17210Œd�—+STORE "" TO MLNLQON,MLNLQOFF,ML6LPI,ML8LPIŒd�—DECLARE array_prt[16]Œd �—+array_prt[1] = " Daisywriter 2000 "Œd �—+array_prt[2] = " Diablo-630 "Œd �—,array_prt[3] = " HP LaserJet Series II " Œd �—,array_prt[4] = " HP LaserJet Series IID " Œd �—,array_prt[5] = " HP LaserJet Series IIP " Œd�—,array_prt[6] = " HP LaserJet Series III " Œd�—,array_prt[7] = " HP LaserJet Series IIID" Œd�—+array_prt[8] = " IBM/Epson "Œd�—+array_prt[9] = " Microline 92/93 "Œd�—+array_prt[10] = " NEC 2050/3550 "Œd�—,array_prt[11] = " NEC P6 "Œd�—,array_prt[12] = " Pacemark 2350/2410 " îŒd�—,array_prt[13] = " Pacemark 2410/IBM " Œd�—-array_prt[14] = " Plain " Œd�—.array_prt[15] = " QUME SPRINT 11 " Œd�—/array_prt[16] = " Star Micronics 10x/15x " Œd�—0* array_prt[17] = " X-TECH Xerox 9700 " Œd�—! DECLARE P_avail[LEN(array_prt)]Œd�— FOR ii = 1 to LEN(array_prt)Œd�—) xxx = 'P_avail['+LTRIM(STR(ii,2))+']'Œd�— STORE .t. TO &xxxçŒd�— NEXTŒd!�—) Prelative = PRT && default printer çŒd"�— org_prt = prtŒd$�— * Prow_top = 10 Œd%�— * Pcol_left = 40 Œd&�— Pmax_rows = 11 Œd'�— Phow_wide = 25 Œd(�— Pchoices = LEN(array_prt) Œd*�— @ 23,00 clearŒd+�— DO footer2bŒd-�— IF Prow_top + Pmax_rows > 21çŒd.�— Pmax_rows = 21 - Prow_top Œd/�— ENDIFŒd1�—[ @ Prow_top - 1, Pcol_left - 3 CLEA TO Prow_top + Pmax_rows + 1, Pcol_left + Phow_wide + 3Œd2�—N @ Prow_top - 1, Pcol_left - 2 TO Prow_top + Pmax_rows, Pcol_left + Phow_wideŒd3�— SETCOLOR(colornorm)Œd4�—R SHADOW(Prow_top - 1, Pcol_left - 2, Prow_top + Pmax_rows, Pcol_left + Phow_wide)Œd6�—6 @ Prow_top,Pcol_left say " PRINTER SELECTIONS " Œd7�— SETCOLOR(colorarray)Œd9�— CLEAR TYPEAHEADŒd:�—% KEYBOARD CHR(32) && Activate UDFçŒd<�—Š PRT = ACHOICE(Prow_top + 2, Pcol_left, Prow_top + Pmax_rows - 1, Pcol_left + Phow_wide - 2, array_prt, P_avail, "Prules",PRT,Prelative) Œd=�— SETCOLOR(colornorm)Œd?�— DO CASEŒd@�— CASE LASTKEY() = 27׌dA�— prt = org_prt ŒdB�dC�—3 CASE PRT = 1 ŒdD�—3 printer = 'Daisywriter 2000 ' ŒdE�—3 ML5 = "CHR(27)+CHR(31)+CHR(50)+CHR(52)"ŒdF�—3 ML10 = "CHR(27)+'P'" ŒdG�—3 ML12 = "CHR(27)+'E'" ŒdH�—3 ML17 = "CHR(27)+'M'" ŒdI�—3 ML5210 = '' ŒdJ�—J * NOTE: ANY CODE SUPPORTED ON ONE PRINTER AND NOT ON ANOTHER SHOULDŒdK�—C * BE INCLUDED ON ALL OTHER PRINTERS AS A VALUE.ŒdL�dM�—3 CASE PRT = 2 ŒdN�—3 printer = 'Diablo 630 ' ŒdO�—3 ML5 = "CHR(27)+CHR(31)+CHR(25)" ŒdP�—3 ML10 = "CHR(27)+CHR(31)+CHR(13)" ŒdQ�—3 ML12 = "CHR(27)+CHR(31)+CHR(11)" ŒdR�—3 ML17 = "CHR(27)+CHR(31)+CHR(9)" ŒdS�—3 ML5210 = "" ŒdT�dU�—3 CASE PRT = 3 ŒdV�—3 printer = " HP LaserJet Series II " ŒdW�—3 ML5 = "CHR(27)+'(s5H'" ŒdX�—3 ML10 = "CHR(27)+'(s10H'" ŒdY�—L ML12 = CHR(27)+'(s10H'+CHR(27)+chr(38)+'k10H' && compress 10cpiçŒdZ�—3 ML17 = "CHR(27)+'(s17H'" Œd[�—Y ML5210 = "chr( 27)+chr( 38)+ 'l0O'+chr( 27)+ '(8U'+chr( 27)+ '(s0p10h12v0s0b3T'"ÛŒd\�d]�—3 CASE PRT = 4 Œd^�—3 printer = " HP LaserJet Series IID " Œd_�—3 ML5 = "CHR(27)+'(s5H'" Œd`�—3 ML10 = "CHR(27)+'(s10H'" Œda�—U ML12 = CHR(27)+'(s10H'+CHR(27)+chr(38)+'k10H' && compress 10cpi to 12 cpiçŒdb�—3 ML17 = "CHR(27)+'(s17H'" Œdc�—Z ML5210 = "CHR( 27)+CHR( 38)+ 'l0O'+CHR( 27)+ '(8U'+chr( 27)+ '(s0p10h12v0s0b3T'" Œdd�de�—3 CASE PRT = 5 Œdf�—3 printer = " HP LaserJet Series IIP " Œdg�—3 ML5 = "CHR(27)+'(s5H'" Œdh�—3 ML10 = "CHR(27)+'(s10H'" ÖŒdi�—V ML12 = CHR(27)+'(s10H'+CHR(27)+chr(38)+'k10H' && compress 10cpi to 12 cpiçŒdj�—3 ML17 = "CHR(27)+'(s17H'" Œdk�—Z ML5210 = "chr( 27)+chr( 38)+ 'l0O'+chr( 27)+ '(8U'+chr( 27)+ '(s0p10h12v0s0b3T'" Œdl�dm�—3 CASE PRT = 6 Œdn�—3 printer = " HP LaserJet Series III " Œdo�—3 ML5 = "CHR(27)+'(s5H'" Œdp�—3 ML10 = "CHR(27)+'(s10H'" Œdq�—< ML12 = CHR(27)+'(s12H' && must have 12cpi font çŒdr�—3 ML17 = "CHR(27)+'(s17H'" Œds�—Z ML5210 = "chr( 27)+chr( 38)+ 'l0O'+chr( 27)+ '(8U'+chr( 27)+ '(s0p10h12v0s0b3T'" Œdt�du÷�—3 CASE PRT = 7 Œdv�—3 printer = " HP LaserJet Series IIID " Œdw�—3 ML5 = "CHR(27)+'(s5H'" Œdx�—3 ML10 = "CHR(27)+'(s10H'" Œdy�—= ML12 = CHR(27)+'(s12H' && must have 12cpi font çŒdz�—3 ML17 = "CHR(27)+'(s17H'" Œd{�—[ ML5210 = "chr( 27)+chr( 38)+ 'l0O'+chr( 27)+ '(8U'+chr( 27)+ '(s0p10h12v0s0b3T'" Œd|�d}�—3 CASE PRT = 8 Œd~�—3 printer = 'IBM/Epson ' Œd�—3 ML5 = "CHR(27)+'W1'" Œd€�—3 ML10 = "CHR(27)+'P'+CHR(18)" Œd��—3 ML12 = "CHR(27)+'M'" Œd‚�—3 ML17 = "CHR(15)" Œdƒ�—3 ML5210 = "CHR(27)+'W0'" Œd„�d…�—3 CASE PRT = 9 Œd†�—3 printer = 'Microline 92/93' Œd‡�—3 ML5 = "CHR(31)" Œdˆ�—3 ML10 = "CHR(30)" Œd‰�—3 ML12 = "CHR(28)" ŒdŠ�—3 ML17 = "CHR(29)" Œd‹�—3 ML5210 = "CHR(30)" ŒdŒ�d��—3 CASE PRT = 10 ŒdŽ�—3 printer = 'NEC 2050/3050 ' Œd��—3 ML5 = "CHR(27)+CHR(93)+'O'" Œd��—3 ML10 = "CHR(27)+CHR(93)+'L'" Œd‘�—3 ML12 = "CHR(27)+CHR(93)+'J'" Œd’�—3 ML17 = "CHR(27)+CHR(93)+'H'" Œd“�d”�—3 CASE PRT = 11 Œd•�—3 printer = 'NEC P6 ' Œd–�—3 ML5 = "CHR(14)" Œd—�—3 ML10 = "CHR(27)+'P'" Œd˜�—3 ML12 = "CHR(27)+'M'" Œd™�—3 ML17 = "CHR(15)" Œdš�—3 ML20 = "CHR(15)" Œd›�—3 ML5210 = "CHR(20)" Œdœ�—3 ML17210 = "CHR(18)" Œd��—3 MLNLQON = "CHR(27)+'E'" Œdž�—3 MLNLQOFF = "CHR(27)+'F'" ŒdŸ�—3 ML6LPI = "CHR(27)+'2'" Œd �—3 ML8LPI = "CHR(27)+'0'" Œd¡�d¢�—3 CASE PRT = 12 Œd£�—3 printer = 'Pacemark 2350/2410' Œd¤�—3 ML5 = "CHR(27)+CHR(67)" Œd¥�—3 ML10 = "CHR(27)+CHR(54)" Œd¦�—3 ML12 = "CHR(27)+CHR(65)" Œd§�—3 ML17 = "CHR(27)+CHR(66)" Œd¨�—3 ML5210 = "CHR(27)+CHR(90)" Œd©�dª�—3 CASE PRT = 13 Œd«�—3 printer = 'Pacemark 2410/IBM' Œd¬�—3 ML5 = "CHR(27)+'W1'" Œd­�—3 ML10 = "CHR(27)+'P'+CHR(18)" òŒd®�—3 ML12 = "CHR(27)+':'" Œd¯�—3 ML17 = "CHR(15)" Œd°�—3 ML5210 = "CHR(27)+'W0'" Œd±�d²�—3 CASE PRT = 14 Œd³�—3 printer = 'Plain ' Œd´�—E * BECAUSE AT THE BEGINNING WE SET EVERYTHING TO EPSON, WE'LL BEŒdµ�—K * SURE TO BLANK WHAT WE DID DO JUST TO BE CERTAIN THAT THEY ARE Œd¶�—3 ML5 = "" Œd·�—3 ML10 = "" Œd¸�—3 ML12 = "" Œd¹�—3 ML17 = "" Œdº�—3 ML5210 = "" Œd»�d¼�—3 CASE PRT = 15 Œd½�—3 printer = 'Qume Sprint 11 ' Œd¾�—3 ML5 = "CHR(27)+CHR(31)+CHR(25)" Œd¿�—3 ML10 = "CHR(27)+CHR(31)+CHR(13)" ŒdÀ�—3 ML12 = "CHR(27)+CHR(31)+CHR(11)" ŒdÁ�—3 ML17 = "CHR(27)+CHR(31)+CHR(9)" ŒdÂ�—3 ML5210 = "" ŒdÃ�—3 ŒdÄ�—3 CASE PRT = 16 ŒdÅ�—3 printer = 'Star Micronics 10x/15x' ŒdÆ�—3 ML5 = "CHR(27)+CHR(66)+CHR(1)+CHR(14)" ŒdÇ�—3 ML10 = "CHR(27)+CHR(66)+CHR(1)" ŒdÈ�—3 ML12 = "CHR(27)+CHR(66)+CHR(2)" ÿŒdÉ�—3 ML17 = "CHR(27)+CHR(66)+CHR(3)" ŒdÊ�—3 ML5210 = "" ŒdË�dÌ�—3 * CASE PRT = 17 ŒdÍ�—3 * printer = 'X-TECH Xerox 9700' ŒdÎ�—3 * ML5 = "" ŒdÏ�—3 * ML10 = CHR(1) ŒdÐ�—3 * ML12 = CHR(2) ŒdÑ�—3 * ML17 = CHR(3) ŒdÒ�—3 * ML5210 = "" ŒdÓ�dÔ�—D ŒdÕ�—D ENDCASE ŒdÖ�—D IF 'HP LaserJet '$printer Œd×�—D islaser = .t. ŒdØ�—D ELSE ŒdÙ�—D islaser = .f. ŒdÚ�—D ENDIF ŒdÛ�—D ŒdÜ�—D RETURN ŒdÝ�—D * end PROCEDURE PRINTER ŒdÞ�—P*-------------------------------------------------------------------------------Œdß�dà�dá�—P*-------------------------------------------------------------------------------Œdâ�—G* Œdã�—P FUNCTION Prules Œdä�—P PARAMETERS mode,element,position Œdå�—P * 910203 Œdæ�—P * Œdç�—P old_clr = setcolor() Œdè�—P Œdé�—P IF !isprinter() Œdê�—L SETCOLOR(blinknorm) Œdë�—P @ Prow_top + 1, Pcol_left SAY " Printer OFF line " Œdì�—L SETCOLOR(old_clr) Œdí�—P ELSE Œdî�—P @ Prow_top + 1, Pcol_left SAY " " Œdï�—P ENDIF Œdð�—P Œdñ�—P *-* repaint stripes Œdò�—K SETCOLOR(colornorm) Œdó�—P for row = Prow_top + 2 to Prow_top + Pmax_rows - 1 Œdô�—P @ row,Pcol_left - 2 say chr(176) Œdõ�—P @ row,Pcol_left + Phow_wide say chr(176) Œdö�—P next Œd÷�—P Œdø�—P xpct = element/Pchoices Œdù�—P delta = (Prow_top + Pmax_rows - 1) - (Prow_top + 2) Œdú�—P Œdû�—P DO CASE Œdü�—P CASE element = 1 && top çŒdý�—P @ Prow_top + 2, Pcol_left - 2 SAY chr(178) Œdþ�—P @ Prow_top + 2, Pcol_left + Phow_wide SAY chr(178) Œdÿ�—P Œd�—P CASE element = Pchoices && bottom çŒd�—P @ Prow_top + Pmax_rows - 1, Pcol_left - 2 SAY chr(178) Œd�—P @ Prow_top + Pmax_rows - 1, Pcol_left + Phow_wide SAY chr(178) Œd�—P Œd�—P OTHERWISE && in between çŒd�—P IF xpct * delta <= 1 Œd�—P @ Prow_top + 3, Pcol_left - 2 SAY chr(178) Œd�—P @ Prow_top + 3, Pcol_left + Phow_wide SAY chr(178) Œd�—P ELSE Œd �—P @ Prow_top + 2 + (xpct * delta), Pcol_left - 2 SAY chr(178) Œd �—P @ Prow_top + 2 + (xpct * delta), Pcol_left + Phow_wide SAY chr(178) Œd �—P ENDIF Œd �—P ENDCASE Œd �—P Œd�—L SETCOLOR(old_clr) Œd�—P Œd�—P DO CASE Œd�—P CASE LASTKEY() = 27 && Esc PRESSED çŒd�—P REPLY = 0 Œd�—P Œd�—P CASE LASTKEY() = 4 .OR. LASTKEY() = 19 && left or right arrow PRESSED çŒd�—P REPLY = 0 Œd�—P Œd�—P CASE LASTKEY() = 13 && Return pressed çŒd�—P REPLY = 1 Œd�—P Œd�—P OTHERWISE Œd�—P REPLY = 2 Œd�—P Œd�—P ENDCASE Œd�—P SET CURSOR OFF Œd�—P Œd �—P Œd!�—P Prelative = position Œd"�—P RETURN (reply) Œd#�— *Œd$�—! * end FUNCTION Prules Œd%�—P*-------------------------------------------------------------------------------Œd&�d'�d(�—P*-------------------------------------------------------------------------------Œd)�—FUNCTION SHADOWŒd*�—' PARAMETERS SHADA, SHADB, SHADC, SHADDŒd+�d,�—8 SHAD_COLOR = SETCOLOR() Œd-�—8 IF ISCOLOR() Œd.�—7 SETCOLOR('n') Œd/�—8 ELSE Œd0�—8 SETCOLOR(STRTRAN( SHAD_COLOR, "+", "")) Œd1�—8 ENDIF ÕŒd2�d3�—8 FOR SHADX = SHADA+1 TO SHADC+1 Œd4�—8 @ SHADX, SHADD+1 SAY CHR(177) Œd5�—8 @ SHADX, SHADD+2 SAY CHR(177) Œd6�—8 NEXT Œd7�—8 @ SHADX-1,SHADB+1 SAY REPLICATE(CHR(177), SHADD-SHADB)Œd8�d9�—8 SETCOLOR(SHAD_COLOR) Œd:�—8 RETURN(.F.) Œd;�—R *-------------------------------------------------------------------------------Œd<�d=�d>�—P*-------------------------------------------------------------------------------Œd?�—FUNCTION UNSHADOW Œd@�—( PARAMETERS SHADA, SHADB, SHADC, SHADD ŒdA�dB�—( SHAD_COLOR = SETCOLOR() ŒdC�—* SETCOLOR(STRTRAN( SHAD_COLOR, "+", "")) ŒdD�dE�—* FOR SHADX = SHADA+1 TO SHADC+1 ŒdF�—* @ SHADX, SHADD+1 SAY CHR(32) ŒdG�—* @ SHADX, SHADD+2 SAY CHR(32) ŒdH�—* NEXT ŒdI�—8 @ SHADX-1,SHADB+1 SAY REPLICATE(CHR(32), SHADD-SHADB) ŒdJ�dK�—$ SETCOLOR(SHAD_COLOR) ŒdL�—$ RETURN(.F.) ŒdM�—R *-------------------------------------------------------------------------------ŒdN�dO�dP�—R *-------------------------------------------------------------------------------ŒdQ�—7 *FUNCTION shadow ŒdR�—7 *PARAMETERS top,Lcol,botom,rite áŒdS�—7 *PRIVATE top,Lcol,botom,rite ŒdT�—7 *-*-* requires pi_attr.obj ŒdU�—7 *pi_ATTR(top + 1, rite + 1, botom, rite + 2,7) ŒdV�—7 *pi_ATTR(botom + 1, Lcol + 1, botom + 1, rite + 2,7) ŒdW�dX�— *RETURN(.t.) ŒdY�—R *-------------------------------------------------------------------------------ŒdZ�d[�d\�—P*-------------------------------------------------------------------------------Œd]�—PROCEDURE footer2b Œd^�— @ 24,00 Œd_�—_ @ 24,14 SAY CHR(24)+[ ]+CHR(25)+[ Scroll Enter ]+CHR(60)+CHR(196)+CHR(217)+[ to select]Œd`�— @ 24,56 say 'Esc to Abort' Œda�— SETCOLOR(colorrev) Œdb�—! @ 24,14 SAY CHR(24)+' '+CHR(25)æŒdc�—0 @ 24,31 say [Enter ]+CHR(60)+CHR(196)+CHR(217)Œdd�— @ 24,56 SAY [Esc] Œde�—0 SETCOLOR(colornorm) Œdf�— RETURNŒdg�—R *-------------------------------------------------------------------------------Œdh�di�dj�—P*-------------------------------------------------------------------------------Œdk�—PROCEDURE footer2AŒdl�— @ 24,00 Œdm�—- @ 24,08 SAY CHR(24)+[ ]+CHR(25)+[ Scroll] Œdn�—> @ 24,23 SAY [Enter ]+CHR(60)+CHR(196)+CHR(217)+[ to select] Œdo�—) @ 24,47 SAY [Esc to Abort F1-Help] Œdp�— SETCOLOR(colorrev) Œdq�—" @ 24,08 SAY CHR(24)+' '+CHR(25) Œdr�—0 @ 24,23 say [Enter ]+CHR(60)+CHR(196)+CHR(217)Œds�— @ 24,47 SAY [Esc] Œdt�— @ 24,64 SAY [F1] çŒdu�— SETCOLOR(colornorm) Œdv�— RETURN Œdw�—R *-------------------------------------------------------------------------------Œdx�dy�dz�—P*-------------------------------------------------------------------------------Œd{�—PROCEDURE colorsŒd|�—PARAMETER memcolorŒd}�— * color fileŒd~�—$* sets up color's under user controlŒd�—9* needs 2 public vars in main prg ( colornorm, colorrev )Œd€�—CLEARŒd��—&* name of mem file to save settings toŒdƒ�d„�—"* assign function keys for controlŒd…�—SET KEY -7 TO savecolorŒd†�—SET KEY -8 TO chgclrŒd‡�—SET KEY -9 TO chgfldŒdˆ�—;* next key F5 is not told about to user - shows you actual Œd‰�—"* clipper code for color settingsŒdŠ�—SET KEY -4 TO showcodeøŒd‹�dŒ�—9* set flag for blinking say on firstpass to get user attnŒd��—firsttime = .t.ŒdŽ�—* set save flagŒd��—pressedf8 = .f.Œd��d‘�—* what colors are we usingŒd’�— black = 'N'Œd“�— blue = 'B'Œd”�— green = 'G'Œd•�—cyan = 'BG'Œd–�— red = 'R'Œd—�—magenta = 'RB'Œd˜�—brown = 'GR'Œd™�— white = 'W'Œdš�—gray = 'N+'Œd›�—yellow = 'GR+'Œdœ�d��—-* need temporary public vars - rele when doneŒdž�—.PUBLIC ctext,cback,clsg,cbsg,clug,cbug,curcolrŒdŸ�d �—*ctext = blackŒd¡�— *cback = cyanŒd¢�— *clsg = redŒd£�— *cbsg = whiteŒd¤�— *clug = blackŒd¥�— *cbug = whiteŒd¦�d§�—* parse out current settingsŒd¨�—xyz = colornorm Œd©�— * normal textŒdª�—#ctext = substr(xyz,1,at('/',xyz)-1)Œd«�—xyz = substr(xyz,at('/',xyz)+1)Œd¬�—* screen backgroundŒd­�—#cback = substr(xyz,1,at(',',xyz)-1)Œd®�—xyz = substr(xyz,at(',',xyz)+1)Œd¯�—* letters in selected get Œd°�—"clsg = substr(xyz,1,at('/',xyz)-1)Œd±�—xyz = substr(xyz,at('/',xyz)+1)Œd²�—* background in selected getŒd³�—$cbsg = substr(xyz,1,at(',,,',xyz)-1)Œd´�—!xyz = substr(xyz,at(',,,',xyz)+3)Œdµ�—* letters in unselected getŒd¶�—"clug = substr(xyz,1,at('/',xyz)-1)Œd·�—xyz = substr(xyz,at('/',xyz)+1)Œd¸�—* background in unselected getŒd¹�— cbug = xyzŒdº�d»�—* current color settingsŒd¼�—Icurcolr = ctext +'/'+ cback +','+ clsg +'/'+ cbsg +',,,'+ clug +'/'+ cbugŒd½�—currev = cback +'/'+ ctext Œd¾�d¿�—H* pointer to what we are currently working on - text, background, etc...ÔŒdÀ�—store 1 to curfldŒdÁ�dÂ�— DO WHILE .t.ŒdÃ�— * did we save yetŒdÄ�— IF .NOT. pressedf8ŒdÅ�—K * set color setting so we have control over our part of screen - bottomŒdÆ�— SETCOLOR('W/N,N/W,,,N/W') ŒdÇ�— CLEARŒdÈ�—$ * tell them what they can changeŒdÉ�—/ @ 15,35 say 'Normal Text 'ŒdÊ�—/ @ 16,35 say 'Screen Background 'ŒdË�—/ @ 17,35 say 'Letters in Selected Get 'ŒdÌ�—/ @ 18,35 say 'Background in Selected Get 'ŒdÍ�—/ @ 19,35 say 'Letters in Unselected Get 'ŒdÎ�—/ @ 20,35 say 'Background in Unselected Get 'ŒdÏ�dÐ�—/ * which setting are we currently working onŒdÑ�— DO CASEŒdÒ�— CASE curfld = 1ŒÞdÓ�—S * if its the first pass - blink so they are sure to see function key names ŒdÔ�— IF firsttimeŒdÕ�— setcolor('W/N*')ŒdÖ�—$ @ 15,21 say '<=F9 F10=>'Œd×�—$ SETCOLOR('W/N,N/W,,,N/W') ŒdØ�— firsttime = .f.ŒdÙ�— ELSEŒdÚ�—$ @ 15,21 say '<=F9 F10=>'ŒdÛ�— ENDIFŒdÜ�— CASE curfld = 2ŒdÝ�—" @ 16,21 say '<=F9 F10=>'ŒdÞ�— CASE curfld = 3Œdß�—" @ 17,21 say '<=F9 F10=>'Œdà�— CASE curfld = 4Œdá�—" @ 18,21 say '<=F9 F10=>'Œdâ�— CASE curfld = 5Œdã�—" @ 19,21 say '<=F9 F10=>'Œdä�— CASE curfld = 6Œdå�—" @ 20,21 say '<=F9 F10=>'Œdæ�— ENDCASEŒdç�dè�—" * say current color settingsŒdé�—# @ 15,12 say whatisit('ctext')Œdê�—# @ 16,12 say whatisit('cback')Œdë�—" @ 17,12 say whatisit('clsg')Œdì�—" @ 18,12 say whatisit('cbsg')Œdí�—" @ 19,12 say whatisit('clug')Œdî�—" @ 20,12 say whatisit('cbug')Œdï�dð�— * say instructionsŒdñ�— do caseŒdò�— case curfld = 1Œdó�—; * currently text - next will be screen backgroundŒdô�—) wherenext = 'Screen Background'Œdõ�— case curfld = 2Œdö�— * currently backgroundŒd÷�—/ wherenext = 'Letters in Selected Get'Œdø�— case curfld = 3Œdù�—- * currently letters in selected getŒdú�—2 wherenext = 'Background in Selected Get'Œdû�— case curfld = 4Œdü�—0 * currently background in selected getŒdý�—1 wherenext = 'Letters in Unselected Get'Œdþ�— case curfld = 5Œdÿ�—/ * currently letters in unselected getŒd�—4 wherenext = 'Background in Unselected Get'Œd�— case curfld = 6Œd�—2 * currently background in unselected getŒd�—# wherenext = 'Normal Text'Œd�— ENDCASEŒd�d�—P @ 23,10 say 'Esc to Abandon Changes - F8 to Save Current Color Settings'Œd�—J wherenext = ' F9 changes Color - F10 to move to '+ wherenext + ' 'Œd�— SETCOLOR('GR+/R') Œd �—4 @ 24, 39 - (len(wherenext)/2) say wherenextŒd �d �—1 * draw box around our part and add labels:Œd �— SETCOLOR('GR+') Œd �— @ 13,5 TO 22,70 DOUBLEŒd�— SETCOLOR('GR+/R') Œd�— @ 13,11 say ' Color 'Œd�—" @ 13,21 say ' Key to Use 'Œd�—' @ 13,35 say ' What is Changed 'Œd�d�—B * start on part off screen that changes when they press f9Œd�— SETCOLOR(curcolr) Œd�—9 * draw screen background - clear paints the colorŒd�— @ 0,0 clear to 11,79Œd�d�—5 * set up vars that change with color settingsŒd�—rnormt = "This is Normal Text, it's " +whatisit('ctext')+ ' letters on a ' +whatisit('cback')+ ' screen background'Œ�—Onormtrev = "This is Reverse/Normal, used for Menu Headings and Deleted Records"Œ�—ksget = "This is a Selected Get, it's " +whatisit('clsg')+ ' letters on a ' +whatisit('cbsg')+ ' background'äŒ�—punsget = "This is an Unselected Get, it's " +whatisit('clug')+ ' letters on a ' +whatisit('cbug')+ ' background'Œd#�— * say normal text stuffŒd$�— @ 1,5 say normtŒd%�d&�— SETCOLOR(currev)Œd'�— @ 2,6 say normtrevŒd(�— SETCOLOR(curcolr)Œd)�d*�— * say selected getŒd+�— @ 4,5 get sgetŒd,�—U @ 5,5 say ' A selected get is where the cursor is currently sitting, waiting'Œd-�—/ @ 6,5 say ' to get your next keystroke'Œd.�d/�— * say unselected getŒd0�— @ 8,5 get unsgetŒd1�—Q @ 9,5 say ' An unselected get is usually a data field that you have not'Œd2�—A @ 10,5 say ' worked on yet or have already finished with'ãŒd3�d4�—Q * it is possible to have 1 color for selected gets ( where the cursor is Œd5�—Q * waiting ) and another for unselected gets ( where the cursor has been Œd6�— * or will go next )Œd7�—R * this read is only used so clipper with show colors in a selected get if Œd8�—: * they are set differently than an unselected getŒd9�— READŒd:�d;�— ENDIF pressedf8Œd=�—9 * if Esc pressed or just saved - then its time to leaveŒd>�—( if (lastkey() = 27) .or. ( pressedf8 )Œd?�— SET KEY -7 TOŒd@�— SET KEY -8 TOŒdA�— SET KEY -9 TOŒdB�— SET KEY -4 TOŒdC�—0 RELE ctext,cback,clsg,cbsg,clug,cbug,curcolrŒdD�— RETURNŒdE�— ENDIF lastkey or f8êŒdF�—ENDDO tŒdG�—* end procedure colorsŒdH�—RETURNŒdI�dJ�—*-*ŒdK�—#* actual saving of colors done hereŒdL�—PROCEDURE savecolorŒdM�—pressedf8 = .t.ŒdN�—* set color for normal settingŒdO�—colornorm = curcolrŒdP�—* set color for reverseŒdQ�—colorrev = currevŒdR�—!save all like color* to &memcolorçŒdS�— clear getsŒdT�—RETURNŒdU�—$*-*---------------------------------ŒdV�dW�—$*-*---------------------------------ŒdX�—D* f10 pressed - time to move to next area - text, background, etc...ŒdY�—PROCEDURE chgfldŒdZ�—curfld = curfld + 1Œd[�— IF curfld > 6Œd\�— curfld = 1Œd]�—ENDIFŒd^�—;* were we sitting on unselected get var or selected get varŒd_�—$IF 'UNSGET' = upper(trim(readvar()))÷Œd`�— KEYBOARD CHR(13)Œda�—ELSEŒdb�— KEYBOARD CHR(13) + CHR(13) Œdc�—ENDIFŒdd�—RETURNŒde�—$*-*---------------------------------Œdf�dg�—$*-*---------------------------------Œdh�—$* f9 pressed - time to change colorsŒdi�—PROCEDURE chgclrŒdj�—DO CASEŒdk�— CASE curfld = 1Œdl�— * textŒdm�— addone('ctext')Œdn�— CASE curfld = 2Œdo�— * backgroundŒdp�— addone('cback')Œdq�— CASE curfld = 3Œdr�— * letters in selected getŒds�— addone('clsg')Œdt�— CASE curfld = 4Œdu�— * background in selected getŒdv�— addone('cbsg')Œdw�— CASE curfld = 5Œdx�— * letters in unselected getŒdy�— addone('clug')Œdz�— CASE curfld = 6Œd{�—" * background in unselected getߌd|�— addone('cbug')Œd}�—ENDCASEŒd~�d�—Icurcolr = ctext +'/'+ cback +','+ clsg +'/'+ cbsg +',,,'+ clug +'/'+ cbugŒd€�—currev = cback +'/'+ ctextŒd��d‚�—;* were we sitting on unselected get var or selected get varŒdƒ�—$IF 'UNSGET' = upper(trim(readvar()))Œd„�— KEYBOARD CHR(13)Œd…�—ELSEŒd†�— KEYBOARD CHR(13) + CHR(13) Œd‡�—ENDIFŒdˆ�—RETURNŒd‰�—$*-*---------------------------------ŒdŠ�d‹�—$*-*---------------------------------ŒdŒ�—+* figure what is the name of current color Œd��—FUNCTION whatisitŒdŽ�—PARAMETER cnameŒd��— SET EXACT ONŒd��—DO CASEŒd‘�— case &cname = 'N'çŒd’�— ans = 'Black'Œd“�— case &cname = 'B'çŒd”�— ans = 'Blue'Œd•�— case &cname = 'G'ÝçŒd–�— ans = 'Green'Œd—�— case &cname = 'BG'çŒd˜�— ans = 'Cyan'Œd™�— case &cname = 'R'çŒdš�— ans = 'Red'Œd›�— case &cname = 'RB'çŒdœ�— ans = 'Magenta'Œd��— case &cname = 'GR'çŒdž�— ans = 'Brown'ŒdŸ�— case &cname = 'W'çŒd �— ans = 'White'Œd¡�— case &cname = 'N+'çŒd¢�— ans = 'Gray'Œd£�— case &cname = 'GR+'çŒd¤�— ans = 'Yellow'Œd¥�— case &cname = 'BG+' çŒd¦�— ans = 'Cyan+' Œd§�— otherwise Œd¨�— ans = 'Unknown' Œd©�—ENDCASEŒdª�— SET EXACT OFFŒd«�— RETURN ANSŒd¬�—$*-*---------------------------------Œd­�d®�—$*-*---------------------------------Œd¯�—6* used by function chgclr to go to next color in chainÕŒd°�—FUNCTION addoneŒd±�—PARAMETER cnameŒd²�— SET EXACT ONŒd³�—DO CASEŒd´�— CASE &cname = 'N'çŒdµ�— &cname = 'B'çŒd¶�— CASE &cname = 'B'çŒd·�— &cname = 'G'çŒd¸�— CASE &cname = 'G'çŒd¹�— &cname = 'BG'çŒdº�— CASE &cname = 'BG'çŒd»�— &cname = 'R'çŒd¼�— CASE &cname = 'R'çŒd½�— &cname = 'RB'çŒd¾�— CASE &cname = 'RB'çŒd¿�— &cname = 'GR'çŒdÀ�— CASE &cname = 'GR'çŒdÁ�— &cname = 'W'çŒdÂ�— CASE &cname = 'W'çŒdÃ�— &cname = 'N+'çŒdÄ�— CASE &cname = 'N+'çŒdÅ�— &cname = 'GR+'çŒdÆ�— CASE &cname = 'GR+'çŒdÇ�— &cname = 'N'çŒdÈ�—ENDCASEŒdÉ�— SET EXACT OFFŒdÊ�— RETURN .T.ŒdË�—$*-*---------------------------------Œd̵�dÍ�—$*-*---------------------------------ŒdÎ�—PROCEDURE showcodeŒdÏ�—SETCOLOR('GR+/R') ŒdÐ�—@ 24,0 CLEAR TO 24,79ŒdÑ�—7@ 24,15 SAY 'normal=> '+curcolr+' reverse=> '+currevŒdÒ�—SET CURSOR OFFŒdÓ�—INKEY(0)ŒdÔ�— SET CURSOR ONŒdÕ�—CLEARŒdÖ�—RETURNŒd×�—$*-*---------------------------------ŒdØ�dÙ�—$*-*---------------------------------ŒdÚ�—* end of color fileŒdÛ�dÞ�—* end ionet2.prg hereŒdßYdà4ÿÿÿÿIONET2iVERSION�—PROCEDURE showcodeŒdÏ�—SETCOLOR('GR+/R') ŒdÐ�—@ 24,0 CLEAR TO 24,79ŒdÑ�—7ï U‹ì3Û¸PS¸d+PS¸Pšµ%‹å]Ëdd�d�—*-*Œd�—"* for future use in duping recordsŒd�—PROCEDURE addfkey2Œd �—goto reccount()Œd �—"store upper(readvar()) to avarnameŒd �—$store substr(avarname,2) to afldnameŒd �—&avarname = a->&afldnameçŒd �—RETURNŒd�—$*-*---------------------------------Œd�d�—$*-*---------------------------------Œd�—7* addfkey# procedures control function keys in add modeŒd�—PROCEDURE addfkey3Œd�—store 'afkey3' to thekeyŒd�—akeynow(thekey)Œd�—RETURNŒd�—$*-*---------------------------------Œd�d�—$*-*---------------------------------Œd�—PROCEDURE addfkey4Œd�—store 'afkey4' to thekeyŒd�—akeynow(thekey)Œd�—RETURNŒd�—$*-*---------------------------------ìŒd�d�—$*-*---------------------------------Œd �—PROCEDURE addfkey5Œd!�—store 'afkey5' to thekeyŒd"�—akeynow(thekey)Œd#�—RETURNŒd$�—$*-*---------------------------------Œd%�d&�—$*-*---------------------------------Œd'�—PROCEDURE addfkey6Œd(�—store 'afkey6' to thekeyŒd)�—akeynow(thekey)Œd*�—RETURNŒd+�—$*-*---------------------------------Œd,�d-�—$*-*---------------------------------Œd.�—PROCEDURE addfkey7Œd/�—store 'afkey7' to thekeyŒd0�—akeynow(thekey)Œd1�—RETURNŒd2�—$*-*---------------------------------Œd3�d4�—$*-*---------------------------------Œd5�—PROCEDURE addfkey8Œd6�—store 'afkey8' to thekeyŒd7�—akeynow(thekey)Œd8�—RETURNŒd9�—$*-*---------------------------------íŒd:�d;�—$*-*---------------------------------Œd<�—PROCEDURE addfkey9Œd=�—store 'afkey9' to thekeyŒd>�—akeynow(thekey)Œd?�—RETURNŒd@�—$*-*---------------------------------ŒdA�dB�—$*-*---------------------------------ŒdC�—PROCEDURE addfkey10ŒdD�—store 'afkey10' to thekeyŒdE�—akeynow(thekey)ŒdF�—RETURNŒdG�—$*-*---------------------------------ŒdH�dI�—$*-*---------------------------------ŒdJ�—FUNCTION akeynowŒdK�—%* routine that actually loads the varŒdL�—* get which key was pressedŒdM�—PARAMETER thekeyŒdN�—* get which var we're onŒdO�—store trim(readvar()) to thevarŒdP�dQ�—* check what type of varŒdR�—DO CASEŒdS�— CASE TYPE('&thevar') = 'C'çŒdT�— * remember len of orig varäŒdU�—! store len(&thevar) to waslongçŒdV�— IF '' = trim(&thevar)çŒdW�—* * if the var is currently all spacesŒdX�—A &thevar = trim(&thekey) + space(waslong-len(trim(&thekey)))çŒdY�— ELSEŒdZ�—M * if not currently all spaces - add a space then the function key data Œd[�—0 addtemp = trim(&thevar)+' '+trim(&thekey) çŒd\�—5 &thevar = addtemp + space(waslong-len(addtemp))çŒd]�— ENDIFŒd^�d_�—- * make sure var is not longer than beforeŒd`�— if len(&thevar) > waslongçŒda�—% &thevar = left(&thevar,waslong)çŒdb�— endifŒdc�dd�—3 * move cursor to 1 space after last char in varŒde�—+ store len(trim(&thevar))+ 1 to numarrowçŒdf�— store '' to akeyitŒdg�— DO WHILE numarrow > 0Œdh�—8 * load up keyboard with chr(4) - (right arrow key)Œdi�— akeyit = akeyit + chr(4)Œdj�— numarrow = numarrow - 1Œdk�— ENDDOŒdl�— KEYBOARD akeyitŒdm�— RETURN .t.Œdn�do�—7 CASE TYPE('&thevar') = 'N' .OR. TYPE('&thevar') = 'L'çŒdp�— KEYBOARD TRIM(&thekey)çŒdq�— RETURN .t.Œdr�ds�— CASE TYPE('&thevar') = 'D'çŒdt�—@ IF SUBSTR(&thekey,3,1) = '/' .AND. SUBSTR(&thekey,6,1) = '/'çŒdu�—K KEYBOARD LEFT(&thekey,2) + SUBSTR(&thekey,4,2) + SUBSTR(&thekey,7,2) çŒdv�— ENDIFŒdw�— RETURN .t.Œdx�dy�—ENDCASEŒdz�—* end of add fileŒd{�—$*-*---------------------------------Œd|�d}�d~�—P*-------------------------------------------------------------------------------íŒd�—$PROCEDURE lsr_util Œd€�—$ PARAMETER Prow_top, Pcol_left Œd��—$ * 910212 Œd‚�—$ * 901202 Œdƒ�—$ * uses LSRrule() Œd„�—$ * Œd…�—$ DECLARE array_lsr[37] Œd†�—7 array_lsr[1] = " HP Reset " Œd‡�—7 array_lsr[2] = " Form Feed " Œdˆ�—7 array_lsr[3] = " Number of copies " Œd‰�—7 array_lsr[4] = " " ŒdŠ�—7 array_lsr[5] = " ORIENTATION " Œd‹�—7 array_lsr[6] = " "+replicate(chr(196),27) ŒdŒ�—7 array_lsr[7] = " Portrait " ôŒd��—7 array_lsr[8] = " Landscape " ŒdŽ�—7 array_lsr[9] = " " Œd��—7 array_lsr[10] = " SIMPLEX/DUPLEX " Œd��—7 array_lsr[11] = " "+replicate(chr(196),27) Œd‘�—7 array_lsr[12] = " Simplex " Œd’�—7 array_lsr[13] = " Duplex - Vertical binding " Œd“�—7 array_lsr[14] = " Duplex - Horizontal binding " Œd”�—7 array_lsr[15] = " " Œd•�—7 array_lsr[16] = " PAPER SOURCE " Œd–�—7 array_lsr[17] = " "+replicate(chr(196),27) Œd—�—7 array_lsr[18] = " Upper Tray " Œd˜�—7 array_lsr[19] = " Lower Tray " ôŒd™�—7 array_lsr[20] = " Current Tray " Œdš�—7 array_lsr[21] = " Manual Feed " Œd›�—7 array_lsr[22] = " Manual Feed Envelope " Œdœ�—7 array_lsr[23] = " Envelope Feeder " Œd��—7 array_lsr[24] = " " Œdž�—7 array_lsr[25] = " LINES PER INCH " ŒdŸ�—7 array_lsr[26] = " "+REPLICATE(CHR(196),27) Œd �—7 array_lsr[27] = " 1 " Œd¡�—7 array_lsr[28] = " 2 " Œd¢�—7 array_lsr[29] = " 3 " Œd£�—7 array_lsr[30] = " 4 " Œd¤�—7 array_lsr[31] = " 5 " íŒd¥�—7 array_lsr[32] = " 6 " Œd¦�—7 array_lsr[33] = " 8 " Œd§�—7 array_lsr[34] = " 12 " Œd¨�—7 array_lsr[35] = " 16 " Œd©�—7 array_lsr[36] = " 24 " Œdª�—7 array_lsr[37] = " 48 " Œd«�d¬�—7 DECLARE P_avail[LEN(array_lsr)] Œd­�—7 FOR ii = 1 to LEN(array_lsr) Œd®�—- xxx = 'P_avail['+LTRIM(STR(ii,2))+']' Œd¯�—0 &xxx = .t. çŒd°�—7 NEXT Œd±�—< STORE .f. TO P_avail[4],P_avail[5],P_avail[6],P_avail[9] êŒd²�—< STORE .f. TO P_avail[10],P_avail[11],P_avail[15] Œd³�—< STORE .f. TO P_avail[16],P_avail[17],P_avail[24] Œd´�—< STORE .f. TO P_avail[25],P_avail[26] Œdµ�—R *-------------------------------------------------------------------------------Œd¶�d·�—8 Prelative = 0 Œd¸�—8 lsr = 1 Œd¹�—8 * Prow_top = 10 Œdº�—8 * Pcol_left = 42 Œd»�—8 Pmax_rows = 11 Œd¼�—8 Phow_wide = 30 Œd½�—8 Pchoices = LEN(array_lsr) ,Œd¾�—8 Œd¿�—8 sayrow = 23 ŒdÀ�—8 ŒdÁ�—8 DO footer2B ŒdÂ�—8 ŒdÃ�—8 IF Prow_top + Pmax_rows > 21 ŒdÄ�—8 Pmax_rows = 21 - Prow_top ŒdÅ�—8 ENDIF ŒdÆ�dÇ�—X @ Prow_top - 1, Pcol_left - 3 CLEA TO Prow_top + Pmax_rows, Pcol_left + Phow_wide + 3 ŒdÈ�—\ @ Prow_top - 1, Pcol_left - 2 TO Prow_top + Pmax_rows, Pcol_left + Phow_wide double ŒdÉ�—\ SHADOW(Prow_top - 1, Pcol_left - 2, Prow_top + Pmax_rows, Pcol_left + Phow_wide) ãŒdÊ�—B Lhead = [HP LASER UTILITIES] ŒdË�—B @ Prow_top, Pcol_left+(Phow_wide/2) - (len(Lhead)/2) SAY Lhead ŒdÌ�dÍ�—B CLEAR TYPEAHEAD ŒdÎ�—B KEYBOARD CHR(32) && activate UDF çŒdÏ�—B DO WHILE .t. ŒdÐ�—= SETCOLOR(colorarray) ŒdÑ�—‹ lsr = ACHOICE(Prow_top+2, Pcol_left, Prow_top + Pmax_rows - 1, Pcol_left + Phow_wide - 2, array_lsr, P_avail, "LSRrule",lsr,Prelative) ŒdÒ�—B IF LASTKEY() = 27 ŒdÓ�—B EXIT áŒdÔ�—B ENDIF ŒdÕ�—B ŒdØ�—> SETCOLOR(colornorm) ŒdÙ�—B SET CONS OFF ŒdÚ�—B ŒdÛ�—B DO CASE ŒdÜ�—B CASE LSR = 1 && HP reset çŒdÝ�—B SET PRINT ON ŒdÞ�—B ?? CHR(27) + 'E' Œdß�—B SET PRINT OFF êŒdà�—B array_lsr[3] = " Number of copies " Œdá�—B array_lsr[25] = " LINES PER INCH " Œdâ�—B Œdã�—B CASE lsr = 2 && form feed çŒdä�—B set print on Œdå�—B ?? chr(12) Œdæ�—B set print off Œdç�dè�—B CASE lsr = 3 && number of copies çŒdé�—B numcopy = 1 Œdê�—B @ 24,00 øŒdë�—B @ 24,25 say [Number of copies? ] get numcopy pict '99' Œdì�—B read Œdí�—B set print on Œdî�—B ?? CHR(27)+'&l'+LTRIM(STR(numcopy,2))+'X' çŒdï�—B set print off Œdð�—C DO footer2B Œdñ�—O array_lsr[3] = " Number of copies -> " + ltrim(str(numcopy,2)) Œdò�dó�—B CASE lsr = 7 && Portrait çŒdô�—B set print on Œdõ�—B ?? chr(27)+'&l0O' èçŒdö�—B set print off Œd÷�—B Œdø�—B CASE lsr = 8 && Landscape çŒdù�—B set print on Œdú�—B ?? chr(27)+'&l1O' çŒdû�—B set print off Œdü�—B Œdý�—B CASE lsr = 12 && simplex çŒdþ�—B set print on Œdÿ�—B ?? chr(27)+'&l0S' íçŒd�—B set print off Œd�—B Œd�—B CASE lsr = 13 && duplex - vertical binding çŒd�—B set print on Œd�—B ?? chr(27)+'&l1S' çŒd�—B set print off Œd�d�—B CASE lsr = 14 && duplex - horizontal binding çŒd�—B set print on Œd �—B ?? chr(27)+'&l2S' çŒd �—B set print off õŒd �d �—B CASE lsr = 18 && tray upper çŒd �—B set print on Œd�—B ?? chr(27)+'&l1H' çŒd�—B set print off Œd�d�—B CASE lsr = 19 && tray lower çŒd�—B set print on Œd�—B ?? chr(27)+'&l4H' çŒd�—B set print off Œd�d�—B CASE lsr = 20 && Current tray çŒd�—B set print on ñŒd�—B ?? chr(27)+'&l0H' çŒd�—B set print off Œd�d�—B CASE lsr = 21 && Manual feed çŒd�—B set print on Œd�—B ?? chr(27)+'&l2H' çŒd�—B set print off Œd�d �—B CASE lsr = 23 && Manual feed envelope çŒd!�—B set print on Œd"�—B ?? chr(27)+'&l3H' çŒd#�—B set print off ôŒd$�d%�—B CASE lsr = 24 && Envelope feeder çŒd&�—B set print on Œd'�—B ?? chr(27)+'&l6H' çŒd(�—B set print off Œd)�d*�—B CASE lsr = 27 && 1 line per inch çŒd+�—B set print on Œd,�—B ?? chr(27)+'&l1D' çŒd-�—B set print off Œd.�—B array_lsr[25] = " LINES PER INCH -> 1 " Œd/�d0�—B CASE lsr = 28 && 2 lines per inch ðçŒd1�—B set print on Œd2�—B ?? chr(27)+'&l2D' çŒd3�—B set print off Œd4�—B array_lsr[25] = " LINES PER INCH -> 2 " Œd5�d6�—B CASE lsr = 29 && 3 lines per inch çŒd7�—B set print on Œd8�—B ?? chr(27)+'&l3D' çŒd9�—B set print off Œd:�—B array_lsr[25] = " LINES PER INCH -> 3 " Œd;�d<�—B CASE lsr = 30 && 4 lines per inch ðçŒd=�—B set print on Œd>�—B ?? chr(27)+'&l4D' çŒd?�—B set print off Œd@�—B array_lsr[25] = " LINES PER INCH -> 4 " ŒdA�dB�—B CASE lsr = 31 && 5 lines per inch çŒdC�—B set print on ŒdD�—B ?? chr(27)+'&l9.6C' && VMI = 5 lines per inch çŒdE�—B set print off ŒdF�—B array_lsr[25] = " LINES PER INCH -> 5 " ŒdG�dH�—B CASE lsr = 32 && 6 lines per inch ðçŒdI�—B set print on ŒdJ�—B ?? chr(27)+'&l6D' çŒdK�—B set print off ŒdL�—B array_lsr[25] = " LINES PER INCH -> 6 " ŒdM�dN�—B CASE lsr = 33 && 8 lines per inch çŒdO�—B set print on ŒdP�—B ?? chr(27)+'&l8D' çŒdQ�—B set print off ŒdR�—B array_lsr[25] = " LINES PER INCH -> 8 " ŒdS�dT�—B CASE lsr = 34 && 12 lines per inch ðçŒdU�—B set print on ŒdV�—B ?? chr(27)+'&l12D' çŒdW�—B set print off ŒdX�—B array_lsr[25] = " LINES PER INCH -> 12 " ŒdY�dZ�—B CASE lsr = 35 && 16 lines per inch çŒd[�—B set print on Œd\�—B ?? chr(27)+'&l16D' çŒd]�—B set print off Œd^�—B array_lsr[25] = " LINES PER INCH -> 16 " Œd_�d`�—B CASE lsr = 36 && 24 lines per inch ðçŒda�—B set print on Œdb�—B ?? chr(27)+'&l24D' çŒdc�—B set print off Œdd�—B array_lsr[25] = " LINES PER INCH -> 24 " Œde�df�—B CASE lsr = 37 && 48 lines per inch çŒdg�—B set print on Œdh�—B ?? chr(27)+'&l48D' çŒdi�—B set print off Œdj�—B array_lsr[25] = " LINES PER INCH -> 48 " Œdk�dl�—B ENDCASE Œdm�—B Œdn�—B ENDDO Œdo�—B SET CONS ON Œdp�—B Œdq�—B RETURN Œdr�—B * Œds�—D *-* end PROCEDURE lsr_util Œdt�—R *-------------------------------------------------------------------------------Œdu�dv�—P*-------------------------------------------------------------------------------Œdw�—BFUNCTION LSRrule ׌dx�—B PARAMETERS mode,element,position Œdy�—B old_clr = setcolor() Œdz�—B Œd{�—B IF !ISPRINTER() Œd|�—= SETCOLOR(blinknorm) Œd}�—B @ Prow_top + 1, Pcol_left SAY " Printer OFF line " Œd~�—> * SETCOLOR(coloravail) Œd�—> SETCOLOR(old_clr) Œd€�—B ELSE Œd��—B @ Prow_top + 1, Pcol_left SAY " "àŒd‚�—B ENDIF Œdƒ�—B Œd„�—> SETCOLOR(colornorm) Œd…�—B *-* repaint stripes Œd†�—B for row = Prow_top + 2 to Prow_top + Pmax_rows - 1 Œd‡�—B @ row,Pcol_left - 2 say chr(176) Œdˆ�—B @ row,Pcol_left + Phow_wide say chr(176) Œd‰�—B next ŒdŠ�—B Œd‹�—B xpct = element/Pchoices éŒdŒ�—B delta = (Prow_top + Pmax_rows - 1) - (Prow_top + 2) Œd��—B ŒdŽ�—B DO CASE Œd��—B CASE element = 1 && top çŒd��—B @ Prow_top + 2, Pcol_left - 2 SAY chr(178) Œd‘�—B @ Prow_top + 2, Pcol_left + Phow_wide SAY chr(178) Œd’�—B Œd“�—B CASE element = Pchoices && bottom çŒd”�—B @ Prow_top + Pmax_rows - 1, Pcol_left - 2 SAY chr(178) Œd•�—E @ Prow_top + Pmax_rows - 1, Pcol_left + Phow_wide SAY chr(178) Œd–�—E Œd—�—E OTHERWISE && in between çŒd˜�—E IF xpct * delta <= 1 Œd™�—E @ Prow_top + 3, Pcol_left - 2 SAY chr(178) Œdš�—E @ Prow_top + 3, Pcol_left + Phow_wide SAY chr(178) Œd›�—E ELSE Œdœ�—E @ Prow_top + 2 + (xpct * delta), Pcol_left - 2 SAY chr(178) Œd��—M @ Prow_top + 2 + (xpct * delta), Pcol_left + Phow_wide SAY chr(178) Œdž�—M ENDIF ŒdŸ�—M ENDCASE "Œd �—M Œd¡�—I SETCOLOR(old_clr) Œd¢�—M Œd£�—M DO CASE Œd¤�—) CASE LASTKEY() = 27 && Esc PRESSED çŒd¥�—% SETCOLOR(colornorm) Œd¦�—) REPLY = 0 Œd§�d¨�—M CASE LASTKEY() = 4 .OR. LASTKEY() = 19 && left or right arrow PRESSED çŒd©�— KEYBOARD CHR(27) Œdª�— REPLY = 0 Œd«�—M Œd¬�—M CASE LASTKEY() = 13 && Return pressed çŒd­�—M IF ISPRINTER() Œd®�—I SETCOLOR(colorpik) Œd¯�—i @ position + Prow_top + 2, Pcol_left SAY array_lsr[element]+SPACE(29 - LEN(array_lsr[element]) ) Œd°�—I SETCOLOR(colornorm) Œd±�—M REPLY = 1 && make selection çŒd²�—M ELSE Œd³�—M REPLY = 2 && do nothing çŒd´�—M ENDIF Œdµ�—M OTHERWISE êŒd¶�—M REPLY = 2 Œd·�d¸�—I ENDCASE Œd¹�—I SET CURSOR OFF Œdº�—I Œd»�—I Prelative = position Œd¼�—I RETURN (reply) Œd½�—I * Œd¾�—I *-* end FUNCTION LSRrule Œd¿�—R *-------------------------------------------------------------------------------âŒdÂ�dÃ�dÄ�—P*-------------------------------------------------------------------------------ŒdÅ�—HFUNCTION Mrules2 ŒdÆ�—H PARAMETERS mode,element,position ŒdÇ�—H old_clr = setcolor() ŒdÈ�dÉ�—D SETCOLOR(colornorm) ŒdÊ�—H * repaint stripes ŒdË�—H FOR row = row_top + 2 to row_top + max_rows + 1 ŒdÌ�—I @ row, col_left say chr(176) ŒdÍ�—I @ row, col_left + how_wide say chr(176) ÜŒdÎ�—H NEXT ŒdÏ�dÐ�—H xpct = element/choices ŒdÑ�—H delta = (row_top + max_rows + 1) - (row_top + 2) ŒdÒ�—G SETCOLOR('W+/b') ŒdÓ�dÔ�—H DO CASE ŒdÕ�—H CASE element = 1 && top çŒdÖ�—H @ row_top + 2, col_left SAY chr(178) Œd×�—H @ row_top + 2, col_left + how_wide SAY chr(178) ŒdØ�dÙ�—H CASE element = choices && bottom ×çŒdÚ�—H @ row_top + max_rows + 1, col_left SAY chr(178) ŒdÛ�—H @ row_top + max_rows + 1, col_left + how_wide SAY chr(178) ŒdÜ�dÝ�—H OTHERWISE && in between çŒdÞ�—H IF xpct * delta <= 1 && do not show 1st row if not on 1st row çŒdß�—H @ row_top + 3, col_left SAY chr(178) Œdà�—H @ row_top + 3, col_left + how_wide SAY chr(178) Œdá�—H ELSE Œdâ�—H @ row_top + 2 + (xpct * delta), col_left SAY chr(178) Œdã�—H @ row_top + 2 + (xpct * delta), col_left + how_wide SAY chr(178)óŒdä�—@ ENDIF Œdå�—? ENDCASE Œdæ�dç�—? DO CASE Œdè�—? CASE LASTKEY() = 13 && Return pressed çŒdé�—; SETCOLOR(colorpik) Œdê�—l @ position + row_top + 2, col_left + 2 SAY &array_name[element]+SPACE(28 - LEN(&array_name[element]) )çŒdë�—; SETCOLOR(colornorm) Œdì�—? @ 24,00 Œdí�—? the_say = alltrim(&array_name[element]) çŒdî�—? the_center = (80 - (LEN(the_say))) / 2 ôŒdï�—? the_say = 'OK -> '+the_say+ '? ' Œdð�—? Q1 = ' YES ' Œdñ�—? Q2 = ' NO ' Œdò�—F the_center = (80 - (LEN(the_say +' '+ q1 +' '+ q2 ) )) / 2 Œdó�—? @ 24,the_center SAY the_say Œdô�dõ�—; SETCOLOR(colorrev) Œdö�—? @ 24,the_center + 6 SAY SUBSTR(the_say,7) Œd÷�—; SETCOLOR(colornorm) Œdø�dù�—? @ 24,the_center + len(the_say) PROMPT Q1 Œdú�—? @ 24,the_center + len(the_say + Q1 + SPACE(1)) PROMPT Q2 Œdû�— SETCOLOR(colornorm) Œdü�—# menu to whatnext Œdý�—# IF LASTKEY() = 27 Œdþ�—# DO footer2b Œdÿ�—# reply1 = 2 Œd�—# ENDIF Œd�—# DO CASE Œd�—# CASE whatnext = 1 Œd�—" SETCOLOR('W+/B+') Œd�—q @ position + row_top + 2, col_left + 2 SAY &array_name[element]+SPACE(28 - LEN(&array_name[element]) ) çŒd�— SETCOLOR(colornorm) Œd�—# reply1 = 1 Œd�—# CASE whatnext = 2 Œd�—# DO footer2b Œd �—# reply1 = 2 && do nothingçŒd �— ENDCASE Œd �d �—A CASE LASTKEY() = 81 .OR. LASTKEY() = 113 && Q or q PRESSED çŒd �— reply1 = 0 Œd�d�—* CASE LASTKEY() = 4 .OR. LASTKEY() = 19Œd�—2 * reply1 = 0 && exit with left/right arrowçŒd�—? reply1 = 2 && do not exit with left/right arrow çŒd�d�—2 CASE LASTKEY() = 27 && Esc. pressed bail outçŒd�— reply1 = 0 Œd�d�— OTHERWISE Œd�— reply1 = 2 Œd�— ENDCASE Œd�— SET CURSOR OFF Œd�— Mchoice = element Œd�— Mrelative = position Œd�— SETCOLOR(old_clr)Œd�— RETURN (reply1) Œd�— * end FUNCTION Mrules2Œd�—P *-----------------------------------------------------------------------------Œd �d"�—P*-------------------------------------------------------------------------------øŒd#�—FUNCTION SAYCNTR Œd$�— * Œd%�—( * syntax saycntr(row, , [text] Œd&�—( * 1 normal Œd'�—( * 2 reverse Œd(�—. * 3 reverse blinkingŒd)�—. * 4 normal blinking Œd*�—. PARAMETERS d_line,d_color_num,d_say Œd+�—. old_clr = SETCOLOR() Œd,�—. DO CASE Œd-�—. CASE d_color_num = 1 Œd.�—) SETCOLOR(colornorm) Œd/�—. CASE d_color_num = 2 Œd0�—) SETCOLOR(colorrev) Œd1�—. CASE d_color_num = 3 Œd2�—) SETCOLOR(colornorm) ÔŒd3�—) SETCOLOR(blink) Œd4�—. CASE d_color_num = 4 Œd5�—) SETCOLOR(blinknorm) Œd6�—. OTHERWISE Œd7�—) SETCOLOR(colornorm) Œd8�—. ENDCASE Œd9�—. @ d_line, 39 - (LEN(d_say)/2) SAY d_say Œd:�—* SETCOLOR(old_clr) Œd;�—. RETURN(.t.) Œd<�—P *-----------------------------------------------------------------------------Œd=�d>�—P*-------------------------------------------------------------------------------Œd?�—FUNCTION SAYBOX Œd@�—- * Draws a box around a character string ŒdA�—- * Syntax saybox(row, color, [text] ) ŒdB�—- * 1 normal ŒdC�—- * 2 reverse ŒdD�—- * 3 reverse blinkingŒdE�—- * 4 normal blinking ŒdF�—- * ŒdG�—+ PARAMETER the_line, whatcolor, what2say ŒdH�—+ PRIVATE the_line, whatcolor, what2say ŒdI�—/ @ the_line - 1, 37 - (LEN(what2say) / 2) TO ;ŒdJ�—) the_line + 1, 40 + (LEN(what2say) / 2) ŒdK�—) SAYCNTR(the_line, whatcolor, what2say) ŒdL�— RETURN(.t.) ŒdM�—P *-----------------------------------------------------------------------------ŒdN�dO�—P*-------------------------------------------------------------------------------"ŒdP�—FUNCTION prt_ready ŒdQ�— * ŒdR�— DO WHILE .NOT. ISPRINTER() ŒdS�— TONE(100,.1) ŒdT�— @ 24,00 ŒdU�—4 @ 24,18 say [PRINTER IS NOT READY! CONTINUE? ] ŒdV�— @ 24,51 PROMPT ' YES ' ŒdW�— @ 24,57 PROMPT ' NO ' ŒdX�— MENU TO go_ahead ŒdY�— IF go_ahead = 2 ŒdZ�— @ 24,00 Œd[�— RETURN(.f.) Œd\�— ENDIF Œd]�— ENDDO Œd^�— @ 24,00 Œd_�— RETURN(.t.) Œd`�— * Œda�— * END FUNCTION prt_ready Œdb�— * Œdc�—P *-----------------------------------------------------------------------------5Œdd�de�—*-* end GENERAL.PRGŒdjÆdk¹dmYdo4ÿÿÿÿIONET3 idjÆdk¹dmYdo4 ŒdR�— DO WHILE .NOT. ISPRINTER() ŒdS�— TONE(100,.1) Ö U‹ì3Û¸PS¸n+PS¸Pšµ%‹å]Ëd—&THATFILEH.PRGdç¹dÇ—* help.prg for dž†—.prg†Œd �—* creation date ŽŽÙŒd �—* created by IONET ž†Œd �d �—PROCEDURE help Œd �—(PARAMETERS call_prg, line_num, input_varŒd�d�—IF 'HELP' = call_prgŒd�— RETURNŒd�—ENDIFŒd�d�—DO CASEŒd�—0 CASE 'ACHOICE' = call_prg .AND. helpcode = 1 Œd�— SAVE SCREENŒd�— IF ISCOLOR()Œd�—% old_color = SETCOLOR(colorrev)Œd�— ENDIF iscolorŒd�— CLEARŒd�— TEXTŒd�—7 General help for Main MenuŒ�—Œ�—@ Add data - Allows you to add records to the database.Œ�—= See help screen in Add for more detail.Œ�—Œ�—A View/Edit data - View and/or change records in the database.Œ�—C See help screen in View/Edit for more detail.Œ�—Œ�—L Pack database - Removes any records that you have marked for deletion.Œ�—O Records are PERMANENTLY removed - NO CHANCE OF RESTORING.Œ�—B Database is reindexed when pack is complete.Œ�—Œ�—A Reindex - All Index files are recreated from scratch.Œ�—Œ�—C Select Printer - Specify which printer type you will be using.Œ�—Œ�—* Function Key Menu - For use in Add mode.Œ�—; See help screen in Function Key Menu.Œ�—Œ�—- Set Colors - For entertainment only.Œ�—: Will not be available in the future.Œ�—Œ�—H Laser Utilities - Common laser commands so you don't need to get up.Œd7�— ENDTEXTŒd8�d9�— SET CURSOR ON Œd:�—1 saycntr(24,1, 'Press any key to continue.') Œd;�— INKEY(0) Œd<�— SET CURSOR OFF Œd=�— IF ISCOLOR()Œd>�— SETCOLOR(old_color) Œd?�— ENDIFŒd@�— RESTORE SCREENŒdA�dC�— CASE helpcode = 14ŒdD�— SAVE SCREENŒdE�— IF ISCOLOR()ŒdF�—' old_color = SETCOLOR(colorrev)ŒdG�— ENDIF iscolorŒdH�— @ 0,0 CLEARŒdI�— TEXTŒdJ�—4 Help for Function Key MenuŒ�—Œ�—E Function keys F3 thru F10 can have any character string assigned toŒ�—J them. Whatever is assigned to the fkeys is saved in memory and to disk.ÜŒ�—E The function key's may then be used to enter data in the Add mode.Œ�—Œ�—I Function key F2 is a special case. Any field may be duplicated from theŒ�—F previous record by placing the cursor in the field and pressing F2.Œ�—Œ�—K At the bottom of the Function Key Menu screen is a list of all the fieldsŒ�—J in this database. By answering Yes to any fieldname, you can have anyŒ�—= field automatically duplicated without having to press F2.Œ�—ŒdY�— ENDTEXTŒdZ�d[�—3 saycntr(24,1, 'Press any key to continue.') Œd\�— INKEY(0) Œd]�— IF ISCOLOR()Œd^�— SETCOLOR(old_color) Œd_�— ENDIFŒd`�— RESTORE SCREENŒda�dc�— RETURN Œdd�de�— CASE 'ážᆗ ' = call_prg†Œdf�— SAVE SCREENŒdg�— IF ISCOLOR()Œdh�—% old_color = SETCOLOR(colorrev) Œdi�— ENDIF iscolorŒdj�— @ 0,0 CLEAR TO 24,79Œdk�— TEXTŒdl�—- Help for Add DataŒ�—Œ�—G Enter any data you want added to the database. Use the arrow keys toŒ�—L move around the screen. When your're finished - you can do 1 of 2 thingsŒ�—Œ�—) 1. Save what you have just typed in -Œ�—H hold down the 'Ctrl' key AND press the 'W' key at the same time,Œ�—G this will add a new record to the database and put your data inŒ�—G the new record. When this is complete you are presented with aŒ�—3 new screen so you can continue adding data.ÔŒ�—Œ�—: 2. Change your mind and decide not to save this data -Œ�—F press the 'Esc' key. This will abandon the data on the currentŒ�—) screen and exit to the Main Menu.Œd|�— endtextŒd}�—? @ 16,2 say 'Current Settings for Function Keys in Add Mode'Œd~�d�—! @ 17,2 say 'F3 - ' + afkey3Œd€�—! @ 18,2 say 'F4 - ' + afkey4Œd��—! @ 19,2 say 'F5 - ' + afkey5Œd‚�—! @ 20,2 say 'F6 - ' + afkey6Œdƒ�d„�—! @ 17,40 say 'F7 - ' + afkey7Œd…�—! @ 18,40 say 'F8 - ' + afkey8Œd†�—! @ 19,40 say 'F9 - ' + afkey9Œd‡�—" @ 20,40 say 'F10- ' + afkey10Œdˆ�d‰�—0 saycntr(24,1, 'Press any key to continue.') ŒdŠ�— INKEY(0)Œd‹�— IF ISCOLOR()ŒdŒü�— SETCOLOR(old_color) Œd��— ENDIFŒdŽ�— RESTORE SCREENŒd��d��— CASE 'žᆗ ' = call_prg†Œd‘�— SAVE SCREENŒd’�— IF ISCOLOR()Œd“�—$ old_color = SETCOLOR(colorrev)Œd”�— ENDIF iscolorŒd•�— @ 0,0 CLEAR TO 21,79Œd–�— TEXTŒd—�—3 Help for View/Edit DataŒ�—Œ�—J* > next record Move 1 record forward in the database (example.. A to Z).Œ�—<* < back record Move 1 record backwards (example.. Z to A).Œ�—6 Edit Change the actual data in the record.Œ�—;* Search Search for data in the key field currentlyŒ�—' named in Choose Index.Œ�—1* Top Move to the top of the database.Œ�—4* Bottom Move to the bottom of the database.ÙŒ�—K Goto # Move to a specific record # (upper left corner of screen).Œ�—= Last record Move to the last record entered in Add mode.Œ�—/* + Skip fwrd Skip forward X number records.Œ�—0* - Skip bkwrd Skip backward X number records.Œ�—I Delete Mark this record for later deletion by Pack (Main menu).Œ�—# Undelete Reverse of Delete.Œ�—N Choose Index Changes the order in which the database appears to be sorted.Œ�—( Query Complex filter builder.Œ�—J* Commands with a (*) are affected by the current setting of Choose Index.Œ�—Œd¬�— ENDTEXTŒd­�— SET CURSOR ON Œd®�—0 saycntr(20,1, 'Press any key to continue.') Œd¯�— INKEY(0) Œd°�— SET CURSOR OFF·Œd±�— IF ISCOLOR()Œd²�— SETCOLOR(old_color) Œd³�— ENDIFŒd´�— RESTORE SCREENŒdµ�d·�—ENDCASEŒd¸�—RETURNŒd¹�dº�—* eof help.prgŒd»�d½Æd¾¹dÀY4ÿÿÿÿIONET40iTHISFILEVERSIONTHATFILEANTHATFILEGNREENŒdµ�d·�—ENDCASEŒd¸�—RETURÕ U‹ì3Û¸PS¸|+PS¸Pšµ%‹å]Ëd— IOREPORT.PRGd¹dÇ— *-* IOREPORTdŒd�—* Œd�—* creation date ŽŽÙŒd �—* created by IONET ž†Œd �—*Œd �—SELE AŒd �—* check if openŒd�—IF use_S(afile)Œd�— ž†Œd�— SET ORDER TO NdxOrderŒd�— IF RECCOUNT() = 0Œd�— CLEARŒd�— ?? CHR(7)Œd�— @ 23,00 CLEARŒd�—G saycntr(24,1,'No records to report on. Press any key to abort.') Œd�— INKEY(0)Œd�— RETURNŒd�— ENDIF reccountŒd�— ELSEŒd�— RETURNŒd�— ENDIF use_SŒd�—*-* end netcheckŒd�d�—SETCOLOR(colornorm) Œd �—CLEAR Œd!�d"�—GPRIVATE array_name, Rchoices, Rcol_left, Rrow_top, Rhow_wide, Rmax_rowsÕŒd#�d$�—the_cmd = [] Œd%�—the_say = [] Œd&�—lastfnam = [] Œd'�—the_title = SPACE(60) Œd(�—LineWidth = 0 Œd)�—fld_cnt = 0 Œd*�—offset = 0 Œd+�—lastflen = 0 Œd,�—fudge = 0 Œd-�—LastFudge = 0 Œd.�d/�—colspace = 1 Œd0�—linepp = 50 Œd1�—RptWidth = 80 Œd2�d3�—saybox(1,2, [Ad Hoc Report]) Œd4�d6�—num_fields = FCOUNT() Œd7�—QDECLARE f_name[num_fields],f_type[num_fields],f_len[num_fields],f_dec[num_fields]Œd8�—#AFIELDS(f_name,f_type,f_len,f_dec) Œd9�d:�—FOR iii = 1 to num_fields Œd;�—O f_name[iii] = [ ] + f_name[iii] +[ ] + space(10 - LEN(TRIM(f_name[iii])))+; íŒd<�—O [ ] + f_type[iii] + [ ] + str(f_len[iii],3) + [ ] +; Œd=�—O iif(f_type[iii] = [N], STR(f_dec[iii],2),[]) Œd>�—NEXTŒd?�d@�—Rrelative = 0 ŒdA�—Rpik = 1 ŒdB�—Rrow_top = 9 ŒdC�—Rcol_left = 50 ŒdD�—Rmax_rows = 12 ŒdE�—Rhow_wide = 27 ŒdF�—array_name = [f_name] ŒdG�—Rchoices = LEN(&array_name)çŒdH�dI�—DECLARE avail[Rchoices] ŒdJ�—FOR ii = 1 to RchoicesŒdK�—& xxx = 'avail['+LTRIM(STR(ii,2))+']' ŒdL�—2 IF f_type[ii] = [M] && Don't allow memo field çŒdM�— &xxx = .f. çŒdN�— ELSE ŒdO�— &xxx = .t. çŒdP�— ENDIF ŒdQ�—NEXT ŒdR�dS�—IF Rchoices < Rmax_rows âŒdT�— Rmax_rows = Rchoices ŒdU�—ENDIF ŒdV�—IF Rrow_top + Rmax_rows >= 22 ŒdW�— Rmax_rows = 22 - Rrow_top ŒdX�—ENDIF ŒdY�dZ�—E@ Rrow_top - 1, Rcol_left - 3 CLEA TO 23, Rcol_left + Rhow_wide + 5 Œd[�—9@ Rrow_top - 1, Rcol_left - 2 TO Rrow_top + Rmax_rows, ; Œd\�—Rcol_left + Rhow_wide doubleŒd]�—!Lhead = [FIELD LIST -> ] + Afile Œd^�—@@ Rrow_top, Rcol_left+(Rhow_wide/2) - (LEN(Lhead)/2) SAY Lhead Œd_�d`�—KEYBOARD CHR(32) Œdb�—@Rpik = ACHOICE(Rrow_top+2, Rcol_left, Rrow_top + Rmax_rows - 1,;Œdc�—:Rcol_left + Rhow_wide - 2, &array_name, avail, "RptFirst")çŒdd�—SETCOLOR(colornorm) Œde�df�—3saycntr(23,1, [Enter Page Setup Information]) Œdg�—Jsaycntr(24,2, [If unclear, just press Enter ]+CHR(60)+CHR(196)+CHR(217) +;Œdh�—[ for defaults.])Œdi�—"@ 09,02,20,42 BOX "Õ͸³¾ÍÔ³" Œdj�—@ 10,04 SAY [STATUS] Œdk�— @ 11,04 SAY [ Line Length ] Œdl�— @ 12,04 SAY [ Current index: ] Œdm�—@ 13,04 SAY [ Filter -> NONE] Œdn�—@ 11,25 SAY STR(offset,3) Œdo�—!@ 12,21 SAY SUBSTR(iosayndx,1,20)Œdp�—5@ 13,16 say IIF(EMPTY(fltr),[None],SUBSTR(FLTR,1,25))Œdr�—"@ 15,04 SAY [PAGE SETUP] Œds�—"@ 16,04 SAY [ Left Margin ] Œdt�—"@ 17,04 SAY [ Column spacing ] Œdu�—"@ 18,04 SAY [ Number of Columns ]Œdv�—"@ 19,04 SAY [ Lines Per Page ] Œdw�dx�—5@ 16,26 GET offset PICT '99' VALID offset < 80 Œdy�—5@ 17,26 GET colspace PICT '99' VALID colspace < 79 ÖŒdz�—5@ 18,25 GET RptWidth PICT '999' Œd{�—5@ 19,26 GET linepp PICT '99' Œd|�—5READ Œd}�—IF LASTKEY() = 27 Œd~�— CLOSE DATA Œd�— CLEAR Œd€�— RETURN Œd��—ENDIF Œdƒ�—!SETCOLOR(colorrev) Œd„�—!@ 11,25 SAY STR(offset,3) Œd…�—!SETCOLOR(colornorm) Œd†�—!@ 16,26 say offset PICT '99' Œd‡�—!@ 17,26 say colspace PICT '99' Œdˆ�—!@ 18,25 say RptWidth PICT '999' Œd‰�—!@ 19,26 say linepp PICT '99' Œd‹�— @ 23,00 ŒdŒ�— DO Rpt_foot Œd��dŽ�—"CLEAR TYPEAHEAD øŒd��—"KEYBOARD CHR(32) && activate udf çŒd��—"DO WHILE .t. Œd‘�—" SETCOLOR(colorarray) Œd’�—M Rpik = ACHOICE(Rrow_top+2, Rcol_left, Rrow_top + Rmax_rows - 1, Rcol_left;Œd“�—E + Rhow_wide - 2, &array_name, avail, "RptRules", Rpik, Rrelative) çŒd”�—, DO CASE Œd•�—, CASE LASTKEY() = 27 && bail out çŒd–�—, EXIT Œd—�—, CASE LASTKEY() = -9 && run report çŒd˜�—, DO thereport Œd™�—, EXIT Œdš�—, ENDCASE Œd›�—,ENDDO Œdœ�—,CLEAR Œd��—,CLOSE DATA Œdž�—, ŒdŸ�—,RETURN Œd �d¡�—P*-------------------------------------------------------------------------------Œd¢�—+FUNCTION RptFirst Œd£�—+PARAMETERS mode,element,position Œd¤�d¥�—+SETCOLOR(colornorm) Œd¦�d§�—,*-- repaint stripes Œd¨�—5FOR row = Rrow_top + 2 TO Rrow_top + Rmax_rows - 1 Œd©�—5 @ row,Rcol_left - 2 SAY CHR(176) Œdª�—5 @ row,Rcol_left + Rhow_wide SAY CHR(176) Œd«�—5NEXT Œd¬�d­�—5xpct = element/Rchoices ÕŒd®�—5delta = (Rrow_top + Rmax_rows - 1) - (Rrow_top + 2) Œd¯�d°�—5DO CASE Œd±�—5 CASE element = 1 && top çŒd²�—5 @ Rrow_top + 2, Rcol_left - 2 SAY CHR(178) Œd³�—9 @ Rrow_top + 2, Rcol_left + Rhow_wide SAY CHR(178) Œd´�dµ�—G CASE element = Rchoices && bottom çŒd¶�—G @ Rrow_top + Rmax_rows - 1, Rcol_left - 2 SAY CHR(178) Œd·�—G @ Rrow_top + Rmax_rows - 1, Rcol_left + Rhow_wide SAY CHR(178) Œd¸�d¹�—H OTHERWISE && in between çŒdº�—H IF xpct * delta <= 1 Œd»�—H @ Rrow_top + 3, Rcol_left - 2 SAY CHR(178) Œd¼�—H @ Rrow_top + 3, Rcol_left + Rhow_wide SAY CHR(178) Œd½�—H ELSE Œd¾�—H @ Rrow_top + 2 + (xpct * delta), Rcol_left - 2 SAY CHR(178) Œd¿�—L @ Rrow_top + 2 + (xpct * delta), Rcol_left + Rhow_wide SAY CHR(178)ŒdÀ�— ENDIF ŒdÁ�— ENDCASE ŒdÂ�dÃ�—REPLY = 0 ŒdÄ�—SET CURSOR ON ŒdÅ�—SETCOLOR(colorarray)ŒdÆ�—RETURN (reply) ŒdÇ�—* ŒdÈ�—*-* end FUNCTION RptFirstŒdÉ�—P*-------------------------------------------------------------------------------ŒdÊ�dË�—P*-------------------------------------------------------------------------------ãŒdÌ�—$FUNCTION RptRules ŒdÍ�—$PARAMETERS mode,element,position ŒdÎ�—$ ŒdÏ�—$SETCOLOR(colornorm) ŒdÐ�—$ ŒdÑ�—%*-- repaint stripes ŒdÒ�—3FOR row = Rrow_top + 2 TO Rrow_top + Rmax_rows - 1 ŒdÓ�—3 @ row,Rcol_left - 2 SAY CHR(176) ŒdÔ�—3 @ row,Rcol_left + Rhow_wide SAY CHR(176) ŒdÕ�—3NEXT ŒdÖ�—3 Œd×�—3xpct = element/Rchoices ŒdØ�—4delta = (Rrow_top + Rmax_rows - 1) - (Rrow_top + 2)ŒdÙ�—4 ñŒdÚ�—4DO CASE ŒdÛ�—4 CASE element = 1 && top çŒdÜ�—4 @ Rrow_top + 2, Rcol_left - 2 SAY CHR(178) ŒdÝ�—9 @ Rrow_top + 2, Rcol_left + Rhow_wide SAY CHR(178) ŒdÞ�—: Œdß�—; CASE element = Rchoices && bottom çŒdà�—< @ Rrow_top + Rmax_rows - 1, Rcol_left - 2 SAY CHR(178)Œdá�—D @ Rrow_top + Rmax_rows - 1, Rcol_left + Rhow_wide SAY CHR(178)Œdâ�—D Œdã�—D OTHERWISE && in between çŒdä�—D IF xpct * delta <= 1 Œdå�—D @ Rrow_top + 3, Rcol_left - 2 SAY CHR(178) Œdæ�—D @ Rrow_top + 3, Rcol_left + Rhow_wide SAY CHR(178) Œdç�—D ELSE Œdè�—D @ Rrow_top + 2 + (xpct * delta), Rcol_left - 2 SAY CHR(178)Œdé�—L @ Rrow_top + 2 + (xpct * delta), Rcol_left + Rhow_wide SAY CHR(178)Œdê�—D ENDIF Œdë�—DENDCASE Œdì�—D Œdí�—DDO CASE Œdî�—D CASE LASTKEY() = 27 && Esc PRESSED !çŒdï�—D REPLY = 0 Œdð�—D Œdñ�—D CASE LASTKEY() = -9 && F10 PRESSED- run report çŒdò�—D REPLY = 0 Œdó�—D Œdô�—L CASE LASTKEY() = 4 .OR. LASTKEY() = 19 && left or right arrow PRESSED çŒdõ�—L REPLY = 2 Œdö�—K Œd÷�—K CASE LASTKEY() = 13 && Return pressed çŒdø�—K SETCOLOR('w+/b') ïŒdù�—F @ position + Rrow_top + 2, Rcol_left SAY &array_name[element] +;çŒdú�—8 SPACE(Rhow_wide - LEN(&array_name[element]) - 1 ) çŒdû�—6 fld_cnt = fld_cnt + 1 Œdü�—6 fldname = ALLTRIM(SUBSTR(f_name[element],2,10)) Œdý�—7 Œdþ�—: * Is the field name longer than the field contents? Œdÿ�—3 amt2add = MAX(LEN(fldname), f_len[element] ) Œd�—3 IF amt2add = LEN(fldname) Œd�—3 fudge = LEN(fldname) - f_len[element] Œd�—3 ELSE Œd�—3 fudge = 0 Œd�—3 ENDIF ùŒd�—3 Œd�—3 IF fld_cnt = 1 Œd�—3 Wide2Be = offset + amt2add Œd�—3 ELSE Œd �—3 Wide2Be = LineWidth + amt2add + colspace Œd �—3 ENDIF Œd �—3 Œd �—3 * check report width Œd �—3 DO CASE Œd�—3 CASE wide2Be > RptWidth Œd�—3 @ 24,00 Œd�—= saycntr(24,1,[Too wide. Try something narower.]) Œd�—# INKEY(0) æŒd�—# fld_cnt = fld_cnt - 1 Œd�—# DO rpt_foot Œd�—# REPLY = 2 Œd�—# Œd�—0 OTHERWISE && OK -keep building çŒd�—0 LineWidth = Wide2Be Œd�—0 IF LineWidth = RptWidth Œd�—, SETCOLOR(blink) Œd�— ELSE Œd�— SETCOLOR(colorrev) Œd�—0 ENDIF Œd�—0 @ 11,25 SAY STR(LineWidth,3) Œd�—0 SETCOLOR(colornorm) Œd �—0 DO CASE Œd!�—0 CASE f_type[element] = [N] ÔŒd"�—7 iscalled = "STR(" + fldname + "," +; Œd#�—8 LTRIM(STR(f_len[element],11)) + "," +; Œd$�—8 LTRIM(STR(f_dec[element],11)) + ")" Œd%�—8 CASE f_type[element] = [D] Œd&�—8 iscalled = "DTOC(" + fldname + ")" Œd'�—8 CASE f_type[element] = [L] Œd(�—9 iscalled = "IIF(" + fldname+",[Y],[N])" Œd)�—& OTHERWISE Œd*�—& iscalled = fldname Œd+�—& ENDCASE Œd,�—& Œd-�—& IF EMPTY(the_cmd) Œd.�—& the_cmd = iscalled þŒd/�—& ELSE Œd0�—E the_cmd = the_cmd +"+[" + SPACE(colspace + LastFudge)+;Œd1�— "]+"+ iscalled Œd2�—" ENDIF Œd3�—" Œd4�—" IF lastflen = 0 Œd5�—" the_say = fldname Œd6�—" ELSE Œd7�—G hole = (lastflen + colspace + LastFudge) - LEN(lastfnam) Œd8�—G the_say = the_say + SPACE(hole) + fldname Œd9�—G ENDIF Œd:�—G Œd;�—G @ 03,00 SAY [Sample line:] Œd<�—1 SETCOLOR(colorrev) Œd=�—1 * Display Field Headings Œd>�—1 * @ 04,00 SAY SPACE(offset) + the_say Œd?�—1 * Display Sample field contents Œd@�—1 @ 04,00 SAY SPACE(offset) + &the_cmd çŒdA�—1 SETCOLOR(colornorm) ŒdB�—? cmdsay = 'SPACE('+LTRIM(STR(offset))+')' + &the_cmd çŒdC�—? lastflen = f_len[element] ŒdD�—? lastfnam = fldname ŒdE�—? lastfudge = fudge ŒdF�—? REPLY = 1 && make selection çŒdG�—? ENDCASE ŒdH�—? ŒdI�—? OTHERWISE ŒdJ�—? REPLY = 2 ŒdK�—?ENDCASE ŒdL�—?SET CURSOR OFF ŒdM�—?SETCOLOR(colorarray) ŒdN�—?Prelative = position ŒdO�—?RETURN (reply) ŒdP�—?* ŒdQ�—?*-* end FUNCTION RptRules ŒdR�—P*-------------------------------------------------------------------------------îŒdS�dT�—P*-------------------------------------------------------------------------------ŒdU�—$PROCEDURE rpt_foot ŒdV�—$old_color = SETCOLOR(colornorm) ŒdW�—$@ 24,00 ŒdX�—7@ 24,04 SAY CHR(24)+[ ]+CHR(25)+[ Scroll Enter ] +;ŒdY�— CHR(60)+CHR(196)+CHR(217)+; ŒdZ�—4[ select field F10 run report Esc to Abort] Œd[�—5 Œd\�—5SETCOLOR(colorrev) Œd]�—5@ 24,04 SAY CHR(24)+[ ]+CHR(25) Œd^�—5@ 24,19 say [Enter ]+CHR(60)+CHR(196)+CHR(217) Œd_�—5@ 24,46 say [F10] Œd`�—5@ 24,65 say [Esc] ÔŒda�—5SETCOLOR(old_color) Œdb�—5 Œdc�—5RETURN Œdd�—P*-------------------------------------------------------------------------------Œde�df�—P*-------------------------------------------------------------------------------Œdg�—PROCEDURE thereport Œdh�—@ 23,00 CLEAR Œdi�—0@ 23,00 say [Optional Report Title - Up to ] +; Œdj�—0LTRIM(STR(RptWidth,3)) + [ Characters] Œdk�—&The_Title = SPACE(RptWidth) Œdl�—&@ 24,00 GET The_Title PICT "@S80" Œdm�—&READ Œdn�—IF LASTKEY() = 27 Œdo�— CLOSE DATA ŒÙdp�— CLEAR Œdq�— RETURN Œdr�—ENDIF Œdt�—&The_Title = ALLTRIM(The_Title) Œdu�—&@ 23,00 CLEAR Œdv�dw�—IF !EMPTY(fltr) Œdx�— SET FILTER TO &fltrçŒdy�—ENDIF Œdz�—GO TOP Œd|�—IF !prt_ready() Œd}�— CLOSE DATA Œd~�— RETURN Œd�— ENDIF Œd€�—SET PRINT ON Œd��—page = 0 Œd‚�—line = 1 Œdƒ�—@ 24,00Œd„�—&saycntr(24,3, [Working on report...]) Œd…�—SET CONS OFF Œd†�d‡�—DO WHILE !EOF() Œdˆ�— IF page <> 0 Œd‰�— ?? CHR(12) ŒdŠ�— ENDIF Œd‹�— page = page + 1 ŒdŒ�—) line1 = SPACE(offset) + TODAY æŒd��—) the_page = 'Page '+LTRIM(STR(page,6)) ŒdŽ�—E ? line1 + SPACE(RptWidth - LEN(line1) - LEN(the_page) ) + the_pageŒd��—E ? Œd��—E IF !EMPTY(The_Title) Œd‘�—E ? SPACE( (RptWidth/2) - (LEN(the_title)/2) ) + the_title Œd’�—E ? Œd“�—E ENDIF Œd”�—E ? Œd•�—E ? SPACE(offset) + UPPER(the_say) Œd–�—E DO WHILE line <= linepp .AND. !EOF() Œd—�—E ? SPACE(offset) + &the_cmd çŒd˜�—E line = line + 1 Œd™�—E SKIP Œdš�—E ENDDO Œd›�—E line = 1 Œdœ�—EENDDO Œd��—E Œdž�—E?? CHR(12) ŒdŸ�—ESET PRINT OFF Œd �—ESET CONS ON ¢Œd¡�—ECLEAR Œd¢�d£�—RETURN Œd¤�—*-* end Ad Hoc ReportŒd¥�d§Æd¨¹d©Y4ÿÿÿÿIONET5@iVERSIONSETNDX Œd¢�d£�—RETURN Œd¤�—*-* end Ad Hoc ã U‹ì3Û¸PS¸ˆ+PS¸Pšµ%‹å]Ëdd–¸dN— &THATFILEAdç¹d Ç—* d ž†Œd �—* creation date ŽŽÙŒd �—* created by IONET ž†Œd �d�—CLEARŒd�—*-* start netcheckŒd�—SELE AŒd�—* check if openŒd�—IF use_S(afile)Œdž™iXSd�—7 nxnam = SUBSTR(afile,1,6) + LTRIM(STR(maxndx + 1,2)) Œd�—+ MyNtx = nxnam + [.ntx] Œd�—, IF FILE(MyNtx) && temp index file exists çŒdžï8X@d�— SET INDEX TO &nxnam çŒd�— NdxOrder = 0 ŒdYd�— ž†—,&nxnam熌ddžïuX"d �— ELSE Œd!�— ž†Œd#d$�— ENDIFŒd%Yd&�— ž†Œd(d)�— SET ORDER TO NdxOrderŒd+�—ELSEŒd,�— RETURNŒd-�— ENDIF netuseŒd.�—*-* end netcheckŒd/�d2�—addagain = .t.ØŒd3�—DO WHILE addagainŒd4�— SET KEY -1 TO addfkey2Œd5�— SET KEY -2 TO addfkey3Œd6�— SET KEY -3 TO addfkey4Œd7�— SET KEY -4 TO addfkey5Œd8�— SET KEY -5 TO addfkey6Œd9�— SET KEY -6 TO addfkey7Œd:�— SET KEY -7 TO addfkey8Œd;�— SET KEY -8 TO addfkey9Œd<�— SET KEY -9 TO addfkey10Œd=�d?�— GOTO RECCOUNT()Œd@�— * should we dupe this fieldŒdA97yX§dB�— IF dž€™ ×܆ŒdC�— Mž€™ ׆— = A->†ž܆ŒdE�— ELSEŒdFYdGY5žá—C8X8dH�— Mž€™ ׆— = SPACE(†ž ™Ôj†—)†ŒdQYñžá—N8X?d\�— Mž€™ ׆—= 0†ž ïOX—.—0ž ª†Y—†ŒdbY¦žá—L8X&dd�— Mž€™ ׆— = .f.†ŒdfYtžá—D8X5dh�— Mž€™ ׆— = CTOD(' / / ') Û†ŒdjY3žá—M8X'dk�— * memo field- do nothingŒdldm�— ENDIFŒdn€ÌdoYSþdp�drNds€Ø ‰du– ¸dvNdw97yXZdxž ž cÐuX@dy�— @ ¥™ iX—0Y—†¥™Ôj†— ,00 SAY '†ž ܆—'†Œd{d|€Ìd}Y ÿd–¸d€Nd�97yXKd‚žá—MuXcdƒ�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž™ iX—0Y—†ž€o™ïÕj†— GET M†žj†Œd…d‡YdˆYž—C8XdŠY±ž—N8Xdd‹ž ï8XdŒ—9ž ªØ‰d�Y&dŽ—9ž ž o€oª—.†—9ž ª†Ø‰d�— PICT 'd�ž†—' †Œd’YBž—D8X— PICT '@d' d“Œd•Yž—L8X— PICT 'Y' d–Œd˜dš€Ìd›Y¯þd��—H @ 00,01 SAY 'This will be Record # '+LTRIM(TRIM(STR(RECCOUNT()+1,6))) Œdž�— @ 22,03 SAY CHR(24)ŒdŸ�—5 @ 23,01 SAY CHR(27) +[ ] +CHR(26) + [ Navigate] ÔŒd �— @ 24,03 SAY CHR(25)Œd¡�—, @ 22,20 SAY [Make any additions you want] Œd¢�—9 @ 23,20 SAY [F2 duplicates field from previous record] Œd£�—" @ 24,20 SAY [Ctrl W saves data] Œd¤�— @ 22,66 SAY [F1-Help] Œd¥�— @ 24,66 SAY [Esc to abort]Œd¦�— SETCOLOR(colorrev) Œd§�— @ 22,03 SAY CHR(24)Œd¨�— @ 22,66 SAY [F1] Œd©�— @ 23,01 SAY CHR(27) Œdª�— @ 23,05 SAY CHR(26) Œd«�— @ 23,20 SAY [F2] Œd¬�— @ 24,03 SAY CHR(25) Œd­�— @ 24,20 SAY [Ctrl W] Œd®�— @ 24,66 SAY [Esc] Œd¯�— SETCOLOR(colornorm) Œd¶�— READŒd·�—' IF READKEY() = 12 .OR. LASTKEY() = 27Œd¸�— store .f. to addagainŒd¹�— EXITŒdº�— ELSEŒd¼Nd¾™Ø‰d¿Ý؉dÀ9ž—L8ž—M8�X dÁ€+ÌdÂYàÿdÄYdÅYÖž—C8XMdÆ�— IF Mž€™ ×܆— <>space(len(M†ž€™ ×܆—))†ŒdÇž€o؉dÈY~ž—D8X8dÉ�— if dow(Mž€™ ×܆—)<>0†ŒdÊž€o؉dËY;ž—N8X0dÌ�— if Mž€™ ×܆—<>0†ŒdÍž€o؉dÎdÏ€ÌdÑ9žX dÒž€i7�XdÓ>؉dÔYðdÕYädÖYd×YО—C8XK— .or. MdØž€™ ×܆— <>space(len(M†ž€™ ×܆—))†ŒdÙž€o؉dÚYzž—D8X6— .or. dow(MdÛž€™ ×܆—)<>0†ŒdÜž€o؉dÝY9ž—N8X.— .or. MdÞž€™ ×܆—<>0†Œdßž€o؉dàdá€ÌdâdãYîþdå�— SELE AŒdæ�— DO WHILE .t.Œdç�— * check if openŒdè�— @ 22,0 clearŒdé�—X @ 22,0 say ' Trying to Add Record 'Œdê�—X @ 23,0 say ' 'íŒdë�— IF add_rec(5)Œdì�—5 * blank record appended by add_rec functionŒdîNdï97yXLdðžá—MuX2dñ�— REPL ž†— WITH M†ž€™ ׆Œdòdó€ÌdôY®ÿdõ�— UNLOCK Œdö�— EXITŒd÷�— ELSEŒdø�— store 'C' to mwaitŒdù�—[ @ 22,0 say ' To ADD, the Datafile MUST be locked - it is Open some where else 'Œdú�—f @ 23,0 say ' on the network - do you want to C)ontinue waiting or E)xit ' get mwait pict '!'Œdû�— READŒdü�— IF mwait='E'Œdý�—! store .f. to addagainŒdþ�— SET KEY -1 TOŒdÿ�— SET KEY -2 TOŒd�— SET KEY -3 TOŒd�— SET KEY -4 TOŒd�— SET KEY -5 TOÔŒd�— SET KEY -6 TOŒd�— SET KEY -7 TOŒd�— SET KEY -8 TOŒd�— SET KEY -9 TOŒd�— SET KEY -10 TOŒd�— RETURNŒd �— ENDIF mwait=qŒd �— ENDIF netuseŒd �— ENDDO tŒd �— @ 22,0 CLEARŒd �— ELSEŒd�— store .f. to addagainŒd�— ENDIF Mž€™ ×܆— <> space(len(M†ž€™ ×܆—))†Œd�— ENDIF readkey()=12Œd�—ENDDO addagainŒd�d�— SET KEY -1 TOŒd�— SET KEY -2 TOŒd�— SET KEY -3 TOŒd�— SET KEY -4 TOŒd�— SET KEY -5 TOŒd�— SET KEY -6 TOŒd�— SET KEY -7 TOŒd�— SET KEY -8 TOŒd�— SET KEY -9 TOŒd�—SET KEY -10 TOŒd�—*Œd�— CLOSE DATAŒd�—RETURNŒd �#d!�—* end ž†Œd#Æd%Yd(4ÿÿÿÿiATHATFILEAVERSIONNDXNUMSETNDXFIELD_NAMEFIELæ U‹ì3Û¸PS¸¢+PS¸Pšµ%‹å]Ëd— &THATFILEGdç¹dÇ—* dž†Œd �—* creation date ŽŽÙŒd �—* created by IONET ž†Œd �—*Œd �—*-* start netcheckŒd�—SELE AŒd�—* check if openŒd�—IF use_S(afile)Œdž™iXqd�—7 nxnam = SUBSTR(afile,1,6) + LTRIM(STR(maxndx + 1,2)) Œd�—+ MyNtx = nxnam + [.ntx] Œd�—, IF FILE(MyNtx) && temp index file exists çŒdžï8X^d�— SET INDEX TO &nxnam çŒd�— NdxOrder = 0 Œd�— IoSayNdx = [None] ŒdYd�— ž†—,&nxnam熌ddžïuX"d �— ELSE Œd!�— ž†Œd#d$�— ENDIFŒd%Yd&�— ž†Œd(d)�— SET ORDER TO NdxOrderŒd+�— IF RECCOUNT() = 0Œd,�— CLEARŒd-�— ?? CHR(7)Œd.�— @ 23,00 CLEARÔŒd/�—O saycntr(24,1, 'Sorry. No records to edit or view. Press any key to abort') Œd0�— INKEY(0)Œd1�— RETURNŒd2�— ENDIF reccountŒd3�—ELSEŒd4�— RETURNŒd5�— ENDIF use_SŒd6�—*-* end netcheckŒd7�d8�—IF !EMPTY(fltr)Œd9�— SET FILTER TO &fltrçŒd:�—ENDIF Œd;�—GO TOP Œd<�d=�—CLEARŒd?–¸d@NdA97yXXdBžžcÐuX>dC�—@ ¥™ iX—0Y—†¥™Ôj†— ,00 SAY '†ž܆—'†ŒdDdE€ÌdFY¢ÿdI�dK�— DO WHILE .t. ŒdM–¸dNNdO97yXždPž —H8X«dQž á—MuX3dR�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž ™ iX—0Y—†ž €o™ïÕj†— GET †ž j†ŒdUYdVYž —C8XdXY±ž —N8XddYžï8XdZ—9žªØ‰d[Y&d\—9žžo€oª—.†Õ—9žª†Ø‰d]— PICT 'd^ž†—' †Œd`YBž —D8X— PICT '@d' daŒdcYž —L8X— PICT 'Y' ddŒdfdgYcdh�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž ™ iX—0Y—†ž €o™ïÕj†— SAY 'memo'†ŒdjdkYÚdlž á—MuXedm�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž ™ iX—0Y—†ž €o™ïÕj†— SAY †ž ܆ŒdoYcdp�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž ™ iX—0Y—†ž €o™ïÕj†— SAY 'memo'†Œdrdsdu€ÌdvY\ýdxž —H8Xdy�— CLEA GETSŒdzd{�d|�— @ 00,00 CLEAR TO 00,38Œd}�— SETCOLOR(colorrev) Œd~�—T @ 0,0 SAY 'Rec '+LTRIM(TRIM(STR(RECNO(),6)))+' of '+LTRIM(TRIM(STR(RECCOUNT(),6)))Œd�— @ 21,02 SAY [Filter -> ]Œd€�— SETCOLOR(colornorm) Œd��— @ 21,12ëŒd‚�—: @ 21,12 SAY IIF(EMPTY(fltr), [None], SUBSTR(fltr,1,66)) Œd„�d…�— IF DELETED()Œd†�— SETCOLOR(blink) Œd‡�— @ 0,22 SAY 'DELETED'Œdˆ�— SETCOLOR(colornorm) Œd‰�— ENDIFŒdŠ�d‹�— *-*start rec_lockŒdŒ�— * check if lockedŒd��— IF RLOCK()ŒdŽ�— * unlockedŒd��— ELSEŒd��— SETCOLOR(blink)Œd‘�— @ 0,31 say 'LOCKED'Œd’�— SETCOLOR(colornorm) Œd“�— ENDIF rec_lockŒd”�— unlockŒd•�— *-*end rec_lockŒd–�d—�— @ 0,39Œd˜�—) @ 0,39 SAY 'Current Index => '+iosayndxŒd™�dš�— SET CONFIRM OFFŒdœ�—@ @ 24,18 SAY STR(ndxorder,2) Œd��—@ @ 24,70 SAY 'F1-Help' Œdž�— @ 24,54 say [Esc when done]îŒdŸ�—; SETCOLOR(colorrev) Œd �—@ @ 24,70 SAY [F1] Œd¡�— @ 24,54 say [Esc] Œd£�—; SETCOLOR(colornorm) Œd¤�d¥�—0 @ 22,01 PROMPT [ > next record ] && 1 çŒd¦�—0 @ 22,18 PROMPT [ Edit ] && 2 çŒd§�—0 @ 22,28 PROMPT [ Top ] && 3 çŒd¨�—0 @ 22,38 PROMPT [ Goto # ] && 4 çŒd©�—0 @ 22,53 PROMPT [ + Skip fwrd ] && 5 çŒdª�—0 @ 22,69 PROMPT [ Delete ] && 6 çŒd«�—0 @ 23,01 PROMPT [ < back record ] && 7 çŒd¬�—0 @ 23,18 PROMPT [ Search ] && 8 çŒd­�—0 @ 23,28 PROMPT [ Bottom ] && 9 þçŒd®�—0 @ 23,38 PROMPT [ Last record ] && 10 çŒd¯�—0 @ 23,53 PROMPT [ - Skip bkwrd ] && 11 çŒd°�—0 @ 23,69 PROMPT [ Undelete ] && 12 çŒd±�—0 @ 24,01 PROMPT [ Choose Index => ] && 13 çŒd²�—0 @ 24,28 PROMPT [ Query ] && 14 çŒd´�—0 MENU TO IGET Œd·�—2 *-*-* remove stars if not using MENU TO *-*-* Œd¸�—A * @ 24,47 say [Enter ]+CHR(60)+CHR(196)+CHR(217)+[ when done] Œd¹�— * iget = ' ' Œdº�—` * @ 22,01 say ' > next record Edit Top Goto # + Skip fwrd Delete' Œd»�—` * @ 23,01 say ' < back record Search Bottom Last record - Skip bkwrd Undelete'Œd¼�—5 * @ 24,01 say ' Choose Index => Query' ÔŒd½�—! * SETCOLOR(colorrev) Œd¾�—6 * @ 22,02 say [>] Œd¿�—6 * @ 22,19 say [E] ŒdÀ�—6 * @ 22,29 say [T] ŒdÁ�—6 * @ 22,39 say [G] ŒdÂ�—6 * @ 22,54 say [+] ŒdÃ�—6 * @ 22,70 say [D] ŒdÄ�—6 * @ 23,02 say [<] ŒdÅ�—6 * @ 23,19 say [S] ŒdÆ�—6 * @ 23,29 say [B] ŒdÇ�—6 * @ 23,39 say [L] ŒdÈ�—6 * @ 23,54 say [-] ŒÛdÉ�—6 * @ 23,70 say [U] ŒdÊ�—6 * @ 24,02 say [C] ŒdË�—6 * @ 24,29 say [Q] ŒdÌ�—6 * @ 24,47 say [Enter ]+CHR(60)+CHR(196)+CHR(217) ŒdÍ�—2 * SETCOLOR(colornorm) ŒdÎ�—6 * @ 24,45 GET iget PICT '!' ŒdÏ�— * READŒdÐ�— SET CONFIRM ONŒdÑ�— DO CASEŒdÒ�—" CASE iget = 5 && SKIP çŒdÓ�—' * CASE iget = '+' && SKIPçŒdÔ�— iogrecord = 0ŒdÕ�— @ 21,00 CLEAR ŒdÖ�— SET CURSOR ONŒd×�—? @ 22,54 SAY '+ Skip fwrd ? ' GET IOGRECORD PICTURE '####'ŒdØ�— SETCOLOR(colorrev) ŒdÙ�— @ 22,54 SAY '+'ÔŒdÚ�— SETCOLOR(colornorm)ŒdÛ�— READŒdÜ�— SET CURSOR OFF ŒdÝ�— thisrec = RECNO() ŒdÞ�— SKIP iogrecordŒdß�— IF eof()Œdà�— @ 22,00 CLEAR Œdá�—9 @ 23,25 say 'You have gone past the end of file 'Œdâ�—1 @ 24,25 say ' Hit any key to continue'Œdã�— INKEY(0)Œdä�— GOTO thisrecŒdå�— ENDIFŒdæ�— @ 22,00 CLEARŒdç�dè�—$ CASE iget = 11 && Skip -çŒdé�—) * CASE iget = '-' && Skip -çŒdê�— iogrecord = 0Œdë�— @ 21,00 CLEAR Œdì�— SET CURSOR ONŒdí�—@ @ 23,54 SAY '- Skip bkwrd ? ' GET IOGRECORD PICTURE '####'Œdî�— SETCOLOR(colorrev)Œdï�— @ 23,54 SAY '-' óŒdð�— SETCOLOR(colornorm)Œdñ�— READŒdò�— SET CURSOR OFF Œdó�— thisrec = RECNO() Œdô�— SKIP -iogrecordŒdõ�— IF BOF()Œdö�— @ 22,00 CLEARŒd÷�—? @ 23,25 say 'You have gone past the beginning of file 'Œdø�—3 @ 24,25 say ' Hit any key to continue'Œdù�— INKEY(0)Œdú�— GOTO thisrecŒdû�— ENDIFŒdü�— @ 22,00 CLEARŒdý�dþ�—# CASE iget = 9 && BottomçŒdÿ�—) * CASE iget = 'B' && BottomçŒd�— GO bottŒd�d�—! CASE iget = 3 && Top çŒd�—' * CASE iget = 'T' && Top çŒd�— GO topŒd�d�—$ CASE iget = 6 && Delete çŒd�—* * CASE iget = 'D' && Delete áçŒd�— *-*start rec_lockŒd �— DO WHILE .t.Œd �— * check if lockableŒd �— @ 22,0 clearŒd �— IF REC_LOCK(5)Œd �— deleŒd�— unlockŒd�— EXITŒd�— ELSEŒd�— SET CONFIRM OFFŒd�— store 'C' to mwaitŒd�—f @ 22,0 say ' A record must be lockable to delete -it is Open some where else on the 'Œd�—R @ 23,0 say ' network - C)ontinue waiting, E)xit ' get mwait pict '!'Œd�— READŒd�— SET CONFIRM ONŒd�— IF mwait='E'Œd�— EXITŒd�— ENDIF mwait=eŒd�— ENDIF rec_lockæŒd�— ENDDO tŒd�— *-*end rec_lockŒd�d�—) CASE iget = 12 && Undelete çŒd�—. * CASE iget = 'U' && Undelete çŒd �— *-*start rec_lockŒd!�— DO WHILE .t.Œd"�— * check if lockableŒd#�— @ 22,0 clearŒd$�— IF REC_LOCK(5)Œd%�— RECALLŒd&�— UNLOCKŒd'�— EXITŒd(�— ELSEŒd)�— SET CONFIRM OFFŒd*�— store 'C' to mwaitŒd+�—f @ 22,0 say ' A record must be lockable to undelete -it is Open some where else on the 'Œd,�—R @ 23,0 say ' network - C)ontinue waiting, E)xit ' get mwait pict '!'Œd-�— READÖŒd.�— SET CONFIRM ONŒd/�— IF mwait='E'Œd0�— EXITŒd1�— ENDIF mwait=eŒd2�— ENDIF rec_lockŒd3�— ENDDO tŒd4�— *-*end rec_lockŒd5�d6�—) CASE iget = 10 && Last RecordçŒd7�—. * CASE iget = 'L' && Last RecordçŒd8�— GOTO RECCOUNT()Œd9�d:�—* CASE iget = 7 && Back recordçŒd;�—, * CASE iget = '<' .OR. iget = ',' Œd<�— gobak = RECNO() Œd=�— SKIP - 1 Œd>�— IF BOF() Œd?�— TONE(5555,.1) Œd@�— CLEAR TYPEAHEAD ŒdA�— GO gobak ŒdB�— ENDIF not bof åŒdG�dH�—+ CASE iget = 1 && next record çŒdI�—, * CASE iget = '>' .OR. iget = '.' ŒdJ�— gobak = RECNO() ŒdK�— SKIP ŒdL�— IF EOF() ŒdM�— TONE(5555,.1) ŒdN�— CLEAR TYPEAHEAD ŒdO�— GO gobak ŒdP�— ENDIF not bof ŒdX�dY�—$ CASE iget = 4 && Goto # çŒdZ�— * CASE iget = 'G' Œd[�— irecnum = 0 Œd\�—8 DO WHILE irecnum < 1 .OR. irecnum > RECCOUNT()Œd]�— irecnum = RECNO() Œd^�— @ 21,00 CLEAR Œd_�— SET CURSOR ONŒd`�—. @ 22,39 SAY 'Goto # ' GET irecnumŒda�— SETCOLOR(colorrev)ÕŒdb�— @ 22,39 SAY [G]Œdc�— SETCOLOR(colornorm)Œdd�— READŒde�— @ 22,00 Œdf�— SET CURSOR OFFŒdg�— ENDDO irecnum Œdh�— GOTO irecnumŒdi�dj�—+ CASE iget = 13 && Choose Index çŒdk�—0 * CASE iget = 'C' && Choose Index çŒdl�— SAVE SCREEN TO menugetŒdo�— gobak = RECNO() Œdp�dqž™iXƒdr�— OldOrder = NdxOrderŒds�— OldNdxSay = IoSayNdxŒdt�— DECLARE charray[ž™†Ój†—]†ŒduY2dv�— DECLARE charray[ž€†Ój†—]†Œdwdx�—4 charray[1] = ' 0) None - (Entry order)' Œdz€Ø‰d{ž—Y8X]d|9ÝXRd}—ndxlinež™ÛÔj†Ø‰d~ž™ iX±dž™ 8XPd€�— charray[ž€†™Ôj†—] = ' †ž™Ôj†—) †šå܆—'†Œd�YNd‚�— charray[ž€†™Ôj†—] = ' †ž™Ôj†—) †šå܆—'†Œdƒd„YLd…�— charray[ž€†™Ôj†—] = ' †ž™Ôj†—) †šå܆—'†Œd†d‡žžiXdˆž€†Ø‰d‰Y dŠY d‹dŒY©þd�d�ž™iX!d��—A nxnam = SUBSTR(afile,1,6) + LTRIM(STR(maxndx + 1,2)) Œd—�—! MyNtx = nxnam + [.ntx] Œd˜�—) IF FILE(MyNtx) && file exists çŒd™�—" HANDLE = FOPEN(MyNtx) Œdš�—3 IF FERROR() <> 0 && file open error çŒd›�— FCLOSE(handle) Œdœ�— charray[ž™†Ój†—1] = [ Temp Index may be damaged! Try recreating.]þ†Œdž�—; NewIoSAy = [ Temp Index may be damaged!] ŒdŸ�— ELSE Œd �—1 * Assume a Clipper (.NTX ) index. Œd¡�—9 * Future version will handle .NDX indexes Œd¢�—# FSEEK(handle, 22,0) Œd£�—/ NewIoSay = FREADSTR(handle,250) Œd¤�— FCLOSE(handle) Œd¦ž™bXrd§�— charray[ž™†Ój†—?] = [ ]+LTRIM(STR(MaxNdx + 1,2))+[) Temp index -> ] + NewIoSay†Œd¨Ynd©�— charray[ž™†Ój†—>] = [ ]+LTRIM(STR(MaxNdx + 1,2))+[) Temp index -> ] + NewIoSay†Œdªd¬�— ENDIF Œd­�— ELSEŒd¯ž™bXyd°�— charray[ž™†Ój†—I] = [ ]+LTRIM(STR(MaxNdx + 1,2))+[) Temp index -> NONE-select to create]ㆌd±Yud²�— charray[ž™†Ój†—H] = [ ]+LTRIM(STR(MaxNdx + 1,2))+[) Temp index -> NONE-select to create]†Œd³dµ�— ENDIFŒd·d¹�—7 cwide = 0 && determine width of light bar çŒdº�—& FOR iii = 1 to LEN(charray) Œd»�—) IF LEN(charray[iii]) > cwide Œd¼�—( cwide = LEN(charray[iii]) Œd½�— ENDIF Œd¾�— NEXT Œd¿�— IF cwide < 42 ŒdÀ�— cwide = 42 ŒdÁ�— ENDIF ŒdÂ�— IF cwide > 67 ŒdÃ�— cwide = 67 ŒdÄ�— ENDIF ŒdÅ�—* cleft_col = 39 - (cwide/2) - 2 ŒdÇž™ GX'dÈ�— cmax_rows = 14 ŒdÊY,dÌ�— cmax_rows = *ž€†™Ôj†ŒdÐdÑ�— * ndxnum = ž™Ô†ŒdÕ�—I @ 1, cleft_col CLEAR TO 5 + cmax_rows, cleft_col + cwide + 6 ŒdÖ�—O @ 1, cleft_col TO 5 + cmax_rows, cleft_col + cwide + 6 DOUBLE Œd×�—F SHADOW(1, cleft_col, 5 + cmax_rows, cleft_col + cwide + 6) ŒdÙ�—J SETCOLOR(colorrev) ŒdÚ�—P @ 02, cleft_col + 3 SAY "Choose which Index will be the Master Index" ŒdÛ�— SETCOLOR(colornorm) Œdá�—% oldorder = NdxOrder Œdâ�—% NdxOrder = NdxOrder + 1 Œdã�—% Crelative = NdxOrder - 1 Œdå�— KEYBOARD CHR(32) Œdê�—‡ NdxOrder = achoice(4, cleft_col + 3, 4 + cmax_rows, 4 + cleft_col + cwide - 1, charray, .t., "crules", NdxOrder, Crelative) âŒdí�—B IF LASTKEY() = 27 .OR. LASTKEY() = 4 .OR. LASTKEY() = 19Œdî�—# NdxOrder = oldorder + 1Œdï�— NdxOrder = Oldorder Œdð�—# IoSayNdx = IoSayNdx Œdò�— ELSEŒdó�—$ NdxOrder = NdxOrder - 1 Œdõ�— DO CASEŒdö�— CASE NdxOrder = 0Œd÷�— IOSayNdx = [None] Œdù€Ø‰dúž—Y8XÏdû9ÝXÄdü—ndxlinež™Ôj†Ø‰dý�— CASE NdxOrder = ž™Ôj†Œdþ�— IOSayNdx = [šå܆—]†ŒdÿžžiXdž€†Ø‰dY+d€Ø‰d—ndxlinež™Ôj†Ø‰dY ddY7ÿdd ž™iXod �— OTHERWISEŒd �— SET CURSOR ON Œd �—7 IF FILE(MyNtx) && Temp index exists ÿçŒd�—! SET CURSOR ON Œd�—" @ 21,00 CLEAR Œd�—0 @ 22,11 PROMPT [ Use as is ] Œd�—< @ 22,24 PROMPT [ Create new temp index ] Œd�—< @ 22,49 PROMPT [ Delete temp index ] Œd�— DO footer2c Œd�—& MENU TO WhichOne Œd�— @ 24,00 Œd�—L IF LASTKEY() = 27 && Esc. pressed so keep original orderçŒd�—, NdxOrder = OldOrder Œd�—, IoSayNdx = OldNdxSay Œd�—, ELSE Œd�—, DO CASE Œd�—E CASE WhichOne = 1 && use temp index as is çŒd�—E NdxOrder = MaxNdx + 1 Œd�—E IOSayNdx = NewIOSay Œd�—E CASE WhichOne = 2 && create new temp indexçŒd�—E DO cr8index Œd �—E CASE WhichOne = 3 && delete temp index çŒd!�—E ERASE &MyNtx çŒd"�—E IoSayNdx = SUBSTR(charray[1],6) Œd#�—E NdxOrder = 0 Œd$�—E ENDCASE Œd%�—E ENDIF ÞŒd&�—E ELSE Œd'�—E DO cr8index Œd(�—E ENDIF Œd*d,�—E ENDCASE Œd-�—E ENDIF Œd.�—E Œd0ž™iXºd1�—E IF FILE(MyNtx) && Temp index exists so maintain it. çŒd2�— ž†—,&nxnam熌d3�— ELSE Œd4�— ž†Œd5�— ENDIF Œd6d8�d9�— SET ORDER TO NdxOrderŒd:�— GO gobak üŒd;�— SET CURSOR OFF Œd<�—% RESTORE SCREEN FROM menugetŒd@�dA�—% CASE iget = 2 && Edit çŒdB�—+ * CASE iget = 'E' && Edit çŒdC�— SET CURSOR ON ŒdD�— lok = .f. ŒdE�— *-* start rec_lockŒdF�— DO WHILE .t.ŒdG�— * check if lockableŒdH�— @ 22,0 clearŒdI�— IF REC_LOCK(5)ŒdJ�— lok = .t.ŒdK�— EXITŒdL�— ELSEŒdM�— SET CONFIRM OFFŒdN�— mwait = 'C' ŒdO�—f @ 22,0 say ' A record must be lockable to edit -it is Open some where else on the 'ŒdP�—R @ 23,0 say ' network - C)ontinue waiting, E)xit ' get mwait pict '!'ÛŒdQ�— READŒdR�— SET CONFIRM ONŒdS�— IF mwait='E'ŒdT�— EXITŒdU�— ENDIF mwait=eŒdV�dW�— ENDIF rec_lockŒdX�— ENDDO tŒdY�— *-* end rec_lockŒdZ�d[�— IF lokŒd\�— eagain = .t. Œd]�— DO WHILE eagainŒd^�— CLEARŒd_>؉d`—field_type='M'Ħ­eZxùÿ¦daCX7dbÝØ‰dc�—$ SET KEY 30 to memo_fldŒddde�— m_edit = .f. Œdi–¸djNdk97yX†dlž á—MuX9dm�— STORE ž ܆— to M†ž €™ ׆ŒdnY3do�— STORE 'memo' to Mž €™ ׆Œdpdq€ÌdrYtÿdu–¸dvNdw97yXfdxžžcÐuXLdy�— @ ⥙ iX—0Y—†¥™Ôj†— ,00 SAY '†ž܆—'†Œd{d|€Ìd}Y”ÿd–¸d€Nd�97yXEd‚�— @ ž ™ iX—0Y—†ž ™ïÕj†—,†ž ™ iX—0Y—†ž €o™ïÕj†— GET M†ž j†Œd…Yd†Yž —C8XdˆY±ž —N8Xdd‰žï8XdŠ—9žªØ‰d‹Y&dŒ—9žžo€oª—.†—9žª†Ø‰d�— PICT 'dŽž†—' †Œd�YBž —D8X— PICT '@d' d‘Œd“Yž —L8X— PICT 'Y' d”Œd–d˜€Ìd™Yµþd¥�—a @ 0,0 SAY 'Rec '+LTRIM(TRIM(STR(RECNO(),6)))+' of '+LTRIM(TRIM(STR(RECCOUNT(),6))) Œd¦�—" @ 22,03 SAY CHR(24) Œd§�—@ @ 23,01 SAY CHR(27) +[ ] +CHR(26) + [ Navigate] Œd¨�—" @ 24,03 SAY CHR(25) Œd©�—= @ 22,20 SAY [Ctrl R save then previous record] òŒdª�—9 @ 23,20 SAY [Ctrl C save then next record] Œd«�—/ @ 24,20 SAY [Ctrl W saves data] Œd¬�—$ @ 22,66 SAY [F1-Help] Œd­žX:d®�—/ @ 24,43 say [Ctrl PgDn for memo] Œd¯d°�—) @ 24,66 SAY [Esc to abort] Œd±�—! SETCOLOR(colorrev) Œd²�—" @ 22,03 SAY CHR(24) Œd³�—# @ 22,20 say [Ctrl R] Œd´�— @ 22,66 SAY [F1] Œdµ�—" @ 23,01 SAY CHR(27) Œd¶�—" @ 23,05 SAY CHR(26) Œd·�—# @ 23,20 say [Ctrl C] Œd¸�—" @ 24,03 SAY CHR(25) Œd¹�—" @ 24,20 SAY [Ctrl W]ŒdºžX1d»�—& @ 24,43 say [Ctrl PgDn] Œd¼d½�— @ 24,66 SAY [Esc] óŒd¾�—! SETCOLOR(colornorm)ŒdÁ�— READŒdžX*dÃ�— SET KEY 30 TOŒdÄ�dÅdÆ�dÇ�— IF LASTKEY() = 27ŒdÈ�— * abandonŒdÉ�—# store .f. to eagainŒdÊ�— ELSEŒdË–¸dÌNdÍ97yXSdΞ á—MuX9dÏ�— REPL ž ܆— with M†ž €™ ׆ŒdÐdÑ€ÌdÒY§ÿdÓ�— ENDIF lastkeyŒdÔ�dÕ�— IF m_editŒdÖ�— LOOPŒd×�— ENDIF m_editŒdØ�dÙ�— DO CASEŒdÚ�— * PgUpŒdÛ�—G CASE (READKEY()=6 .OR. READKEY()=262) .AND. .NOT. BOF()ŒdÜ�— SKIP -1ŒdÝ�—$ *-* start rec_lockŒdÞ�— DO WHILE .t.ÔŒdß�—' * check if lockableŒdà�— @ 22,0 clearŒdá�—" IF REC_LOCK(5)Œdâ�— EXITŒdã�— ELSEŒdä�—% SET CONFIRM OFFŒdå�—" mwait = 'C' Œdæ�—n @ 22,0 say ' A record must be lockable to edit -it is Open some where else on the 'Œdç�—r @ 23,0 say ' network - C)ontinue waiting, > next rec, < back rec, E)xit ' get mwait pict '!'Œdè�— READŒdé�—$ SET CONFIRM ONŒdê�— DO CASEŒdë�—& CASE mwait='E'Œdì�— RETURNŒßdí�dî�—5 CASE mwait='>' .OR. mwait='.'Œdï�—# IF !EOF()Œdð�— SKIPŒdñ�—$ IF EOF()Œdò�—" *eofŒdó�—* @ 22,0 clearŒdô�—C @ 24,0 say ' Already at End of File 'Œdõ�—' INKEY(0) Œdö�—% SKIP -2Œd÷�—' ENDIF eof()Œdø�— LOOPŒdù�—' ENDIF not eofŒdú�dû�—5 CASE mwait='<' .OR. mwait=','Œdü�—# IF !BOF()Œdý�—# SKIP -1ÝŒdþ�—$ IF BOF()Œdÿ�—" *bofŒd�—* @ 22,0 clearŒd�—C @ 24,0 say ' Already at Top of File 'Œd�—& INKEY(0)Œd�—$ SKIP 1Œd�—' ENDIF eof()Œd�— LOOPŒd�—' ENDIF not eofŒd�— ENDCASEŒd�—" ENDIF rec_lockŒd �— ENDDO tŒd �—" *-* end rec_lockŒd �d �— * PgDnŒd �—D CASE (READKEY()=7 .OR. READKEY()=263) .AND. !EOF()Œd�— SKIPëŒd�—& *-* start rec_lockŒd�— DO WHILE .t.Œd�—) * check if lockableŒd�—" @ 22,0 clearŒd�—$ IF REC_LOCK(5)Œd�— EXITŒd�— ELSEŒd�—' SET CONFIRM OFFŒd�—$ mwait = 'C' Œd�—p @ 22,0 say ' A record must be lockable to edit -it is Open some where else on the 'Œd�—t @ 23,0 say ' network - C)ontinue waiting, > next rec, < back rec, E)xit ' get mwait pict '!'Œd�— READŒd�—& SET CONFIRM ONŒd�— DO CASEŒd�—* CASE MWAIT = 'E'Œd�—" RETURNŒd�—Œd �—7 CASE mwait='>' .OR. mwait='.'Œd!�—% IF !EOF()Œd"�—" SKIPŒd#�—& IF EOF()Œd$�—$ *eofŒd%�—, @ 22,0 clearŒd&�—E @ 22,0 say ' Already at End of File 'Œd'�—( INKEY(0)Œd(�—' skip -2Œd)�—) ENDIF eof()Œd*�—" LOOPŒd+�—) ENDIF not eofŒd,�d-�—7 CASE mwait='<' .OR. mwait=','íŒd.�—% IF !BOF()Œd/�—% SKIP -1Œd0�—& IF BOF()Œd1�—$ *bofŒd2�—, @ 22,0 clearŒd3�—E @ 22,0 say ' Already at Top of File 'Œd4�—) INKEY(0) Œd5�—& SKIP 1Œd6�—) ENDIF eof()Œd7�—" LOOPŒd8�—) ENDIF not eofŒd9�— ENDCASEŒd:�—$ ENDIF rec_lockŒd;�— ENDDO tŒd<�—# SET CURSOR OFF Œd=�—$ *-* end rec_lockþŒd>�d?�— OTHERWISEŒd@�—' STORE .f. to eagainŒdA�— EXITŒdB�— ENDCASEŒdC�dD�— ENDDO eagainŒdE�— ENDIF lokŒdF�— UNLOCKŒdG–¸dHNdI97yX,dJ�— RELE Mž €™ ׆ŒdK€ÌdLYÎÿdM�— @ 22,00 clearŒdQ�dR�—( CASE iget = 8 && Search çŒdS�—. * CASE iget = 'S' && Search çŒdT�— gobak = RECNO()ŒdU�— @ 21,00 CLEAR ŒdV�— SET CURSOR ON ŒdW�— DO WHILE .t. ŒdX�— IF NdxOrder = 0ŒdY�— @ 22,0 clearŒdZ�— TONE(100,.1)Œd[�—V @ 23,0 say ' You can not search with Choose Index set to 0'ÖŒd\�—7 @ 24,0 say ' press any key'Œd]�— INKEY(0)Œd^�— @ 22,00 CLEAR Œd_�— EXITŒd`�— ENDIF Œda�db�— *-*Œdc�— DO CASE Œdg€Ø‰dhž—Y8Xˆdi9ÝX}dj—ndxlinež™Ôj†Ø‰dk�— CASE NdxOrder = ž™Ôj†Œdl�— @ 23,00 CLEAR ŒdmšåÜØ‰dnž€™×á—UPPER(8X$dož™žc™oר‰dpÝØ‰dqY dr>؉dsdu—UPPER(field_name)=UPPER(target)Ħ­eZxùÿ¦dv7yXidx—Enter ž†— to search for †Ø‰dyžØ‰dz�— @ 24,™(žc™+o™Ôj†— SAY [†ž†—]†Œd{Yd|Yãž —C8Xd}�— findit = SPACE(žÓj†—)†Œd~ž™PbXŸÔdžXNd€�— @ 23,™(ž™+o™Ôj†— GET findit PICT '@!' †Œd�YBd‚�— @ 23,™(ž™+o™Ôj†— GET findit †Œdƒd„Y›d…�— @ 24,™(žc™+ožc†™Ôj†— SAY [(Up to †ž™Ôj†— characters)]†Œd†�—1 @ 23,00 GET findit PICT '@S80' Œd‡d‰YYž —N8X¿dŠžï8Xd‹—9žªØ‰dŒY&d�—9žžo€oª—.†—9žª†Ø‰dŽd��— findit = 0 Œd��— @ 23,™(ž™+o™Ôj†— GET findit PICT '†ž†—' †Œd“Y�ž —D8X„d”�—, findit = CTOD(' / / ') Œd•�— @ 23,™(ž™+o™Ôj†— GET findit PICTURE '@d' †Œd™d›Y<dœ�—. * Cannot determine key field. ÝŒd��—? * You might like to hand code the next 4 lines.Œdž�—7 @ 24,27 SAY [Enter data to search for] ŒdŸ�— fld_len = 80 Œd �—$ findit = SPACE(80) Œd¡�—$ @ 23,00 GET findit Œd¢d£�— READŒd¤ž —C87�X0d¥�—" SEEK TRIM(findit) Œd¦Y'd§�— SEEK findit Œd¨d©�dªžžiXd«ž€†Ø‰d¬Y+d­€Ø‰d®—ndxlinež™Ôj†Ø‰d¯Y d°d±Y~ùd³dµž™iXÔd¶�—) CASE NdxOrder = MaxNdx + 1 Œd·�—! @ 23,00 CLEAR Œd¸�—C saycntr(23,1, [Enter ] +IoSayNdx+[ to search for]) Œd¹�—C findit = SPACE(80) ÝŒdº�—C @ 24,00 GET findit Œd»�—C READ Œd¼�—C SEEK trim(findit) Œd½d¾�d¿�— ENDCASE ŒdÚ�dÜ�—8 IF (BOF() .OR. EOF()) ŒdÝ�—3 @ 24,00 ŒdÞ�—. SETCOLOR(colorrev) Œdß�—3 @ 24,10 SAY [RECORD NOT FOUND!] Œdà�—. SETCOLOR(colornorm) Œdá�—3 @ 24,29 PROMPT [ Try Again ] Œdâ�—4 @ 24,41 PROMPT [ Next Closest Match ] Œdã�—4 @ 24,62 PROMPT [ Abort ] ÔŒdä�—K MENU TO now_what Œdå�—K DO CASE Œdæ�—K CASE now_what = 1 && try again çŒdç�— @ 22,00 CLEARŒdè�—K LOOP Œdé�—9 CASE now_what = 2 && next closest match çŒdê�—D SET SOFTSEEK ON && Search for next closest match çŒdë�—& SEEK findit Œdì�—& SET SOFTSEEK OFF Œdí�dî�—> IF (BOF() .OR. EOF()) && nobody home çŒdï�— @ 24,00 Œdð�×—; SETCOLOR(colorrev) Œdñ�—@ @ 24,14 SAY [NEXT CLOSEST MATCH NOT FOUND!] Œdò�—- SETCOLOR(colornorm) Œdó�—2 @ 24,45 prompt [ Try Again ] Œdô�—2 @ 24,57 prompt [ Abort ] Œdõ�—( MENU TO now_what2 Œdö�—( DO CASE Œd÷�—7 CASE now_what2 = 1 && try again çŒdø�—% @ 22,00 CLEARŒdù�— LOOP Œdú�—2 CASE now_what2 = 2 && abortçŒdû�—% @ 22,00 CLEARŒdü�—! GO gobak Œdý�— EXIT ôŒdþ�— ENDCASE Œdÿ�— ENDIF Œd�d�—1 CASE now_what = 3 && abort çŒd�— @ 22,00 CLEARŒd�— GO gobak Œd�— EXIT Œd�— ENDCASE Œd�— ENDIF Œd�— @ 22,00 CLEARŒd�— EXITŒd �— ENDDOŒd �d �d�— CASE iget = 14 && Query çŒd�—! *@ 21,00 clear Œd�—C *saycntr(24,1, [Query not installed yet. Press any key.])Œd�—! *INKEY(0) Œd�—! *@ 24,00 Œd�d�— helpcode = 0Œd�—) SAVE SCREEN TO menuget Œd�—) fltr = donzqbe(afile) ÕŒd�—) RESTORE screen from menuget Œd�—) SET CURSOR OFF Œd�—) @ 21,12 Œd�—C @ 21,12 SAY IIF(EMPTY(fltr), [None], SUBSTR(fltr,1,66)) Œd�— GO TOPŒd�d �—8 CASE LASTKEY() = 27 && ESC PRESSED çŒd"�— EXIT Œd:�—F ENDCASE Œd;�d<�— ENDDO .t. Œd=�— CLOSE DATAŒd>�—RETURNŒd?�d@�—* END ž†ŒdA�—P*-------------------------------------------------------------------------------ŒdB�dC�dD�—P*-------------------------------------------------------------------------------ŒdE�—$FUNCTION crules ŒdFß�—$ PARAMETERS mode,element,position ŒdG�—$ * elevator bar for choose index ŒdH�—$ old_clr = SETCOLOR(colornorm) ŒdI�dK�—. * repaint stripes ŒdL�—. FOR row = 4 to 4 + cmax_rows ŒdN�—. @ row, cleft_col SAY CHR(176) ŒdO�—. @ row, cleft_col + cwide + 6 SAY CHR(176) ŒdP�—. NEXT ŒdQ�dR�—. xpct = element/ LEN(charray) ŒdT�—. SET COLOR TO W+/b ŒdU�dV�—. DO CASE ŒdW�—. CASE element = 1 && top çŒdX�—. @ 4, cleft_col SAY CHR(178) ŒdY�—. @ 4, cleft_col + cwide + 6 SAY CHR(178) ŒdZ�d[�—. CASE element = LEN(charray) && bottom çŒd\�—. @ 4 + cmax_rows, cleft_col SAY CHR(178) Œd]�—: @ 4 + cmax_rows, cleft_col + cwide + 6 SAY CHR(178) Œd`�da�—> OTHERWISE && in between çŒdb�—E IF element = 2 && do not show 1st row if not on 1st rowçŒdc�—E @ 5, cleft_col SAY CHR(178) Œdd�—E @ 5, cleft_col + cwide + 6 SAY CHR(178) Œde�—E ELSE Œdf�—E @ 4 + (xpct * cmax_rows), cleft_col SAY CHR(178) Œdg�—E @ 4 + (xpct * cmax_rows), cleft_col + cwide + 6 SAY CHR(178) Œdj�—E ENDIF ÔŒdk�—E ENDCASE Œdl�dm�—, DO CASE Œdn�—, CASE LASTKEY() = 13 && Return pressed çŒdp�— SETCOLOR(colorpik) Œdq�—d @ position + 4, Cleft_col + 3 SAY charray[element] + SPACE(1 + cwide - LEN(charray[element]) )Œdr�— SETCOLOR(colornorm) Œds�—, reply = 1 Œdt�du�—- CASE LASTKEY() = 4 .OR. LASTKEY() = 19 Œdv�—7 reply = 2 && do not exit with left/right arrow çŒdw�dx�—7 CASE LASTKEY() = 27 && Esc. pressed bail out çŒdy�—7 reply = 0 Œdz�d{�— OTHERWISE Œd|�— reply = 2 Œd}�×— ENDCASE Œd~�— SET CURSOR OFF Œd�— NdxOrder = element Œd€�— Crelative = position Œd��— SETCOLOR(old_clr) Œd‚�— RETURN (reply) Œdƒ�— * end FUNCTION crules Œd„�—P *-----------------------------------------------------------------------------Œd…�d‡ž™iX›dˆ�d‰�—P*-------------------------------------------------------------------------------ŒdŠ�—PROCEDURE footer2CŒd‹�— @ 24,00 ŒdŒ�—a @ 24,12 SAY CHR(27)+[ ]+CHR(26)+[ Navigate Enter ]+CHR(60)+CHR(196)+CHR(217)+[ to select] Œd��— @ 24,55 SAY 'Esc to Abort' ŒdŽ�— SETCOLOR(colorrev) Œd��—" @ 24,12 SAY CHR(27)+' '+CHR(26) Œd��—1 @ 24,30 SAY [Enter ]+CHR(60)+CHR(196)+CHR(217) ÔŒd‘�—1 @ 24,55 SAY [Esc] Œd’�—1 SETCOLOR(colornorm) Œd“�—1 RETURN Œd”�—P *-----------------------------------------------------------------------------Œd•�d–�d—�—P*-------------------------------------------------------------------------------Œd˜�—PROCEDURE cr8index Œd™�—*-* Create new temp index Œdš�d›�—NewNtxKey = SPACE(80) Œdœ�—@ 21,00 CLEAR Œd��—T@ 23,00 SAY [Enter syntax for temp index -(don't include INDEX ON or TO FILENAME)] Œdž�—@ 24,00 GET NewNtxKey ŒdŸ�—READ Œd �—(IF LASTKEY() = 27 .OR. EMPTY(NewNtxKey) Œd¡�—( NdxOrder = Oldorder Œd¢�!—( IoSayNdx = IoSayNdx Œd£�—(ELSE Œd¤�—( NewNtxKey = ALLTRIM(NewNtxKey) Œd¥�—( IOSayNdx = NewNtxKey Œd¦�— charray[ž™†™Ôj†— ] = IOSayNdx †Œd¨�—( Œd©�—( SET INDEX TO Œd¬�—9 nxnam = SUBSTR(afile,1,6) + LTRIM(STR(maxndx + 1,2)) Œd±�—B @ 24,00 say [Indexing ] +afile+ [ on ]+NewNtxKey+ [ to ] +nxnam Œd²�—B INDEX ON &NewNtxKey to &nxnam çŒd³�—B NdxOrder = MaxNdx + 1 Œd´�—BENDIF Œdµ�d¶�—RETURN Œd·�—Q *------------------------------------------------------------------------------\Œd¹d»žX=d¼�—PROCEDURE memo_fldŒd½�—SAVE SCREEN TO menugetŒd¾�— SET KEY 30 toŒd¿�—CLEARŒdÀ–¸dÁ—field_type='M'Ħ­eZxùÿ¦dÂ�—@ 1,0 say 'Memo Edit : ž Üᆗ'†ŒdÃ�—@ 21,0ŒdÄ�—TEXTŒdÅ�—C Esc- abort edit ^Home- beg of memo Arrow keys move cursorŒdÆ�—/ ^W- save edit ^End- end of memo ŒdÇ�—ENDTEXTŒdÈ�—REPL ž ܆— with memoedit(†ž ܆—,2,1,20,65, .t.)†ŒdÉ�— m_edit = .t.ŒdÊ�—RESTORE SCREEN FROM menugetŒdË�—RETURNŒdÌ�dÍ�—P *-----------------------------------------------------------------------------ŒdÎdÐÆdѹdÔY4ÿÿdŸ�—( IOSayNdx = NewNtxKey ÔŒd �— charray[ž™†™Ôj†— ] = IOSayNdx †Œd¢�—( Œd£�—( SET INDEX TO Œd¦�—9 nxnam = SUBSTR(afile,1,6) + LTRIM(STR(maxndx + 1,2)) Œd«�—B @ 24,00 say [Indexing ] +afile+ [ on ]+NewNtxKey+ [ to ] +nxnam Œd¬�—B INDEX ON &NewNtxKey to &nxnam çŒd­�—B NdxOrder = MaxNdx + 1 Œd®�—BENDIF Œd¯�d°�—RETURN Œd±�—Q *------------------------------------------------------------------------------Œd³dµžX=d¶�—PROCEDURE memo_fldŒd·�—SAVE SCREEN TO menugetŒd¸�— SET KEY 30 toŒd¹�—CLEARŒdº–¸îd»—field_type='M'Ħ­eZxùÿ¦d¼�—@ 1,0 say 'Memo Edit : ž Üᆗ'†Œd½�—@ 21,0Œd¾�—TEXTŒd¿�—C Esc- abort edit ^Home- beg of memo Arrow keys move cursorŒdÀ�—/ ^W- save edit ^End- end of memo ŒdÁ�—ENDTEXTŒdÂ�—REPL ž ܆— with memoedit(†ž ܆—,2,1,20,65, .t.)†ŒdÃ�— m_edit = .t.ŒdÄ�—RESTORE SCREEN FROM menugetŒdÅ�—RETURNŒdÆ�dÇ�—P *-----------------------------------------------------------------------------ŒdÈdÊÆd˹dÎY4ÿÿÿÿBGENLINEAá U‹ì3Û¸PS¸Ã+PS¸Pšµ%‹å]Ëd— IOQBE.PRGd ¹d Ç— * IoQbe.prgdŒd�—)* Query by Example/Complex Filter BuilderŒd�d�—* creation date ŽŽÙŒd�—* created by IONET ž†Œd�—*Œd�d�d�—P*-------------------------------------------------------------------------------Œd�—FUNCTION DONZQBE Œd�—L PARAMETER ipfile Œd�—L PRIVATE FLTR, array_name, choices, col_left, row_top, how_wide, max_rows Œd�—L * Œd�—L * returns a filter condition in MemVar fltr Œd�—L * äŒd�—L SET COLOR TO &colornorm çŒd�—L CLEAR Œd�—L SET CURSOR OFF Œd �—L Œd!�—! @ 01,01,06,78 BOX "Õ͸³¾ÍÔ³" Œd"�—+ saycntr(1,2,[ FILTER CONDITION ]) Œd#�—+ fltr = [] Œd$�—+ kind = [CDNL] && Valid Field Types çŒd%�d&�—+ DO WHILE .t. Œd'�—+ *------------------- Field Selection Œd(�—+ pik = Qfield(kind) Œd)�—+ IF pik = 0 æŒd*�—+ EXIT Œd+�—+ ELSE Œd,�—- IF f_type[pik] = [L] && Logical field çŒd-�—- row_say = 24 Œd.�—- @ 24,00 Œd/�—H the_say = ALLTRIM(SUBSTR(F_name[pik],1,11)) + [ is equal to ] Œd0�—H p1 = ' YES/TRUE ' Œd1�—H p2 = ' NO/FALSE ' Œd2�—H the_center = (80 - (len(the_say +' '+ p1 +' '+ p2 ) )) / 2 Œd3�—H @ row_say,the_center SAY the_say Œd4�—H @ row_say,the_center + len(the_say) PROMPT p1 ÔŒd5�—H @ row_say,the_center + len(the_say + p1 + space(1)) PROMPT p2 Œd6�—H MENU TO either Œd7�—H IF LASTKEY() = 27 Œd8�—H fltr = [] Œd9�—H EXIT Œd:�—H ENDIF Œd;�—H @ 24,00 Œd<�—H DO CASE Œd=�—H CASE EITHER = 1 Œd>�—H fltr = fltr + ALLTRIM(SUBSTR(F_name[pik],1,11)) Œd?�—H CASE EITHER = 2 Œd@�—H fltr = fltr + [! ] + ALLTRIM(SUBSTR(F_name[pik],1,11)) ŒdA�—H ENDCASE ŒdB�—H DO showflt ŒdC�—H *-* Connect if Logical field ŒdD�—H xxx = connect() ŒdE�—H IF EMPTY(XXX) ŒdF�—H FLTR = [] ŒdG�—H EXIT ÕŒdH�—H ENDIF ŒdI�—H ŒdJ�—H IF xxx <> [DONE] ŒdK�—H fltr = fltr + xxx ŒdL�—H DO showflt ŒdM�—H LOOP ŒdN�—H ELSE && all done çŒdO�—H EXIT ŒdP�—H ENDIF ŒdQ�—H ENDIF ŒdR�—H ENDIF ŒdS�—H ŒdT�—H DO showflt ŒdU�—H ŒdV�—H *------------------- Operator ŒdW�—H xxx = Qoperator(SUBSTR(F_name[pik],1,11)) ŒdX�—H IF EMPTY(xxx) ŒdY�—H EXIT ŒdZ�—H ELSE ÖŒd[�—H DO CASE Œd\�—H CASE xxx = [ $ ] .or. xxx = [ ! ] Œd]�—H @ 23,00 clea Œd^�—H saycntr(23,1,[Press F2 for examples]) Œd_�—H SET COLOR TO &colorrev çŒd`�—H @ 23,34 SAY [F2] Œda�—H SET COLOR TO &colornorm çŒdb�—H SET KEY - 1 to example Œdc�—H theexp = space(f_len[pik]) Œdd�—H IF xxx = [ $ ] Œde�—H the_say = ALLTRIM(SUBSTR(F_name[pik],1,11)) + [ Contains ] Œdf�—H ELSE Œdg�—P the_say = ALLTRIM(SUBSTR(F_name[pik],1,11)) + [ Does not Contain ] Œdh�—B ENDIF Œdi�—B IF f_len[pik] < 60 Œdj�—B offset = (80 - (12 + f_len[pik])) /2 Œdk�—B @ 24,offset say the_say get theexp Œdl�—B ELSE Œdm�—B IF xxx = [ $ ] äŒdn�—B @ 24,01 say the_say GET theexp PICT '@S55' Œdo�—B ELSE Œdp�—B @ 24,01 say the_say GET theexp PICT '@S45' Œdq�—B ENDIF Œdr�—B * @ 24,01 say the_say GET theexp PICT '@S60' Œds�—B ENDIF Œdt�—B set cursor on Œdu�—B READ Œdv�—B set cursor off Œdw�—B @ 24,00 ñŒdx�—B IF xxx = [ $ ] Œdy�—_ fltr = fltr + '[' + ALLTRIM(theexp) + '] $ ' + ALLTRIM(SUBSTR(F_name[pik],1,11)) Œdz�—_ ELSE Œd{�—_ fltr = fltr + '! [' + ALLTRIM(theexp) + '] $ ' + ALLTRIM(SUBSTR(F_name[pik],1,11)) Œd|�—C ENDIF Œd}�—C DO showflt Œd~�—/ xxx = connect() Œd�—/ IF EMPTY(XXX) Œd€�—/ FLTR = [] Œd��—/ EXIT Œd‚�—/ ENDIF Œdƒ�—/ Œd„�—/ IF xxx <> [DONE] Œd…�—/ fltr = fltr + xxx Œd†�—/ DO showflt Œd‡�—/ LOOP Œdˆ�—/ ELSE && all done çŒd‰�—/ EXIT ŒdŠ�—/ ENDIF Œd‹�—/ CASE xxx = [ EMPTY( ] ŒdŒ�—K fltr = fltr + 'EMPTY(' + ALLTRIM(SUBSTR(F_name[pik],1,11)) +')' Œd��—K CASE xxx = [ !EMPTY( ] ŒdŽ�—K fltr = fltr + '!EMPTY(' + ALLTRIM(SUBSTR(F_name[pik],1,11)) +')' ãŒd��—K OTHERWISE Œd��—K fltr = fltr + ALLTRIM(SUBSTR(F_name[pik],1,11)) + xxx Œd‘�—K ENDCASE Œd’�—> Œd“�—> ENDIF Œd”�—> Œd•�—> DO showflt Œd–�—> Œd—�—> *------------------ Compare to Expession or Field Œd˜�—> IF xxx <> [ EMPTY( ] .AND. xxx <> [ !EMPTY( ] Œd™�—> xxx = fld_exp(pik) Œdš�—> IF EMPTY(xxx) Œd›�—> fltr = [] Œdœ�—> EXIT Œd��—> ELSE Œdž�—> fltr = fltr + xxx ŒdŸ�—> ENDIF Œd �—> DO showflt Œd¡�—> ENDIF Œd¢�—> Œd£�—> *------------------ Connect Œd¤�—> xxx = connect() Œd¥�—> DO showflt Œd¦�—> IF EMPTY(XXX) Œd§�—> FLTR = [] Œd¨�—> EXIT Œd©�—> ENDIF Œdª�—> IF xxx <> [DONE] Œd«�—> fltr = fltr + xxx Œd¬�—> ELSE && DONE çŒd­�—> EXIT Œd®�—> ENDIF Œd¯�—> DO showflt Œd°�—> ENDDO Œd±�—> IF LASTKEY() = 27 Œd²�—> fltr = [] Œd³�—> ENDIF Œd´�—> Œdµ�—> *-* USE &ipfile çŒd¶�—> gobak = recno() Œd·�—> Œd¸�—> IF !EMPTY(fltr) Œd¹�—> SET FILTER TO &fltr çŒdº�—> GO TOP Œd»�—> IF eof() Œd¼�—> TONE(111,.1) Œd½�—> @ 23,00 clear Œd¾�—> saycntr(23,1, [NO records match query.]) Œd¿�—> saycntr(24,1, [Press any key to reset filter.]) ŒdÀ�—> INKEY(0) ŒdÁ�—> SET FILTER TO ŒdÂ�—> GO gobak ŒdÃ�—> fltr = [] ŒdÄ�—> ENDIF ŒdÅ�—> ELSE ŒdÆ�—> SET FILTER TO ŒdÇ�—> ENDIF ŒdÈ�—> ŒdÉ�—> SET KEY - 1 TO ŒdÊ�—> CLEAR TYPEAHEAD ŒdË�—> @ 23,00 CLEAR ŒdÌ�—> ŒdÍ�—> RETURN(fltr) ŒdÎ�—> * ŒdÏ�—> * end FUNCTION DONZQBE òŒdÐ�—P *-----------------------------------------------------------------------------ŒdÑ�dÒ�—P*-------------------------------------------------------------------------------ŒdÓ�—'FUNCTION Vrule ŒdÔ�—' PARAMETERS mode,element,position ŒdÕ�—' *-* Called by QFIELD() ŒdÖ�—' * Œd×�—' old_clr = setcolor() ŒdØ�—' SET COLOR TO &colornorm çŒdÙ�—' *-- repaint stripes ŒdÚ�—5 FOR row = Prow_top + 2 to Prow_top + Pmax_rows - 1 ŒdÛ�—5 @ row,Pcol_left - 2 say chr(176) ŒdÜ�—5 @ row,Pcol_left + Phow_wide say chr(176) ŒdÝ�—5 NEXT ŒdÞ�—5 Œdß�—7 xpct = element/Pchoices Œdà�—7 delta = (Prow_top + Pmax_rows - 1) - (Prow_top + 2) Œdá�—7 Œdâ�—7 DO CASE Œdã�—7 CASE element = 1 && top çŒdä�—7 @ Prow_top + 2, Pcol_left - 2 SAY chr(178) Œdå�—9 @ Prow_top + 2, Pcol_left + Phow_wide SAY chr(178) Œdæ�—9 Œdç�—9 CASE element = Pchoices && bottom çŒdè�—D @ Prow_top + Pmax_rows - 1, Pcol_left - 2 SAY chr(178) Œdé�—D @ Prow_top + Pmax_rows - 1, Pcol_left + Phow_wide SAY chr(178)Œdê�—D Œdë�—D OTHERWISE && in between çŒdì�—D IF xpct * delta <= 1 Œdí�—D @ Prow_top + 3, Pcol_left - 2 SAY chr(178) Œdî�—D @ Prow_top + 3, Pcol_left + Phow_wide SAY chr(178) Œdï�—D ELSE Œdð�—D @ Prow_top + 2 + (xpct * delta), Pcol_left - 2 SAY chr(178) Œdñ�—K @ Prow_top + 2 + (xpct * delta), Pcol_left + Phow_wide SAY chr(178)Œdò�—K ENDIF Œdó�—K ENDCASE ðŒdô�—K Œdõ�—K SET COLOR TO &old_clr çŒdö�—K Œd÷�—K DO CASE Œdø�—K CASE LASTKEY() = 27 && Esc PRESSED çŒdù�—K SET COLOR TO &colornorm çŒdú�—K REPLY = 0 Œdû�—K Œdü�—M CASE LASTKEY() = 4 .OR. LASTKEY() = 19 && left or right arrow PRESSED ÔçŒdý�—; REPLY = 2 Œdþ�—; Œdÿ�—; CASE LASTKEY() = 13 && Return pressed çŒd�—; SET COLOR TO w+/b Œd�—u @ position + Prow_top + 2, Pcol_left SAY &array_name[element]+SPACE(phow_wide - LEN(&array_name[element]) - 1 )çŒd�—& SET COLOR TO &colornorm çŒd�—& REPLY = 1 && make selection çŒd�—& OTHERWISE Œd�—& REPLY = 2 Œd�—& Œd�—& ENDCASE Œd�—& SET CURSOR OFF Œd Ö�—& Œd �—& Prelative = position Œd �—& RETURN (reply) Œd �—& * Œd �—& *-* end FUNCTION Vrules Œd�—R *-------------------------------------------------------------------------------Œd�—R Œd�—R *-------------------------------------------------------------------------------Œd�—&FUNCTION Qrule2 Œd�—& PARAMETERS mode,element,position Œd�—& *-* called by Qoperator() Œd�—& * Œd�—& old_clr = setcolor() äŒd�—& SET COLOR TO &colornorm çŒd�—7 *-- repaint stripes Œd�—7 for row = Qrow_top + 2 to Qrow_top + Qmax_rows - 1 Œd�—7 @ row,Qcol_left - 2 say chr(176) Œd�—7 @ row,Qcol_left + Qhow_wide say chr(176) Œd�—7 next Œd�—7 Œd�—7 xpct = element/Qchoices Œd�—7 delta = (Qrow_top + Qmax_rows - 1) - (Qrow_top + 2) Œd�—7 Œd �—7 DO CASE Œd!�—7 CASE element = 1 && top ÔçŒd"�—7 @ Qrow_top + 2, Qcol_left - 2 SAY chr(178) Œd#�—9 @ Qrow_top + 2, Qcol_left + Qhow_wide SAY chr(178) Œd$�—9 Œd%�—9 CASE element = Qchoices && bottom çŒd&�—E @ Qrow_top + Qmax_rows - 1, Qcol_left - 2 SAY chr(178) Œd'�—E @ Qrow_top + Qmax_rows - 1, Qcol_left + Qhow_wide SAY chr(178) Œd(�—E Œd)�—E OTHERWISE && in between çŒd*�—E IF xpct * delta <= 1 Œd+�—E @ Qrow_top + 3, Qcol_left - 2 SAY chr(178) Œßd,�—E @ Qrow_top + 3, Qcol_left + Qhow_wide SAY chr(178) Œd-�—E ELSE Œd.�—K @ Qrow_top + 2 + (xpct * delta), Qcol_left - 2 SAY CHR(178) Œd/�—K @ Qrow_top + 2 + (xpct * delta), Qcol_left + Qhow_wide SAY CHR(178)Œd0�—K ENDIF Œd1�—K ENDCASE Œd2�—K Œd3�—K SET COLOR TO &old_clr çŒd4�—K Œd5�—K DO CASE Œd6�—K CASE LASTKEY() = 27 && Esc PRESSED çŒd7�—K SET COLOR TO &colornorm çŒd8�—K REPLY = 0 Œd9�—K Œd:�—L CASE LASTKEY() = 4 .OR. LASTKEY() = 19 && left or right arrow PRESSEDçŒd;�—< REPLY = 2 Œd<�—< Œd=�—< CASE LASTKEY() = 13 && Return pressed çŒd>�—< * SET COLOR TO &colorpik ÕçŒd?�—< SET COLOR TO w+/b Œd@�—u @ position + Qrow_top + 2, Qcol_left SAY &array_name[element]+SPACE(Qhow_wide - LEN(&array_name[element]) - 1 )çŒdA�—( SET COLOR TO &colornorm çŒdB�—( REPLY = 1 && make selection çŒdC�—( OTHERWISE ŒdD�—( REPLY = 2 ŒdE�—( ŒdF�—( ENDCASE ŒdG�—( SET CURSOR OFF ŒdH�—( ŒdI�—( Qrelative = position ŒdJ�—( RETURN (reply) ŒdK�—( * ŒdL�—( * *-* end FUNCTION qrule2 ŒdM�—U * *-------------------------------------------------------------------------------ŒdN�dO�—P*-------------------------------------------------------------------------------ŒdP�—(FUNCTION Qfield ŒdQ�—( PARAMETER the_type ŒdR�—( PRIVATE array_name ŒdS�—( * called by donzqbe() ŒdT�—( * ŒdU�—( num_fields = FCOUNT() ŒdV�—S PUBLIC f_name[num_fields],f_type[num_fields],f_len[num_fields],f_dec[num_fields] ŒdW�—S AFIELDS(f_name,f_type,f_len,f_dec) ŒdX�—S ÞŒdY�—S FOR iii = 1 to num_fields ŒdZ�—S f_name[iii] = [ ] + f_name[iii] +[ ] + space(10 - LEN(TRIM(f_name[iii])))+; Œd[�—= [ ] + f_type[iii] + [ ] + str(f_len[iii],3) + [ ] +; Œd\�—= iif(f_type[iii] = [N], STR(f_dec[iii],2),[]) Œd]�—= NEXT Œd^�—= Œd_�—= Prelative = 0 Œd`�—= Fpik = 1 Œda�—= Prow_top = 8 Œdb�—= Œdc�—= Pcol_left = 5 Œdd�—= Pmax_rows = 15 Œde�—= Phow_wide = 27 Œdf�—= array_name = [f_name] Œdg�—= Pchoices = LEN(&array_name) çŒdh�—= Œdi�—= DECLARE avail[Pchoices] Œdj�—= FOR ii = 1 to Pchoices Œdk�—= xxx = 'avail['+LTRIM(STR(ii,2))+']' Œdl�—J IF f_type[ii] $ the_type && Make incompatible field types unavailableçŒdm�—D &xxx = .t. úçŒdn�—D ELSE Œdo�—D &xxx = .f. çŒdp�—D ENDIF Œdq�—D NEXT Œdr�—D Œds�—D IF Pchoices < Pmax_rows Œdt�—D Pmax_rows = Pchoices Œdu�—D ENDIF Œdv�—D IF Prow_top + Pmax_rows > 18 Œdw�—D Pmax_rows = 21 - Prow_top Œdx�—D ENDIF Œdy�—D Œdz�—G @ Prow_top - 1, Pcol_left - 3 CLEA TO 23, Pcol_left + Phow_wide + 5 Œd{�—U @ Prow_top - 1, Pcol_left - 2 TO Prow_top + Pmax_rows, Pcol_left + Phow_wide DOUBLEŒd|�—C Lhead = [Field List -> ] + ipfile Œd}�—C @ Prow_top, Pcol_left+(Phow_wide/2) - (len(Lhead)/2) SAY Lhead Œd~�—C Œd�—C array_name = [f_name] Œd€�—C SET COLOR TO &colornorm çŒd��—C DO FooterQbe Œd‚�—C CLEAR TYPEAHEAD Œdƒ�—C KEYBOARD CHR(32) && activate udf çŒd„�—C SET COLOR TO &colorarray çŒd…�—B Fpik = ACHOICE(Prow_top+2, Pcol_left, Prow_top + Pmax_rows - 1,;Œd†�—I Pcol_left + Phow_wide - 2, &array_name, avail, "Vrule",Fpik,Prelative) çŒdˆ�—C SET COLOR TO &colornorm çŒd‰�—C IF LASTKEY() <> 27 ŒdŠ�—V SHADBOX(Prow_top - 1, Pcol_left - 2, Prow_top + Pmax_rows, Pcol_left + Phow_wide) Œd‹�—C ENDIF ŒdŒ�—C RETURN(Fpik) ÞŒd��—C ŒdŽ�—C * end FUNCTION Qfield Œd��—R *-------------------------------------------------------------------------------Œd��d‘�—P*-------------------------------------------------------------------------------Œd’�—;FUNCTION Qoperator Œd“�—; PARAMETER the_name Œd”�—; PRIVATE array_name Œd•�—; * Œd–�—; * called by donzqbe() Œd—�—; * áŒd˜�—; DECLARE operator[10] Œd™�—; operator[1] = [ Equal to] Œdš�—; operator[2] = [ Less than] Œd›�—; operator[3] = [ Greater than] Œdœ�—; operator[4] = [ Less than or equal to] Œd��—; operator[5] = [ Greater than or equal to] Œdž�—; operator[6] = [ Not equal] ŒdŸ�—; operator[7] = [ Contains] Œd �—; operator[8] = [ Does not Contain] Œd¡�—; operator[9] = [ Empty] Œd¢�—; operator[10] = [ Not Empty] âŒd£�—; Œd¤�—; Qrelative = 0 Œd¥�—; Qpik = 1 Œd¦�—; Qrow_top = 8 Œd§�—; Qcol_left = 48 Œd¨�—; Qmax_rows = 12 Œd©�—; Qhow_wide = 28 Œdª�—; array_name = [operator] Œd«�—; Qchoices = LEN(&array_name) çŒd¬�—; Œd­�—; DECLARE Qavail[Qchoices] úŒd®�—; FOR ii = 1 to Qchoices Œd¯�—; xxx = 'Qavail['+LTRIM(STR(ii,2))+']' Œd°�—; NEXT Œd±�—; IF F_type[pik] <> [C] Œd²�—; store .f. to Qavail[7],Qavail[8] Œd³�—; endif Œd´�—; Œdµ�—? @ Qrow_top - 1, Qcol_left - 3 CLEA TO Qrow_top + Qmax_rows,; Œd¶�— Qcol_left + Qhow_wide + 3 Œd·�—F @ Qrow_top - 1, Qcol_left - 2 TO Qrow_top + Qmax_rows, Qcol_left +; Œd¸�— Qhow_wide DOUBLE Œd¹�—H qhead = [Field Name -> ] + ALLTRIM(the_name) ùŒdº�—H @ Qrow_top, Qcol_left+(Qhow_wide/2) - (LEN(Qhead)/2) SAY Qhead Œd»�d¼�—< KEYBOARD CHR(32) Œd½�—< SET COLOR TO &colorarray çŒd¾�—G Qpik = ACHOICE(Qrow_top+2, Qcol_left, Qrow_top + Qmax_rows - 1,; Œd¿�—J Qcol_left + Qhow_wide - 2, &array_name, Qavail, "Qrule2",Qpik,Qrelative)çŒdÀ�—< SET COLOR TO &colornorm çŒdÁ�—< IF LASTKEY() <> 27 ŒdÂ�—K SHADBOX(Qrow_top - 1, Qcol_left - 2, Qrow_top + Qmax_rows, Qcol_left +;ŒdÃ�— Qhow_wide)ŒdÄ�—< ENDIF ŒdÅ�—< ìŒdÆ�—< IF LASTKEY() = 27 ŒdÇ�—< RETURN([]) ŒdÈ�—< ENDIF ŒdÉ�—< ŒdÊ�—< DO CASE ŒdË�—< CASE Qpik = 1 ŒdÌ�—< op2add = [ = ] ŒdÍ�—< CASE Qpik = 2 ŒdÎ�—< op2add = [ < ] ŒdÏ�—< CASE Qpik = 3 ŒdÐ�—< op2add = [ > ] ìŒdÑ�—< CASE Qpik = 4 ŒdÒ�—< op2add = [ <= ] ŒdÓ�—< CASE Qpik = 5 ŒdÔ�—< op2add = [ >= ] ŒdÕ�—< CASE Qpik = 6 ŒdÖ�—< op2add = [ <> ] Œd×�—< CASE Qpik = 7 ŒdØ�—< op2add = [ $ ] ŒdÙ�—< CASE Qpik = 8 ŒdÚ�—< op2add = [ ! ] ŒdÛ�—< CASE Qpik = 9 ÖŒdÜ�—< op2add = [ EMPTY( ] ŒdÝ�—< CASE Qpik = 10 ŒdÞ�—< op2add = [ !EMPTY( ] Œdß�—< Œdà�—< ENDCASE Œdá�—< RETURN(op2add) Œdâ�—< * Œdã�—< * end FUNCTION Qoperator Œdä�—R *-------------------------------------------------------------------------------Œdå�dæ�—P*-------------------------------------------------------------------------------äŒdç�—BFUNCTION fld_exp Œdè�—B PARAMETER the_type Œdé�—B * Œdê�—B * called by donzqbe() Œdë�—B * Œdì�—B @ 24,00 Œdí�—B the_say = 'Relate to -> ' Œdî�—B row_say = 24 Œdï�—B p1 = ' EXPRESSION ' Œdð�—B p2 = ' FIELD ' äŒdñ�—B the_center = (80 - (len(the_say +' '+ p1 +' '+ p2) )) / 2 Œdò�—B @ row_say,the_center SAY the_say Œdó�—B @ row_say,the_center + len(the_say) PROMPT p1 Œdô�—B @ row_say,the_center + len(the_say + p1 + space(1)) PROMPT p2 Œdõ�—B MENU TO either Œdö�—B @ 24,00 Œd÷�—B IF LASTKEY() = 27 Œdø�—B RETURN([]) Œdù�—B ENDIF Œdú�—B çŒdû�—B DO CASE Œdü�—B CASE either = 1 Œdý�—B SET KEY -1 TO example && F2 çŒdþ�—B saycntr(23,1, [Press F2 for examples]) Œdÿ�—B SET COLOR TO &colorrev çŒd�—B @ 23,34 say [F2] Œd�—B SET COLOR TO &colornorm çŒd�—B Œd�—B DO CASE Œd�—B CASE F_type[the_type] = [C] äŒd�—B theexp = space(f_len[the_type]) Œd�—B IF f_len[the_type] < 60 Œd�—B offset = (80 - (12 + f_len[the_type])) /2 Œd�—B @ 24,offset say [Expression ] get theexp Œd �—B ELSE Œd �—B @ 24,01 say [Expression ] GET theexp PICT '@S60' Œd �—B ENDIF Œd �—B SET CURSOR ON Œd �—B READ Œd�—B SET CURSOR OFF äŒd�—B @ 23,00 CLEA Œd�—B SET KEY - 1 TO Œd�—B IF LASTKEY() = 27 Œd�—B RETURN([]) Œd�—B ENDIF Œd�—B RETURN([']+ALLTRIM(theexp)+[']) Œd�—B Œd�—B CASE F_type[the_type] = [D] Œd�—B theexp = ' / / ' Œd�—B @ 24,30 say [Expression ] GET theexp PICT '@D' äŒd�—B SET CURSOR ON Œd�—B READ Œd�—B SET CURSOR OFF Œd�—B @ 23,00 CLEA Œd�—B SET KEY - 1 TO Œd�—B IF LASTKEY() = 27 Œd�—B RETURN([]) Œd �—B ENDIF Œd!�—B RETURN([CTOD('] + theexp + [')]) Œd"�—B ÔŒd#�—B CASE F_type[the_type] = [N] Œd$�—B theexp = 0 Œd%�—B * Match Picture statement with field Œd&�—K zpicture = REPLI('9',IIF(f_dec[the_type] = 0, f_len[the_type],; Œd'�—K f_len[the_type] - f_dec[the_type] - 1))+; Œd(�—K IIF(f_dec[the_type] > 0,[.]+replicate('9',f_dec[the_type]), []) Œd)�—K @ 24,30 SAY [Expression ] GET theexp PICT zpicture Œd*�—K SET CURSOR ON Œd+�—K READ Œd,ê�—C SET CURSOR OFF Œd-�—C @ 23,00 CLEA Œd.�—C SET KEY - 1 TO Œd/�—C IF LASTKEY() = 27 Œd0�—C RETURN([]) Œd1�—C ENDIF Œd2�—C RETURN(str(theexp,f_len[the_type],f_dec[the_type])) Œd3�—C ENDCASE Œd4�—C Œd5�—C CASE either = 2 ïŒd6�—C xxx = Qfield(F_type[the_type] ) Œd7�—C IF xxx <> 0 Œd8�—C xxx = ALLTRIM(SUBSTR(F_name[xxx],1,11)) Œd9�—C ELSE && Esc was pressed in ACHOICE() çŒd:�—C xxx = [] Œd;�—C ENDIF Œd<�—C @ 23,00 CLEA Œd=�—C SET KEY - 1 TO Œd>�—C RETURN(xxx) Œd?�—C ENDCASE ÔŒd@�—C ŒdA�—C * ŒdB�—C * END FUNCTION fld_exp ŒdC�—R *-------------------------------------------------------------------------------ŒdD�dE�—P*-------------------------------------------------------------------------------ŒdF�—GFUNCTION connect ŒdG�—G* ŒdH�—G* called by donzqbe() ŒdI�—G* ŒdJ�—G @ 24,00 ŒdK�—G the_say = 'Connect -> ' ŒdL�—G row_say = 24 ŒdM�—G p1 = ' AND ' ŒdN�—G p2 = ' OR ' ŒdO�—G p3 = ' ' ŒdP�—G the_center = (80 - (len(the_say +' '+ p1 +' '+ p2 + ' '+p3) )) / 2 ŒdQ�—G @ row_say,the_center SAY the_say ŒdR�—G @ row_say,the_center + len(the_say) PROMPT p1 ŒdS�—G @ row_say,the_center + len(the_say + p1 + space(1)) PROMPT p2 ÔŒdT�—O @ row_say,the_center + len(the_say + p1 + space(1) + p2 + space(1)) PROMPT p3ŒdU�—G MENU TO either ŒdV�—G IF LASTKEY() = 27 ŒdW�—G return([]) ŒdX�—G ENDIF ŒdY�—G DO CASE ŒdZ�—G CASE either = 1 Œd[�—G xxx = [ .AND. ] Œd\�—G CASE either = 2 Œd]�Û—G xxx = [ .OR. ] Œd^�—G CASE either = 3 Œd_�—G xxx = [DONE] Œd`�—G ENDCASE Œda�—G Œdb�—G RETURN(XXX) Œdc�—G * end FUNCTION connect Œdd�—S *--------------------------------------------------------------------------------Œde�df�—P*-------------------------------------------------------------------------------äŒdg�—1PROCEDURE showflt Œdh�—1 * Œdi�—1 * called by donzqbe() Œdj�—1 * Œdk�—1 @ 2,2 clea to 3,77 Œdl�—1 MEMOEDIT(fltr,2,2,4,77, .f., .f.) Œdm�—1 Œdn�—1 RETURN Œdo�—R *-------------------------------------------------------------------------------Œdp�dq�—P*-------------------------------------------------------------------------------Œdr�—+PROCEDURE example Œds�—+ PRIVATE fname[1], heads[1], buffer Œdt�—+ * Œdu�—+ * called by donzqbe() Œdv�—+ * Œdw�—+ SET KEY -1 TO Œdx�—+ @ 23,00 Œdy�—+ SAVE SCREEN Œdz�—+ Œd{�—+ Qwide = f_len[pik] Œd|�—+ Œd}�—+ IF Qwide > 73 Œd~�—+ Qwide = 73 Œd�—+ Qcol = 75 - Qwide Œd€�—+ ELSE Œd��—+ Qcol = 40 - (qwide / 2) Œd‚�—8 ENDIF Œdƒ�—8 IF qwide < 20 && Minimum size to display header çŒd„�—8 qwide = 20 Œd…�—8 ENDIF Œd†�—8 Œd‡�—8 IF RECCOUNT() >= 12 Œdˆ�—8 Qmax_row = 12 Œd‰�—8 ELSE ŒdŠ�—8 Qmax_row = RECCOUNT() Œd‹�—8 ENDIF ŒdŒ�—8 Œd��—8 Qrow_top = 10 ŒdŽ�—8 old_clr = setcolor() êŒd��—8 SETCOLOR(IF(ISCOLOR(), '+W/BG', 'W/N')) Œd��—8 Œd‘�—I @ Qrow_top - 2, qcol - 2 clea to Qrow_top + Qmax_row, Qcol + Qwide + 2Œd’�—I @ Qrow_top - 2, qcol - 2 to Qrow_top + Qmax_row, Qcol + Qwide + 2Œd“�—I Œd”�—I shadow(Qrow_top - 2, qcol - 2, Qrow_top + Qmax_row, Qcol + Qwide + 2 ) Œd•�—I Œd–�—K @ Qrow_top - 2, qcol SAY [Examples ] + ALLTRIM(SUBSTR(F_name[pik],1,11)) Œd—�—9 Œd˜�—9 whichfld = ALLTRIM(SUBSTR(F_name[pik],1,11)) úŒd™�—9 store whichfld to fname[1] Œdš�—9 GO TOP Œd›�—9 Œdœ�—g DBEDIT(Qrow_top, qcol, Qrow_top + Qmax_row - 1, qcol + qwide, fname, '','','',chr(0),chr(179),chr(0))Œd��—9 SETCOLOR(old_clr) Œdž�—9 ŒdŸ�—9 IF LASTKEY() <> 27 Œd �—9 IF TYPE(whichfld) = 'D' Œd¡�—9 theexp = DTOC(&whichfld) çŒd¢�—9 ELSE Œd£�—9 theexp = &whichfld çŒd¤�—9 ENDIF Œd¥�—9 @ 24,00 Œd¦�—9 ENDIF Œd§�—9 Œd¨�—9 RESTORE SCREEN Œd©�—9 @ 23,00 Œdª�—9 RETURN Œd«�—9 * Œd¬�—9 * end PROCEDURE example Œd­�—R *-------------------------------------------------------------------------------Œd®�d¯�—P*------------------------------------------------------------------------------- Œd°�—9FUNCTION shadbox Œd±�—9 PARAMETERS t,l,b,r Œd²�—9 PRIVATE prvscr Œd³�—9 prvscr =SAVESCREEN(t+3, l+2, b-1, r-2) Œd´�—9 IF LEN(prvscr)>2048 Œdµ�—9 prvscr = TRANSFORM(SUBSTR(prvscr,1,2048),; Œd¶�—9 REPLICATE('X'+CHR(8),1000)+; Œd·�—9 TRANSFORM(SUBSTR(prvscr,2049),; Œd¸�—9 REPLICATE('X'+CHR(8),1000))) Œd¹�—9 ELSE Œdº�—9 prvscr = TRANSFORM(prvscr,; Œd»�—9 REPLICATE('X'+CHR(8),LEN(prvscr)/2)) ØŒd¼�—9 ENDIF Œd½�—9 RESTSCREEN(t+3, l+2, b-1, r-2, prvscr) Œd¾�—9 RETURN '' Œd¿�—9 * end FUNCTION shadbox ŒdÀ�—P *-----------------------------------------------------------------------------ŒdÁ�dÂ�—P*-------------------------------------------------------------------------------ŒdÃ�—@PROCEDURE footerQbe ŒdÄ�—@ @ 24,00 ŒdÅ�—@ @ 24,05 say CHR(24)+[ ]+CHR(25)+[ Scroll] ŒdÆ�—@ @ 24,21 say [Enter ]+CHR(60)+CHR(196)+CHR(217)+[ to select] ˆŒdÇ�—@ @ 24,46 say [Esc to Abort and Reset Filter] ŒdÈ�—@ SETCOLOR(colorrev) ŒdÉ�—@ @ 24,05 say CHR(24)+[ ]+CHR(25) ŒdÊ�—@ @ 24,21 say [Enter ]+CHR(60)+CHR(196)+CHR(217) ŒdË�—@ @ 24,46 say [Esc] ŒdÌ�—@ SETCOLOR(colornorm) ŒdÍ�—@ RETURN ŒdÎ�—R *-------------------------------------------------------------------------------ŒdÏ�—*ŒdÐ�—* end IoNetQbe.prgŒdÒÆdÓ¹dÕY4ÿÿ€IONETQBEpiVERSIONter] ŒdÈ�—@ SETCOLOR(colorrev) 0û¿ &=f–­Çþ,:Mb‘Ÿ²âò}‹žïU‹ì‹F+Ò¹ ÷ñ0Ä^&ˆ‹F+Ò÷ñ€Â0&ˆW]Ë�U‹ì�ì²WVÇFþ+À™‰F ‰V¢‰Fœ‰Vž‰F˜‰Vš‰F”‰V–‰F�‰V’ën�ƒ>êw]Ä&÷tR&‹G&‹W ‰F¶‰V¸Ä^¶&÷ t:&‹G&‹W‹6êÑæÑæ‰Bˆ‰RŠƒ~þtÄ^¶&‹G+FþÉ#ÁFþë�Ä^¶&‹G‰Fþš< ÿêƒ>êwŒƒ>êté¸Ä&÷uéª�F®P�FüP�F´P�F„P�FŠP&ÿw&ÿw &ÿwšt´"ƒÄ‹F´9FŠua9F„u\¸hPšB™ ƒÄ‰†VÿP¸hP�F¼Pš9™ ƒÄ ‹v®+v´VÄ&‹G&‹W F´RP‹¾Vÿ�C¼Pš9™ ƒÄ ¶Vÿ‹¾VÿÆC¼ëX�Ä&‹G&‹W ‰F†‰VˆëL¸hPšB™ ƒÄ‰†VÿP¸hP�F¼Pš9™ ƒÄ ¸P¸3P‹¶Vÿ�B¼Pš9™ ƒÄ ƒ†Vÿ�F¼‰F†ŒVˆÇFŒ‹F  F¢t¸ë+ÀP�†XÿPÿvˆÿv†š¹™ ƒÄ ÀuéÿFŒ‹Fþ9FŒvéú‹F� F’t/+ÀP�†vÿPš. ƒÄÿv’ÿv�š ƒÄÄ‹FŒ&‰Gš€ ‹F” F–t]ÿ¶tÿÿ¶rÿš# +'ƒÄ�¾Nÿ‹ðŽÚ¥¥¥¥+ÀP¸ Pÿ¶Tÿÿ¶Rÿÿ¶Pÿÿ¶Nÿš° ƒÄ ÿv–ÿv”š ƒÄÄ‹FŒ&‰Gš€ ‹F˜ FštY‹†pÿ%þ± Óè¼P‹†pÿ%à±ÓèP‹†pÿ%Pš´"ƒÄ‰F°‰V²RPšÒ ƒÄÿvšÿv˜š ƒÄÄ‹FŒ&‰Gš€ ‹Fœ Fžué€�F¤P‹†nÿ%ø± ÓèPèËüƒÄ�F§P‹†nÿ%à±ÓèPè³üƒÄ�FªP‹†nÿ%ÑàPè�üƒÄÆF¦:ÆF©:ÆF¬+ÀP�F¤Pš. ƒÄÿvžÿvœš ƒÄÄ‹FŒ&‰Gš€ ‹F  F¢tjÇFºÇFޏŠNŽÓàŠŽmÿ*í…Át‹^ŽŠ‡®‹vºÿFºˆB¤ÿFŽƒ~ŽrÕ‹vºÆB¤+ÀP�F¤Pš. ƒÄÿv¢ÿv š? 2 ƒÄÄ‹FŒ&‰Gš€ �†XÿPšÜ™ ƒÄ ÀtéãýÿvŒšzP%ƒÄ^_‹å]Ë��"üwÇ/½ËÚþcn·ÂOŸÄU‹ìƒìWVÄ&‹=ué�=ué¾= uéU=€ué7=t=t&‹&9GðwéaéT&÷Gðté&‹Gò&+GÉ#Á&G‰FüP&ÿw &ÿw&ÿwú&ÿwøšî‹"ƒÄ ‰Fþ ÀuÄ&‹G&9Gòséé�ƒ~þ|ééøÄ&ƒðuéÔ&ƒðté}ÿ&ÿw &ÿwš# +'ƒÄÄ�‹ðŽÚ¥¥¥¥&ƒðu2&ÿw&ÿw &ÿw &ÿw&ÿwþ&ÿwü&ÿwú&ÿwøšF*ƒÄ‰Fú^_‹å]Ë�Ä&ƒðtéÿ&ÿwú&ÿwøš# +'ƒÄ�~ò‹ðŽÚ¥¥¥¥Ä&ÿw&ÿw &ÿw &ÿwÿvøÿvöÿvôÿvòëŸ�&�ð€téÈþ&‹G&9Gøé ÿ&ƒð té³þ&‹G&‹W &9Wú|&9Gøs ¸^_‹å]Ë�+À^_‹å]ËU‹ìƒìÿvÿvšô ƒÄÿv ÿv šô ƒÄè,þ‰Fþšh ‹Fþ‹å]Ë�U‹ìÄ&ƒ?t¸Pÿvÿvšž ƒÄ]Ë�ÿvÿvš* ƒÄÄ^&Çš< ]Ë�U‹ìƒì"VÇFèƒ>êuFÄ&‹7÷Æ t0ƒþu&‹Gë�&ÿw&ÿw &ÿw &ÿwš† +'ƒÄ‰Fèš< ÿêƒ~èué¾ÇFâƒ>êu?Ä&‹7÷Æ u颃þu&‹Gë&ÿw&ÿw &ÿw &ÿwš† +'ƒÄ‰Fâš< ÿêƒ>êtéiÄ&÷ué[&‹G&‹W ‰Fü‰VþÄ^ü&÷ ué@ƒ~âué7‹Fâ&9Gsé+&‹G&‹W‰Fä‰Væƒ~èu&‹G‰Fè&‹G+Fâ@+FèÉ#ÁFè‰Fè¸P+ÀP�FîPšu™ ƒÄ‹Fâ@‰Fì錋Fê‹ÈÑàÁÑàÁÑàFä‹Væ‰FÞ‰Và�FîP‹FÞ-RPè$þƒÄ Àu+‹FÞ‹Và-RPšô ƒÄÿvàÿvÞè6þƒÄÿNê‹Fâ9Fês¢�FîPšô ƒÄ‹Fê‹ÈÑàÁÑàÁÑàFä‹VæRPèþƒÄÿFì‹FâFèH;Fìr8‹Fì‹ÈÑD:àÁÑàÁÑàFä‹Væ-RPšô ƒÄ�FîPèÃýƒÄ‹FìH‰Fêë‡��FîPš* ƒÄ^‹å]Ë,ü9€—Ÿ´Ìç +)?’¨Ëb{“¬µ¾ÕU‹ìƒìVÇFþĶ‹F&9G"ré¸&‹G"‰Fé®&ÿw¸ P&ÿw&ÿwšu™ ƒÄ‹vvþ±ÓæÄ¶&Ä_&‹@üĶ&+GÉ#Á&GP&Ä_&ÿpú&ÿpøÄ¶&ÿw&ÿw𥙠ƒÄ Ķ&Ä_&ƒxþtšü¸ë�š"¸Ä¶&ÿw &‹G FþPšü¸ƒÄĶ&ÿw&ÿw&ÿwš´¸ƒÄÿFþĶ‹Fþ&9G$réBÿšü¸^‹å]˸PĶ&ÿw&ÿw&ÿw &ÿw šs¸ƒÄ Ë�¸ÿÿPĶ&ÿw&ÿw&ÿw &ÿw šs¸ƒÄ Ë�U‹ìƒìVĶ&‹G(@‰Fþë�&Ä_‹vþ±Óæ&ƒxþuÿFþĶ&‹9FþvßĶ&‹9Fþv+Àë�‹Fþ&+G(&‰G,^‹å]ËU‹ìƒìVĶ&‹G(H‰Fþë�Ķ&Ä_‹vþ±Óæ&ƒxþu ÿNþƒ~þuáƒ~þu+Àë �Ķ&‹G(+FþĶ&‰G,^‹å]ËU‹ìƒìVĶ&‹G(‰Fþè:ÿ ÀtMĶ&‹G,&G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ÄXø&Š*äPš‹"ƒÄĶ&ŠO.*íQ‰Füš‹"ƒÄ:Füu«Ä¶&ƒ,uf&ÇG(ëVĶ‹Fþ&9G(sQ&‹G,&G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ÄXø&Š*äPš‹"ƒÄĶ&ŠO.*íQ‰Füš‹"ƒÄ:Fütè|þ Àu¢^‹å]Ë�¸P¸PšÔôƒÄ ÀtĶ¡5&‰G.&‹G.ËĶ&ÇG.&‹G.Ë�U‹ìƒìĶ&ÿw¸ P&ÿw&ÿwšu™ ƒÄĶ&‹G(±Óà&G&‹W‰Fü‰VþÄ^ü&‹GüĶ&+GÉ#Á&GPÄ^ü&ÿwú&ÿwøÄ¶&ÿw&ÿw𥙠ƒÄ Ķ&ÿw &‹G &G&Pšü¸ƒÄĶ&ÿw&ÿw&ÿwš´¸ƒÄĶ&ÿw &‹G &G&Pšü¸‹å]Ëš¸è9ÿšü¸Ë�Ķ&ÿw&ÿw&ÿwš´¸ƒÄË�U‹ìƒìVĶ&‹G*&9G(wéˆ&‹G(&+G*üi‰Fþ&ƒuP&‹G&Fþ&;G$w ‹Fþ&G&é&�&‹G&Fþ&‹O$A;Áu&‹G$&‰G&è´üëz��Ķ&‹G$&‰G&&‹G(&+G&PéæÄ¶&‹G$&+G&&‹O&+O(;ÁvÜ&‹G$&+G&G(ëÊ&‹G*&9G(sd&+G(‰Fþ&ƒu:&9G&r&)G&é¢�‹FþH&;G&u&ÇG&èZüè:þé†�Ķ&ÇG&&ÿw(ënĶ&‹w(&+w &9w&wégÿ&‰w&é`ÿ&‹G&9G(u‹ð&+w &9w&s &‰w&&ÿw ë2&‹G&9G(u/&‹G&+G&‹O$&+O&;Áv&‹G$&+G&G&‰G&&ÿw"èÀúƒÄĶ&ÇG&‹G(&‰G*&ÿw &‹G &G&Pšü¸ƒÄ^‹å]Ë�U‹ìƒìVĶ&ÇG.&‹G(&‰G*&ÇG+À‰Fþ‰FüÇFúƒ~úuéõƒ~úuéìĶ&‹G.=ué„~éc Àt!=ué½=uéï=tF=uééY�èÔü Àu¬è¾ýèÈü ÀtøèÂýëšè,û ÀtĶ&‹G,&G(éú�ÇFüéöèdû ÀtĶ&‹G,&)G(éÚ�ÇFüéÖèDû ÀtðĶ&‹G&&G &;G(u &‹G&‰G(éæ�&‹G$&G&&;G(s &‹G$&)G(ë &‹G&@&‰G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ƒxþté¦èßú Àté�è|úĶ&‹G,&G(éˆ�èhú ÀuéIÿĶ&‹G(&+G&&;G"r&‹Gévÿ&‹G(&G$&‹O"&O&;Ás &‹G$&G(ë&‹&+G$&G&&‰G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ƒxþuèüù ÀtéyÿèIúĶ&‹G,&)G(Ķ&ÇGé¹Ä¶&‹G&&)G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ƒxþté�èªùéþ�Ķ&ƒ.t &‹G& Gu &‹G&‰G(égÇFüédĶ&‹G$&+G&&G(&Ä_ŒÀÄ6¶&‹t(±ÓæŽÀ&ƒxþté1è¤ùéAþ�Ķ&ƒ.t &‹G:ü“£³¿ÓÛ Æû 4Ju„˜®ÙèBQl‚¶Ìø& Gu­&‹Gë �ƒ~üt‹Fþ9Füuè¨ú Àté}ýÇFþĶ&ÇG.'éký�ƒ~ütì‹Fü‰Fþëä+À‰FúéTýĶ&ƒ. |&ƒ.è„ùé·�èvûĶ&ÇG.é)ý�&�.'tÇFüèWûÿvüšà ƒÄĶ&ÿw(šà ƒÄĶ&ÿw&šà ƒÄ¸Pšªo ƒÄĶ&ÿw&ÿwš ƒÄšlo Ä&ƒ?u&‹Gë�&ÿw&ÿw &ÿw &ÿwš† +'ƒÄ‰Fúš< ƒ~útéWÿèÏøÇFüĶ&ÇG.'éwü�=ué,þP=ué|þ=uéÂüĶ&‹G& Gté#ÿ&ƒ.t&ƒ. t&ƒ.t &ƒ.téØþ&ƒ. téÆþ¸éÂþ=uébþ=uéüý='uénþ릋Fú^‹å]ËU‹ìƒìWV¡¶‹¸‰Fü‰Vþ¸0Pš o ƒÄ£¶‰¸Ä¶&ÇG.&ÇÇFôÇFðÇFøÇFú+ÀPš|P%ƒÄ‰FîÿFú9FúwOÿvúš|P%ƒÄ¨t@ÿvúšP%ƒÄ À}+Àë"�ÿvúšP%ƒÄ; v¡ ë ÿvúšP%ƒÄĶ&‰G ë �Ķ&ÇG ÿFú‹Fî9FúwOÿvúš|P%ƒÄ¨t@ÿvúšP%ƒÄ À}+Àë"�ÿvúšP%ƒÄ;v¡ë ÿvúšP%ƒÄĶ&‰G ë �Ķ&ÇG ÿFú‹Fî9FúwSÿvúš|P%ƒÄ¨tDÿvúšP%ƒÄĶ&;G s&‹G ë"�ÿvúšP%ƒÄ; v¡ ë ÿvúšP%ƒÄĶë�Ķ¡ &‰GÿFú‹Fî9FúwRÿvúš|P%ƒÄ¨tCÿvúšP%ƒÄĶ&;G s&‹G ë!ÿvúšP%ƒÄ;v¡ë ÿvúšP%ƒÄĶë�Ķ¡&‰G&+G @&‰GÿFú‹Fî9Fúvéèÿvúš|P%ƒÄ©uéÕ+ÀPÿvúšèP%ƒÄĶ&‰ÇFòë�ÿFòĶ&‹9Fòw*ÿvòÿvúšèP%ƒÄ0û4mˆ¾ÝòüBv‰žÆëCR\L[p¥´É¨tÿvòÿvúšRP%ƒÄ‹ØŽÂ&€?uÇĶ‹FòH&‰ Àtp±ÓàPš o ƒÄĶ&‰G&‰WÇFòëÿFòĶ&‹9FòsF‹vòF‹~ò±ÓçVÿvúšRP%ƒÄĶ&Ä_&‰&‰QVÿvúšŠP%ƒÄĶ&Ä_&‰Aë±�ÇFðƒ~ðté¤ÿFú‹Fî9Fúvéÿvúš|P%ƒÄ©uéíÇFòé‹�ÿvòÿvúšèP%ƒÄ¨t`+ÀPÿvòÿvúšRP%ƒÄRPš. ƒÄšDÁÄ&ö€t&‹GĶ&Ä_‹vò±Óæ&‰@þë�Ķ&Ä_‹vò±Óæ&Ç@þš< ëĶ&Ä_‹vò±Óæ&Ç@þÿFòĶ&‹9FòvéÅ+ÀPÿvúšèP%ƒÄ;FòrÆÿvòÿvúšèP%ƒÄ¨ué?ÿÿvòÿvúš|P%ƒÄĶ&Ä_‹vò±Óæ&‰@þ룋Fî9FúwFÿvúš|P%ƒÄ¨t7ÇFòëÿFòĶ&‹9FòwMÿvúš|P%ƒÄĶ&Ä_‹vò±Óæ&‰@þëÑ�ÇFòë�Ķ&Ä_‹vò±Óæ&Ç@þÿFòĶ&‹9FòvÜÿFú‹Fî9Fúw3ÿvúš|P%ƒÄ¨t$ÿvúšRP%ƒÄRPš”yƒÄĶ&‰G&‰Wë�Ķ+À&‰G&‰G&‹7&‹G&+G ;Ær &‹G ÆH&‰G&‹G&+G &‰G$&ÇG(è�ò=É÷Ù‰Nø ÉtĶ&ÇG&‹ë%�Ķ&‹G,&‰G&‹@&‰G(è²òĶ&‹G(&+G,&‰G&‹&+G&;G$v &‹G&G$ë�&‹&‰G&‹G$@&;Gs &‹G&+G$ë¸&‰G &‹G&+G$&‰G"ÿFú‹Fî9FúwDÿvúš|P%ƒÄ¨t5ÿvúšP%ƒÄĶ&;GsÿvúšP%ƒÄë �Ķ&‹GĶ&‰G(ë Ķ&ÇG(ÿFú‹Fî9FúwCÿvúš|P%ƒÄ¨t4ÿvúšP%ƒÄĶ&;G$s ÿvúšP%ƒÄëĶ&‹G$Ķ&‰G&ë Ķ&ÇG&&ƒ(t&Ä_ŒÀÄ6·„˜£×ç÷$CNi‹Ÿ¶&‹t(±ÓæŽÀ&ƒxþuĶ&‹G&+G &‰G&&‹G&‰G(ëPĶ&‹G(&+G &;G&r &‹G&+G(&;G$s0&‹G$&+G&G(&;G&v&‹G"&9G(w+Àë &‹G$&+G&G(&‰G&&ÿwš°o ƒÄĶ&‰G&‰Wšg¸‰Fö+ÀPš<¸ƒÄĶ&‹G(&+G&PèXïƒÄƒ~øtgĶ&‹G& Gt`¸Pšà ƒÄĶ&ÿw(šà ƒÄĶ&ÿw&šà ƒÄ¸Pšªo ƒÄĶ&ÿw&ÿwš ƒÄšlo š< ë�èTô‰FôĶ&ÿw&ÿw&ÿwšæo ƒÄÿvöš<¸ƒÄƒ~ôu+ÀëĶ&‹G(PšzP%ƒÄĶ&‹7 öt‹Æ±ÓàP&ÿw&ÿwšL o ƒÄ¸0Pÿ6¸ÿ6¶šL o ƒÄ‹Fü‹Vþ£¶‰¸^_‹å]Ë !4G^näóU‹ìƒìV+ÀPš|P%ƒÄ=téä¸Pš|P%ƒÄ¨uéѸPšŠP%ƒÄ À龸PšRP%ƒÄ‰Fô‰VöÇFø¸PšŠP%ƒÄ‰Fð@‰FòPš*P%ƒÄ‰Fü‰Vþë �‹Fð9FøsÿFø‹^øÄvô&€8 téë �ƒ~ðtÿNð‹vðÄ^ô&€xÿ têÇFúë�‹^øÄvô&Š‹^úÄvü&ˆÿFúÿFø‹Fð9Førà‹^úÄvü&ÆSVš(P%ƒÄÿvòÿvþVš:P%ƒÄ^‹å]Ë�¸3PšÈP%ƒÄ^‹å]Ë^ü(7HXhyаËéú *:K\‚�»ÌÜõ-AQaq��¢±Õó#3CRb‹¨·ÊëU‹ìƒì ǺÇFö+ÀPš|P%ƒÄ=u¸Pš|P%ƒÄ¨u0+ÀPš|P%ƒÄ=u]¸Pš|P%ƒÄ¨tM¸Pš|P%ƒÄ¨t=¸PšRP%ƒÄ‰Fü‰Vþ+ÀPš|P%ƒÄ=u¸PšP%ƒÄ‰FúëÇFúÇFöƒ~öt ÿvúÿvþÿvüš\ ƒÄ‰Fø¡è£ºÿvøë�¸ÿÿPšzP%‹å]Ë�U‹ìƒì ǺÇFö+ÀPš|P%ƒÄ=u¸Pš|P%ƒÄ¨u0+ÀPš|P%ƒÄ=u]¸Pš|P%ƒÄ¨tM¸Pš|P%ƒÄ¨t=¸PšRP%ƒÄ‰Fü‰Vþ+ÀPš|P%ƒÄ=u¸PšP%ƒÄ‰FúëÇFúÇFöƒ~öt ÿvúÿvþÿvüš ƒÄ‰Fø¡è£ºÿvøë�¸ÿÿPšzP%‹å]Ë�U‹ìƒìǺÇFü+ÀPš|P%ƒÄ=u$¸Pš|P%ƒÄ¨t¸PšP%ƒÄ‰FþÇFüƒ~ütÿvþš- ƒÄ¡è£º=À÷Øë�+ÀPšÐP%‹å]ËU‹ìƒì ǺÇFô+ÀPš|P%ƒÄ=t醸Pš|P%ƒÄ¨tv¸Pš|P%ƒÄ¨tf¸Pš|P%ƒÄ¨ tV¸Pš|P%ƒÄ¨tF¸PšP%ƒÄ‰Fö¸PšRP%ƒÄ‰Fø‰Vú¸PšP%ƒÄ‰Fü¸PšpP%ƒÄ;FürÇFôƒ~ôt&ÿvüÿvúÿvøÿvöšH ƒÄ‰Fþ¡è£º+ÀPÿvþë�+ÀPPš’P%‹å]Ë�U‹ìƒìVǺÇFò+ÀPš|P%ƒÄ=uZ¸Pš|P%ƒÄ¨tJ¸Pš|P%ƒÄ¨t:¸PšP%ƒÄ‰Fô¸PšP%ƒÄ‰Fü@‰FúPš*P%ƒÄ‰Fö‰Vø ÂtÇFòƒ~òtFÿvüÿvøÿvöÿvôšH ƒÄ‰Fþ¡è£º‹^þÄvö&ÆVšÈP%ƒÄÿvúÿvøVš:P%ƒÄ^‹å]Ë�¸3PšÈP%ƒÄ^‹å]ËU‹ìƒìǺÇFò+ÀPš|P%ƒÄ‰Fú=u ¸P.Ø)9IYh€�¯Íëÿ%5EUd|¥ÃÑš|P%ƒÄ¨t¸Pš|P%ƒÄ¨u6ƒ~úux¸Pš|P%ƒÄ¨th¸Pš|P%ƒÄ¨tX¸Pš|P%ƒÄ¨tH¸PšP%ƒÄ‰Fô¸PšRP%ƒÄ‰Fö‰Vøƒ~úu ¸PšŠP%ë ��¸PšP%ƒÄ‰FüÇFòƒ~òt&ÿvüÿvøÿvöÿvôšn ƒÄ‰Fþ¡è£º+ÀPÿvþë�+ÀPPš’P%‹å]Ë�U‹ìƒìǺÇFð+ÀPš|P%ƒÄ‰Fô=u ¸Pš|P%ƒÄ¨t¸Pš|P%ƒÄ¨u6ƒ~ôur¸Pš|P%ƒÄ¨tb¸Pš|P%ƒÄ¨tR¸Pš|P%ƒÄ¨tB¸PšP%ƒÄ‰Fò¸PšzP%ƒÄ‰Fö‰Vøƒ~ôu¸PšP%ƒÄ‰FúëÇFúÇFðƒ~ðt&ÿvúÿvøÿvöÿvòš” ƒÄ‰Fü‰Vþ¡è£ºRÿvüë+ÀPPš’P%‹å]Ë�ÿ6ºšzP%ƒÄË�Ú#3ETdv¼ÔU‹ìƒì +À‰Fþ‰FôPš|P%ƒÄ=ub¸Pš|P%ƒÄ¨t!¸PšRP%ƒÄ‰Fú‰Vü¸PšŠP%ƒÄ‰Fô¸Pš|P%ƒÄ¨t!¸PšRP%ƒÄ‰Fö‰Vø¸PšŠP%ƒÄ‰Fþƒ~ôtƒ~þt‹Fþ9Fôv+ÀPë:�‹Fþ+Fô@‰Fþë$ÿvô‹FþFö‹VøHRPÿvüÿvúš‚™ ƒÄ Àt ÿNþƒ~þuÖÿvþšzP%‹å]Ë" !4GZmަöU‹ìƒìV+ÀPš|P%ƒÄ=téö¸Pš|P%ƒÄ¨uéã¸Pš|P%ƒÄ¨uéиPšŠP%ƒÄ À齸PšP%ƒÄ À}骸PšRP%ƒÄ‰Fô‰Vö¸PšŠP%ƒÄ‰Fø¸PšP%ƒÄ‰FúÇFð‹Fø@‰FòPš*P%ƒÄ‰Fü‰Vþ‹Fø9Fúw+Fúë+À‰Fîë�‹^îÄvô&Š‹^ðÄvü&ˆÿFðÿFî‹Fø9Fîrà‹^ðÄvü&ÆSVš(P%ƒÄÿvòÿvþVš:P%ƒÄ^‹å]Ë�¸3PšÈP%ƒÄ^‹å]ËÔU‹ìƒìVÇFþöF€t ‹^þÿFþÄv&ÆWöFt ‹^þÿFþÄv&ÆBöFt ‹^þÿFþÄv&ÆGöFt ‹^þÿFþÄv&ÆR÷Ft ‹^þÿFþÄv&ÆIöF t ‹^þÿFþÄv&ÆUöF@t ‹^þÿFþÄv&ÆN÷Ft ‹^þÿFþÄv&ÆXöFt ‹^þÿFþÄv&Æ*öFt ‹^þÿFþÄv&Æ+‹Fþ^‹å]Ë œL]mz„‘U‹ìƒì*VÇFþ�FÖPŽ3&ÿ6èÿƒÄFþŽ3&ƒ>t!‹vþÿFþÆBÖ/‹vþ�BÖP&ÿ6èáþƒÄFþ‹vþÿFþÆBÖ,‹vþ�BÖPŽ"3&ÿ6è¼þƒÄFþŽ&3&ƒ>t!‹vþÿFþÆBÖ/‹vþ�BÖP&ÿ6è�þƒÄFþ‹vþÿFþÆBÖ,‹vþ�BÖPŽ*3&ÿ6èjþƒÄFþ‹vþÿFþÆBÖ,‹vþ�BÖPŽ.3&ÿ6èEþƒÄFþ‹vþÿFþÆBÖ,‹vþ�BÖPŽ23&ÿ6è þƒÄFþŽ63&ƒ>t!‹vþÿFþÆBÖ/‹vþ�BÖP&ÿ6èóýƒÄFþ‹vþÆBÖ+ÀPš|P%ƒÄ=u3¸Pš|P%ƒÄ¨t#¸PšŠP%ƒÄP¸PšRP%ƒÄRPš®3ƒÄ�FÖPšÈP%ƒÄ^‹å]Ë�Fá^yˆ¢±ô3B€¢ÂÑç )8Rt”£¾àû &=Ed„“¹ÐØUVW‹ìƒì´ºÍ»€ü�u»SšÐP%ƒÄƒÄ_^]˸@ŽÀ&‹l&;ltù&¡l+Ã;Â|öÃUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFü;FþwPPš|P%ƒÄ©Xt PšP%ƒÄ‰FüX@PÇFú;FþwPPš|P%ƒÄ©Xt PšP%ƒÄ‰FúX3Òèkÿ‹^üƒûr$°¶æCº¸Ü4÷óæBŠÄæBäaP æa‹VúèDÿXæaë‹Vúè9ÿš(P%ƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFúÇFü;FþwPPš|P%ƒÄ©XtPšRP%ƒÄ‰Fú‰VüXÅ6ƲP‹Fú FüXtÄ^ú&Š€â_€ê@´GÍ!ÿ6ÿ6šÈP%ƒÄƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFúÇFü;FþwPPš|P%ƒÄ©XtPšRP%ƒÄ‰Fú‰VüXÄ^ú&‹PšzP%ƒÄƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFúÇFü;FþwPPš|P%ƒÄ©XtPšRP%ƒÄ‰Fú‰VüXÄ^ú&‹ºRPš’P%ƒÄƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFúÇFü;FþwPPš|P%ƒÄ©XtPšRP%ƒÄ‰Fú‰VüXÄ^ú&‹&‹WRPš’P%ƒÄƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFü;FþwPPš|P%ƒÄ©Xt PšP%ƒÄ‰FüX‹Fü£¼P¸U‹ì‡F]P¸ ,U‹ì‡F]P¸lU‹ì‡F]š(P%ƒÄš(P%ƒÄ_^]ËUVW‹ìƒìP¸U‹ì‡F]š|P%ƒÄ‰Fþ3À@PÇFúÇFü;FþwPPš|P%ƒÄ©XtPšzP%ƒÄ‰Fú‰VüX‹Fú‹Vü£¼‰¾P¸U‹ì‡F]P¸ ,U‹ì‡F]P¸lU‹ì‡F]š(P%ƒÄš(P%ƒÄ_^]Ë