TDfSJgKaypro 10Autoload Diskette #7 dBASE II Lessons Ashton-Tate >Q!" >- Ͷ Aګ ҫ _!7^#V~  \p Z  z ů2[\͓͢1!~(OOE# =ʻf "=« ý> 2͐ f "]=f =« *]}o"_  *]  Hello There!  3You have just tried to boot your computer on one  of your RELOAD diskettes.  2You shouldn't attempt to boot on this diskette,  but rather boot on the 1st reload disk.  0It contains the procedure to accomplish the  reload.       t     CHECKC CMD CHECKC1 CMD CHECKS CMD CLEAR@ CMD CLIENT DBF CLIENTLSCMD  COMPUTE DBF  COMPUTE FRM  COMPUTE1DBF V DBASE COM  DBASEOVRCOM !"#$%& DBASEOVRCOMD'()*+ DEPTMASTDBF, DEPTMASTFRM- EMP8 DBF. EMPBAK DBF/cSTORE 0 TO OK DO WHILE OK = 0 IF '&PROMPT' # ' ' ACCEPT '&PROMPT' TO COMMAND ELSE  XACCEPT TO COMMAND ENDIF STORE !(COMMAND) TO COMMAND IF COMMAND = 'QUIT'  wQUIT ENDIF IF LESSON = '1' IF COMMAND # CHECK ?"You didn't enter:" ?" &CHECK" ?"Please try again."  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  SET TALK OFF  "LOOP ENDIF ENDIF IF X TEACH1S CMD`a TEACH2 CMD0bcd TEACH21 BAKef TEACH21 CMDgh TEACH2R CMD i TEACH3 CMD(jkl TEACH3C CMD$mno TEACH3F CMD$pqr TEACH3F1CMDs TEACH4 CMD8tuvw TEACH4B CMDx TEACH4L CMDyz TEACH5 CMD\{|}~ TEACH6 CMD, TEACH6M CMD, RELOAD 7   T EMPBAK1 DBF0 EMPMAST DBF1 EMPMAST FRM2 EMPMASTRFRM3 EMPMFRM FRM 4 EMPMSRT DBF5 EMPNAME DBF6 EMPNAME FRM7 EMPNOINDNDX8 EMPTBAK DBF9 EMPTRANSDBF: EMPTSRT DBF; JJFRM FRM< JOBHFRM FRM= JOBHIST DBF> JOINJOB DBF ? COMMAND # CHECK ? ?"You didn't enter:" ?" &CHECK" ?"If you would like to try to correct the statement, enter Y when" ?"prompted. Otherwise, enter N, and then re-enter the entire command." DO TEACHC ENDIF IF COMMAND # CHECK ?"Plea$se enter:" ?" &CHECK "  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  4SET TALK OFF ENDIF ENDDO STORE ' ' TO PROMPT   y JOINPAY1DBF@ JOINPAY2DBF A JOINPAY3DBF B LESSONS CMD(CDE MASTE DBFF NAMEADDRDBFG NAMEIND NDXH REGFRM FRM I T1RDBF DBF J TAXMAST DBFK TAXMAST FRML TEACH1 CMDPMNOPQ TEACH10 CMD(RST TEACH11 CMD(UVW TEACH1R CMD(XYZ TEACH1R1CMDH[\]^_ Q RETURN$  '  '  '  '  '   UM  '  '  '  '  '  '    @cSTORE 0 TO OK DO WHILE OK = 0 IF '&PROMPT' # ' ' ACCEPT '&PROMPT' TO COMMAND ELSE  XACCEPT TO COMMAND ENDIF STORE !(COMMAND) TO COMMAND IF COMMAND = 'QUIT'  xQUIT ENDIF IF LESSON = '1' IF COMMAND # CHECK ?"You didn't enter:" ?" &CHECK" ?"Please try again."  LOOP  ELSE  STORE 1 TO OK  zLOOP ENDIF ENDIF IF COMMAND # CHECK ? ?"You didn't enter:" ?" &CHECK" ?"If you would like to try to o!  '  '  '  '   0 ?"You didn't enter &CHECK.. Please try again."   a#  '  '   $didn't enter &CHECK.. Please try a#  '    Acorrect the statement, enter Y when" ?"prompted. Otherwise, enter N, and then re-enter the entire command." DO TEACHC ENDIF IF COMMAND # CHECK ?"Please enter:" ?" &CHECK "  LOOP  ELSE  5STORE 1 TO OK ENDIF ENDDO STORE ' ' TO PROMPT RETURN$  #  F   LOOP "If you would like to try to correct the statement, enter Y when" ?"prompted. Otherwise, enter N, and then re-enter the entire command." DO TEACHC ENDIF IF COMMAND # CHECK ?"I'm afraid that's still not right. Please enter:" ?" &CHECK"  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  4SET TALK OFF ENDIF ENDDO STORE ' ' TO PROMPT   n}cSTORE 0 TO OK DO WHILE OK = 0 IF '&PROMPT' # ' ' ACCEPT '&PROMPT' TO COMMAND ELSE  XACCEPT TO COMMAND ENDIF STORE !(COMMAND) TO COMMAND IF COMMAND = 'QUIT'  )QUIT ENDIF IF COMMAND # CHECK  CDO CLEAR@ ?"You didn't enter" ?" &CHECK" ?"Please try again."  LOOP  ELSE!   STORE 1 TO OK   cYXNAMEClADDRESSClWPHONEC mHPHONEC mPHPREFC'm     '  ' -  ENDIF IF !(COMMAND) # CHECK  DDO CLEAR@ ?"You didn't enter" ?" &CHECK" ?"Please try again."  LOOP  ELSE!   STORE 1 TO OK   &COMMANC  '  '  '  '  '     u &COMMAND ENDIF#  ENDDO%  STORE ' ' TO PROMPT RETURN$  '     ALBERT EINSTEIN  LITTLE TOWN USA + (201)555-1212(201)555-1313W ROBERT REDFORD LOS ANGELES CA. * (213)555-0565(213)555-1000H KILGORE TROUT  NOWHERE % (312)555-0000(312)555-9999W BOB HOPE TOLUCA LAKE CA. * (213)555-7777(213)555-8888H RONALD REAGAN  WASHINGTON DC [ (212)555-5000CLASSIFIED Ho use a file called CLIENT, which" ?"contains client names anq@ 12,0$ @ 13,0$ @ 14,0$ @ 15,0$ @ 16,0$ @ 17,0$ @ 18,0  Y/  '  '  '  y LC  '  '  '  '  '    1g @ 19,0$ @ 20,0$ @ 21,0$ @ 22,0$ @ 11,0$ RETURN  ry * FIELD NAME ON THE CLIENT FILE FOR WORK PHONE) TO THE REMARK * MEMORY VARIABLE PREF REMARK STORE 'WPHONE' TO PREF  STORE 'WPHONE' TO PREF  ELSE REMARK ELSE REMARK * IF IT'S THE HOME PHONE, STORE 'HPHONE' (WHICH IS THE REMARK * FIELD NAME ON THE CLIENT FILE FOR HOME PHONE) TO THE REMARK * MEMORY VARIABLE PREF REMARK STORE HPHONE TO PREF  STORE 'HPHONE' TO PREF ENDIF REMARK * DISPLAY THE CLIENT NAME AND PREFERRED TELEPHONE NUMBER, REMARK * SUBSTITUTING PREF (2K 9 WASHINGTON DC LL WAIT ONE MORE TIME WAIT RETURN   WHICH CONTAINS EITHER 'WPHONE' OR REMARK * 'HPHONE' DEPENDING ON THE IF STATEMENT ABOVE), AND DON'T REMARK * DISPLAY THE RECORD NUMBER (OFF PARAMETER) REMARK DISP NAME,&PREF OFF DISP NAME,&PREF OFF REMARK * SKIP TO THE NEXT RECORD REMARK SKIP SKIP WAIT ERASE REMARK * SEE IF THE DO LOOP SHOULD BE CONTINUED REMARK ENDDO ENDDO REMARK * AFTER EOF - RETURN TO CALLER - DBASE TUTOR IN THIS CASE WAIT SET ECHO OFF RETURN it TAINS EITHER 'WPHONE' OR REMARK * 'HPHONE' DEPENDING ON THE IF STATEMENT ABOVE), AND DON'T REMARK * DISPLAY THE RECORD (OFF PARAMETER) REMARK DISP NAME,&PREF OFF DISP NAME,&PREF OFF REMARK * SKIP TO THE NEXT RECORD REMARK SKIP SKIP WAIT ERASE REMARK * SEE IF THE DO LOOP SHOULD BE CONTINUED REMARK ENDDO ENDDO REMARK * AFTER EOF - RETURN TO CALLER - DBASE TUTOR IN THIS CASE WAIT SET ECHO OFF RETURN  it is" ?"REMARK * USE CLIENT FILE REMARK USE CLIENT USE CLIENT WAIT ERASE REMARK * BEGIN THE DO LOOP TO READ THE CLIENT FILE UNTIL AN REMARK * END-OF-FILE CONDITION OCCURS REMARK DO WHILE .NOT. EOF DO WHILE .NOT. EOF REMARK * EXECUTE THE IF STATEMENT WHICH ANALYZES THE PHPREF REMARK * FIELD OF THE CURRENT RECORD TO SEE WHICH PHONE NUMBER REMARK * IS TO BE USED TO CONTACT THE CLIENT REMARK IF PHPREF = 'W' IF PHPREF = 'W' REMARK * IF IT'S THE WORK PHONE, STORE 'WPHONE' (WHICH IS THE REMARKϝ`is" ?"time to QUIT. Goodbye." ?"Please enter QUIT." STORE 'QUIT' TO CHECK DO CHECKC RETURN B=================================BB==BB==BB==BB==BB==BB}}BB==BB==BB==BB==B==BB=BB==BB==BB==JB==B==B==BB==B========B==BB}=B}}BB}}BB==BB}}BB}}BB==BB=======}=========}}}BB}}BB}}BB==B}}BB}=BB/==BB==BB==BB==BB==BB==BB==BB=}BB==BB=}BB==BBB/   si!POSITIONC pYTDSALARYNpMONTHSALNpSALCLASSNpTAXESNpNETSALARYNp 9y&POSITIONC pPHONECpYTDSALARYNpMONTHSALNpSALCLASSNpTAXESNpNETSALARYNp    PRESIDENT 68800 2000 6 720 1280 VICE-PRES 57900 1500 4 360 1140 SEC-STATE 50875 1250 3 225 1025 JANITOR 87250 2500 1 150 2350TAXES and NET SALARY fields contain" ?"zeroes. I'm going to perform some comptations to" ?"place amounts in these fields." WAIT ERASE ?"Using the REPLACE command, I'm going to compute" ?"TAXES by multiplying the SALCLASS field by .06," ?"and then multiplying the MONTHSAL field by that" ?"product. The command to do that looks like this." ?"REPLACE ALL TAXES +{ PRESIDENT 68800 2000 6 720 1280 VICE-PRES 57900 1500 4 360 1140 SEC-STATE 50875 1250 3 225 1025 JANITOR 87250 2500 1 150 2350u can DELETE files in dBASEII. The files may be dBASEII files" ?"or any other file (by using a file suffix, e.g., TXT)." ? ?"First let's make sure that the WHITEHSE file is still around." ?"Enter DISPLAY FILE" STORE 'DISPLAY FIvLE' TO CHECK DO CHECKC ?"Now, let's DELETE it." ?"Enter DELETE FILE WHITEHSE" STORE 'DELETE FILE WHITEHSE' TO CHECM=1,L=55,W=50 Y WHITE HOUSE PAYROLL LISTING Y Y N 10,POSITION POSITION TITLE 5,YTDSALARY YTD SAL Y 5,MONTHSAL MONTH SAL Y 5,SALCLASS SAL CLASS N 5,TAXES TAXES Y 5,NETSALARY NET SAL Y "called COMPUTE, which contains payroll information" ?"for some of the people in the White House." ?"This is what the structure of the file looks" ?"like." USE A:COMPUTE DISP STRU ?"I also created a report to print the file, and" ?"show some totals of the information." ?"I'll print the report for  x?$ G͇5*3*Ht,7K x2yB N4 y#W K K ~!RN !N67K A2b O2~;ʮ # h :ڄ yû yU7~ – >2è +~ ʨ + — yû yû >2 y/<2ɯ2X2*6!m"͸6N#~2#^#V#~#F#"x2:X/<͢x2XW ʋ:_:<2X*~XK 7=å̓7̓7"! N#̓7> U7~#y7O9K ̓7"i##̓7NF9xW_:% ʁ*& *# "& ʹ*! ~#"! O;: =2 72% >;*& "# "& ʹz: =h: k: _2 6zä2 * *& Z7N-:T=o%"& ʹ6zw* *& Z7ʹ6zä: E ø* "& ʹ >2 zAy z>2 : * wO;ä* : U7* " N:( 2) * Z7ByAB* ~qO&:) 2( * " wO;͖ ä: 2 k! n! !͌zî* +* Z7z6ʘz*& -"& :T=o%"& ʹ>2 : O* * yU7+" :( 2) * " * * Z7 6:* * NyA *\y7z5* | ͸ : G: O* 3* "& ʹ* Nͮ #1 : * ~_YW TW 66ͅ~| *+ |  ͮ :& l ͨ*+ |:Eʖ :bO;z*& * ~7" *+  ~͎*& - :T=o%* ~7*+ ~7* ~7" ͅ:E :cO;! 4ɯ2 " "& 2( ̓7" ̓7"+ y7" *+  ~O2 #~- <2 #̓7yv u v ͇5* |] ͸x2 y2 f : G2 O!" " 3À #" 2 " ʹ* |ʏ ~Ò ͸ 2* : 2 * "! * "# >2% ;: N >9L>X:E;DELETED INSERT TFYNtfyn.+- @<<< > w> ##̓7NFxYH͏*9> ##y7~K ̓7"ڶ#F#̓7N~@ڝ >U < #F#̓7~4HG> ͔7# 9> ##̓7~N6T> 6F> I5MI5EI*p#3H K I5MI5E|¸"xҸyʟ=ڢ~O#xU7*q#9 K >{ < *w# K ~wK @}2VK >z < @*2N q* 6 :) 2( * " ͖ z>2 * 6 * *& Z7H6',͖ z: _: _: •: *& * Z7•: •: _: N¸*& * Z7ʸ: ¸* 6: 2 z: z>@_: z>_: _: z: 0_: z: _͐: G: x: 2 ̓7"+ y7" xG:' 2' yO:& =2& ʹZ Ð͛!"& !Ѣ" !Ҥ" 2 2 2 ô*& ,"& :T=$."& * #" * | :( K #9AXL!ѢҤ"!m"!m"Y:K !m"*~#"6 L7&/;DMY$0<JYl5o$4:  w Tu *+":C~ !"K *N9"K #"K *Y~7"Y̓7" F#N#y7xU m xC .3*z5M *9K *x` #y9 K xz ~*wÑ ~*_Tʏ Yʏ 6Ñ 6K OG"x ~@ڸ _2 2 2% ! ͌ 6zä;:{ »:!W¢:!Xw#ʤ#N#ʸzL7zNLTNxwzNjzz_w#Z0"9z><2( U7~͸ 2* * +" * |/:( =2( U7~2͸ 2* :* ! 9O:* 9ʂ#ʂ!n_AgLxX7y 7y7?_Oy! 97y! 9yE7G*+  N##y7yʽ~µF÷T;͇5* |͸*+  p###q!" *+ N!3!#* |Nͮ #* " ʂ* w#" 9F#FAU!UXjwq~-qE7qnO~7jy!~q_wq~q> wOͮ #* 6#" ͐*& "& ʹͨ"& ʹz~Oͮ #è~#.»~ #: o&)))ѢÃ7: N; * : O.3:  *+    VK @ 2VK @D1VK bbbbbbON#yU7F# 9xwU7#"K ON#F#x<ڟG7ʣ#å>*wK {{{{{{O*wK O*wK ~/wK I͡5VK ,ͭ4VK N#.3VK n&ͭ4VK **,ON#F#x<ڎG7xʤ#é/<20*0*u08%E!+!%!++̓7zn!t$"y0$ !++̓7z_!t$"y0$ !t$y720*0"0!$*0 *:ڷ!#̓7z>C+++61ʩ!>N6/2f0{2g0#[0~7$0!P z!ͷ!!!:0!#, |,P ͷ>O&" "ͮ$8% "y7!#͉$ڍ"$%ҁ"͉$ڍ"$:0O:0Q":":0<20ͱ$++̓7t$"y0>20t$$*0#̓7zc"Ä"t$ͮ$y7Ö">207ɷ#͉$#$:0=20#͉$#$:0ʲ"=20*0#"ʹ$̓7t$"y0$:0<20t$:0<ͱ$++̓7z"͉$!05 ##<+'x''yO>7ͥڢx:~*f#<ͥڡxʡyxGOxG>:/o#<ͥڡxʡx=|GڏGyҕMx:7ͨ~+-#<>#<Y-~È~![97l͔.€<PG>z>zC>zCA>z\*ځ1p*ځ1f>z~(€͈Ҁ66$#͈7|P>%zC>&z\eځxʁp͙8<~),{>2eځxʁ<~) peځxg!c*0~**0*0"0|-*0#"02020r7DM*0> U79 6xJ2t0y2q02r0_!|^x2s0p!"m0#"o0$20!H$$0ʹʥͮÙ:0ͮ#z!÷կ2{0,""%#20!""z*0"0*m0"y0$:0"*w0!:q0O9*w0:q0U76#6*0#6#6>2020t$E$>20*w0>2~0!:q0O8%E%+++̓7z_t$"y0$"t$*0"|0͉$"u0:0O:0ڗ<(%DM:0<ͱ$+:0ͱ$+*9*u0!:q0O9*u0:q0U7*z~7!04:s0E$:0$*|0"0~20<g:{0%|20*y0"H$:0g:{0$|2{ F#~a{_w# K I5}*6#wK *6#:D[6/#:E[6/#:E[ K 0 h ]p#0w#T]NyU7~ …+ y *q#9 K N#*9i&6 9*:́''R,̓%͞'*:͍7"xyi& !ͭ4%3 ! !ͭ4VK I5n&ͭ4VK #n&ͭ4VK **͔5IÇ5*z5@ 2*z5#"+~O:"E´N#~ʕښÝÝN#7*#"+x7F#N#8*#"+6K 6K  ~L*i&"*Y~7"Y*Y+V+t$ #t$ͮ$y7#>207ɷ20ͼ<y.:0*0nͼ<y.>20*0"0#*m0"y0$t$:0w#*0#y7|R#*0###y7>20!*0"0#*m0"y0$:0<20t$:0#<ͱ$++y7|Œ#:0ͱ$y7͉$!05t$!0#ͼ<y.#20O!0~###q:0*0k0 9*0###"w0*y0"0:00ͼ< y.:0*0ͼ<y.*0~20*y0"0:00ͼ< y.*0:0w:0ͼ<y.*y0*0~7:0w#"0*0*0Z7š$7+~20+V+^"y0"0ѷ:0*w0=O:r0W yO$x$G$ $33:0!0:0ͼ<y.*0!k0 9Bʁ~)>#<:O>3z\*ځ1peځxʁ~)|p͙8\<~)\{^>2eځxʁf:O>4z#<>>4zC>zP> z\f>!z͈xNyCL\O+ʁ<fU6+#6#p#|C>"z>z>zC>#z\f>'z\f>(z͈ڄ1Ä͈ڄxÄ~(„#<~)„#<~,„#<77~(¥#<*ڥ~)¥#<7Ϳx.36*#z5!<7~87x#ͺ7O6+## #<7~_8020ͱ$:q09:020O:020(%DM:0<ͱ$++*w0++9*o0"zH$:0O:0[20*o0"y0t$͉$*o0#"o0>20*0*0Z7*0#!:r0O9*w0:q0U7*z~7>20*o0H$*o0"m0#"o0$*0*|0r7DM*|0+T]*9#"0*m0*0~76͉$$ͮ$m$A#| Z7 &"!# $"0z!"%!:g07 "0*0*0Z7M &"J "0ͮ$:g0O8%# !$#͉$ $:0O:0ʡ y !05X Û O(%DMͮ$++:0<ͱ$++9!05t$E$!05!05E$:0X ͮ$:q0O9͉$ $ͮ$!:q0O9E$:0O:0ʳ ɷO2~0"u0#*0"0*m0" '^"Y> < :*(*:65#q#p#657\xW͒Q<\xJ7>1ѷ.OR.͚x͒†<͚x|7>cѷ.AND.K8K8K8¶<x¹>7.NOT.exexɱ~$>#<ex7~= >]#*>]@>]> ^> ]>c#~=[>^> #<ɯ+ڹx~+“#<+ڸxʸͼ>q-ʜ#<+ڸxʸͼ>q7xG|GyMxGɱ~+#<+'x''yO> -TYFN7>6,#w##<͢VUU#F###N>)~7*V7͢{z#N6)#~7*V7͢ڟž6)#~7*V7O+ʼ<"V¼<7>#222~+-#~0:.2: >2:=2>w: O:+Hyx:<ɯ~ J J#=.F..T.CDEFILPRSTV#@$!*INT #VAL5LEN&@BTESTmPEEKRANKSTR$!CHRDATETYPETRIM*EOF FILELOCK#LOCKNDX3 (k*! \*0:0ͼ<y.:r0U7!04:0!- O:r0_! 2%##:t0i%͔5:~0V%.3Y%͇5 2vz57:"Eu%7A:q0O8:0O:0£%:0ʟ%a/2020:0ͼ<y.20! "0~ % ~#*0~7U7"0#þ%*0}o|g~7ͼ<% y.7ͩ'ͫ(!06ͼ< y.!U0͒7:F&00͔.E&*:!?&'&F&͌&>2U0͌&>2W0e&͌&>2X0:͙8z7*:"0>2Z0Å&>2V0}:Y0'=2Y0"0:U0ʥ&&:W0ʲ&*0&:X0&*0|&*0Z7 'T]' |'!&:V0&:Z0&*0|<9-!"0>,,,-5!q~O,~%5 -5.C5.5.~怱w.w~#25ɯw,<5_~Wwz+F5ɯ_~Wwz,e5!q25q25q25!q~@6 5 / ͅ66yy>ͅ6+ 2:Í62:ͬ6::E;:Eʩ6:ͼ<v::!E/E> ͅ6> ͅ6͸6~ͅ6#66&o6&o6'77d7 7/E*0k*L+!c~&+ +> ;+O~7D+_# ;+~7ڢ+ #~.Š+ #_Pq+Ë+S{+Ë+M…+Ë+ +Ë+~7ҝ+E7ҝ+:¢+# Ë+yͬ6*0+"0}$+͘,: E+ʸ++&"+': E+++̀#7:)E,.$,͘,,.<&",'.<̀#.7ɯ<}N,##~N,++6#6#65!}- ~2C1570ͼ<e,20y.7"0|-x~,> ͅ6# yx,*0"0>20*0*0DM:0ͼ<ü,*0#"020< , y.>207 <9-7:0ͼ<,, y.7*0:0= X|(qs Owy!q~a1!q~2252G.~2ʩ1t1/< چ1~2qP1~ڔ1WXØ1P_i,]5z˜1i~怲w.Fq1.'w- »12.>^5.42.7>'w- 12.ƙw- 1.7~'w- 2.~w4.62!q~wD1!qq25.;5 .]5V2GD1O2.4 @2.~GO.~WIwxw2~w4!q~2q.~!32q.6@.6> 2qD1.~2 2ß2 2.~=wy.C5:q=š22y 2.C5:q=22q.C52> .C5:q=22q2:q3y.>~y.> y./E:0ͼ<y.:020:020:0ͼ<y.0ͼ<L'77c'c'v'~h' P'=:020:0!0U7y7:020w:020!00ͼ< y.:V0':Z0'=!}- !}- =7"0"0||-Ø,!0͒70:ʛ(#~:(+~7ڛ(͠(:͠(:9ʛ( ʛ(.ʛ( ʛ(͠(:ʆ( ʛ( ʆ(,ʆ(.h(͠(3(:ʆ( ʆ(,ʆ(.S(͠(:ʗ( ʗ(,ʗ(͠(m(Û(!0U797aڧ(_0~@>:#~ »(>.#~(O+G)x )(G):&1D)X)D): 7a7Å67777> Å6A[?a{?:,7:G'"[]0:?U7y7o$z{/}o|gd7 z}o|g~#fos#r#^#V#q#p#N#F#>Wxʢ7r# ×7> #ç7žʸ7# ®7 G~77# ¿7y7# 7~77_G77_8# 7x"88x2:$8y2:H$87H8xH838::O~ F8# 88H8xO~aV8_—888O~Ao8_y8#^8xڕ8~0ړ8;ڕ8Aړ8Õ8DM! ©8ß8 08:80Z78zT])))oҩ8$©87 `i);_8ͅ6> ͅ6N Y9ɷ7!090ͼ< %-y.!"0|-$^-20A#': Ez-&"'N-20!': Ez-͘,m-!0͒7*0|-+*0Z7-"0"0*0"0! "0!0-ҿ-0!0-!0-*0|­-0:0ͼ< y.> y.w# -~w# -~w+ .:0ͼ<y. .:0 *0ͼ<y.*0DM*0~^.#y7"0*0ͳ%*0++y7"0̓%́'>y.*0DM*0> ͔7 4/<.w>  44.~yʪ4>..F>0-4 4ê4.¯C50 -4ê4<.q/<^4Q4xڡ4O>  h4T4.~4t4.~-r4> .¯C50t4.~ʪ4O>..¯C50 4ê4>*¡47!q ;5'44d4 44>I2q4}o|g4 z!qC5!q~,,1D)L)D):0-):1 )P)D):&1G)\)D):&1:)\)D):1G)P)ɯ<## *1N'## *:1N'!c͒7!g͒7!g6 :0> <9"0!*: 6/E'>@R,ڷ)́'.9-*0*:> U7~2>1x*y*6A##̓7z*:>1D*D*+pJ*6#6*6#6 #̓7zJ*D*͏*[*p#+N͒7~7W*##W*͏*\*p#~7qg*6>  <ҷ70 9!0U7y70 9:020:0ͼ<y.*0DM*0:0ͼ<y.>20:0*0#"0"0 . *06#*0~7:Dw#:Ew#:Ew:0ͼ<y.G92?1:2@1:2A1:2B1?1xͼ< y.*06#"00ͼ< y.!~"0*0:0w#:0w#:0w#:0w#"0*0+~k/"0G*0~Z7.0+~<.0"0xͼ< y.ALLH&NEXTR&RECORD]&FOR&WHILEx&KEY C"0.DBF.CMD.FRM.MEM.TXT.NDX.FMT.$$$.HEX~01 X|(qs ; ͸6>?ͅ68H99y'9~# 9x99~+ ,9͠9œ99ʛ9W`i9ʉ9u9G9ʚ9OT]xU79É9/v <:`:I!HK6@I!VK65::I͙8{2D2FK*::͙8{2E2EK*::sI>wI͙8{2E2GK:`ʒI:EKG:FK2EKx2FK:FKII I:EKhJ:FKII I II:EK hJI:EKhJI:EKhJ:GKJI:FKI:EKhJ͸6͸6! JKJ@PR@brpf@Z@\TTT@@Ȅ@@@@@@@d\~XJE;#KJ!dK6: EhEdE͸6!uJ6IThirty days hath September April, June and November All the rest have thirty one Except February ... ERROR!J!KERRORK~@@ G??^#VO:.D> dC?6:C<8?2C*BD"BD>!:.D=J?J?)=??%KC6@ _KC*C?@fA?> dCM!\9*C?@6@/@<ʢ?>dC]!\9MdC2-D:-D*5D|YB*5DZ7?DM*?D@*=D*'D*C:9D@nC"C*'Dr7"=D"@nC"C*'Dr7"=D͗B*5Dr7"5D?\!\6# > ͔7͒7: E2\!]w#:s@+~@2\.ʃ@ʑ@w#s@!eʑ@w#Æ@:AD@¡@:_6@*BD:_ʱ@:AD@2AD))*BD! ~7!D"+D~@A:.D@ @#y7Z7@###̓7"'D?o  Y!E~LE=5!EU7~}'̓%//E!$E~}'6̓%!D~}'6̓%2 E2%E2E͞'>!Gr<  ;2)D;:Y:)D2)D:A;:4D24D,; Z;> a;:CM;a;G:/D};xy;t>_Ô;O; ڊ;!C4Ô; ”;!C6O:4DyY ڭ;!C4 !C6!C4:a =ü;:4D;  2C2C:C:C2/D:/D;:4D24D2C6@:C2DC:e!:C4K>s>>>>>>m??@!DD"Bw KE;#J##~#fo63(4/.!4% .#ERROR (DD/MM/YY) : (MM/DD/YY) :41 1 February 1984t hath September April, June and November All the rest have thirty one Except February ... ERROR!J!KERRORK~@@m6*7D "7D~A!D"7D#####~%A5A#~:A dC!DD~:BB!DD~:B'B> dC#";D=D9!"=D"?D2AD>*=D!r7|*?D#"?D!"=D!~A#̓7y7"'DB##6#6 dC;@*'D*BDrs=1ޙ:*Z7uHuH!G6INSUFFICIENT MEMORY IN SYSTEM, dBASE REQUIRES AT LEAST 41984 BYTES (0A400 HEX) OF MEMORY IN IN ADDITION TO THE SIZE OF THE OPERATING SYSTEM dBASE WILL OPERATE ON MOST 48K CP/M (tm) SYSTEMS THAT HAVE A STANDARD BIOS ld)2c:H!*:U76>'R,H:E!EU7y'w2 E!E4Ϳ/: dC y6=*BD<6@B<2C*BD!\$9*BD=:.Dt=*BD=>dC>*;D+6dC*BD~w*;D+6HCy<2C!"=D"?D2AD*BD6#";DHC?@fAҿ=> dC6@/@=>dC/@KCA>29D*C"5D;?HCA29D*C"5D;?HCA>29D*C"5D;?HCA>29D*C#"5D;?HCAz<>ͫA͔@HC!"?D"=D;@HCA29D!"5D*C!*D"C;?*=D+"=D"CHCA29DͫA͔@*;D+:_ʒ>6HC6HCA*=D}|*?D}|*BD"CKCA*CxN#F#^#V>"?D`i"=DHCixg"=Dz{gxo"?DHC:.DS?!DD"BD2C*BD~"7C2C*BD!̓7++~7B:AD@2AD>dC>dC*;D!=D9 dCx~ ʱC ʶCʷC# ÜC#>2-Dx~ # CýC>2-D DBASEOVRCOM DBASEOVRCOM DȖ4X|ė 0Tx %  Called from  Correct and retry? File has been deleted Illegal goto value2 Syntax error, re-enter7 Cannot insert - there are no records in database file End of file encountered End of locate scope File does not exist Unassigned file number File is currently open " End of file found unexpectedly" Record out of range Too many files are open Disk is full Directory is full Destroy existing file? (y/n)~ *** Unknown command Count = ( Enter record structure as follows:: , Field Name, Type, Width, Decimal places  Input data now?" Macro is not a character string records copied  Macro not found Pack complete records copied recall(s) Col Width, Contents Double space report? (y/n) replacement(s) Enter report form name:   File already exists No find Too many memory variables' Out of memory for memory variables  Illegal variable name Too many characters- No database file in use, enter filename:#  Not a dBASE II database! Bad file name! Command file cannot be found7$ Nesting limit violation exceeded deletion(s)& *** End run dBASE II *** , Too many returns encountered70 Enter record #, field (# or name), new value Illegal data type5q !=Pad q ~&!@(?ȷ:77x7:8A?<27Q(:.*(w#x:776?#:7[;7 OS:=2ya8{0 ͭ * !~#"dBASE II COPYRIGHT (C) 1983 BY ASHTON-TATE INC.10150 W. JEFFERSON CULVER CITY, CA 91204 *** dBASE II Ver 2./ File is inaccessible, already open elsewhere   No room in system lock list System input/output error records added DO cancelled Bad name field Bad type field Bad decimal width field Bad width field   Enter heading:  Data item not found WITH phrase not found Enter subtotals field:  Subtotals in report? (y/n)& Page heading? (y/n) Enter page heading:  records sortede( *** MAXIMUM RECORD LIMIT REACHED ***I  Index does not match database$ Bad width field Destroy existing file? 1ޙ: Ej]29b: EʈG:"G:!E/E:,EhG: EEG<2Cb><;21b;>d <8: EaG:Cb<:1b;/EʈG: E/: Ef:eX9G#~ʖG/w}G͸6>.ͅ675:.::GG*G:%E H9G`K8G!:b4G9Gp`K8G::bG2%EG9GaK8G::bH   Cannot open file Format file cannot be openedQ Coord:  Correct and retry? (y/n) Change from:  Change to:  More corrections (y/n)? Enter filename: ) Primary use databaseY Secondary use database Number of records:  Database in use not indexed% More than 7 index files selected4- Modify erases all records... proceed? (y/n) ) Enter today's date or return for none  Date of last update:   TO phrase not found ** Subtotal ** No expression to sum: Non-numeric expression> More than 5 fields to sum *** Syntax error *** Are totals required? (y/n) Record is locked... waiting2%EG=2:bG:\G:ʊH!H#~H!͒7!͒7#O+~.DH 9!k*„H ~C8J##y7N#9.:<9BJ2u H: H.:::E:I9ʴHm`K8»H,SaK8»H!.b4G:.b"I:E I9HaK8H*::.r]:r]G2EG9I,aK8I9I$aK8G2EG93I$aK8G!.b5G9zI:EzI: EdI<2Cb><;21b;ͧ:: EzI:Cb<:1b;.::IG^͔.’I*:~E73J̀)6S:L7SRGaQRNNRQ&R[TU XeXX'KGJJIN[NyNNNNNNN~OU|RRR3SRSSSYTdTlTxTTRj ** Total ** Record:  No find Page no. 9 Single step y:=step, n:=keyboard cmd, ESC:=cancel Waiting 7! Fld Name Type Width Dec Structure for file: = records indexed. Record length exceeds maximum size (of 1000)  *** Zero divide *** Beyond string *** Overlay cannot be opened Enter record # :  Record not in index Index does not match database 1 Summary report only? (y/n)9 Index file cannot be opened Variable cannot be found1 Source and destination data types are different ON phrase not found *** Numeric field overflow( Syntax error in format specification  FIELD phrase not found;\ Enter options, m=left margin, l=lines/page, w=page width Enter subtotal heading: 7 Enter subtotal footing: # Eject page after subtotals? (y/n) No FOR phrase6 Join attempted to generate more than 65,534 records No FROM phraseH Keys are not the same length U"U*UUU`V}VVVVWXXXXXZ[)\1\\\d\g\o\].RR>!d]>&d]> d]>8d]͢J>:ͅ65:9hJ:!E/E͸6KJͺ7wJ> >O!6+##yU76/#~765)G!- G͸6:87J:~r]#²J*:r7DM t,:`K8FT#,S*̀):``K8J>!Gr<͋,|K'͘,Ki.5/'z!͌,͏,͋,'͘,GͫK:-EʙK<2Cb><;21b;*MbDMxUKdK;/̀):[X`K8}[ ,r]|G:C1[$Z,"Fb͚"Z"Fbz¼Z*Fb'̓[ʼZh[A#'h[,r7Z|Z'̓[Zh[9-h[$<[,"Fb&"-["Fbz[*Fb'̓[[h['̀#'%'h[,͋,Z7Y['>20h['̓[h[͘,\[:.EG>a <,6Gͥ+G: E>!Gr<r]"=b:`K8$\*:*=b#N#F:**=b6/#~7"=b"Ab9O+*:-7[r]*Ab*=b6)#~7"=bú[:.E\*1P*:*=br]>29b:*E:P62#͍7x5Py0P66P6>Pp4>P6.###6#65"=b-7PPO:*EP:9bP"Db*Db~ P*=b6)#~762# ~#N###FNʥPCʜP6#6#6êPq#p#6ëPp#q#q4#6#65"=b*Db"DbdP*5b͘&G,|G͵'7QG*3b+"3b|P!"3b>e <);G͸6:0bQ,67ͅ6:9b1Q:*E1Q)DM #t,7Q!- ͥ+GPG>! Gr<*:>!Gr<*:>!Gr<:aK8&RaK8ʼQ9>'گQ:r]R,گQ:EҴQ!EU7y'w2 E!E4Ϳ/͞'G>)öQ>* *MbDM*(b!*bzV>GGy'G,|G5/:0bGͺ!G̀)&> 27b)O:.EG>; <G̀)>!Gr<96G:r]'-:r]`K8r],S'-G̀)20b,|W&!"=b!";b:ʑW`K8V*:>20bV&&r]9ʑW:O+W>d]9(W"Aba9yU7,SK8W*:*=br]N##~PWC+~PWL*Ab ~bW>Sd]*Ab61#~765"=b>29b-7ʑWڂWW\`K8V*:W:9bW!͘&W͵'WWW!- '5/:0bWͺ!%'ͥ+WҤW:.EG`i͸66>> <G>Ad]>Bd]>!G: .L ,r]}2Mb22!"(b:`K8L*:>22b:r]b61#Ns#FrxbL2$by2'b>N2#bÀL2'byvLA2$b>C2#bÀL2$b>L2#b!xU76:aK8L,S87r]:xݠͺ7r]#*:!ݠU762ܠ>2/b:`K8"M,SDNO+DN"*bL>Rd],S"M`K8DN,S87r]:xAͺ7r]*:!A",bU762@:2b!- :/b!ݠ:#bNN~KM.KM#=M"Db!~_M._M#QM"Fb*Db+~M$ʨM*ʨM#ʲM9ʲM,gMʕM-ʲM gM+~$ʣM*ʣM> #wgMgM gMʻMwfM6 gM*Fb*Db~=NM#M~=N#M9MwM~=N#M9M#M6 Ab*=b60#~7"=b*=b65:.Eĸ6!- G>Hd]>!Gr !Gr<G> !Gr<͞' .̓%́'#:G'\>@R,\́'.9-:G`K8r],Sʹ\G>'\>@R,\y'#-7\\ ¶\>td]##z!\͞'9->d]>(d]>Qd]>d]>e <);]:!E/E:`]`K8r]*::r]k*;]** y76# T]> wͅ6> ͅ6GG <Õ]: Eʕ]>M <͸69.:r7M ]7Æ]>?ͅ6͞'2 E.::yNͧ:: E]:E28b!8b5]>0 <:8b!EU7~&ö]:]/E>[ <8/EG>\ ] ) <G>2EG:0_:0>R! Gr<>2%E2:bG2EG/28b: EG0G<;<GͳG̀)$'S:87RR:xͺ7O9y '|S: EGG9"R:.EG> <G>sd]*::̀)`:K8HS,SxS`K8WS9-Gf`K8xS$oS͋,'G̀#'G ,r]|ʟS͋,Z7=JT]' |ʤSG>3d]>~d]> !Gr<.r]:r]G>2%E2:bG̀):S>!Gr:ͅ65:9 T:!Eir<>! Gr<:X`K8*X,S$X>!GrÕ]9k*HX**:-7Gr]*X:_X.G: EG}'̓%͞'/:EʨX=XʛX2E=!EU7~2 E2%EG2 E2E2%EG>- <G>!Gr<:`K8X.G`K8r]>.G:6a͔.X*:kZwGa͔. YHbK8r]G*:kZ;G:`K8YY*::D9Y}''̓%͞'2D:G>'>R,y'2D͞'GkZbY:D2EGkZ<G:`K8€Y*:<!c͒79cͺ72G\Z ,r]"EG:#EʽY}'̓%2#E͞'\ZY`K8Y`K8Y>'>R,Y>Yd]y'2#E͞'G2-EG>2-E0#M!ݠ~=NX N7Nw# N9*N#2NE77Nw# N6 # N!ݠ"(b>Vd]: G̀)> !Gr<:nNk*r] y7!G*E> 2EG̀)>!Gr<:ʲN`K8ʬN`K8r]ͼG>!Gr<̀)>!Gr<̀)>!Gr<>!Gr<&:`K8O*:'@'O͞':.EG>2 <G <͞'G̀)>*27b)O:.EG>+ <G&&r]:r]͋,|qO!͘&qO:7bW͵'hOqOhOr5/ͥ+qOPO`i:.E͸66!"3b!"5b`:K8¡Ò)>!Gr<*:`K8CQ`K8KQ`K8VQ̀)29b20b&!"=b:PP&&r]:PP`K8O>20b*:O}`K8/E͸6SNT6/#͍7++~7)KT:.E=T60#~765͸6!- G>Hd]G>4 <͸6S̀)>! Gr<> !Gr!Gr<̀)9ޙ~ʔT#ÉT!ޙ*:&&&r]9r]:Z0r]!͘&TͿ)"'E͵'Tͥ+TҺT:.EG>6 <G:.EG>7 <G:.EG>a <,6G!ޙ*:&&&r]*'E)T>!Gr<>!Gr< ,r]"Db-7r] ,r]}*Dbw#"Db-7G9UG!"=b:U?kU͸6nU:*=br]:*EŸU62#͍7xšUy•U6ÛU6ãUp4ãU6.###6#65"=b-7ʸUr]nU!- G͸6G>!Gr<20b:U`K8r]>20b: G:#E1V}' .͞'ͳ ) .:<9]ͧ:>^ <8/E]1ޙ.:ÖGSTORE[?TUELSERENDDORENDIFGDOaQNOTEGLOOPRRELEASE XRETURNeXSELECTX@'KACCEPTGJAPPENDJCALL[NCANCELyNCHANGENCLEARNCOPYNCOUNTNCREATENDELETENDISPLAY~OCONTINUEUEDIT|REJECTRERASERGOTO3SGO3SHELPSIFSFINDRINDEXSINPUTSINSERTYTLISTlTLOADxTLOCATETUNLOCKd\MODIFYUPACK"UPOKE*UQUITUREADURECALL`VREINDEX}VREMARKVRENAMEVREPLACEVREPORTWRESETXXRESTOREXSAVEXSETXSKIPZSORT[S#͏,'9-*~Y'KX>5 <9-KX ~NJR#y=^RN#y7T]> ͔79.3#F#̓7N3> <7"cY V#~2bY#y7"lYzCʣRMS!X65:|SO9*cYRڃRvS!͒72_Y:bYG 9!"lYMS!X6! 6%S:qSS!$Y6! 6!<9ڀS>2_YR!͒7!$Y6! 6%S>2_YR:_Y|S:bYGCSw#4SvS6 #CSvS*cY͸66>:ͅ67*lY:bY_~ͅ6#eS7>ɯ> 2nY2gY"vY:#ES͹T>TҵT5/,#*vYͫW:nYTGO:gY2gYx>T Q~NWH#F#̓79'H H"+HO:wH2H,ʈH,EH:ʯH2HwH:ʯHwH,EHÈH#F#̓7N9d.3*:39,ʈHy,ʈH:ʯH,}H:ʯH*zY"zYG#:D}'%ږJ͵'GږJ͞'5/͌*~Y#"~Y*oY#"oY*xY+"xY|G2XH:YHÐJ:.EG*~Y͸66> <:Y2!E!d"xYG͈S&Iz!͌*oY#"oYI'͋,'͘,J>AR,Jy'2D ,:J!ͳ%!Ң"jY!"zY~ J"GY(I"OY ~NʣI*jY6-#*GY~7*OY~765"jYI*GY ~NI*jY6)#*GY~76#61#*OY~765"jYI*jY6)#*GY~761#*OY~765"jYI*zY"zYO+ 9 N: N9_C:NN:NL O>N:CY9*:!CY͙8O{NzN{9CY9*:!CY͙8O{*~YU7Z7!O"~Y*hY"hYM̓%*hY6 :D}'!͏, .a/'́'.9-KX>    y 2   <;X> <;X> <;X>y <;X>( <;X̀)!"qY,|KX"`Y"]Y>2XY:O2XY: fO>. <:XYKX: |O>Z <ÁO>} <5:OͼKX9 KX͙8*:͋,Z7:Q:|²O*`Y"`Y'*`Y : ʚP"vY:#EO͹TGfOGO͐PxfOxBP$P*`Y*vYͫW> UM)\TEXT1\USEo\WAIT]CASENENDCASEROTHERWISENBROWSEINJOINdTTOTAL\\UPDATEg\ALLANDBLANKBOTTOMDOELSEENDTEXTFIELDSFILEFILESSCREENGETGETSIFINDEXMEMORYNOUPDATEOFFONPICTUREPRIMARYPRINTRECORDSAYSECONDARYSTATUSSTRUCTURETOTOPUSINGWHILEWITHENDDOENDIFCASEENDCASEOTHERWISEBELLECARRYECOLONECONFIRM EDEBUG EDELETED EECHOEEJECT+EESCAPE!EEXACT"EINTENSITY&ELINKAGE)ERAW*ESTEP,ESCREEN TALK.EALTERNATEYCALLYCONSOLEYDATEZDEFAULTZFORMATYHEADINGqYINx"T*vYZ7>T"vY>2nYSx>T*?Y~ >T*?Y"vY>2nYS:gYLT5/7͸6! Y6,#6͸6*sY͸6 t,>:ͅ675:O9ʊS“TxʵTÞT*sYReT*sY"sY~ hT5/7}' .ͳ:#Ef:T:@T:T>*YDM*IY!KYzT͞'ɯ2VY2ZY:-EU: U!"KY!"MY:$)U:,./U ,CX}2Y-7ڞW:$PU: .VU ,CX}2Y22!"IY:YK8 V*:>2ZY:CXX61#Ns#FrxʨU2Xy2X>N2XU2XyʼUA2X>C2XU2X>L2X!xU76:.YK8 V*::87CX:xݠͺ7CX#*:!ݠU76iIi.z!*DM:D}',ږJ: J6 !Ң- ͵'JږJ͞'5/͌*~Y#"~Y*oY#"oY*xY+"xY|J2XlJ:YlJÐJ:.EJ*~Y͸66> <:Y2!E!d"xYJ:D}'̓%:.EʴJ*~Y͸66> <:Y2!E͞''͋,'͘,*oY͏,KX> <>2 EKX̓%> <>2 EKX̀)&2UY:~K&&CX:~KXK8K>W <>2 EKX>2UY*:!ݠ"~Y~7:O+EK> <>2 EKX9(\K>R <>2 EKX*~Y~7"~Y~7*::,J:/K:UY’K>W <>2 EKX!͘&͵'KKK͸6>a <,6͸6!ݠ"~Y*~Y̓7"~YzKgRKþK5/ͥ+KҘKKX̓%́'#́':L>_ <qfOGP͐PxfOxQPxBP$3P͚"fOòO*`Y+"`Y|fOòO$ʀP&"fOòOxnP*vYZ7$P"vYO*?Y~ BP*?Y"vYO͘,fO*`Y#"`YòO5/ͺ!9%Q,fO:,Q:P0Q͙8*:fOzfO{!fO+))))~fO fO"]YQ9O+fO9("]YfO*:9%Q:ͭ7r7M9*]YRfO1Q*]YgRKXfO5/fO> 2QY*:LQXK8CX>2RY*:LQ$G,:QYŒQ#"Y"~Yn,)DM,R*Yn,:RYʹQi.5/Q)Y!9͈SKX)!Y99,*Y#"Yn,5/Q͋, ZDEXJZMARGIN:ZPRINThYdrNZqZrNCqrPOrPE.IDBASEMCOLORCONSOLEYDATEZDEFAULTZFORMATYHEADINGqYIN Number of records:  Database in use not indexedGJK1OBQ:!E2Ỳ)2WY2SY2TY&:ʀG&&CX:ʀGXK8UG*:"eY'J>2WY%GYK8iG*:>2SY%GXK8CX*:>2SY2TY%G͋,"oY|ʎG'͘,ҎG:WYI!"~Y!d"xYz!:SY5I*eY*:>'>AR,Jy'2D͞'i.:TYʛH!*::D}'%ږJ"zY*zY~ ʯH m5:KXKX'KX>R,O2D:.LXK8CXðM># <>$ <͒7!"~Y!"zY*zY#"zY͸67*zY+))))"|Y:zY!gM675:9gMbk͒76 9O+~,N9N'N*|Y9~,L7ڽL_ #ïLyNN N*:! :_2YYCLNLLN>NM::͙8N{NzN{ *zY+|N!͏,a/'̓%>% <8KX>AR,.'9-i.͈SҞM'a/̓%KX*::')OR,)O.9"hY ͒7!"~Y*hY͘,ڢN~ M#*:9 72ܠ>2VY:XK8|V*::ʞWO+ʞW"KY>V>R <>2 EKX*::|VYK8žW*::87CX:xAͺ7CX*:!A"MYU762@:ZY!- :VY!ݠ:XN_W~ʥV.ʥV#×V"zY!~ʹV.ʹV#ëV"~Y*zY+~W$W*W# W9 W,VV- W V+~$V*V> #wVV VWwV6 V*~Y*zY~ʗWFW#FW~ʗW#AW9,Ww+W~ʗW#YW9YW#FW60#FW!ݠ~ʗWXzWʑWw#eW9ʄW#ŒWE7ڑWw#eW6 #eW!ݠ"IY>V <>2 EKX"?Yͳ!Y66!"[Y*?Y N! :T_ r7Wy2uY*[YO:U!4Y > ͔7*?Y4Y~**"W""W~ RU&2W&&U:VSgVK8U*::U*".W>2W:VS HSS͋,|}S!͘&}S͵'tS}Sͥ+}SjS:.EʎS>" <`i6:WU`iͭ4*.W ̓7z5U>g <͞'y'&>r <͋,6>w <+++++6>/ͅ66>/ͅ66.S>p q <>f <~ ZT ͸6y67 t,7 ~ͅ67#~67###F~7xOT67T͸6>` <777)6U:>'>R,T2D:D%TT}2 WTT"WT}*Ww#"W! W5­TÇT̓%2D͞'U>XU!GT_0T O))))  .EI*.W͸66>' ͔7!- +J!"'W!"2W*'W~5 J#̓7##"'W ~NʿI#F#̓7*2Wy}I6,#: W,ʇIw# 9xU7+~ ›II#: W,ʬIw#"2W J+~ ¸I+­I#"2W J#F#̓7*2WyI6,#: W,I 9xU7"2W J~# IJII"2W J60#"2W OI*2W6 #6 #r7DM:D&JK:WFJ*DM:D}'&/͞'JK:WgJ*6 #6 :D*DM&JK!"2W",W*,W~ 3K ~NJ#F#̓7*2WyʙJ6,#: W,ʣJw# 9xU7+~ ·J¬J#: W,Jw#"2W%K+~ J+J#"2W%K#F#̓7*2WyJ6,#: W,K 9xU7"2W~ :W¶O]9"fW2h!]t,7t,72|\O\Oog676>/ͅ66>/ͅ66͸6:_N\N> <͸6:_N\N!jV6͸6Nt,>.ͅ6t,"fWO77N͸6NO\O7(ͅ6 ~ͅ6>)ͅ67~NfP#~2W\P<2!W2WwP#~2W###~2W>2!W! W- :!W*%WU7#"%W~ P͸6>` <7:$W6!U6*%W6!V6U2W2W:P$VK8P*:>'>2W>R,P>XUUK8U*:>2WP:)~X#W4Y*[YDM!?Yz*[Y:uYg"[Y*?Y"?Y~ W>2!E:>2 EKX>2 EKXͼ>!Gr 0.*9͘.Ͱ+1 -;,'PICTURERECORD SAYSDFRECORD # TO USINGº0G6++":9&i".9.> 0.*9͘.Ͱ+1 -;, ,T͞'>2 EU <>2 E>!Gr<&od6U 6U6U/}o|g9U zpU pU*rU?kU7gU_rU#KU~TTT@@Ȅ@@@PR@brpb@@@@@@@d\,ADDITIVEALLDELIMITED VARIABLES USED BYTES USEDEXCEPTEXTENDEDFIELDSFROMLIKEDATABASE FILES # RCDS LAST UPDATENoneONSTRUCTURETOFILE UNAVAILABLEWITHFIELD:NAMEC FIELD:TYPEC FIELD:LENN FIELD:DECN A::ASDF  ??DBF$$$ SUB%K~# KKKK"2W%K60#"2W*,W",W uJ*2W6 #6 #r7DM:D&ͥ+KHK!VA9 &/""W!".W*"W~ K>  ~K> #‰K#~#~U###~U*"W""W&/*.W#".WwK:.EK*.W͸66>' <:D}'':WK:WL:WL .*.W!6#~7&/̓%2D͞'U>($L>H <͞'>2 EÙ)&!"'W>A2V21W20W2W24W!4W",W:&&U:@MgVK8L:0W<20WҩM*'WU>2W"'W#͍7xʤM!V4*! y7͒7*'W6)#~76#6/#~765"'W*,W60#~765",W9@M,VL:VL*:>21W!4W",W:@Mk*L**WU:WQd)4W,چQ! ~7QEQ#Ny<2)WMQ#F###N>2)WMQ>2)W!4Wk*[Q**"W:)WOhW,*W ̓7:)WO!hW9Q̓%͞'U2W2W2W:RgVK8Q*:>'ڤR>R,ڤRy'2D""W>2WÙQUK8UQ)VK8QQ".W>2WR*::U VK8UQ",W>2W: RRÙQ:WʟR*"W~R:W?R*.WIUR*"W:WSR*,WIUR&/! F#N#̓7xsRxR zRzR&/*"W""W~ &R'̓%2D͞'U>HU>(U2W9)VK8R>2W9 VK8U*::U",W""W*"W~S*,W:WRIUSRIUSG2LîM PûPÏQéRSêStT&2W2W2W2W2W2W9!",W:UH&&U:UHgVK8vG"W*:'L>2WFGVK8G>2W*:!6 ".W:O+G>$L9(ʭG>R$L*.W9!6 ".W*,W6-#~7~765",W*::,FG:ÏG]VK8H>2W*::VK8FG>2W*:FGVK8#H>2W*:FGUK8U>2W2W*::{VK8FG*::U2 W:FG:W"L*W*::WmHoH>'>R,y'2D:W´H!6#w#w#+++++9:WVK &/:WK͞'!ͳ%!͘&!".WK!d"*W,|K͵'JKKJK*.W#".W**W+"*W|I: ,W~ʟM#̓7",Wbk ͒7:O+9~7(M_# M*::,VL:L:WʟM!͘&nM͵'eMnMeM!- ͥ+nMPM:.E~M!4W͸6- >A2V:1WU!4W~5U#̓7*ÍM>J$L>K$L>L$L: E2\2W:vNZVK8M*::U_@2\::¸M:øM)VK8U*::U!V>  ͔7V9nN nN.=N*-Na$N_: N6?#.N:.nN:VnN nN*cNaZN_:EN6?#dN:>2WøM͸6:W›N!.V6!V] 9ͰN͸6U!V] 9ͰN͸6U!hW"fW6 \ON!UV6*fW:WN 9 "fW6 ON!hW"fW͸6*fW  9')#6.+5:TYPEC FIELD:LENN FIELD:DECN A::ASDF  ??DBF$$$ SUB#ŒWE7ڑWw#eW6 #eW!ݠ"IY>V <>2 EKX"?Yͳ!Y66!"[Y*?Y N! :T_ r7Wy2uY*[YO:U!4Y > ͔7*?Y4Y~ GûG H:I2I2I:ʈGIK8^G*::"IIyeBG>)I9~KG+"I#~O#F>2IGIK8I#*::>'ҀG>( <,I>2IG:I>T)I:I>H)I>R,y'#*I*Iy''͞'͹H1I$1I$"I*I~G2I#:.EG͸6!I6:I&#p͹H*I#"IGʊ*\*ͩ\ʡ*>D7D\No Fatal\r(s) Warni\:7Gͩ\!28!*/+\r*̓\*8|ʎS>" <`i6:WU`iͭ4*.W ̓7z5U>g <͞'y'&>r <͋,6>w <+++++6>/ͅ66>/ͅ66.S>p q <>f:PK8GnPK84P*:TJ>u <8,P,P̀)!S > ͔7!5S w @G9!"Q!Q"Q!"Q*Q~ ʪG*Q y7 ~ʁG#{G~P###~P*Q"Q*Q"QdG!Q"Qͳ!"Q vP!Qz*Q"Q!"P*PDM*Q"Q!Qz*Q"Q~ H*P$"P:U= n:_Y I>2_S͜O2S:[S I>N 2S!9P*"iS2sS͜O:SXJ:[SXI>D 2rS͜O:rSXJ:[S€I>C 4 <{I͜O:[SªI>P 2yS͜O2zS:[SI>k 2zS͜O:[SI>i >7J.[9< J>(J-J:>-J:>@2cSͺ7IO2-[͜O!.[yU762#q#:cSw#q#:hSw#65:[SdJ>< 2xS:[SœJ͸6:xS67dO:L͙8{2wS*:~,O:*]SO:O:ySJ62#N#FxJw#:wSw#:hSw#65"]SJ"]S#͍7͜O:P5~AN6A͸6:kS<ùO:[S%O>4 <ÉJ>V <>O:rS:qU5MOͨO>I <ͨO!qU- !S- :zS`O>2ZS͸6:[SƒO5:9:$E}'̓%͞'ùO:$Ef:9w:ŒO.:9:[S:$Eͭ:͸6:eSOy7 ïO>!Gr<>2 E:$E}'̓%͞'ùOTTT@@Ȅ@@@PR@brpb@@@@@@@d\,A::AFORMPLAINPRINTTOZP=2 7*#7~#['{ (t['t t[ )t :[7"(>[~Œw#[~({ /t[/t ͨ [~$w#[27!"7[27: `##z!1Ì)!"I"I͋,!d"I!͏,*In,͘,|H*I#"I%H*In,5/*I*I#"I:.E%H*I+"I|%H͸6*I+6>: 9 <*I+"I͏,:.EʰH*I6>: <$1IûG!'Iz!!"I!d"Iͷ*I#"I*I+"I|I:.EI*I͸66>x x <͞'>2 E1I <>2 E>!Grx2PGjH,PH:P_:P!S8H=3H"P!$Vr7|YHDM ͔7+6ðGx I2PxʥH*Q"QQZ7ښH!Q"Q2PðG:P2PðG*Q"QRZ7һH I:P2PðG:P_:P!SH=H"P!$Vr7|HDM*P!9!$V> ͔7+6ðG!͒7!"P!"Q!Q"Q*Q~ J y7*::I*Q9O+~ ,J9~ iI7bI_ #TIy,J ,J*:! :_CʝINʝIL4J>I::͙8DJ{DJzDJ{*::I͙8@ <*aS6+#"aSdO K1K*aS> 2cS>^K*aS#9OKTK:>TK:>@2cSͺ7JO͜O*aSqyU7#62#q#:cSw#:wSw#:hSw#65"aSxʸL:SʸL:[SK>N ͥ5`\+!8>ͥf\+*6|)*l\9<282r\!*/+!*/x\d*>,D:~\JC:9<\28!*/+\r*̓\*8| ̀)2`S2yS2ZS2rS2\S![ ͒7>2eS2hS>92dS>P2oS<2kS2lS&:ʟG&&O:ʟGDPK8eG*:>'>2`S:GUPK8‹G*::OOPK8O*:>2lS:GIPK8O*:>2\S:G:`S¾G>? <5:9ʹOʹO>'>2[S>R,G>R,2[Sy'2$E2vS:[SG>h E 2vS:[S’H>F ʶHûH:>ûH:>@2cSͺ7ʆH2VO͜O!VyU762#q#:cSw#:hSG:oSw#p#652_S:[SH>= c <*fS#"fS67!c6ͨO:DM6>/ͅ6:E6>/ͅ6:E6͸6ͨO:vSM!V- ͸6ͨO!W- ͨO:rS+NͨO>*ͅ67!,[- !?U- rN:ZS™M;O:dSڙM͵'rNN:yS̨O!\- :hN>2O:_SrNͨOͥ+NNrN͵'rNN:rS+N! U- +N/O:ZS+N;O:dSڙM͸6ͨO>*ͅ67!,[- !?U- +N/O:S O:LT5 OͨO>` <ͨO!LT- !9Pk*N*!9Q%I*Q6 !9!͏,a/'.9-,P>    y _ <5:,P>'M>AR,҇J!P6>2PÍJy'2PPO>R,y'2Q:E2P2E:T=2 Q:T@J:U=2Q: Q=2 Q!(Q: Qw#~7!,Q6 #6 #"P"P"P"P#"P2Q*P!cr7DM*P>͔7Oͳ!"Q!"Q*P"P*PMkKO~ :K#~ :K#y"P&o6!: QU76!Qz:Q bK:U==!Kͼ!Q"Q*PM"P:QGP!Qz>GL®K!P68 M KKONjN*P*Pr7DM*P+T]*9#"P*P6 #6 vO K*P##*Pr7DM*P*P##9 "Ny'wG>2I͸6!K6y'&.+G>p <0G>q <͸6$~wG"`K!'K6͸67*`K~wG#"`K}'&7 .nK,! L6͸6GG͞'.y'G>2I͸6!IK6y'&.ʨG>p <íG>q <͸6$~G"`K!'K6͸67*`K~G#"`K}'&7 .nK,! L6͸6G.͸6:IH͸6͸6͸6>e <);lI͸6!I6:D6>/ͅ6:E6>/ͅ6:E6!J6: E@ͅ6>:ͅ6:DeH!I6:D&͸6!(J6:E[I7!5J6:E[I!BJ6:E[I7!OJ6:E[I!iJ6: E[I7!\J6;[I!vJ6: E[I7!J6: E[I!J6:E[I7!J6:+E[I!J6:!E[I7!JPG&odP PP/}o|gP z>!Gr<>2 E,PCOMMANDNAME TYP LEN DECABORTING MODIFY (Y/N) NEW FILEBUFFER FULL, TYPE Y TO SAVE, OR N TO ABORTSTRUCTURE$$$BAK"7F#>27:7Þ ©(ͨ ͸(#~d¯FIELD 01 CSFIELD 02 C6SFIELD 03 COSFIELD 04 ChSFIELD 05 CSFIELD 06 CSFIELD 07 CSFIELD 08 CSFIELD 09 CSFIELD 10 CSFIELD 11 CTFIELD 12 C0TFIELD 13 CITFIELD 14 CbTFIEL+-:ZL}','+-:TL,I,ڋI I*PL#"PL2I,sK*XL*VL~7"VL`i!RL4:SLIJ*"L!tL"_L*HL"\L:TL—I:SL_*PLr7|sKRJ"PL"NL×I:RL2SLJRJ:ZL}':TLʺI͘,RJʤI*PL#"PLI͘,sK:LL2aL![L- I:D}'5/*HL y7HK?J:D}'*XL*r7)DM&/*LHK9*!:SL=O9y!U7~7:SLOJ*"L*HL"\L:TL—I*NL+"NL|—I:D}')DM!"VL:SL*VL̓7"VL*XLr7&/=fJ:TL€H,'ÿH:D}'̓%:ZL}'̓%͞'.*L*:.EʳK!J6óKSORT COMPLETE:SLOJ J:KL2aL:SLGyH==CK!tL"_L!dL"\L!蜁U7lP*P~ K6 #6 #6#"P Kx2MxʒLONjN*P*PZ7kKM"P!Q5:Q LL5~kK2Q*P"P*P*PZ7҉LM"P:Q<2QG:Q ҃Lx2Qx [L*P"P KxLONjN*PM~´L6 #6 #6++##"P~L6 #6 #6#"PvO!Q4:Q L4:U===kK2Q*P"P KjN:Q > M>2Q*PM~%M##~%M"P:Q=2QM*P"P2Q KjN:PHM*P"PO5M*P*Pr7DM:Q}'&/'̓%:PM}'̓%PO@'QO-PO-PO-QO-ùM:PM}'̓%:Q}'̓%@'͞':P2Eͳ,P+~ M++~ M#~ #ͥ' >.ͭ7#"QQ9: QO> ! 76:"E[I!J6:&E[I7!J6:)E[I!J6<[I7!J6:*E[I!J6:,E[I7!K6:.E[IlIeI!IhI!I6͞'>!GrELD 25 CuUFIELD 26 CUFIELD 27 CUFIELD 28 CUFIELD 29 CUFIELD 30 CUFIELʎS>" <`i6:WU`iͭ4*.W ̓7z5U>g <͞'y'&>r <͋,6>w <+++++6>/ͅ66>/ͅ66.S>p q <>f̓7y7"L"qL![L- /K*L~7*qL~7:K:UL:KCKCK=Jx:cL"L:ULfK!L- fK>2cL!L- >2UL> / <ãK> <ãK>R <ãK>H <ãK>( <ãK>2 EóK>2 EóK>!Gr # N7y!"Q:QG!Qz*P~ ʁNʁN#qN: QO !U7 ʛN+~ʌN ʌNy2Q2QN*P*Pr7" QNy*PU7* QDM*P9:Q_*P"PN*P+U7* QDM*P+*9#"P*P:QO9vO*Q9:P^O*PaZ7-ÒOOT] "P:P}',xZO AO"P>2 Q*P+6 #6 #6#"P>2 Q*PbZ7*P*Pr7Z7O*P:Q}'&/*PT] *Pr7DM9*P"P*P"P*P"P*Q"Q*P> ͭ7#"P!P68ʠM5M>e <);êỲ)> 2KL2L> 2LL!"HL2EL:ʙG*LK8GG*::O+ʃK(‹K"HL*:G-LK8UG\G*:G7LK8jG~G*:> 2KL2L>2LLGBLK8“K*:'ڛK>2ELG*HL|ʫK:ELʓK*+r7)|GG xGG>2SL*HL ~L{K2oL2L2LCH:KL2KL2L:LL2LL#~2pL2L2L#̓7~2sL2L2Lr7"XL:pLG:sLO:oLN9HxAO!L*"L"L9-,'y'2ZL>R,y'2Da/!"PL>2cL2TL͋,|¿H'2ZLÍJ2TL:D}'','*PL͏,a/.R,y'2ZL>2cL:SL_*PLr7"PL|ʍJ:cLʍJ2cL:TLH*PL&:SLor7H{2SL2RL2UL)DM!"VL:D}'Q%I*Q6 !9!͏,a/'.9-,P>    y _ <5:,P>'M>AR,҇J!P6>2PÍJy'2PPO>R,y'2Q:E2P2E:T=2 Q:T@J:U=2Q: Q=2 Q!(Q: Qw#~7!,Q6 #6 #"P"P"P"P#"P2Q*P!cr7DM*P>͔7Oͳ!"Q!"Q*P"P*PMkKO~ :K#~ :K#y"P&o6!: QU76!Qz:Q bK:U==!Kͼ!Q"Q*PM"P:QGP!Qz>GL®K!P68 M KKONjN*P*Pr7DM*P+T]*9#"P*P6 #6 vO K*P##*Pr7DM*P*P##9 "Ny'wG>2I͸6!K6y'&.+G>p <0G>q <͸6$~wG"`K!'K6͸67*`K~wG#"`K}'&7 .nK,! L6͸6GG͞'.y'G>2I͸6!IK6y'&.ʨG>p <íG>q <͸6$~G"`K!'K6͸67*`K~G#"`K}'&7 .nK,! L6͸6G.͸6:IH͸6͸6͸6>e <);lI͸6!I6:D6>/ͅ6:E6>/ͅ6:E6!J6: E@ͅ6>:ͅ6:DeH!I6:D&͸6!(J6:E[I7!5J6:E[I!BJ6:E[I7!OJ6:E[I!iJ6: E[I7!\J6;[I!vJ6: E[I7!J6: E[I!J6:E[I7!J6:+E[I!J6:!E[I7!JlP*P~ K6 #6 #6#"P Kx2MxʒLONjN*P*PZ7kKM"P!Q5:Q LL5~kK2Q*P"P*P*PZ7҉LM"P:Q<2QG:Q ҃Lx2Qx [L*P"P KxLONjN*PM~´L6 #6 #6++##"P~L6 #6 #6#"PvO!Q4:Q L4:U===kK2Q*P"P KjN:Q > M>2Q*PM~%M##~%M"P:Q=2QM*P"P2Q KjN:PHM*P"PO5M*P*Pr7DM:Q}'&/'̓%:PM}'̓%PO@'QO-PO-PO-QO-ùM:PM}'̓%:Q}'̓%@'͞':P2Eͳ,P+~ M++~ M#~ #ͥ' >.ͭ7#"QQ9: QO> ! 76:"E[I!J6:&E[I7!J6:)E[I!J6<[I7!J6:*E[I!J6:,E[I7!K6:.E[IlIeI!IhI!I6͞'>!GrELD 25 CuUFIELD 26 CUFIELD 27 CUFIELD 28 CUFIELD 29 CUFIELD 30 CUFIELʎS>" <`i6:WU`iͭ4*.W ̓7z5U>g <͞'y'&>r <͋,6>w <+++++6>/ͅ66>/ͅ66.S>p q <>f̓7y7"L"qL![L- /K*L~7*qL~7:K:UL:KCKCK=Jx:cL"L:ULfK!L- fK>2cL!L- >2UL> / <ãK> <ãK>R <ãK>H <ãK>( <ãK>2 EóK>2 EóK>!Gr # N7y!"Q:QG!Qz*P~ ʁNʁN#qN: QO !U7 ʛN+~ʌN ʌNy2Q2QN*P*Pr7" QNy*PU7* QDM*P9:Q_*P"PN*P+U7* QDM*P+*9#"P*P:QO9vO*Q9:P^O*PaZ7-ÒOOT] "P:P}',xZO AO"P>2 Q*P+6 #6 #6#"P>2 Q*PbZ7*P*Pr7Z7O*P:Q}'&/*PT] *Pr7DM9*P"P*P"P*P"P*Q"Q*P> ͭ7#"P!P68ʠM5M>e <);ê W / - TALK - DATABASE SELECTED - INDEXES: KEY EXPRESSION:UNSELECTED DATABASE - !}o{_{!}?_*7*76 Ī~("x ʶ27xGF#:7ªF#*7*76 ª:7G*7"7:6ă"7 :7m#:6ĩ:8ȯ28 ʤ2H:GHͺ7o&6!kH*:: E2H:e2 E>'>R,2D:H2 E:U2HG:Df:G9*DG#HK8DG>2H͸6G:Df:G9~*kGðGG:Df:G9yHK8G9tHK8DG~*ʽG.:6:H=2HƒG͸6>e <);G͸6:U2HÃG::!E:HG!H6:D}'̓%͞'G>:,|UL2M! N"M:rGLK8?L*:>2M:O+:G> R 2M*M~ G͡JG!M4*M"MG:UO:MG:M2M#H*M:Mg."M!M4$H&"#H'öG͘,ҶG!"MK"M2M*M~ SHbKSH!M4*M"M3H: MO:MG!y=jHOxg^H"M* MM LL!Lz* M' K"M2M*M~ ʵHKڵH!M4*M"MÕH:M!MH~=2M:MG>2Mx2Mͼ2MK"M2M*M~ I͡JI!M4*M" b@@@@@d\,FIELDSFORTO2 EI>!Gr2JG:JyGJK8yG>2J*:"J:O+?J*::,G:_G:JsJJK8sJ>2J*::GJ"KO+GJ2K9(GJ"K*:G:JOJ>R,Gy'2D ,G>R,y'2D 9&/͞'!,G:G:K$KKK8$K*:>2K$KG:KJ:KJ>R,Jy'2D ,!ͳ%:KœH*K(J F#y7"K*K:KON'J N#y7"KxJ2KûH*K:KON'J ~2K#y7"K!"K"K:KBI*K"K*K*::"K(J"K*KO+"K*KN'J*K6)#~76)#*K~76#61#*K~7"K*K*::~,9I:"KH*K65#"K:KI*K"K*K*::"K(J"K*KO+"K*::KK8‹I*::"KO+"K*KN'J!K ~*KNʱI6-#~7úI6)#~761#*K~7"K*K*::~,I:"KOI*K65:KcJ͞'!͘&J:D}'*DM !Gr<ʡ<ʡʡ Ę>GG<"8z½  "7"8y28  28DBASEMSG*END*EXITNO HELP MESSAGES FOUNDHELP Ę>GG<"8z½  "7"8y28  28DBASEMSG*END*EXITǸ).̀).2ZJ2YJ2XJ:ʤG:ZJBGUJK8BG*::'ڠI>2ZJG:YJiGQJK8iG*::I>2YJG:XJIJJK8I*:>2XJ:I"[J:O+I*::,G:ÊG:ZJʨI:YJʰI>R,y'2D͞'.:XJ‡H"]J!"_J!eJ"aJ*]J~ H*_J9*aJ6-#*]J~7XMH:MILL2 M:MBI5/$BIͺ!2 MBI," M"M 2 M:MUJ:MI!M6#:M/2 M:M2MàG9-," M* M"M2 MÜG!M6#:Mw$J&"HJ" M: MHJ:MG:MO:M2MHJmH$%J&"HJ'+J͘,HJ* M#" M:MG:MO:M2MHJmH* M"M2 MÜG:M0ʞJsJ:M=J2M!M4ÑJK~ ʑJ:M<2M:M=J2M* M"M2 MÜGLL:TO ~ҶJ:MJ:MʿJ7~/ ͔79-~*ʅI͵'‘Iͥ+IvII*K- !"JI:JʱI*J- ʺI!- I:D}'*DM&/͞'*J#"J*K- ͥ+II͵'IàI*J":D}'*D,*K*K:KO7WJJ@J:K*J*K- :K7J*K- ͞'5/:D}'*DM,JJ͞'ͥ+JJ:D}'*DM,͞'*K:K '|ʪJ:KʗJ*K- :KʤJ*K- 5/:D}'*DM,JtJ:D}'̓%͞'5K>( <K> <$K>n <K>T <K>R <$K>o <fK>s <K>S <K:D}'̓%͞'>2 E5K:D}'̓%>2 E5K>!Gr."]J*]J~ H N'zH*_J*]J9*aJ6-#*]J~7*_J~765"aJ*_J "_JZ7H*]J "]J+H!"_J!eJ"aJ*[J*::O+"cJ9(I"]J*_J9*aJ6-#*]J~7*_J~765"aJ*_J"_J*cJ*::,H:ÙH*_J6 !ͳ%> 2:D}' &/͞'>.9-.9-!"ᜯ.!- aI!eJ- :D}'*DM&/͞'*#"|<ʸI>.ͥ+oI,I9-.ͥ+I,I:D}'' .> &/̓%͞'I>( H l m  2 EI͞'>2 EI>!Gr' <~J>( <_J>R <_J> <_J>H <_J>R <_J:D}'̓%͞'>2 E~J͞'>2 E~J>!Gr̀)2K2K2K2K2K:+H:K>GKK8>G*::'J>2KG:KkGKK8kG*::"KO+J2K*:>2KG:K¦GKK8¦G*::$K"K:O+J*:>2K:,G:ÇG:K HKK8 H*::$K"K:O+J*:>2K:,G:G:KK8G*::O+J*:: M!Lz*M:M2M7BK?~2M*MDML!Lz*M:M-!!M͔7!!MyU767~2MñK?~2MO>-!!M͔7!M~K#øK!!M:MU76*MDM!M!Lz*M:M2 ELL>OLͳ: M2E>!Gr<6 s#r27*7###:6$:7$*7 ͩ273{ "*$'¦$G *#7++J$  FIELDSRECORD   3)DEPTNONlDEPTNAMECl  yK# :00000 ͩ273{ "*$'¦$G *#7++J$  FIELDSRECORD -PO-PO-QO-ùM:PM}'̓%:Q}'̓%@'͞':P2Eͳ,P+~ M++~ M#~ #ͥ' >.ͭ7#"QQ9: QO> !GGH̓%#.̓%#>, <:D}''̓%:ʑH9IK8¡H*::87¡H~7:ʡHOG::pG,¡H::DG"I*I~ʥG#ÚG6#">IzG*>I6!ͽGʑH |G02III~G #G   M 1TECHNICAL DEVELOPMENT 2OFFICE ADMINISTRATION 3TRANSPORTATION 25.50 0.00 0.00 4 2 956.35 0.00 0.00 5 2 2400.55 0.00 0.00 6 3 742.45 0.00 0.00 7 3 450.75 0.00 0.00BBBBBBB5BBBBBBBBBBBBBBBBBBBBBBB *y2I#~GI |DHO 6 .̓%́'#. .̓%́'#.:D}''̓%:#E}'̓%2#Ed)2c2D2E.ìH:d='$Z='͞'>2 EìH>!Gr<  { !![!!" :"E"Q"^"d"m""" """"""{!(zW{_{!zW{_{!zW{TO$$$ SUB  { !![!!" :"E"Q"^"d"m""" """"""{!zImH* M+" M|I:MG:M2MImH* MZ7I"M>2 M:M2MàG9-," M* M"M2 MÜG!M6#:Mw$J&"HJ" M: MHJ:M  M!Lz*M:M2M7BK?~2M*MDML!Lz*M:M-!!M͔7!!MyU767~2MñK?~2MO>-!!M͔7!M~K#øK!!M:MU76*MDM!M!Lz*M:M2 ELL>OLͳ: M2E>!Gr<6 s#r27*7###:6$:7$*7 ͩ273{ "*$'¦$G *#7++J$  FIELDSRECORD yK# :00000 ͩ273{ "*$'¦$G *#7++J$  FIELDSRECORD -PO-PO-QO-ùM:PM}'̓%:Q}'̓%@'͞':P2Eͳ,P+~ M++~ M#~ #ͥ' >.ͭ7#"QQ9: QO> !GGH̓%#.̓%#>, <:D}''̓%:ʑH9IK8¡H*::87¡H~7:ʡHOG::pG,¡H::DG"I*I~ʥG#ÚG6#">IzG*>I6!ͽGʑH |G02III~G #G  M 1TECHNICAL DEVELOPMENT 2OFFICE ADMINISTRATION 3TRANSPORTATION 25.50 0.00 0.00 4 2 956.35 0.00 0.00 5 2 2400.55 0.00 0.00 6 3 742.45 0.00 0.00 7 3 450.75 0.00 0.00BBBBBBB5BBBBBBBBBBBBBBBBBBBBBBB *y2I#~GI |DHO 6 .̓%́'#. .̓%́'#.:D}''̓%:#E}'̓%2#Ed)2c2D2E.ìH:d='$Z='͞'>2 EìH>!Gr<  { !![!!" :"E"Q"^"d"m""" """"""{!(zW{_{!zW{_{!zW{TO$$$ SUB  { !![!!" :"E"Q"^"d"m""" """"""{!zImH* M+" M|I:MG:M2MImH* MZ7I"M>2 M:M2MàG9-," M* M"M2 MÜG!M6#:Mw$J&"HJ" M: MHJ:M   Ge^M=1,L=55,W=35 Y DEPARTMENT LISTING N N 4,DEPTNO DEPT NO 25,DEPTNAME DEPARTMENT NAME  nsi(EMPNONlLASTNAMEClDEPTNONlJOBCLASSNlTAXCLASSNlGROSSSALN l      5EINSTEIN 2 22 75 1500.05 2REDFORD  7 9 4 2000.50 8ROCKNE 1 65 34 1100.50 54GORT  99 99 39 500.00 78SMITH  903 49 61 1200.75 70JONES  235436456 3000.85 22SMITH 903876321 4576.82ber to indicate" ?"the type of work this employee does), and" ?"TAXCLASS and GROSSSAL for tax deduction and gross" ?"salary information. As we shall see in the" ?"advanced DBASE TUTOR lessons, the key fields" ?"in fi #si!EMPNONlDEPTNONlTAXCODENlGROSSSALNlTAXESNlNETSALNl    ; 1 1 4 1875.52 0.00 0.00 2 1 3 1555.97 0.00 0.00 3 1 3 1125.50 0.00 0.00 4 2 2 956.35 0.00 0.00 5 2 2 950.78 0.00 0.00 6 3 2 742.45 0.00 0.00 7 3 1 450.75 0.00 0.0000 7 3 450.75 0.00 0.00BBBBBBBBBBB BBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBB   5EINSTEIN 2 22 75 1500.05 78SMITH  903 49 61 1200.75* 22SMITH  903876321 4576.82 54GORT  99 99 39 500.00 78SMITH  903 49 61 1200.75* 70JONES  235436456 3000.85 22SMITH 903876321 4576.82' TO CHECK DO CHECKC ?"? LASTNAME" STORE '? LASTNAME' TO CHECK DO CHECKC ?"There's another SMITH. Is it flagged for deletion?" ?"? *" STORE '? *' TO CHECK DO CHECKC ?"Yes, it is flagged for deletion, so we don't" 4si(EMPNONpLASTNAMECpDEPTNONpJOBCLASSNpTAXCLASSNpGROSSSALN p     o 5EINSTEIN 2 22 75 1500.05 2REDFORD  7 9 4 2000.50 8ROCKNE 1 65 34 1100.50 54GORT  99 99 39 500.00 78SMITH  903 49 61 1200.75 70JONES  235436456 3000.85 22SMITH 6 903876321 4576.82 LESSON IF LESSON = 'QUIT'  &QUIT ENDIF IF LESSON = 'I'  STORE 1 TO OK  pLOOP ENDIF STORE VAL(LESSON) TO LESSONN IF LESSONN < 1 .OR. LESSONN > 10 ?"I'm afraid you didn' |si R(EMPNONlLASTNAMEClDEPTNONlJOBCLASSNlTAXCLASSNlGROSSSALN l        o 5EINSTEIN 2 22 75 1500.05 2REDFORD  7 9 4 2000.50 8ROCKNE 1 65 34 1100.50 54GORT  99 99 39 500.00 78SMITH  903 49 61 1200.75 70JONES  235436456 3000.85 22SMITH 6 903876321 4576.82 LESSON IF LESSON = 'QUIT'  &QUIT ENDIF IF LESSON = 'I'  STORE 1 TO OK  pLOOP ENDIF STORE VAL(LESSON) TO LESSONN IF LESSONN < 1 .OR. LESSONN > 10 ?"I'm afraid you didn' |si R(EMPNONlLASTNAMEClDEPTNONlJOBCLASSNlTAXCLASSNlGROSSSALN l   E IM=1,L=55,W=40 Y EMPLOYEE MASTER PAYROLL N Y N 5,EMPNO EMP NO N 4,DEPTNO DEPT NO N 2,TAXCODE TX CD N 8,GROSSSAL GROSS SALARY Y 6,TAXES TAXES Y 8,NETSAL NET SALARY Y SE TUTOR" ?"manual, if you get involved in complex JOINS with" ?"many files, make sure that you do not violate any" ?"of the normailzation principles." ? ?"One more caution, too, when using JOIN. JOINs of" ?"larger files can take an extraordinary amount of" ?"time. If you find that run times for JOINs are" ?"bec \M=1,L=55,W=50 Y PAYROLL INPUT LISTING N Y N 5,EMPNO EMP NO N 4,DEPTNO DEPT NO N 2,TAXCODE TX CD N 8,GROSSSAL GROSS SALRAY Y 6,TAXES TAXES Y 8,NETSAL NET SALARY Y ?"a report form called EMPMFRM for you to use to" ?"generate the report." STORE 'USE EMPMAST' TO CHECK DO CHECKC STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC STORE 'REPORT FORM EMPMFRM' TO CHECK DO CHECKC WAIT ERASE ?"Now, let's issue the same three commands for the" ?"JOBHIST file using the report form JOBHFRM r    B e M=1,L=55,W=50 Y dBASE II PAYROLL REPORT N Y N 4,EMPNO EMP NO N 15,LASTNAME EMPLOYEE LAST NAME 4,DEPTNO DEPT NO N 5,JOBCLASS JOB CLASS N 5,TAXCLASS TAX CLASS N 10,GROSSSAL GROSS SALARY Y  ENDIF IF COMMAND # CHECK ?"You di1dn't enter:" ?" &CHECK" ?"Please try again."  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  SET TALK OFF ENDIF ENDDO     [  ?"time. If you find that run times for JOINs are" ?"becoming excessive, you may want to accomplish" ?"the results of a JOIN by using the UPDATE command," ?"or by writing a command procedure." ? ?"It's time to QUIT." STORE 'QUIT' TO CHECK DO C HECKC RETURN  10.15 20.20 30.25 40.30FFICE ADMINISTRATIO 3TRANSPORTATION 0 3 1 1125.50 0.00 0.00 4 2 956.35 0.00 0.00 5 2 2400.55 0.00 0.00   ܫ 2REDFORD  7 9 4 3500.50 5EINSTEIN 2 22 75 1500.05 8ROCKNE 1 65 34 1100.50 22SMITH  903876321 4576.82 54ZOG 99 99 39 525.25 70JONES  235436456 2965.85 78SMITH 5 903 49 61 1200.75 &CHECK" ?"Please try again."  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  SET TALK OFF  "LOOP ENDIF ENDIF IF ;)$EMPNONlEMPNAMECl +@     1JONES, SARAH P. 2SMART, JOHN H. 3SCHNERD, H. 4FINGERS, STEPHEN 5DUCK, D.  6TROUT, KILGORE 7SMITH, R. 75 0.00 0.00BBBBBBBBBBB BBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBB 4si(EMPNONpLASTNAMECpDEPTNONpJOBCLASSNpTAXCLASSNpGROSSSALN p     \M=1,L=55,W=40 Y EMPLOYEE NAME LISTING N N 5,EMPNO EMP NO 30,EMPNAME EMPLOYEE NAME  8 03/30/81 1 1 4 1875.52 0.00 0.00 2SCIENTIST 7 01/25/68 2 1 3 1555.97 0.00 0.00 3ENGINEER :06/20/79 3 1 3 1125.50 0.00 0.00 4CLERK TYPIST v08/14/81 4 2 2 956.35 0.00 0.00 5COPY SPECIALIST 11/28/80 5 2 2 950.78 0.00 0.00 6DRIVER Q09/21/76 6 3 2 742.45 0.00 0.00 7OFFICE ASSISTANT 05/21/82 7 ~C9EMPNONlLASTNAMEClGROSSSALN l      54ZOG 25.25 2 1500.00 70JONES -35.00 1 65 34 1100.50 22 0 0 0 9576.82 54GORT  99 99 39 500.00 70JONES  235436456 3000.85 78SMITH 903 49 61 1200.75r of system design, and each system will" ?"dictate which method should be used. The purpose" ?"of this lesson is to show you how to use SORT" ?"if you feel the circumstances warrant it." WAIT ERASE ?"Enough said.  2EMPNO@  @  ?   " @   X@ @P@A"ATApAx?   " @ @ @`     54ZOG 25.25 2 1500.00 70JONES -35.00?"Now, tell me which disk drive contains lesson &LESSON, and press the" ?" key." STORE 0 TO OK1 DO WHILE OK1 = 0 ACCEPT 'WHICH DISK DRIVE CONTAINS LESSON &LESSON?' TO TDRIVE IF !(TDRIVE) = 'QUIT'  QUIT ENDIF RESET  "STORE $(!(TDRIVE),1,1) TO TDRIVE  &IF TDRIVE >= 'A' .AND. TDRIVE <= 'P'  'IF FILE("&TDRIVE.:TEACH&LESSON..CMD")  STORE 1 TO C9EMPNONpLASTNAMECpGROSSSALN p     P 2 1500.00 54ZOG  25.25 70JONES -35.00 order by EMPNO." ? ?"Type SORT ON EMPNO TO EMPTSRT " STORE 'SORT ON EMPNO TO EMPTSRT' TO CHECK DO CHECKC ?"Now, use EMPTSRT, and display all the records on it. I'll help you if" ?"you make errors in either of the two commands to dQo this." STORE 'USE EMPTSRT' TO CHECK DO CHECKC STORE 'DISPLAY ALL' TO CHECK DO CHECKC C9EMPNONpLASTNAMECpGROSSSALN p    54ZOG 25.25 2 1500.00 70JONES -35.00?"Now, tell me which disk drive contains lesson &LESSON, and press the" ?" key." STORE 0 TO OK1 DO WHILE OK1 = 0 ACCEPT 'WHICH DISK DRIVE CONTAINS LESSON &LESSON?' TO TDRIVE IF !(TDRIVE) = 'QUIT'  QUIT ENDIF RESET  "STORE $(!(TDRIVE),1,1) TO TDRIVE  &IF TDRIVE >= 'A' .AND. TDRIVE <= 'P'  'IF FILE("&TDRIVE.:TEACH&LESSON..CMD")  STORE 1 TO C9EMPNONpLASTNAMECpGROSSSALN p     P 2 1500.00 54ZOG  25.25 70JONES -35.00 order by EMPNO." ? ?"Type SORT ON EMPNO TO EMPTSRT " STORE 'SORT ON EMPNO TO EMPTSRT' TO CHECK DO CHECKC ?"Now, use EMPTSRT, and display all the records on it. I'll help you if" ?"you make errors in either of the two commands to dQo this." STORE 'USE EMPTSRT' TO CHECK DO CHECKC STORE 'DISPLAY ALL' TO CHECK DO CHECKC  s qM=1,L=55,W=50 Y JOB HISTORY REPORT N N 5,EMPNO EMP NO 15,EMPNAME EMPLOYEE NAME 15,JOBTITLE JOB TITLE 8,STRTDATE START DATE 06/20/79 4CLERK TYPIST 608/14/81 5COPY SPECIALIST 11/28/80 6DRIVER 09/21/76 7OFFICE ASSISTANT 05/21/82BB5BBBBBBBBBBBBBBBBBBBBBBB C9"EMPNONlJOBTITLEClSTRTDATECl     { 1SUPERVISOR 05/10/79 1MANAGER  03/30/81 2SCIENTIST  01/25/68 3ENGINEER 06/20/79 4CLERK TYPIST 608/14/81 5COPY SPECIALIST 11/28/80 6DRIVER 09/21/76 7OFFICE ASSISTANT 05/21/82BB5BBBBBBBBBBBBBBBBBBBBBBB M=1,L=55,W=40 Y JOB HISTORY FILE LISTING N N 5,EMPNO EMP NO 20,JOBTITLE JOB TITLE 8,STRTDATE START DATE results of a JOIN by using the UPDATE command," ?"or by writing a command procedure." ? ?"It's time to QUIT." STORE 'QUIT' TO CHECK DO CHECKC RETURN  10.15 20.20 30.25 40.30FFICE ADMINISTRATIO 3TRANSPORTATION 0 3 1 1125.50 0.00 0.00 4 2 956.35 0.00 0.00 5 2 2400.55 0.00 0.00    m   w 1SUPERVISOR 05/10/79 1JONES, SARAH P. 1MANAGER  03/30/81 1JONES, SARAH P. 2SCIENTIST  01/25/68 2SMART, JOHN H. 3ENGINEER 06/20/79 3SCHNERD, H. 4CLERK TYPIST 08/14/81 4FINGERS, STEPHEN + 5COPY SPECIALIST 11/28/80 5DUCK, D.  6DRIVER 09/21/76 6TROUT, KILGORE  7OFFICE ASSISTA 'EMPNONțDEPTNON͛TAXCODENЛGROSSSALNқTAXESNڛNETSALNTAXCODENTAXPCTN    NT 05/21/82 7SMITH, R. CHECK" ?"If you would like to try to correct the statement, enter Y when" ?"prompted. Otherwise, enter N, and then re-enter the entire command." DO TEACHC ENDIF IF COMMAND # CHECK ?"Please enter:" ?" &CHECK "  LOOP  ELSE  STORE 1 TO OK  SET TALK ON  &COMMAND  4SET TALK OFF ENDIF ENDDO STORE ' ' TO PROMPT  ~= 1 1 4 1875.52 0.00 0.00 40.30 2 1 3 1555.97 0.00 0.00 30.25 3 1 3 1125.50 0.00 0.00 30.25 4 2 2 956.35 0.00 0.00 20.20 5 2 2 950.78 0.00 0.00 20.20 6 3 2 742.45 0.00 0.00 20.20 7 3 1 450.75  0.00 0.00 10.15  '  '    cYEEMPNONțJOBTITLEC͛STRTDATECEMPNONEMPNAMEC    JEMPNONțDEPTNON͛TAXCODENЛGROSSSALNқTAXESNڛNETSALNTAXCODENTAXPCTNEMPNONEMPNAMEC  :XCLEAR SET TALK OFF SET CONFIRM ON SET EXACT ON STORE ' ' TO PROMPT ERASE @ 6,0 ?"  dBASE II LESSONS RELEASE 2.0.1" ?" ' COPYRIGHT 1982, 1983 S. C. JENNER" ?" ALL RIGHTS RESERVED" STORE 0 TO COUNT DO WHILE COUNT < 100 STORE COUNT + 1 TO COUNT ENDDO ERASE ?"I'd like to know your name. Please enter your first name and press" ?"the key." STORE 0 TO OK DO WHILE OK = 0 ACCEPT "What's your first name?" to STUDENT IF LEN(S  vION 6 6 3 2 742.45148.49 593.96 20.20 6TROUT, KILGORE 3TRANSPORTATION 07 3 1 450.75 67.61 383.14 10.15 7SMITH, R.  3TRANSPORTATION  too, and you can" ?"compute tax and net salary amounts, and produce the payroll register." WAIT ERASE ?"Issue the commands to do all this. First, USE JOINPAY3." STORE 'USE JOINPAY3' TO CHECK DO CHECKC  < 1 1 4 1875.52 0.00 0.00 40.30 1JONES, SARAH P. 52 1 3 1555.97 0.00 0.00 30.25 2SMART, JOHN H. 3 3 1 3 1125.50 0.00 0.00 30.25 3SCHNERD, H. 74 2 2 956.35 0.00 0.00 20.20 4FINGERS, STEPHEN 0 5 2 2 950.78 0.00 0.00 20.20 5DUCK, D. 6 6 3 2 742.45 0.00 0.00 20.20 6TROUT, KILGORE 7 7 3 1 450.75 0.00 0.00 10.15 7SMITH, R. TUDENT) > 10 ?"You have a long first name. Please enter up to 10 characters of" ?"your first name or a nickname." LOOP ENDIF IF STUDENT = ' ' ?"I'm afraid you didn't enter your name. Please try again." LOOP ENDIF STORE !(STUDENT) TO STUDENT IF STUDENT = 'QUIT' QUIT ENDIF ACCEPT "Did you spell it correctly (Y OR N)?" TO SPELL STORE !(SPELL) TO SPELL IF SPELL = 'QUIT' QUIT ENDIF IF SPELL = 'Y' STORE 1 TO OK ENDIF ENDDO ERASE ?"If you have a printer, &STUDENT, turn fEMPNONpDEPTNONpTAXCODENpGROSSSALNpTAXESNpNETSALNpTAXCODENpTAXPCTNpEMPNONpEMPNAMECpDEPTNONqDEPTNAMECq   I  #  '  '  '  '  '   \< 1 1 4 1875.52562.65 1312.87 40.30 1JONES, SARAH P.  1TECHNICAL DEVELOPMENT 6 2 1 3 1555.97388.99 1166.98 30.25 2SMART, JOHN H. 1TECHNICAL DEVELOPMENT 3 3 1 3 1125.50281.37 844.13 30.25 3SCHNERD, H.  1TECHNICAL DEVELOPMENT 8 4 2 2 956.35191.27 765.08 20.20 4FINGERS, STEPHEN 2OFFICE ADMINISTRATION 0 5 2 2 950.78190.15 760.63 20.20 5DUCK, D. 2OFFICE ADMINISTRAT it on. It will keep track of" ?"all that you do during these training sessions." ? ?"If your printer is on, type Y and press the key. If it is not" ?"on, type N, and press the key." STORE 0 TO OK DO WHILE OK = 0 ACCEPT "Is y?our printer on (Y/N)?" TO PRINTER IF !(PRINTER) = 'QUIT'  @QUIT ENDIF IF !(PRINTER) = 'Y' .OR. !(PRINTER) = 'N'  STORE 1 TO OK  IF !(PRINTER) = 'Y'  SET PRINT ON  ENDIF  ELSE ?"You didn't encse construction" ?" 8 - Other forms of accepting and displaying data, dBASE II functions," ?" and SET options" ?" 9 - Building custom reports and screens" ?" 10 - Command procedures (programming features in dBASE II)" ?" QUIT - In response to any prompt, to return to the operating system" ? ACCEPT 'ENTER THE LESSON NUMBER' TO LES= 'A' .AND. TDRIVE <= 'P'  'IF FILE("&TDRIVE.:TEACH&LESSON..CMD")  STORE 1 TO OK1  LOOP  ELSE ?"I'm afraid drive &TDRIVE doesn't contain lesson &LESSON.. Please specify" ?"the correct drive, and make sure that you inserted the diskette which" ?"contains lesson &LESSON into that drive."  ENDIF  JELSE ?"The drive specification must be one of the letters A through P."  FENDIF ENDDO SET DEFAULT TO &TDRIVE ENDIF ENDDO IF LESSON = 'I' H-ter a Y or N. Please try again &STUDENT.."  LOOP ENDIF ENDDO ERASE DO WHILE T STORE 0 TO OK DO WHILE OK = 0 ?"If this is the first time you've used dBASE II LESSONS, select the" ?"I option from the menu below. This introduction contains background" ?"material on computers, operating systems, and dBASE II." ? ?"If this is not the first time you've used dBASE II LESSONS, select" ?"the appropriate lesson number (or QUIT) from the menu below." ? ?" I - Introduction, definitio XIF STORE VAL(LESSON) TO LESSONN IF LESSONN < 1 .OR. LESSONN > 10 ?"I'm afraid you didn't enter an I, or a number between 1 and 10." ?"Please try again."  WAIT  LOOP  ELSE  pSTORE 1 TO OK ENDIF ENDDO IF LESSON # 'I' IF LESSONN > 9 STORE STR(LESSONN,2) TO LESSON ELSE  STORE STR(LESSONN,1) TO LESSON ENDIF ENDIF STORE 0 TO OK DO WHILE OK = 0 IF FILE('TEACH&LESSON..CMD') STORE 1 TO OK ELSE ?"You must have received several d DO TEACHI LOOP ENDIF DO TEACH&LESSON ENDDO RETURN characters of" ?"your first name or a nickname." LOOP ENDIF IF STUDENT = ' ' ?"I'm afraid you didn't enter your name. Please try again." LOOP ENDIF STORE !(STUDENT) TO STUDENT IF STUDENT = 'QUIT' QUIT ENDIF ACCEPT "Did you spell it correctly (Y OR N)?" TO SPELL STORE !(SPELL) TO SPELL IF SPELL = 'QUIT' QUIT ENDIF IF SPELL = 'Y' STORE 1 TO OK ENDIF ENDDO ERASE ?"If you have a printer, &STUDENT, turn ns of basic computer terms (reference," ?" not interactive)" ?" 1 - Create files, generate Reports, and correct syntax errors" ?" 2 - Add, change, and delete data in files, and record positioning" ?" 3 - Selecting sub-sets of data on files, and computations" ?" 4 - Record keys, indexing, random processing, and Boolean operators" ?" 5 - File and system utilities, and intro to command procedures" ?" 6 - Sorting, updating, and use of memory" ?" 7 - Relational data batiskettes for dBASE II LESSONS. Insert" ?"the diskette which contains lesson &LESSON into another disk drive (not" ?"the one you started dBASE II on). I'll wait while you do that."  WAIT ?"Now, tell me which disk drive contains lesson &LESSON, and press the" ?" key." STORE 0 TO OK1 DO WHILE OK1 = 0 ACCEPT 'WHICH DISK DRIVE CONTAINS LESSON &LESSON?' TO TDRIVE IF !(TDRIVE) = 'QUIT'  QUIT ENDIF RESET  "STORE $(!(TDRIVE),1,1) TO TDRIVE  IF TDRIVE a SIFIELD:NAMEC pFIELD:TYPECpFIELD:LENNpFIELD:DECNp JLASTNAME@  @  @ @P@A"ATApAx?   " @   FIELD C 80 0ADDRESS C 20 0*CITY C 10 0STATE C 30 0*PHONE C 12 0BBBBBBBJBBBBBB@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"BBBBBBBBB"BBBBBBBBBBBBBBBBBBBBBBBBBBB'EINSTEIN GORT JONES REDFORD ROCKNE SMITH SMITH   " @ @ {@` XsiNAMECpADDR1CpADDR2CpADDR3CqADDR4C1qADDR5COq  ' JOHN MOTT  1773 N. GROVER CIRCLE  YUMA TEXAS  90009  USA HER  THERE YES THERE  YES YES THERE& @ SAY" ?"commands will be displayed on the top half of the" ?"screen." WAIT ERASE @ 12,0 SAY "Here I am down here." @ 13,0 SAY "The sc  20,ADDRESS#  ADDRESS% 10,CITY% CITY& |REPLACE FIELD:LEN WITH 80 REPLACE FIELD:DEC WITH 0 IF FILE("T1RDBF") DELETE FILE T1RDBF ENDIF CREATE T1RDBF FRa# QFIELDCPp  F1,L=55,W=50 Y PAYROLL REPORT N Y N 10,EMPNAME EMPLOYEE NAME 10,DEPTNAME DEPARTMENT NAME 8,GROSSSAL GROSS SALARY Y 7,TAXES TAXES Y 8,NETSAL NET SALARY Y   1TECHNICAL DEVELOPMENT 3 3 1 3 1125.50 0.00 0.00 30.25 3SCHNERD, H.  1TECHNICAL DEVELOPMENT 8 4 2 2 956.35 0.00 0.00 20.20 4FINGERS, STEPHEN 2OFFICE ADMINISTRATION 0 5 2 2 950.78 0.00 0.00 20.20 5DUCK, D. 2OFFICE ADMINISTRAT]m M=1,L=55,W=70" Y3  NAME AND ADDRESS REPORT  Y( N( 15,NAME% NAME OF PERSON M=1,L=55,W=50 Y PAYROLL REPORT N Y N 10,EMPNAME EMPLOYEE NAME 11,DEPTNAME DEPARTMENT NAME 8,GROSSSAL GROSS SALARY Y 7,TAXES TAXES Y 8,NETSAL NET SALARY Y   1TECHNICAL DEVELOPMENT 3 3 1 3 1125.50 0.00 0.00 30.25 3SCHNERD, H.  1TECHNICAL DEVELOPMENT 8 4 2 2 956.35 0.00 0.00 20.20 4FINGERS, STEPHEN 2OFFICE ADMINISTRATION 0 5 2 2 950.78 0.00 0.00 20.20 5DUCK, D. 2OFFICE ADMINISTRAT  K3)TAXCODENlTAXPCTNl ERASE ?"In this module, you will learn how to CREATE a dBASE II file, DISPLAY" ?"its contents and STRUCTURE, write a REPORT, correct SYNTAX ERRORS, and" ?"how to QUIT, or exit from dBASE II. It's very easy to do. To start, we" ?"will CREATE a file. All you have to do is type CREATE and press the" ?" key." ? ?"If you're not sure what a file is, what records are, or what fields" ?"within records are, QUIT this lesson, and review the dBASE II LESSONS" ?"Introduction. Otherwise, &STUDENT, p   10.15 20.20 30.25 40.30FFICE ADMINISTRATIO 3TRANSPORTATION 0 3 1 1125.50 0.00 0.00 4 2 956.35 0.00 0.00 5 2 2400.55 0.00 0.00 6 3 742.45 0.00 0.00 7 3 450.75 0.00 0.00BBBBBBB5BBBBBBBBBBBBBBBBBBBBBBBroceed with your CREATE." ? ?"Type CREATE ." STORE 'CREATE' TO CHECK DO CHECKC1 ERASE ?"Very good, &STUDENT!" ? ?"dBASE II will now ask you to enter a filename for this file, so it" ?"can be found later. You may call the file any name you wish, but the" ?"filename may not exceed 8 characters. Type up to an 8 character" ?"filename, and press the key." STORE 0 TO OK DO WHILE OK = 0 ACCEPT TO FILE IF !(FILE) = 'QUIT' QUIT ENDIF STORE !(FILE) TO FILE IF LEN("&FILE") > 8 M=1,L=55,W=10 Y TAX CODES N N 4,TAXCODE TAX CODE 4,TAXPCT TAX PCT AMECD AXCODENGGROSSSALNITAXESNQNETSALNW   c ?"I'm afraid you entered a filename which is greater than 8 characters." ?"Please try again." LOOP ENDIF IF FILE = ' ' ?"I'm afraid you didn't enter a file name. Please enter a name with from 1" ?"to 8 characters." LOOP ENDIF IF @(' ','&FILE') # 0 ?"Imbedded blanks are not permitted in the file name." ?"Please try again." LOOP ENDIF STORE FILE TO T:NAME DO TEACHXC IF T:NAMEOK # 1 LOOP ENDIF STORE 1 TO OK ENDDO STORE 0 TO OK ERASE ?"Now, you must specify the fields cont  STORE 4 TO COUNT  LOOP   ENDIF  )STORE @(',',$(FIELDDEF,S,L)) TO COMMAL  iIF COMMAL = 1 ?"Don't enter 2 commas in a row, or end a field with a comma. Please try" ?"it again."  STORE 1 TO PARSERR  STORE 4 TO COUNT  LOOP  ENDIF  2STORE $(FIELDDEF,S,(COMMAL - 1)) TO PARSE&COUNTX  STORE S + COMMAL TO S  STORE L - COMMAL TO L E[" ?"that contains names and addresses of some of your friends (you do" ?"have some friends, right?)." ? ?"I'm going to let you specify only three fields in your file &STUDENT," ?"even though dBASE II lets you have up to 32 fields per file. We're" ?"trying to keep this first file simple." WAIT ERASE ?"I'm going to enter the first field for you, so it's easier for you to do" ?"the rest of the fields on your own. I'm going to call the first field" ?"NAME, and make it a character type field with a STORE FIELDNO - 1 TO FNOHOLD  LOOP ENDIF STORE TRIM(FIELDDEF) TO FIELDDEF STORE LEN('&FIELDDEF') TO LENGTH STORE 1 TO S STORE LENGTH TO L STORE @(',',$(FIELDDEF,S,L)) TO COMMAL IF COMMAL = 0 ?"You didn't enter commas separating the fieldname, fieldtAype, and" ?"fieldlength specifications. Please try it again."  STORE ' ' TO FIELDDEF  LOOP! ENDIF  *tained in &FILE.. Each field" ?"specification must contain a fieldname, fieldtype (either C for" ?"character fields, N for numeric fields, or L for logical fields)," ?"fieldlength, and the number of decimal positions in the field MAY be" ?"specified if it is a numeric field. Commas separate the fieldname," ?"fieldtype, fieldlength, and decimal specifications." ? ?"A enters each field. After you have entered the last field," ?"press the key again, and the file will be CREATEd."  ~NDDO IF PARSERR = 1 STORE 0 TO PARSERR STORE ' ' TO FIELDDEF LOOP ENDIF IF (PARSE1 = ' ' .OR. PARSE2 = ' ' .OR. PARSE3 = ' ') ?"NAME, TYPE, and WIDTH must be specified. Please try it again." STORE ' ' TO FIELDDEF LOOP ENDIF STORE !(PARSE1) TO PARSE1 IF LEN(PARSE1) > 10 ?"NAME specification may not exceed 10 characters. Please try it again." STORE ' ' TO FIELDDEF LOOP ENDIF STORE !(PARSE2) TO PARSE2 IF (PARSE2 # 'C' .AND. PARSE2 # 'N' .AND. PARSE2 # 'L') ?"TYlength of 30." STORE 1 TO FIELDNO ?"ENTER RECORD STRUCTURE AS FOLLOWS:" ? ?" FIELD NAME,TYPE,WIDTH,DECIMAL PLACES" ? DO WHILE OK = 0 STORE ' ' TO FIELDDEF DO WHILE FIELDDEF = ' ' STORE STR(FIELDNO,1) TO FIELDX STORE ' ' TO FIELDDEF Y IF FIELDNO = 1 ?" 1:NAME,C,30" ?"Press the key, and I'll enter it."  SET CONSOLE OFF  WAIT  CSET CONSOLE ON ?"Now, you enter the remaining fields for &FILE."  .STORE 'NAME,C,30' TO FIELDDEF ENDIF B= = STORE 0 TO COUNT STORE FIELDDEF+',' TO FIELDDEF X STORE LEN('&FIELDDEF') TO LENGTH,L STORE ' ' TO PARSE1,PARSE2,PARSE3,PARSE4 3 STORE 0 TO PARSERR DO WHILE COUNT < 4  STORE COUNT + 1 TO COUNT  STORE STR(COUNT,1) TO COUNTX   IF L = 0  1? ?"By the way, whenever appears at the end of an entry line," ?"it means you should press the key. Don't type the word ." ? ?"Here are a couple of examples of fields. A 30 position character" ?"field called NAME would be entered as follows:" ? ?" NAME,C,30" ? ?"A 5 position numeric field called AMOUNT with 2 decimal positions would" ?"be entered as follows:" ? ?" AMOUNT,N,5,2" ? WAIT ERASE ?"OK. Try to CREATE a file. Make the file a name and address fileIF FIELDNO > 3 ?"Press the key. You've entered 3 fields, and that's enough for now," ?"even though dBASE II permits up to 32 fields."  (ACCEPT "Press the key" TO END  STORE 'END' TO FIELDDEF  STORE FIELDNO - 1 TO FNOHOLD  STORE 1 TO OK  NLOOP ENDIF IF FIELDNO # 1 ACCEPT " &FIELDX" TO FIELDDEF  IF !(FIELDDEF) = 'QUIT'  3QUIT ENDIF ENDIF IF FIELDDEF = ' '  !STORE 'END' TO FIELDDEF  PE must be either C, N, or L. Please try it again." STORE ' ' TO FIELDDEF LOOP ENDIF IF !(PARSE2) = 'L' .AND. PARSE3 # '1' ?"LOGICAL types may only have a length of 1. Please try again." STORE ' ' TO FIELDDEF LOOP ENDIF IF (VAL(PARSE3) > 99 .AND. STR(VAL(PARSE3),3) # PARSE3) .OR.; (VAL(PARSE3) > 9 .AND. VAL(PARSE3) < 100 .AND. STR(VAL(PARSE3),2) # PARSE3); .OR. (VAL(PARSE3) < 10 .AND. STR(VAL(PARSE3),1) # PARSE3) ?"Only numbers, without decimal points, may be entered in tsERASE ?"In lesson 9, &STUDENT, screen building and custom report building" ?"capabilities of dBASE II were covered. @ SAY was demonstrated, and" ?"the ZIP package functions mentioned." ? ?"Now, you are at the last lesson, lesson 10. If you thought that dBASE II" ?"has a lot of power based on what you've seen so far, this lesson should" ?"convince you that there is very little that you can't do with it." ?"Unlike much microcomputer software, dBASE II has programming features" ?"found only in rathe 2CHXC IF T:NAMEOK # 1 STORE ' ' TO FIELDDEF LOOP ENDIF STORE PARSE1 TO F&FIELDX.:NAME STORE PARSE2 TO F&FIELDX.:TYPE STORE &PARSE3 TO F&FIELDX.:LEN IF PARSE4 = ' ' STORE 0 TO F&FIELDX.:DEC ELSE STORE &PARSE4 TO F&FIELDX.:DEC ENDIF STORE FIELDNO + 1 TO FIELDNO STORE ' ' TO FIELDDEF ENDDO IF FNOHOLD = 0 ?"I'm afraid you didn't enter any fields. Please try it again." LOOP ENDIF STORE 1 TO OK ENDDO ERASE ?"Immediately following the creation of a file, dBASE II   ?"again."#  STORE ' ' TO FIELDDEF  LOOP ENDIF% ! STORE PARSE1 TO F&FIELDX.:NAME " STORE PARSE2 TO F&FIELDX.:TYPE  STORE &PARSE3 Tt" ?"again."   he" ?"length specification. Please try again." STORE ' ' TO FIELDDEF LOOP ENDIF IF PARSE4 # ' ' IF (VAL(PARSE4) > 99 .AND. STR(VAL(PARSE4),3) # PARSE4) .OR.; (VAL(PARSE4) > 9 .AND. VAL(PARSE4) < 100 .AND. STR(VAL(PARSE4),2) # PARSE4); .OR. (VAL(PARSE4) < 10 .AND. STR(VAL(PARSE4),1) # PARSE4) ?"Only numbers, without decimal points, may be entered in the" ?"decimal specification. Please try again." STORE ' ' TO FIELDDEF LOOP ENDIF ENDIF IF (&PARSE3 < 1 .OR. &PARSE3 > 254) ?"7r powerful languages." ? ?"Every command that has been demonstrated can be placed in command" ?"procedures, which are the same as source programs for other languages." WAIT ERASE ?"In addition to the commands demonstrated so far, dBASE II also has" ?"DO, IF, and macro substitution capability. With these additional" ?"commands, not only do you have full programming capability, quite" ?"literally, you can do things that you would be unable to do, or do as" ?"easily, in conventional programming langkasks:" ? ?"ENTER DATA NOW?" ? ?"To which you would reply Y if you wish to enter data into your file," ?"or N if you don't want to. The method and format for entering data" ?"using the APPEND command is identical to the ENTER DATA NOW? format." ?"We're going to use the APPEND format, so you will learn it, and the" ?"ENTER DATA NOW? format, at the same time." ? ?"I'm going to put your file definition away now in a safe place. I'll be" ?"back in a few moments." WAIT DO TEACH11 RETURN WAIT   STORE ' ' TO FIELDDEF  LOOP ENDIF% ! STORE PARSE1 TO F&FIELDX.:NAME " STORE PARSE2 TO F&FIELDX.:TYPE  STORE &PARSE3 TLDDEF LDDEF LDDEF LDDEF 0E3) < 10 .AND. STR(VAL(PARSE3),1) # PARSE3) ? Length must be between 1 and 254. Please try it again." STORE ' ' TO FIELDDEF LOOP ENDIF IF PARSE4 # ' ' IF &PARSE4 >= &PARSE3 ?"The decimal specification must be at least one position shorter" ?"than the length specification. Please try it again." STORE ' ' TO FIELDDEF LOOP ENDIF ENDIF IF PARSE2 = 'C' .AND. PARSE4 # ' ' ?"Character fields may not have a decimal specification. Please try it" ?"again." STORE ' ' TO FIELDDEF LOOP ENDIF STORE PARSE1 TO T:NAME DO TEAs$  DO TEACH11" RETURN$    WAIT%  DO TEACH11" RETURN$ t" uages." WAIT ERASE ?"I have a command procedure that contains the commands necessary to" ?"illustrate these things. It is called CLIENTLS. Do not expect to" ?"become a programmer by reviewing this command procedure. It only serves" ?"as an illustration of the programming power within dBASE II. If you do" ?"understand programming concepts, a review of this command procedure," ?"coupled with everything else learned in these lessons, may convince" ?"you that you do not have to know any other languaIIF, and macro substitution." ? ?"Type DO CLIENTLS " STORE 'DO CLIENTLS' TO CHECK DO CHECKC WAIT ERASE ?"Well, that's all &STUDENT.. Remember, as I mentioned in lesson 4, you" ?"can create command procedures by using a line editor, a word processing" ?"package, or the MODIFY COMMAND command in dBASE II." WAIT ERASE ?"Before you QUIT for the last time though, I have a confession to make." ?"I didn't mention or show you all of the dBASE II commands. There are a" ?"few more, but I'm goinl]  '  '  '    ?" NOTE an  ?" NOTE an)  ge." WAIT ERASE ?"You're going to use a file called CLIENT, which contains client names and" ?"phone numbers (work, and home). The file also contains a field that" ?"indicates whether the client prefers to be called at work or at home." ?"Take a look at the structure of the file, &STUDENT.." ? STORE 'USE CLIENT' TO CHECK DO CHECKC ? STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC WAIT ERASE ?"The command procedure, essentially, reads every record on CLIENT, and" ?"displays the client's name an g to let you find out what they do on your own." ?"The commands I haven't mentioned are: COUNT, SUM, TOTAL, CANCEL," ?"CHANGE, EJECT, ERASE, LOOP, and NOTE (but REMARK, which is used in the" ?"CLIENTLS command procedure, is similar to NOTE)." WAIT ER^ASE ?"Well, it's time to QUIT for the last time. Please enter QUIT." STORE 'QUIT' TO CHECK DO CHECKC# RETURN  anguages." ? ?"Every command that has been demonstrated can be placed in command" ?"procedures, which are the same as source programs for other languages." WAIT ERASE ?"In addition to the commands demonstrated so far, dBASE II also has" ?"DO, IF, and macro substitution capability. With these additional" ?"commands, not only do you have full programming capability, quite" ?"literally, you can do things that you would be unable to do, or do as" ?"easily, in conventional programming langhd one of the phone numbers depending on the" ?"code contained in the work/home preference field. The command procedure" ?"contains a number of REMARK commands that do nothing but display items" ?"on the screen. Ignore them to determine the program flow." WAIT ERASE ?"The command procedure does not illustrate how to call other command" ?"procedures. You've been doing it every time you started me up by typing" ?"DO LESSONS. Now, I want you to start up the command procedure that" ?"illustrates DO, A  '  '  '  '  '    SET CONSOLE OFF USE MASTE DELETE ALL PACK STORE 0 TO COUNT DO WHILE COUNT < FNOHOLD STORE COUNT + 1 TO COUNT STORE STR(COUNT,1) TO COUNTX APPEND BLANK STORE !(F&COUNTX.:NAME) TO F&COUNTX.:NAME REPLACE FIELD:NAME WITH F&COUNTX.:NAME REPLACE FIELD:TYPE WITH F&COUNTX.:TYPE REPLACE FIELD:LEN WITH F&COUNTX.:LEN REPLACE FIELD:DEC WITH F&COUNTX.:DEC ENDDO IF FILE("&FILE") USE DELETE FILE &FILE ENDIF USE CREATE &FILE FROM MASTE USE SET CONSOLE ON ERASEype QUIT " USE&  DELETE FILE &FILE  DELETE FILE &RNAME..FRM  STORE 'QUIT' TO CHECK DO CHECKC# RETURN$   0ch for this example." ? STORE 0 TO AOK DO WHILE AOK = 0 ?"Type APPEND " STORE 'APPEND' TO CHECK DO CHECKC GOTO TOP STORE 0 TO RECCOUNT DO WHILE .NOT. EOF STORE RECCOUNT + 1 TO RECCOUNT SKIP ENDDO IF RECCOUNT = 0 ?"I'm afraid you didn't enter any records onto &FILE.. When the" ?"first entry screen appears, don't press the key immediately." ?"Instead, enter data for at least one of the screens." ? LOOP ELSE STORE 1 TO AOK GOTO TOP ENDIF  I'm going to do. Otherwise," ?"you're liable to be part way into the report definition, and have to" ?"cancel it because you can't remember how to spell a fieldname." WAIT ERASE DISP STRU ? ?"Type REPORT " STORE 'REPORT' TO CHECK DO CHECKC1 RELEASE PRINTER,DRIVE,TDRIVE,LENGTH,S,L,COMMAL,PARSE1,; PARSE2,PARSE3,PARSE4,PARSERR,END,AOK,RECCOUNT DO TEACH1R WAIT ?"Before you try dBASE II on your own, there is one other thing you should" ?"be aware of. When you make an error entering a co p ?"You've created &FILE., &STUDENT, and you're ready to USE it." ? ?"Type USE &FILE " STORE 'USE &FILE' TO CHECK DO CHECKC ?"Now DISPLAY the STRUCTURE of &FILE." ? ?"Type DISPLAY STRUCTURE " STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC WAIT ERASE ?"There are several ways to add data to a file in dBASE II. You" ?"can APPEND, EDIT, or INSERT data. We're going to use the APPEND" ?"command. EDIT and INSERT work in a similar fashion, and we will use" ?"EDIT in lesson 2. For now?"You've created &FILE., &STUDENT, and you're ready to USE it." ? ?"Type USE &FILE " STORE 'USE &FILE' TO CHECK DO CHECKC ?"Now DISPLAY the STRUCTURE of &FILE." ? ?"Type DISPLAY STRUCTURE " STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC WAIT ERASE ?"There are several ways to add data to a file in dBASE II. You" ?"can APPEND, EDIT, or INSERT data. We're going to use the APPEND" ?"command. EDIT and INSERT work in a similar fashion, and we will use" ?"EDIT in lesson 2. For nowcENDDO ERASE ?"Now you have some data on your file. You may view the data on &FILE" ?"using the DISPLAY command. A single record may be displayed, or you may" ?"see all of records in the file. DISPLAY, with no qualifier, shows you" ?"the record you are currently working with. DISPLAY ALL displays all" ?"of the records in the file. We're going to display all of the records" ?"in &FILE.." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Now let's try a REPORT, &STUDENT..mmand when I'm not" ?"around, dBASE II will not tell you what your mistake was." DO TEACH1S ERASE ?"I'd like you to QUIT now, but after you have, I would like you to try" ?"dBASE II on your own." ? ?"After you've QUIT, please: 1) Start up dBASE II again and enter a date," ?"2) CREATE a file (the same one you did with me if you'd like, 3) USE" ?"the file, 4) DISPLAY it's STRUCTURE, 5) DISPLAY it's contents, 6) prepare" ?"a REPORT, and 7) QUIT dBASE II" ? ?"all without my help, &STUDENT.." ? ?"T , let's use APPEND. Type APPEND and press" ?", and the screen will be formatted to enter data in &FILE.." ?"Enter data into each field, and press to go to the next" ?"field. After you've entered several records, press before" ?"entering data in the first field of the next record. You will then come" ?"back to me, and we will continue the lesson." ? ?"Please don't enter more than 10 records into the file. dBASE II permits" ?"over 65,000 records per file, but that's too muV" WAIT ERASE ?"To generate a report, type REPORT and press the key. A file" ?"must be in USE when you do a report, but we are already USING &FILE.." ?"You will be asked for fields to be printed in the REPORT, and the fields" ?"must be within the file currently in USE. Right now, that's &FILE.. I'm" ?"going to DISPLAY the STRUCTURE of &FILE, so you use correct field names" ?"in your report. When you do a report on your own, you should DISPLAY the" ?"STRUCTURE of the file in USE, just like \ width of the field on the file. For example, if an address" ?"field is 40 characters wide on the file, you could request that it be" ?"printed in only 10 or 15 positions on the report. This automatic" ?"wraparound feature is very nice when there is limited width on your CRT" ?"or printer, and you have large width fields on your file." WAIT ERASE ?"One final caution before you start entering the width and field" ?"specifications for your report. Make sure that the sum of all the field" ?"widths VcNAME') > 8 ?"I'm afraid you entered a name with more than 8 characters. Please try" ?"again."  zLOOP ENDIF IF @(' ','&RNAME') # 0 ?"Imbedded blanks are not permitted in the REPORT name. Please try again."  QLOOP ENDIF STORE RNAME TO T:NAME DO TEACHXC IF T:NAMEOK # 1  LOOP ENDIF STORE 1 TO OK ENDDO ?"Now, dBASE II needs to know three things: 1)The print position of the left" ?"margin of the report (the M specification), 2)The number of lizTER PAGE HEADING' TO PROMPT STORE 'NAME AND ADDRESS REPORT' TO CHECK DO CHECKC1 ERASE ?"Next, dBASE II will ask if you'd like to double space your report, and" ?"if you wish to have numeric fields totaled at the end of the report." ?"Besides report totals, dBASE II permits sub-totaling on a field in your" ?"file. Let's not ask for any totals for this report (they aren't rele-" ?"vant for a name and address file), but if you'd like to try some" ?"totaling after the lesson is over, do that." ? ?"T Ldoes not exceed the width specified in the report width" ?"specification (W specification, 70 for our report). There is no auto-" ?"matic wraparound facility for this." WAIT ERASE ?"Well, let's give it a try. When prompted, enter the field print width," ?"followed by a comma, followed by the name of the field in &FILE.. Here's" ?"an example for a field called NAME which is 30 characters in width on" ?"the file, but which is to be printed within 20 characters on the report:" ?" 20,NAME" ?"Af=nes that can" ?"be contained on one page of the report (the L specification), and 3)The" ?"width of the page in characters, or the right hand margin of the report" ?"(the W specification)." ? ?"If you don't enter these specifications, dBASE II automatically chooses" ?"(by default), M=1, L=60, W=80. We're going to change these defaults," ?"and set M to 1, L to 55, and W to 70." ? ?"Type M=1,L=55,W=70 " STORE 'M=1,L=55,W=70' TO CHECK STORE 'ENTER OPTIONS, M=LEFT MARGIN, L=LINES/PAGE,W=PAGEype Y " STORE 'DOUBLE SPACE REPORT?(Y/N)' TO PROMPT STORE 'Y' TO CHECK DO CHECKC1 ? ?"Type N " STORE 'TOTALS REQUIRED?(Y/N)' TO PROMPT STORE 'N' TO CHECK DO CHECKC1 ERASE ?"Next, dBASE II will ask which fields in &FILE are to be printed on the" ?"REPORT &RNAME.. You may include one or all of the fields in &FILE in the" ?"report. For each field, you must specify the number of print positions" ?"the field will occupy on the report. The width on the report may be less" ?"than theERASE ?"Like files, dBASE II names REPORT formats. Like file names, report" ?"format names may not exceed 8 characters." ? ?"Please enter a formname for your REPORT and press the key." ? STORE 0 TO OK DO WHILE OK = 0 ACCEPT 'ENTER REPORT FORM NAME' TO RNAME STORE !(RNAME) TO RNAME IF RNAME = 'QUIT' QUIT ENDIF IF RNAME = ' ' ?"I'm afraid you didn't enter anything. Please try again." LOOP ENDIF STORE TRIM('&RNAME') TO RNAME IF LEN('&RC WIDTH' TO PROMPT DO CHECKC1 ERASE ?"You may optionally specify a page heading on the REPORT. Let's put one" ?"on it." ? ?"Type Y " STORE 'Y' TO CHECK STORE 'PAGE HEADING(Y/N)?' TO PROMPT DO CHECKC1 ?"You may now enter the heading that will appear at the top of each page" ?"of your report. dBASE II will automatically center the page heading for" ?"you. Since this is a name and address report, let's call the report" ?"just that." ? ?"Type NAME AND ADDRESS REPORT " STORE 'EN   lter each field entry, press the key, and after you have entered" ?"all of the fields to be printed, press the RETURN key again. Then you'll" ?"see your report on the display screen." WAIT STORE 0 TO ROK DO WHILE ROK = 0 DO TEACH1R1 ENDDO RETURN ort. Make sure that the sum of all the field" ?"widths does s for your report. Make sure that the sum of all the field" ?"widths does r report. Make sure that the sum of all the field" ?"widths does ur report. Make sure that the sum of _afraid you entered more than 1 comma. Please try again." LOOP ENDIF STORE $(R&RCOUNTX,COMMAN,LR) TO FHNAME STORE 0 TO RLOOP DO WHILE RLOOP < FNOHOLD   STORE RLOOP + 1 TO RLOOP  STORE STR(RLOOP,1) TO RLOOPX . IF $(R&RCOUNTX,COMMAN,LR) = F&RLOOPX.:NAME   STORE 1 TO FOUND   # ENDIF IF R&RCOUNTX = ' '  STORE 1 TO OK  LOOP ENDIF STORE TRIM(R&RCOUNTX) TO R&RCOUNTX STORE !(R&RCOUNTX) TO R&RCOUNTX STORE @(',',R&RCOUNTX) TO COMMA IF COMMA = 1 k ?"A comma cannot be the first character in a report field specification." ?"Please try again."  LOOP ENDIF# & STORE COMMA + 1 TO COMMAN  all the field" ?"widths does ort. Make sure that the sum of all the field" ?"widths does Make sure that the sum of all the field" ?"widths does . Make sure that the sum of all the field" ?"widths does our report. Make sure that the sum of all the field" ?"widths does STORE 0 TO ROK ure that the sum of all the field" ?"widths does STORE 0 TO ROK ure that the sum of all the field" ?"widths does STORE 0 TO ROK tion), 2)The number of li: STORE FNOHOLD TO RLOOP   ELSE  STORE 0 TO FOUND ENDIF# ENDDO#  IF FOUND # 1 ? ?"I'm afraid the fieldname &FHNAME does not exist on &FILE."   STO=ERASE ?"I'll enter the report specification for the NAME field for you, so you" ?"know how it's done. I'm going to use the wraparound feature and print" ?"NAME in 15 positions even though the field is 30 characters wide." ? ?"COL WIDTH,CONTENTS" STORE 1 TO RCOUNT STORE 0 TO OK STORE 0 TO FIRST DO WHILE OK = 0 IF RCOUNT = 1 ?" 1:15,NAME" ? ?"Press the key, and I'll enter it." SET CONSOLE OFF WAIT SET CONSOLE ON ENDIF STORE STR(RCOUNT,1) TO RCOUNTX M+  IF COMMA = 0 i ?"You didn't enter a comma between the width and contents specifications." ?"Please try again."   LOOP ENDIF# ~ STORE LEN(R&RCOUNTX) TO LR STORE LR - COMMA TO LR STORE @(',',$(R&RCOUNTX,COMMAN,LR)) TO COMMA2 IF COMMA2 # 0 ?"I,m  M IF RCOUNT # 1  IF FIRST = 0  sSTORE 1 TO FIRST ?"You're on your own now to enter fields and headings on your report." ?"Good luck &STUDENT.."  ENDIF IF RCOUNT > 3 ?"I believe you have entered all of the fields for the report. Please press" ?"the key to continue." WAIT STORE 1 TO OK LOOP ENDIF ACCEPT ' &RCOUNTX' TO R&RCOUNTX IF !(R&RCOUNTX) = 'QUIT'  QUIT ENDIF  ELSE   STORE '15,NAME' TO R&RCOUNTX RE 0 TO RLOOP1 " ?"Valid field name(s) is/are:"  DO WHILE RLOOP1 < FNOHOLD   STORE RLOOP1 + 1 TO RLOOP1  STORE STR(RLOOP1,1) TO RLOOPX  4STORE F&RLOOPX.:NAME TO HLDNAME ?" &HLDNAME"  ENDDO  LOOP  ELSE  1STORE $(R&RCOUNTX,1,COMMA -1) TO R&RCOUNTX.LEN  -STORE VAL(R&RCOUNTX.LEN) TO R&RCOUNTX.LENN  IF> ?"Nice ra 6 ?"Nice ra report, you can request it again, without" ?"re-entering the report specifica- tions, by referring to it's formname." ?"In our example, that's &RNAME. Let's see the report one more time." o put your report away now. dBASEII won't take as long as I" ?"do to show you your report, but I'm a little slower. I'll ?"Nice ra " heading for the &FHNAME field."  %ACCEPT 'ENTER HEADING' TO H&RCOUNTX  IF !(H&RCOUNTX) = 'QUIT'  QUIT  ENDIF  ENDIF ENDIF STORE RCOUNT + 1 TO RCOUNT ENDDO STORE 0 TO TOTLEN STORE 1 TO COUNT DO WHILE COUNT < RCOUNT STORE STR(COUNT,1) TO COUNTX STORE R&COUNTX.LENN + TOTLEN TO TOTLEN STORE COUNT + 1 TO COUNT ENDDO IF TOTLEN > 70 ?Q"I'm afraid the sum of the print field widths is greater than 70 (for" ?"this re^OPY TO &RNAME..FRM SDF USE &FILE REPORT FORM &RNAME ?"Nice report, &STUDENT!" WAIT ERASE ?"Once you've created a report, you can request it again, without" ?"re-entering the report specifications, by referring to it's formname." ?"In our example, that's &RNAME.. Let's see the report one more time." ? ?"Type REPORT FORM &RNAME " STORE 'REPORT FORM &RNAME' TO CHECK DO CHECKC1 REPORT FORM &RNAME WAIT ERASE ?"By adding the phrase TO PRINT to the report request, you can direct the" ?"reg{ R&RCOUNTX.LENN > 99  (STORE STR(R&RCOUNTX.LENN,3) TO RLENGTH  ELSE  IF R&RCOUNTX.LENN > 9  (STORE STR(R&RCOUNTX.LENN,2) TO RLENGTH  ELSE  (STORE STR(R&RCOUNTX.LENN,1) TO RLENGTH  ENDIF  ENDIF  NIF RLENGTH # R&RCOUNTX.LEN ?"The width must be numeric. Please try again."  LOOP  ENDIF  IF R&RCOUNTX.LENN < 1  / ?"Nice ra 6 ?"Nice ra report, you can request it again, without" ?"re-entering the report specifica- tions, by referring to it's formname." ?"In our example, that's &RNAME. Let's see the report one more time." o put your report away now. dBASEII won't take as long as I" ?"do to show you your report, but fI'm a little slower. I'll o put your report away now. dBASEII won't take as long as I" ?"do to shoport, we set the report width to 70). You'll have to enter them" ?"again." WAIT RETURN ENDIF ?"I've got to put your report away now. dBASE II won't take as long as I" ?"do to show you your report, but I'm a little slower. I'll be back in a" ?"few moments." WAIT USE MASTE DELETE ALL PACK APPEND BLANK REPLACE FIELD:NAME WITH 'FIELD' REPLACE FIELD:TYPE WITH 'C' REPLACE FIELD:LEN WITH 80 REPLACE FIELD:DEC WITH 0 IF FILE("T1RDBF") DELETE FILE T1RDBF ENDIF CREATE T1RDBF FRport to the printer, and it will appear on the CRT and the printer." ?"In our example, the command would be: REPORT FORM &RNAME TO PRINT." STORE 1 TO ROK RETURN$  '  e ra ?"Nice raE  ?"Nice raME ?"Nice ra ˵a .OR. R&RCOUNTX.LENN > 254 ?"The width must be a number between 1 and 254. Please try again."  LOOP  ENDIF  IF RCOUNT = 1 ?"I'll enter the heading for the NAME field for you." ?"ENTER HEADING: NAME OF PERSON." ? ?"Please press the key."  %STORE 'NAME OF PERSON' TO H&RCOUNTX  SET CONSOLE OFF  WAIT  SET CONSOLE ON  ENDIF  ,IF RCOUNT # 1 ?"Now enter the report column;OM MASTE USE T1RDBF APPEND BLANK REPLACE FIELD WITH 'M=1,L=55,W=70' APPEND BLANK REPLACE FIELD WITH 'Y' APPEND BLANK REPLACE FIELD WITH ' NAME AND ADDRESS REPORT' APPEND BLANK REPLACE FIELD WITH 'Y' APPEND BLANK REPLACE FIELD WITH 'N' STORE 0 TO FRCOUNT DO WHILE FRCOUNT < RCOUNT - 1 STORE FRCOUNT + 1 TO FRCOUNT STORE STR(FRCOUNT,1) TO FRCOUNTX APPEND BLANK REPLACEU FIELD WITH R&FRCOUNTX APPEND BLANK REPLACE FIELD WITH H&FRCOUNTX ENDDO C  V [w you your report, but I'm a little slower. I'll STORE STR(FRCOUNT,1) TO FRCOUNTX  APPEND BLANK % REPLACE FIELD WITH R&FRCOUNTX  APPEND BLANK - STORE STR(FRCOUNT,1) TO FRCOUNTX  APPEND BLANK or is the cause of a SYNTAX ERROR message, so" ?"be very careful how you spell things. Some other frequent causes of" ?"errors are field names being used when they do not exist on the file" ?"being USEd, and attempting to USE a file which is not on the disk drive" ?"that dBASE II programs are on. For example, if dBASE II was initiated on" ?"drive B:, and &FILE is on drive A:, we would have had to enter USE" ?"A:&FILE in our example above." WAIT ERASE ?"One final thing for this lesson. To leave dB n command have to be changed. For" ?"you, it's the letters ES." ? ?"Type ES " STORE 'ES' TO CHECK STORE 'CHANGE FROM' TO PROMPT DO CHECKC1 WAIT ERASE ?"Then dBASE II will display the message CHANGE TO: For us, ES has to be" ?"changed to SE." ? ?"Type SE " STORE 'SE' TO CHECK STORE 'CHANGE TO' TO PROMPT DO CHECKC1 WAIT ERASE ?"Then, dBASE II will display the corrected command, like this:" ? ?"USE &FILE" ? ?"Then dBASE II will ask if any more corrections are desired. We h ҅ % REPLACE FIELD WITH R&FRCOUNTX  APPEND BLANK COUNT + 1 TO RCOUNT ENDDO STORE 0 TO TOTLEN STORE 1 TO COUNT DO WHILE COUNT < RCOUNT STORE STR(COUNT,1) TO COUNTX STORE R&COUNTX.LENN + TOTLEN TO TOTLEN STORE COUNT + 1 TO COUNT ENDDO IF TOTLEN > 70 ?"I'm afraid the sum of t9he print field widths is greater than 70 (for" ?"this reQASE II, and return to the" ?"operating system, the QUIT command is used." WAIT% ERASE% RETURN$   ~ is displayed. A period (.) will" ?"then be displayed, and the command can be re-entered in it's entirety." ? ?"General1WAIT ERASE ?"Instead, an error message similar to the one below will appear." ? ?" *** SYNTAX ERROR ***" ?" ?" ?" command" ? ?"CORRECT AND RETRY?(Y/N)" ? ?"You then have the opportunity to correct the command if you wish." ?"Try this example. Let's say that you misspell USE when you wish to USE" ?"&FILE.. Instead of entering USE &FILE, you enter UES &FILE.." ? ?"Type UES &FILE " STORE 'UES &FILE' TO CHECK DO CHECKC1 ?"*** SYNTAX ERROR ***" ?" ?" ?" &COMMANave no" ?"more to make, since the command is OK now, so you should enter N." ? ?"Type N " STORE 'N' TO CHECK STORE 'MORE CORRECTIONS' TO PROMPT DO CHECKC1 WAIT ERASE ?"Sometimes, it's easier to re-enter the entire command, rather than go" ?"through the CHANGE FROM, CHANGE TO procedure. To do this, respond N" ?"when the CORRECT AND RETRY (Y/N) message is displayed. A period (.) will" ?"then be displayed, and the command can be re-entered in it's entirety." ? ?"Generally, a spelling err sD" ?"CORRECT AND RETRY? (Y/N)" WAIT ERASE ?"If you enter a Y, some messages will appear that are shown to give you" ?"the opportunity to change characters within the command. In our case," ?"we want to change the letters ES to SE, so USE is spelled properly." ?"Give it a try, &STUDENT.." ? ?"Type Y " STORE 'Y' TO CHECK STORE 'CORRECT AND RETRY (Y/N)?' TO PROMPT DO CHECKC1 ?"Now, dBASE II will display the message CHANGE FROM:. At this point, it" ?"wants to know which characters in the "Type GOTO BOTTOM " STORE 'GOTO BOTTOM' TO CHECK DO CHECKC ?"Now, type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"Now let's DELETE the last record." ? ?"Type DELETE " STORE 'DELETE' TO CHECK DO CHECKC WAIT ERASE ?"Now, let's DISPLAY ALL the records on &FILE.." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Notice the * in the first position of the last record. That means it's" ?"flagged for deletion. Any record flagged for deletion wile names and addresses of some of my" ?"friends." ? ?"You can name the file. Remember, the name cannot exceed 8 characters." STORE 0 TO OK DO WHILE OK = 0 ? ACCEPT "Enter the filename" TO FILE STORE !(FILE) TO FILE IF FILE = 'QUIT' QUIT ENDIF IF LEN("&FILE") > 8 ?"Filename cannot exceed 8 characters. Please try again." LOOP ENDIF IF FILE = ' ' ?"You didn't enter a filename. Please try again." LOOP ENDIF IF @(' ','&FILE') # 0 ?"Imfield" ?"in a record. When you press the key while positioned at the" ?"the last field in a record, dBASE II will position you at the first" ?"field of the next record. You may then EDIT that record, or press" ?"the CONTROL (ctrl) and W keys at the same time to discontinue the" ?"EDIT." ? ?"NOTE: There are a number of ctrl functions to position the cursor while" ?"in EDIT (or BROWSE, APPEND, MODIFY, and other full screen commands)." ?"The dBASE II reference card which is packaged with d l be" ?"physically deleted from the file when a PACK command is executed. Let's" ?"get rid of that last record." WAIT ERASE ?"Type PACK ." STORE 'PACK' TO CHECK DO CHECKC ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Notice the last record is no longer there. You can do that to any" ?"record with the DELETE command." WAIT ERASE ?"You can RECALL records flagged for deletion, &STUDENT, with the RECALL" ?"command. Let's try it. First, you will have to DELETEbedded blanks are not permitted in the filename. Please try again." LOOP ENDIF STORE FILE TO T:NAME DO TEACHXC IF T:NAMEOK # 1 LOOP ENDIF STORE 1 TO OK ENDDO USE TUTNABK COPY TO &FILE WAIT ERASE ?"You can now start USEing &FILE.. Remember the format of the USE command?" ?"In case you don't, I'll refresh your memory. Format of the USE command is:" ? ?" USE filename" ? ?"In this case, the command is USE &FILE.." ? ?"Type USE &FILE " STOREBASE II LESSONS" ?"contains a diagram and explanation of all keys, and their functions." ?"Please look at that section of the reference card now." WAIT ERASE ?"Type EDIT 1 " STORE 'EDIT 1' TO CHECK DO CHECKC ERASE ?"Let's DISPLAY the data in &FILE now, so you can see it with the" ?"changes you made." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC DO TEACH2R ERASE ?"To look at the last record, use the GOTO command followed by the" ?"the DISPLAY command." ? ?3ERASE ?"In lesson 1, you learned how to CREATE a file, APPEND data to it, DISPLAY" ?"its STRUCTURE and contents, generate a REPORT, correct syntax errors," ?"and QUIT dBASE II." ? ?"In this second lesson, you will learn how to EDIT data in a file, DELETE" ?"records from a file, RECALL records which have been deleted, REPLACE" ?"the contents of fields, and also, how to position yourself in a file by" ?"using GO and SKIP commands. For this lesson, we'll use a name and" ?"address file that contains th 'USE &FILE' TO CHECK DO CHECKC WAIT ERASE ?"Now, see what the structure of &FILE is." ? ?"Type DISPLAY STRUCTURE " STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC ?"Now, DISPLAY ALL the records in &FILE.." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Let's EDIT some records, to change the contents of some fields" ?"within the records. We'll start with record 1, but you may EDIT" ?"more records by pressing the key after editing the last ` E+ a record, then" ?"do a DISPLAY to see that it was flagged for deleteion, then, RECALL it." ?"Do a final DISPLAY to see that it is no longer flagged for deletion." ? ?"Type DELETE " STORE 'DELETE' TO CHECK DO CHECKC DO TEACH21" RETURN$ CHECK DO CHECKC #A  '  '  '  '  '  '  zcord."  WAIT TRUCTURE " STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC ?"Now, DISPLAY ALL the records in &FILE.." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Let's EDIT some records, to change the contents of some fields" ?"within the records. We'll start with record 1, but you may EDIT" ?"more records by pressing the key after editing the last  1' TO CHECK DO CHECKC ?"Now, DISPLAY the first record, &STUDENT.." ? ?"Type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"And that's it for lesson 2. After you QUIT this time, get back into" ?"dBASE II and practice with EDIT (and INSERT and BROWSE, which are other" ?"commands for data editing), DELETE, RECALL, REPLACE, GOTO, and SKIP." ?"I'm going to go away now." USE DELETE FILE &FILE ? ?"Type QUIT " STORE 'QUIT' TO CHECK DO CHECKC RETURN   DO TEACH21" RETURN$  SE% 7 ?"Now, let's look at the last record. The GOTO coSE% 7 ?"Now, let's look at the last record. The GOTO coSE  uG '  '  '  '  '  '   7A  '  '  '  '  '    DS ?"Now, let's look at the last record. The GOTO cole when a PACK command is executed. Let's" ?"get rid of that last record."  WAIT R le when a PACK command is executed. Let's" ?"get rid of that last record."  WAIT L le when a PACK command is executed. Let's" ?"get rid of that last reto the second record." ? ?"Type GOTO TOP " STORE 'GOTO TOP' TO CHECK DO CHECKC ? ?"Now, type SKIP " STORE 'SKIP' TO CHECK DO CHECKC ? ?"Now, type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"That's what record 2 looks like. You can also SKIP backwards any number" ?"of records by preceding the number of records to be SKIPped with a" ?"minus (-) sign." WAIT ERASE ?"Let's go back 1 record to the first record in the file." ? ?"Type SKIP - 1 " STORE 'SKIP - E+ a record, then" ?"do a DISPLAY to see that it was flagged for deleteion, then, RECALL it." ?"Do a final DISPLAY to see that it is no longer flagged for deletion." ? ?"Type DELETE " STORE 'DELETE' TO CHECK DO CHECKC DO TEACH21" RETURN$ CHECK DO CHECKC  1' TO CHECK DO CHECKC ?"Now, DISPLAY the first record, &STUDENT.." ? ?"Type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"And that's it for lesson 2. After you QUIT this time, get back into" ?"dBASE II and practice with EDIT (and INSERT and BROWSE, which are other" ?"commands for data editing), DELETE, RECALL, REPLACE, GOTO, and SKIP." ?"I'm going to go away now." USE DELETE FILE &FILE ? ?"Type QUIT " STORE 'QUIT' TO CHECK DO CHECKC RETURN   DO TEACH21" RETURN$  SE% 7 ?"Now, let's look at the last record. The GOTO coSE% 7 ?"Now, let's look at the last record. The GOTO coSE  uG '  '  '  '  '  '   |?"Now, let's see if the record is flagged for deletion." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"The record is flagged for deletion. Let's get it back." WAIT ERASE ?"Type RECALL " STORE 'RECALL' TO CHECK DO CHECKC ? ?"Now, type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Only one more thing in this lesson. You can SKIP forward and backward" ?"in a dBASE II file. Let's GOTO the first record in &FILE, and then" ?"SKIP 7A  '  '  '  '  '    DS ?"Now, let's look at the last record. The GOTO cole when a PACK command is executed. Let's" ?"get rid of that last record."  WAIT R le when a PACK command is executed. Let's" ?"get rid of that last record."  WAIT L le when a PACK command is executed. Let's" ?"get rid of that last reto the second record." ? ?"Type GOTO TOP " STORE 'GOTO TOP' TO CHECK DO CHECKC ? ?"Now, type SKIP " STORE 'SKIP' TO CHECK DO CHECKC ? ?"Now, type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"That's what record 2 looks like. You can also SKIP backwards any number" ?"of records by preceding the number of records to be SKIPped with a" ?"minus (-) sign." WAIT ERASE ?"Let's go back 1 record to the first record in the file." ? ?"Type SKIP - 1 " STORE 'SKIP - "PU    C  C  $  '  '  '    <-    C  C  +}to the second record." ? ?"Type GOTO TOP " STORE 'GOTO TOP' TO CHECK DO CHECKC ? ?"Now, type SKIP " STORE 'SKIP' TO CHECK DO CHECKC ? ?"Now, type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"That's what record 2 looks like. You can also SKIP backwards any number" ?"of records by preceding the number of records to be SKIPped with a" ?"minus (-) sign." WAIT ERASE ?"Let's go back 1 record to the first record in the file." ? ?"Type SKIP -1 " STORE 'SKIP -1E  '  '  '  '  '  '   ' TO CHECK DO CHECKC ?"Now, DISPLAY the first record, &STUDENT.." ? ?"Type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ?"And that's it for lesson 2. After you QUIT this time, get back into" ?"dBASE II and practice with EDIT (and INSERT and BROWSE, which are other" ?"commands for data editing), DELETE, RECALL, REPLACE, GOTO, and SKIP." ?"I'm going to go away now." USE DELETE FILE &FILE ? ?"Type QUIT " STORE 'QUIT' TO CHECK DO CHECKC RETURN NE '  '  '  '  '  '   |?"Now, let's see if the record is flagged for deletion." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"The record is flagged for deletion. Let's get it back." WAIT ERASE ?"Type RECALL " STORE 'RECALL' TO CHECK DO CHECKC ? ?"Now, type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Only one more thing in this lesson. You can SKIP forward and backward" ?"in a dBASE II file. Let's GOTO the first record in &FILE, and then" ?"SKIP A  '  '  '  '  '    WAIT ERASE ?"There's another way to change data in fields besides the EDIT command." ?"Unlike EDIT, the REPLACE command does not build a screen for you. It" ?"changes the field specified in the REPLACE command. I've positioned" ?"&FILE to the first record. Let's see what it contains, &STUDENT.." GOTO TOP ? ?"Type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC WAIT ERASE ?"Let's REPLACE the field NAME with your name, &STUDENT.. To do that" ?"type:" ? ?" REPLACE NAME WITH '&STUDENT' E 1 TO OK ENDDO WAIT SET CONSOLE OFF USE TUTNABK COPY TO &FILE SET CONSOLE ON ERASE ?"First, tell dBASE II to USE &FILE.." ? ?"Type USE &FILE " STORE 'USE &FILE' TO CHECK DO CHECKC ?"Now DISPLAY the first 3 records in &FILE.." ? ?"Type DISPLAY NEXT 3 " STORE 'DISPLAY NEXT 3' TO CHECK DO CHECKC ?"Now let's DELETE the first 4 records in &FILE.. GOTO the TOP of" ?"&FILE.." ? ?"Type GOTO TOP " STORE 'GOTO TOP' TO CHECK DO CHECKC ? ?"Now, type DELETE NEXT 4 " ? ?"Notice the quotes around &STUDENT.. Since NAME is a character field," ?"quotation marks are necessary. Quotes are not required for numeric" ?"fields, however. Let's give it a try." STORE 0 TO OK DO WHILE OK = 0 ? ?"Type REPLACE NAME WITH '&STUDENT' " STORE "REPLACE NAME WITH '&STUDENT'" TO CHECK DO CHECKC ?"Now, let's DISPLAY the record to see the change." ? ?"Type DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC  N>" STORE 'DELETE NEXT 4' TO CHECK DO CHECKC WAIT ERASE ?"Now let's DISPLAY ALL of the records again." ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Notice that the first 4 records are flagged for deletion." WAIT ERASE ?"To 'unflag' them you can RECALL ALL, or RECALL NEXT 4 (only after you" ?"GOTO TOP). RECALL ALL." ? ?"Type RECALL ALL " STORE 'RECALL ALL' TO CHECK DO CHECKC ? ?"Now, type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?ERASE ?"In lesson 2, you learned how to edit data in files using the EDIT," ?"DELETE, RECALL, and REPLACE commands. You also learned how to" ?"position the dBASE II record pointer using the GOTO and SKIP" ?"commands." ? ?"In lesson 3, we're going to learn about 'scope' and 'for' specifications" ?"in dBASE II. 'Scope' is used to tell dBASE II whether the current," ?"next n, or all records within a file are to be considered in the" ?"execution of a command. 'For' specifies which groups or sets of" fename " to FILE STORE !(FILE) TO FILE IF FILE = 'QUIT' QUIT ENDIF IF LEN("&FILE") > 8 ?"Filename may not exceed 8 characters. Please try again." LOOP ENDIF IF FILE = ' ' ?"You didn't enter a filename. Please try again." LOOP ENDIF IF @(' ','&FILE') # 0 ?"Imbedded blanks are not permitted in the filename. Please try again." LOOP ENDIF STORE FILE TO T:NAME DO TEACHXC IF T:NAMEOK # 1 LOOP ENDIF STOR    WAIT% RETURN$  ' ich are other" ?"commands for data editing), DELETE, RECALL, REPLACE, GOTO, and SKIP." ?"I'm going to go away now." USE DELETE FILE &FILE ? ?"Type QUIT " STORE 'QUIT' TO CHECK DO CHECKC RETURN  ?"records are to be considered in the execution of a command. 'Scope'," ?"and 'for' can be used individually, or in the same command with each" ?"other." ? ?"You'll recall in lesson 2 that we used the command DISPLAY ALL to" ?"display all of the records in a file. ALL is a 'scope' qualifier. Had" ?"we just said DISPLAY, only the current record in the file would have" ?"been displayed. With ALL, everyone of the records in the file were" ?"displayed." ? WAIT ERASE ?"'Scope' has 3 possibilities }0"The first 4 records have been RECALLed." WAIT% ERASE% DO TEACH3F" RETURN$  '   |0 REPLACE ALL NETSALARY WITH 0 REPORT FORM COMPUTE ?"Notice that the TAXES and NET SALARY fields contain zeroes. You're going" ?"to perform some computations to place amounts in these fields." WAIT ERASE ?"Using the REPLACE command, we're going to compute TAXES by multiplying the" ?"SALCLASS field by .06, and then multiplying the MONTHSAL field by that" ?"product. The * in the REPLACE command indicates multiplication." ? ?"Type REPLACE ALL TAXES WITH ((SALCLASS * .06) * MONTHSAL) " STOG nd. 'Scope'," ?"and 'for' can be used individually, or in the same command with each" ?"other." ? ?"You'll recall in lesson 2 that we used the command DISPLAY ALL to" ?"display all of the records in a file. ALL is a 'scope' qualifier. Had" ?"we just said DISPLAY, only the current record in the file would have" ?"been displayed. With ALL, everyone of the records in the file were" ?"displayed." ? WAIT ERASE ?"'Scope' has 3 possibilitiesWAIT ERASE ?"Everything you have learned so far is nice, but what's a computer" ?"without computations? dBASE II can compute very well. It can add," ?"subtract, multiply, and divide. I've made a file to illustrate how" ?"computations work in dBASE II. Please be aware, however, that " ?"computations are not limited to the contents of files. Computations" ?"can be performed on memory variables, they can be performed right" ?"on the screen, and can be used within expressions (you'll learn" ?"what #A  '  '  '  '  '  '  RE 'REPLACE ALL TAXES WITH ((SALCLASS * .06) * MONTHSAL)' TO CHECK DO CHECKC ? ?"Now, you're going to compute NETSALARY by subtracting TAXES from MONTHSAL." ? ?"Type REPLACE ALL NETSALARY WITH MONTHSAL - TAXES " STORE 'REPLACE ALL NETSALARY WITH MONTHSAL - TAXES' TO CHECK DO CHECKC ? ?"Finally, you're going to compute YTDSALARY (year-to-date salary) by" ?"adding NETSALARY to YTDSALARY." ? ?"Type REPLACE ALL YTDSALARY WITH YTDSALARY + NETSALARY " STORE 'REPLACE ALL YTDSALARY WIall of these things are in future lessons). For now though, we'll" ?"see how can they can be used with the things you've learned." ? ?"I've CREATEd a file called COMPUTE, which contains payroll information" ?"for some of the people in the White House." WAIT ERASE ?"This is what the structure of the file looks like." USE COMPUTE DISP STRU ?"I also created a report to print the file, and show some totals of the" ?"information. I'll print the report for you." WAIT TO WAITM REPLACE ALL TAXES WITH G '  '  '  '  '  &     . sTH YTDSALARY + NETSALARY' TO CHECK DO CHECKC WAIT ERASE ?"Now, &STUDENT, print the report with the computed fields in the file." ? ?"Type REPORT FORM COMPUTE " STORE 'REPORT FORM COMPUTE' TO CHECK DO CHECKC ? ?"The only computation facilWity you didn't use was divide. A '/' is used to" ?"perform that operation.?" RETURN$  '   ERASE ?"As I mentioned earlier, the 'for' clause is used to specify groups or" ?"sets of records, and may be used by itself or in conjunction with a" ?"'scope' specification. &FILE has a field called NAME in it. We can" ?"use it to demonstrate the 'for' clause. NAME is a character field, but" ?"numeric and logical fields can be used in a similar fashion." GOTO TOP STORE NAME TO F1 STORE TRIM(F1) TO F1 ?"The field NAME in record 1 of &FILE contains:" ? ?" &F1" WAIT ERASE ?"Now, try a 'for aU  '  '  '  '  '     - date sa KA!  '  '  '  '  '   r' clause with a DISPLAY ALL. You will display all" ?"records, but only if NAME is equal to &F1.." STORE '=' TO OP DO TEACH3F1 WAIT ERASE ?"To DISPLAY ALL if NAME is not equal to &F1," ?"the command changes slightly." STORE '#' TO OP DO TEACH3F1 WAIT ERASE ?"And, to DISPLAY ALL if NAME is less than &F1," ?"the command changes slightly again." STORE '<' TO OP DO TEACH3F1 WAIT ERASE ?"The 'scope' specification could be NEXT n, rather than ALL. Besides" ?"equal to (=), not equal to (#), andlary) by adding NETSALARY to YTDSALARY. The" ?"command to do that looks like this: REPLACE ALL YTDSALARY WITH YTDSALARY" ?"+ NETSALARY The + indicates addition. Now, I'll do all that, an- date salary) by adding NETSALARY to YTDSALARY. The" ?"command to do that looks like this: REPLACE ALL YTDSALARY WITH YTDSALARY" ?"+ NETSALARY The + indicates addition. Now, I'll do all that, an ry variables, they can be performed right" ?"on the screen, and can be used within expressions (you'll learn" ?"what  A  '  '  '  '  '    0^b less than (<), the 'for' clause" ?"can contain the following operators:" ? ?" greater than - >" ? ?" greater than or equal to - >=" ? ?" less than or equal to - <= or" ? ?" substring equal to - $" ? DO TEACH3C WAIT ERASE ?"Well, that's it for 'scope', 'for', and computations. After you QUIT" ?"this time, try some 'scope' and 'for' exercises on your own. Do some" ?"computations if you'd like to." WAIT ERASE ?"You can use 'scope' and 'for' with the fola I ?"Well, that's it for 'scope', 'for', and computations. After you QUIT"  WAIT% ERASE% I ?"Well, that's it for 'scope', 'for', and computations. After you QUIT"  WAIT% ERASE }/permitted. This applies to the REPORT command" ?"only."$  WAIT% " ?"use it to demonstrate the 'for' clause. NAME is a character field, but" ?"numeric and logical fields can be used in a similar fashion." GOTO TOP STORE NAME TO F1 STORE TRIM(F1) TO F1 ?"The field NAME in record 1 of &FILE contains:" ? ?" & &F1" WAIT ERASE ?"Now, try a 'forlowing commands:" ?" CHANGE" ?" COPY" ?" COUNT" ?" *DELETE" ?" *DISPLAY" ?" LOCATE" ?" *REPLACE" ?" *RECALL" ?" *REPORT" ?" SUM and" ?" TOTAL" ? ?"An asterisk (*) precedes the commands we have covered so far." WAIT ERASE ?"The only restriction for use of 'scope' and 'for' applies to the" ?"REPORT command. ALL is assumed as scope, NEXT n may be specified, and" ?"current record is not permitted. This applies to the REPORT command" ?"only." WAIT ERASE USE DELETE  I ?"Well, that's it for 'scope', 'for', and computations. After you QUIT"  WAIT% ERASE% I ?"Well, that's it for 'scope', 'for', and computations. After you QUIT"  ?'  ?" greater than or eq  FILE &FILE ?"And that's the end of lesson 3. QUIT, and I'll return you to the operating" ?"system." ? ?"Type QUIT " STORE 'QUIT' TO CHECK DO CHECKC# RETURN$  '  WAIT% ERASE ual to - =>" ? ?" less than or equal to - =< or" ? ?" substring equal to - $" ? ?"If you're not familiar with substring pr  ?' ?" greater than or equal to - =>" ? ?" less than or equal to - =< or" ? ?" substring equal to - $" ? ?"If you're not familiar with substring prssumed as scope, NEXT n may be specified, and" ?"current record is not  Pg?"Here's how you tell dBASE II to do that." ? ?"Type DISPLAY ALL FOR NAME &OP '&F1' " STORE "DISPLAY ALL FOR NAME &OP '&F1'" TO CHECK DO CHECKC# RETURN$ ARY (year-to-date salary) by" ?"adding NETSALARY to YTDSALARY." ? ?"Type REPLACE ALL YTDSALARY WITH YTDSALARY + NETSALARY " STORE 'REPLACE ALL YTDSALARY WI DO CHECKC ?"The file EMPNOIND now contains key information for all records in the" ?"file EMPMAST. If we USE EMPMAST in conjunction with its INDEX file" ?"EMPNOIND, it will appear that all of the records on EMPMAST are in" ?"order by employee number." WAIT ERASE ?"Type USE EMPMAST INDEX EMPNOIND " STORE 'USE EMPMAST INDEX EMPNOIND' TO CHECK DO CHECKC ? ?"Now, type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ? ?"Notice &STUDENT, that the records are in sequence by e and GROSSSAL for tax deduction and gross salary" ?"information. As we shall see in future dBASE II LESSONS, the" ?"key fields in files can be used to JOIN files into complete data bases." WAIT ERASE ?"I just happen to have a file like the one I just described. I've called" ?"the file EMPMAST (EMPloyee MASTer). Please issue the command to use it." ? STORE 'USE EMPMAST' TO CHECK DO CHECKC ?"Now, display its structure." ? STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC WAIT ERASE ?"Now, I'd lik mployee number." ? ?"Now, let's try to FIND a record. You may specify any employee number" ?"that exists on EMPMAST. You pick the number." ? ?"Type FIND n, where n is an employee number, and press " STORE 0 TO OK DO WHILE OK = 0 ACCE+PT TO COMMAND IF !(COMMAND) = 'QUIT'  QUIT! 1 ENDIF IF $(!(COMMAND),1,5) # 'FIND ' * ?"FIND followed by a blank, must be theERASE ?"In lesson 3, &STUDENT, you learned how to use scope and for clauses," ?"and how to perform computations in dBASE II. In lesson 4, you're" ?"going to see how files can be placed in order, and how data on files" ?"can be located randomly. Record keys and indices are used to" ?"accomplish these tasks." SET CONSOLE OFF DELETE FILE EMPMAST DELETE FILE EMPNOIND DELETE FILE NAMEIND.NDX USE EMPBAK COPY TO EMPMAST SET CONSOLE ON WAIT ERASE ?"First, what is a key, or more properlyUe you to display all of the records on EMPMAST." ? STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Very good &STUDENT.." ? ?"Notice that the records are not in order by the employee number (EMPNO)." WAIT ERASE ?"There are two ways to put the records in order by employee number" ?"(EMPNO). You can INDEX the records, or you can SORT them. You'll SORT" ?"in a future lesson. Right now, you're going to INDEX them." ? ?"Type INDEX ON EMPNO TO EMPNOIND " STORE 'INDEX ON EMPNO TO EMPNOIND' TO CHECK  a key field? A key is a data" ?"item which uniquely identifies a record on a file. It, therefore, can be" ?"used to FIND a record, without having to scan through every record on" ?"the file. A typical example is a company payroll file, which has a key" ?"field EMPNO (employee number). Other information on the file might be" ?"LASTNAME (the employee's last name), DEPTNO (department number), JOBCLASS" ?"(a job classification number to indicate the type of work this employee" ?"does), and TAXCLASS [@ first 5 characters in the command." ?" Please try again."   LOOP!   ELSE  &COMMAND  SIF # = 0 ?"I'm afraid that employee number does not exist. Please try it again."  LOOP  ELSE  STORE 1 TO OK  SENDIF ENDIF ENDDO ? ?"Now, DISPLAY the record." STORE 'DISPLAY' TO CHECK  RN>" STORE 'DISPLAY' TO CHECK DO CHECKC ?"There's the first SMITH record." ? ?"Now, SKIP " STORE 'SKIP' TO CHECK DO CHECKC ?"Now, DISPLAY " STORE 'DISPLAY' TO CHECK DO CHECKC ? ?"And, there's the second SMITH record." WAIT DO TEACH4L ERASE ?"And that's all for INDEX, FIND, LOCATE, and CONTINUE. I want you to QUIT" ?"now, and try these commands on your own. Try some of the Boolean" ?"operators with any command that permits use of the FOR phrase as well." STORE 'QUIT' TO CH!i  '    '  '    ?"Now, DISPLAY ALL"!  ?"Now, DISPLAY ALL" DO CHECKC WAIT ERASE ?"Later versions of dBASE II permit up to 7 indices of a file to be active" ?"at one time. I'm going to assume that you do not have a recent version," ?"and permit only one index to be active." ? ?"Let's, index the file EMPMAST on another field though (the LASTNAME field)" ?"to see how that works. Since LASTNAME may not be unique (that is, there" ?"may be several SMITH records), we'll FIND SMITH, and then SKIP to see if" ?"there are more." ? ?"Type USE EMPMAST " S (WECK DO CHECKC# RETURN$  '  '  '     ?"Now, DISPLAY ALL" ecord. You may specify any employee number" ?"that exists on EMPMAST. You pick the number." ? ?"Type FIND n, where n is an employee number, and press " STORE 0 TO OK DO WHILE OK = 0 ACCEPT TO COMMAND IF !(COMMAND) = 'QUIT'  QUIT! 1 ENDIF IF $(!(COMMAND),1,5) # 'FIND ' * ?"FIND followed by a blank, must be theiTORE 'USE EMPMAST' TO CHECK DO CHECKC WAIT ERASE ?"Now, type INDEX ON LASTNAME TO NAMEIND " STORE 'INDEX ON LASTNAME TO NAMEIND' TO CHECK DO CHECKC ? ?"Now, type USE EMPMAST INDEX NAMEIND " STORE 'USE EMPMAST INDEX NAMEIND' TO CHECK DO CHECKC ? ?"Now, DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC ?"Now the records on EMPMAST are in order by last name." WAIT ERASE ?"Now, type FIND SMITH " STORE 'FIND SMITH' TO CHECK DO CHECKC ? ?"Type DISPLAY , =>, etc., you can also use" ?"the Boolean operators .AND., .OR., and .NOT.. In fact, you can use" ?"arithmetic and Boolean operators wherever dBASE II lets you use an" ?"expression (shown in dBASE II command examples as exp). Let's try" ?"some examples with the EMPMAST file. I've created a REPORT FOR3k=TORE 'DISPLAY' TO CHECK DO CHECKC WAIT DO TEACH4B RETURN$   E?"Let's LOCATE ALL FOR LASTNAME = 'SMITH' Notice the quotation marks" G?"around SMITH. LASTNAME is a character field, and in the FOR phrase," 7?"character fields must be enclosed in quotes. Try it." 3STORE "LOCATE ALL FOR LASTNAME = 'SMITH'" TO CHECK DO CHECKC    WAIT% ERASE% RETURN$  '  WAIT ERASE ?"Let's LOCATE ALL FOR LASTNAME = 'SMITH'. Notice the quotation marks" ?"around SMITH. LASTNAME is a character field, and in the FOR phraseQdata. Now, DISPLAY." STORE 'DISPLAY' TO CHECK DO CHECKC ?"Enter CONTINUE now. dBASE II will see if any more records contain" ?"employee number 22." STORE 'CONTINUE' TO CHECK DO CHECKC ?"Since only one record contains employee number 22, an END OF FILE message" ?"is displayed. That would not be the case if you changed the locate" ?"slightly." WAIT ERASE ?"Let's LOCATE ALL FOR LASTNAME = 'SMITH'. Notice the quotation marks" ?"around SMITH. LASTNAME is a character field, and in the FOR phrase M to" ?"use with the examples. The formname is EMPMASTR. First, USE EMPMAST." STORE 'USE EMPMAST' TO CHECK DO CHECKC WAIT ERASE ?"Now, let's get a report of the entire file." ? ?"Type REPORT FORM EMPMASTR " STORE 'REPORT FORM EMPMASTR' TO CHECK DO CHECKC WAIT ERASE ? ?"Now, type REPORT FORM EMPMASTR FOR DEPTNO > 10 .AND. GROSSSAL < 1300" ?"" STORE 'REPORT FORM EMPMASTR FOR DEPTNO > 10 .AND. GROSSSAL < 1300' TO CHECK DO CHECKC WAIT ERASE ?"Now, type REPORT FORM EMPMASTR F0 s must be enclosed in quotes." STORE "LOCATE ALL FOR LASTNAME = 'SMITH'" TO CHECK DO CHECKC STORE # TO REC STORE STR(REC,1) TO RECX ?"Record &RECX contains SMITH. Now, DISPLAY it." STORE 'DISPLAY' TO CHECK DO CHECKC ?"Now, CONTINUE." STORE 'CONTINUE' TO CHECK DO CHECKC ?"No END OF FILE message is displayed because there is another SMITH" ?"record on the file." STORE # TO REC STORE STR(REC,1) TO RECX ?"It's record number &RECX.. Let's look at that record. DISPLAY" STORE ERASE ?"The INDEX command is useful for larger files where there is a need to" ?"access records randomly. For smaller files (50 records or less), you can" ?"accomplish the same results by using the LOCATE and CONTINUE commands." ? ?"LOCATE reads sequentially through the file in USE, and then presents" ?"record numbers that satisfy the FOR specification. Because LOCATE is" ?"LOCATEing records sequentially, it takes a long time to LOCATE" ?"records in larger files. INDEX on the other hand, does not tm," ?"character fields must be enclosed in quotes." STORE "LOCATE ALL FOR LASTNAME = 'SMITH'" TO CHECK DO CHECKC STORE # TO REC STORE STR(REC,1) TO RECX ?"Record &RECX contains SMITH. Now, DISPLAY it." STORE 'DISPLAY' TO CHECK DO CHECKC ?"Now, CONTINUE." STORE 'CONTINUE' TO CHECK DO CHECKC ?"No END OF FILE message is displayed because there is another SMITH" ?"record on the file." STORE # TO REC STORE STR(REC,1) TO RECX ?"It's record number &RECX.. Let's look at that record. DISPLAY" S OR TAXCLASS < 10 .OR. TAXCLASS > 75" ?"" STORE 'REPORT FORM EMPMASTR FOR TAXCLASS < 10 .OR. TAXCLASS > 75' TO CHECK DO CHECKC WAIT ERASE ?"The only limiting factor on the number of arithmetic and Boolean" ?"combinations in a command is the command length restriction in dBASE II." ?"Since commands can be up to 254 characters, it is most likely that you" ?"will get confused about what the expression means before you run out of" ?"positions to specify it."  7ake more" ?"than 2 or 3 seconds to FIND a record, no matter how big the file is." ?"Since our EMPMAST file is small, we can LOCATE records quickly too." WAIT ERASE ?"First, we have to use EMPMAST." STORE 'USE EMPMAST' TO CHECK DO CHECKC ?"Now, display all the records." STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Now, LOCATE ALL FOR EMPNO = 22." STORE 'LOCATE ALL FOR EMPNO = 22' TO CHECK DO CHECKC STORE # TO REC STORE STR(REC,1) TO RECX ? ?"Record &RECX contains employee number 22 Nuses COMPUTE," ?"performs some calculations on the record contents, and produces a" ?"report to show the results." ? ?"I've called the Command Procedure WHITEHSE. If you enter DO WHITEHSE," ?"the Command Procedure will be accessed, and executed. I've set some" ?"things up so you can see the commands as they are executed, and then" ?"see the results of the execution. If this looks familiar to you," ?"it's because we did this in lesson 3, with you entering the commands from" ?"the keyboard." WAITsk, rather than" ?"entering them on the keyboard." WAIT ERASE ?"Remember in lesson 3, you had a file which contained payroll information" ?"for some of the people in the White House. If there is important" ?"information, this is it. Right? The janitor thinks so. I saved that" ?"file for this lesson too." ? ?"I called the file COMPUTE. We can see if it's still there with the" ?"DISPLAY FILE command. This command displays the file names for dBASE II" ?"files (and other files too) on disk." SE6ed. This tells the" ?"system that a disk swap has occurred, and will eliminate the possibility" ?"of a disk error occurring." WAIT ERASE ?"OK. Let's make the back-up file, and let's call it WHITEHSE. The file" ?"currently in USE (COMPUTE) is copied to the back-up file with a COPY" ?"command." ? ?"Type COPY TO WHITEHSE " STORE 'COPY TO WHITEHSE' TO CHECK DO CHECKC ? ?"Now type DISPLAY FILE " STORE 'DISPLAY FILE' TO CHECK DO CHECKC ?"Now, both COMPUTE and WHITEHSE are on disk " ERASE ?"Type DO WHITEHSE " STORE 'DO WHITEHSE' TO CHECK DO CHECKC WAIT ERASE ?"Now, let's examine two more utility functions. As I mentioned earlier," ?"the DISPLAY FILE command can display dBASE II files AND other files on disk" ?"(see the dBASE II TUTOR introduction for a description of the types of" ?"files supported by operating systems). The LIKE phrase is added to the" ?"command to display non-dBASE II files." ? ?"Type DISPLAY FILE LIKE *.CMD " STORE 'DISPLAY FILE LIKET CONSOLE OFF DELETE FILE WHITEHSE USE COMPUTE1 DELETE ALL PACK SET CONSOLE ON WAIT ERASE ?"Type DISPLAY FILE " STORE 'DISPLAY FILE' TO CHECK DO CHECKC ?"Now, &STUDENT, start working with the file COMPUTE." ? ?"Type USE COMPUTE " STORE 'USE COMPUTE' TO CHECK DO CHECKC REPLACE ALL NETSALARY WITH 0 TAXES WITH 0 ? ?"Type DISPLAY ALL " STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"This is definitely important data. You wouldn't want to lose it." ?"To make s." WAIT ERASE ?"Before you continue with file utilities, let's take a look at how dBASE II" ?"lets you execute a number of commands without typing them all on the" ?"keyboard." ? ?"The DO command does this. It accesses a disk file, and executes all of" ?"the dBASEII commands in that Command Procedure." ? ?"You may create a Command Procedure through use of the operating" ?"system text editor, a word processing package, or the MODIFY COMMAND" ?"in dBASE II. I've created a Command Procedure that ERASE ?"In lesson 4, &STUDENT, you learned about record keys, and their use" ?"with the INDEX and FIND commands. You also learned how to use LOCATE" ?"and CONTINUE for small files which were not indexed on a key." ? ?"In lesson 5, you're going to learn about some of the dBASE II file utility" ?"functions, a way to tell dBASE II that a new diskette has been placed in" ?"a disk drive (perhaps to back-up a file, like you'll do in this lesson)," ?"and finally, you'll see how to execute commands from diFure that you don't lose the data, you're going to back-up" ?"COMPUTE. Essentially, what this amounts to is that you going to" ?"create a COPY of the file. Normally, the back-up copy would be made on" ?"a different diskette (other than the one the file is on), but since" ?"we're just demonstrating how a back-up is done, you'll put the back-up on" ?"the same disk as the file." ? ?"In a real back-up situation, where a different diskette is used to" ?"receive the file, the RESET command should be issu   *.CMD' TO CHECK DO CHECKC WAIT ERASE ?"dBASE II also lets you delete files. BE EXTREMELY CAREFUL WITH THIS" ?"COMMAND, however. ONCE DELETED, THE FILES CANNOT BE RETRIEVED. The" ?"files may be dBASE II files, or any other file type (through use of the" ?"file suffix, TXT for example)." ? ?"To illustrate, you're going to delete the WHITEHSE file. First, let's" ?"make sure that the WHITEHSE file is still around." ? ?"Type DISPLAY FILE " STORE 'DISPLAY FILE' TO CHECK DO CHECKC ?"NowG  '  '  '  '  '  '   ISPLAY STRUCTURE' TO CHECK DO CHECKC ? ?"Notice that the PHONE field is in it." WAIT ERASE ?"COMPUTE1, however, has no data in it. By using the APPEND FROM command" ?"we can get all of the data that was on COMPUTE onto COMPUTE1." ? ?"Type APPEND FROM COMPUTE " STORE 'APPEND FROM COMPUTE' TO CHECK DO CHECKC ? ?"Now, COMPUTE1 has all of the information that was on COMPUTE, and COMPUTE1" ?"has a field where we can enter PHONE extensions." ? ?"One word of caution. MODIFY STRUCTURE E R4C  '  '  '  '  '      , DELETE it, &STUDENT.." ? ?"Type DELETE FILE WHITEHSE " STORE 'DELETE FILE WHITEHSE' TO CHECK DO CHECKC WAIT ERASE ?"One last thing for this lesson. dBASE II permits file structures to be" ?"changed, or MODIFYd. This is very useful when you wish to add a (some)" ?"field to a file that already exists. I can't show you the MODIFY" ?"STRUCTURE command itself, you'll have to do that on your own, but I can" ?"show you how it can be used to change an existing file structure." ? ?"The COMP'  '    '  '  ' M culations on the record contents, and produces a report to show the"  A S E S all of the data" ?"on the file being modified. So, before issuing the MODIFY STRUCTURE" ?"command, copy the file to a back-up file or you will L O S E all of" ?"the data that W A S on your file." ? WAIT ERASE ?"Well, that's it for file utilities, and Command Procedures. After you" ?"QUIT this time, try some exercises on your own. DISPLAY, and COPY" ?"files. MODIFY the STRUCTURE of a file, and APPEND data to a new" ?"file structure FROM a copied file. If you feel bold, create a" tC  '  '  '  '  '     UTE file that we used earlier had several pieces of information" ?"about the White House staff. It did not have the phone extensions for" ?"them, however. By USEing COMPUTE, and then issuing the MODIFY" ?"STRUCTURE command we could add the PHONE field. After the structure" ?"has been modified, it will look like the structure in a file I have" ?"called COMPUTE1." WAIT ERASE ?"Type USE COMPUTE1 " STORE 'USE COMPUTE1' TO CHECK DO CHECKC ? ?"Now, type DISPLAY STRUCTURE " STORE 'D1s ?"command procedure using MODIFY COMMAND. In future sessions, I'll" ?"show you how you can create some really powerful Command Procedures" ?"that can do as much as most conventional programming languages," ?"and do it with far fewer instructions. NoOw, however, it's time" ?"to quit again." ? STORE 'QUIT' TO CHECK DO CHECKC# RETURN$     ?"culations on the record contents, and produces a report to show the" ?"culations on the record contents, and produces a report to show the" ?"culations on the record contents, and produces a report to show the" ?""  '  '    ze file" ?"will automatically have its index(es) updated, and therefore, be kept in" ?"in order, whenever APPEND, EDIT, REPLACE, READ, OR BROWSE are used to" ?"update the file. That is not the case with SORT. If changes are made to" ?"key fields in a SORTed file, the file must be re-sorted to get it back in" ?"sequence." WAIT ERASE ?"There are times, however, when a SORTed file is preferrable to an" ?"INDEXed file. We will demonstrate one in this lesson. In this" ?"example, we want the operationO   '  '  '    '  '    "ERASE ?"In lesson 5, &STUDENT, you covered the DISPLAY FILE and COPY file" ?"utilities. We also learned about MODIFY STRUCTURE, and how to" ?"APPEND data onto a MODIFYd file structure. You learned, too, about" ?"the creation of command procedures (or programs) in dBASE II." SET CONSOLE OFF DELETE FILE EMPMAST DELETE FILE EMPTRANS DELETE FILE EMPTSRT DELETE FILE EMPMSRT DELETE FILE TUTMEM.MEM USE EMPBAK COPY TO EMPMAST USE EMPTBAK COPY TO EMPTRANS SET CONSOLE ON ? ?"In lesson 6, you're goiC  -  '  '  '  -     q of preparing updates to EMPMAST" ?"to be a separate operation and be contained on a separate file" ?"(EMPTRANS), because balancing of the input is required prior to the" ?"UPDATE process. We would also like to have the ability to back-out" ?"transactions after updates have taken place (if, for example we find" ?"that some of the input contained errors that had to be easily removed" ?"from the master file). Had all of the input been entered from the" ?"keyboard using EDIT, back-out may be quite difng to learn about SORT, (another method for" ?"putting records in sequence, other than INDEX), UPDATE (a method for" ?"changing information on a file from another file), and how to work" ?"with memory using STORE, DISPLAY MEMORY, SAVE, RESTORE, RELEASE, and" ?"CLEAR." WAIT ERASE ?"Remember, in lesson 4, you used two key fields on a file called EMPMAST." ?"One key was EMPNO, another was EMPNAME. SORT can put files in order just" ?"like INDEX, but there is one big difference. When INDEX is used, thC  '  '    '  '  '  O   '  '  '    '  '    "ERASE ?"In lesson 5, &STUDENT, you covered the DISPLAY FILE and COPY file" ?"utilities. We also learned about MODIFY STRUCTURE, and how to" ?"APPEND data onto a MODIFYd file structure. You learned, too, about" ?"the creation of command procedures (or programs) in dBASE II." SET CONSOLE OFF DELETE FILE EMPMAST DELETE FILE EMPTRANS DELETE FILE EMPTSRT DELETE FILE EMPMSRT DELETE FILE TUTMEM.MEM USE EMPBAK COPY TO EMPMAST USE EMPTBAK COPY TO EMPTRANS SET CONSOLE ON ? ?"In lesson 6, you're goiC  -  '  '  '  -     q of preparing updates to EMPMAST" ?"to be a separate operation and be contained on a separate file" ?"(EMPTRANS), because balancing of the input is required prior to the" ?"UPDATE process. We would also like to have the ability to back-out" ?"transactions after updates have taken place (if, for example we find" ?"that some of the input contained errors that had to be easily removed" ?"from the master file). Had all of the input been entered from the" ?"keyboard using EDIT, back-out may be quite difQ  cucu  '  '  '  '  '    ng to learn about SORT, (another method for" ?"putting records in sequence, other than INDEX), UPDATE (a method for" ?"changing information on a file from another file), and how to work" ?"with memory using STORE, DISPLAY MEMORY, SAVE, RESTORE, RELEASE, and" ?"CLEAR." WAIT ERASE ?"Remember, in lesson 4, you used two key fields on a file called EMPMAST." ?"One key was EMPNO, another was EMPNAME. SORT can put files in order just" ?"like INDEX, but there is one big difference. When INDEX is used, thC  '  '    '  '  '   B ficult." WAIT ERASE ?"The choice between using SORT or INDEX is a matter of system design." ?"Each system will dictate which method should be used. The purpose" ?"of this lesson is to show you how to use SORT if you feel the" ?"circumstances warrant it." WAIT ERASE ?"Enough said. Let's look at EMPMAST. By now I'm sure you know that" ?"you must use it, display it's structure, and then display all the" ?"records on it. If you make a mistake, I'll tell you what to do, but I" ?"want you to try toERASE ?"Up to now, you have been dealing with only data on files. You're now going" ?"to see how to use memory variables. Memory variables are used in much" ?"the same fashion as fields on records. However, unlike fields on records," ?"memory variables are always available for immediate use. It is not" ?"necessary to read them from a file to access them. dBASE II permits" ?"up to 64 memory variables in memory at any one time, and also permits" ?"memory variables to be SAVEd on disk, for later RE  made." ?"This file is generally referred to as a transaction file. The UPDATE" ?"command requires that the master file (EMPMAST) and the transaction" ?"file be in the same sequence. Our transaction file is called EMPTRANS." ? ?"Let's take a look at it. First USE it, then DISPLAY it's STRUCTURE," ?"and then DISPLAY ALL of the records on it. Try these three commands." ?"I'll help you, if you make any mistakes." STORE 'USE EMPTRANS' TO CHECK DO CHECKC STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECK! RETURN$ u feel the" ?"circumstanu feel the" ?"circumstanST in EMPNO" ?"(emplST in EMPNO" ?"(empl fields in a SORTed file, the file must be re-sorted to get it back in" ?"sequence." WAIT ERASE ?"There are times, however, when a SORTed file is preferrabole to an" ?"INDEXed file. We will demonstrate one in this lesson. In this" ?"example, we want the operation  perform these three operations without me telling" ?"you specifically what to do." STORE 'USE EMPMAST' TO CHECK DO CHECKC STORE 'DISPLAY STRUCTURE' TO CHECK DO CHECKC STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Now, &STUDENT, SORT EMPMAST on employee number (EMPNO). SORT will" ?"sort the file in USE on the key specified, and place the SORTed file on" ?"another file." ? ?"Type SORT ON EMPNO TO EMPMSRT " STORE 'SORT ON EMPNO TO EMPMSRT' TO CHECK DO CHECKC ?"Now, EMPMSRT filSTOREing." ? ?"Several commands deal with memory variables. They are: STORE, DISPLAY" ?"MEMORY, SAVE, RESTORE, RELEASE, and CLEAR." WAIT ERASE ?"Remember how REDFORD lost his name. Let's get REDFORD's name back" ?"using a memory variable." ? ?"Type STORE 'REDFORD' TO MEMNAME " STORE "STORE 'REDFORD' TO MEMNAME" TO CHECK DO CHECKC ? ?"Now, &STUDENT, type DISPLAY MEMORY " STORE 'DISPLAY MEMORY' TO CHECK DO CHECKC ?"I've got some things in memory too, but notice that there is a@C STORE 'DISPLAY ALL' TO CHECK DO CHECKC WAIT ERASE ?"Now we have to SORT EMPTRANS to get it in order by EMPNO." ? ?"Type SORT ON EMPNO TO EMPTSRT " STORE 'SORT ON EMPNO TO EMPTSRT' TO CHECK DO CHECKC ?"Now, use EMPTSRT, and display all the records on it. I'll help you if" ?"you make errors in either of the two commands to do this." STORE 'USE EMPTSRT' TO CHECK DO CHECKC STORE 'DISPLAY ALL' TO CHECK DO CHECKC  {e contains the data that is on EMPMAST in EMPNO" ?"(employee number) sequence. Let's take a look at EMPMSRT. We first" ?"have to use it, and then to see it, I have retained the REPORT FORM" ?"EMPMASTR from lesson 4. Try the USE and REPORT. I'll tell you if you" ?"make any mistakes." STORE 'USE EMPMSRT' TO CHECK DO CHECKC STORE 'REPORT FORM EMPMASTR' TO CHECK DO CHECKC ?"All the records are in order by employee number." WAIT ERASE ?"In UPDATE, a file is needed, which contains the changes to beh D ?"Now, the transaction file is also in employee number sequence." WAIT%  DO TEACH6U" RETURN$  number sequence." WAIT%  DO TEACH6U \ memory" ?"variable called MEMNAME, which contains REDFORD." WAIT ERASE ?"Using the EMPMSRT file, you can give REDFORD his name back from the" ?"memory variable MEMNAME." ? ?"Type USE EMPMSRT " STORE 'USE EMPMSRT' TO CHECK DO CHECKC ? ?*"Now, DISPLAY." STORE 'DISPLAY' TO CHECK DO CHECKC ?"That's the old REDFORD record all right, with no name in it. Now," ?"REPLACE LASTNAME WITH MEMNAME" STORE 'REPLACE LASTNAME WITH MEMNAME' TO CH*} ?"Now you've done it. All the memory variables are gone, and I still need" ?"some of them. Let's get them back!!! Type RESTORE FROM TUTMEM." ( STORE 'RESTORE FROM TUTMEM' TO CHECK DO CHECKC  CHECK DO CHECKC ?"That's the old REDFORD record all right, with no name in it. Now," ?"REPLACE LASTNAME WITH MEMNAME" STORE 'REPLACE LASTNAME WITH MEMNAME' TO CHa no longer in memory. To release all memory" ?"variables, enter RELEASE ALL" STORE 'RELEASE ALL' TO CHECK DO CHECKC1 ?"Now, DISPLAY MEMORY." STORE 0 TO OK DO WHILE OK = 0 ACCEPT TO COMMAND IF !(COMMAND) = 'QUIT'  QUIT! ENDIF# ' IF !(COMMAND) # 'DISPLAY MEMORY' ( ?"You didn't enter DISPLAY MEMORY. PlC  '  '  '  '  '     ECK DO CHECKC ?"Now, DISPLAY" STORE 'DISPLAY' TO CHECK DO CHECKC ?"And, REDFORD has his last name back." WAIT ERASE ?"There may be instances where 64 memory variables are not enough for the" ?"work you have to do. For these instances, and other occasions where you" ?"want to SAVE memory variables (perhaps to be RESTOREd to memory the next" ?"day from a previous day's work), dBASEII provides the SAVE command. All" ?"memory variables are put on the disk file specified in the SAVE command." ? ?"T Yease try again."   LOOP!   ELSE!   RELEASE ALL  DISPLAY MEMORY  STORE 1 TO OK  STORE ' ' TO PROMPT ENDIF ENDDO WAIT ERASE RESTORE FROM TUTMEM ?"Oh no, &STUDENT.. All the memory variables are gone, and I still need" ?"some of them. Let's get them back!!!" ? ?"Type RESTO     ERASE% w ?"Now you've done it. All the memory variables are gone, and I still need" ?"some of them. Let's get them back!!! Type RESTORE FROM TUTMEM." ( STORE 'RESTORE FROM TUTMEM' TO CHECK DO CHECKC  ERASE" ype SAVE TO TUTMEM " STORE 'SAVE TO TUTMEM' TO CHECK DO CHECKC ?"Now all the memory variables are on the disk file TUTMEM." WAIT ERASE ?"If you're finished with some memory variables, and want to make room for" ?"some more, the RELEASE command is used. Let's RELEASE one of yours, and" ?"one of mine." ? ?"Type RELEASE MEMNAME,PRINTER " STORE 'RELEASE MEMNAME,PRINTER' TO CHECK DO CHECKC ?"Now, DISPLAY MEMORY." STORE 'DISPLAY MEMORY' TO CHECK DO CHECKC ?"MEMNAME and PRINTER areRE FROM TUTMEM " STORE 'RESTORE FROM TUTMEM' TO CHECK DO CHECKC ? ?"Now, DISPLAY MEMORY." STORE 'DISPLAY MEMORY' TO CHECK DO CHECKC WAIT ERASE ?"You can also RELEASE ALL the memory variables by entering CLEAR, and" ?"CLEAR will also take the file in USE out of the USE state. For example," ?"if you enter CLEAR now, the EMPMSRT file would no longer be in USE." WAIT ERASE% RETURN   ERASE ?"Now you're ready to try UPDATE. Both the master and transaction files" ?"(EMPMAST and EMPTRANS) are in sequence by EMPNO on the files EMPMSRT and" ?"EMPTSRT. First, you have to USE EMPMSRT." STORE 'USE EMPMSRT' TO CHECK DO CHECKC ?"Type UPDATE FROM EMPTSRT ON EMPNO REPLACE LASTNAME ADD GROSSSAL " STORE 'UPDATE FROM EMPTSRT ON EMPNO REPLACE LASTNAME ADD GROSSSAL' TO CHECK DO CHECKC WAIT ERASE ?"To see what the UPDATE did, type REPORT FORM EMPMASTR " STORE 'REPORT FORM EMP  MASTR' TO CHECK DO CHECKC ?"Notice that REDFORD (employee 2) lost his name, and that GROSSSAL has" ?"been changed in all three records that had transactions. REDFORD lost" ?"his name, because REPLACE was used for the LASTNAME field, and the" ?"LASTNAME field in the transaction file for his record was blank." ?"GROSSSAL was increased or decreased based on the amounts that were in" ?"the GROSSSAL field on the transaction file." WAIT ERASE ?"There are ways, using command procedures, to exercise comp 5lete control" ?"over updates to files. We'll see how that can be done, in lesson 10." WAIT DO TEACH6M ERASE ?"That's it for SORT, UPDATE, and dealing with memory variables. After" ?"you've QUIT, practice with these commands, so you'll be able to use them" ?"in the future." ? ?"Please QUIT now." STORE 'QUIT' TO CHECK DO CHECKC RETURN STORE 'REPORT FORM EMPMASTR' TO CHECK FORM EMPMASTR' TO CHECK ords on it. If you make a mistake, I'll tell you what to do, but I" ?"want you to try to   t     j        :       x                             !!!!!!! !!!! !! !! !! !!!! ! """"""" """" "" "" "" """" " ####### #### ## ## ## #### # $5$$$$$$ $$$$ $$ $$ $$ $$$$ $ %%%%%%% %%%% %+% %% %% %%%% % &'&&&&&& &&&& && && && &&&& & ''''''' '''' '9' '' '' '''' '((qgVEV015/S2.0KAY-PRO DUP 5"-48/40 2S DD SS30510-1J  30510-1  (