home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DB3V12.ARC / DB3V12.RVW
Text File  |  1985-10-02  |  15KB  |  295 lines

  1.            Ashton Tate Developer's Release of dBaseIII
  2.                (also known as dBaseIII Version 1.2)
  3.  
  4. It is important to note that dBase III 1.2 enhancements do not
  5. work on version 1.0 or 1.1...these enhancements(new commands and
  6. functions) only work on machines running dBaseIII 1.2 or dBrun.
  7.  
  8. Released on July 1,1985 and includes the following features:
  9.       Developer's version of dBaseIII with 16 new commands and
  10. about 30 new functions...listed below.
  11.         Commands>>
  12.                   ********Debugging Tools***********
  13.                   History is a new concept to dBaseIII...but for
  14. those of you who use DOSEDIT or CED in DOS,you have long ago
  15. appreciated the ability to recall and edit commands at the DOS
  16. prompt and reenter them...especially when all you left out was a
  17. "t" in the filename you wanted to copy.
  18.                   History is always active...to activate it just
  19. press esc and bingo you can see a 3 row window open on your
  20. screen at the prompt...and by pressing the up or down arrow key
  21. you can have access to the last 20 commands you have entered...
  22. alter or edit or just reenter them...to get back to the lovely
  23. dot prompt press another esc...but you can manipulate HISTORY
  24. with some special commands...
  25.                   * SET HISTORY ON/OFF ... usually is off ...
  26. but when you turn it on (at the prompt or in a .prg) the editing
  27. becomes a full screen project...instead of the 3 row window.
  28.                   * SET HISTORY TO <expN> ... will not only erase
  29. all the currently stored commands but will allow you to increase
  30. or decrease the number of commands stored from 0 to 16,000(the
  31. latter will definately effect memory available...you can figure
  32. out how much by by adding 9 bytes to each command to be stored).
  33.                   * SET DOHISTORY ON/OFF ... usually is off ...
  34. when it is turned on,it will capture the last 20 lines of your
  35. command files...to be edited or reentered.
  36.                   * LIST HISTORY or DISPLAY HISTORY do pretty
  37. much like what they say...either list or display the currently
  38. stored history to screen or printer.
  39.                   By the way,whenever dBaseIII encounters an
  40. error or your left or right(depending on your keyboard)pinky
  41. finds itself frantically pressing escape while executing a
  42. command file no longer gives you the choice of just cancelling
  43. the program (you know,the good old "Need Help?" -NEVER,EVER- or
  44. the ever so lovely "Terminate command file?(Y/N)" but now has a
  45. new prompt "What now - Cancel,Ignore, or Suspend?(C,I,S)" ....
  46. pressing enter will get you a Cancel, pressing "I" will get the
  47. program running again but pressing "S" will get you into a new
  48. realm of debugging...Suspend mode (or as we have called it the
  49. Twilight mode)
  50.                   * SUSPEND ... can be executed from the command
  51. file too ... but once you are here,you can edit (from history)
  52. and restart the program by entering RESUME(anther new command!).
  53. Take note though any changes made during SUSPEND...need to be
  54. reentered and saved on your text editor if you want them to be
  55. permanently a part of your command file.
  56.                   ********Assembly Language Interface********
  57.                   You can now LOAD up to five .bin or .com files
  58. (each can be up to 32,000 bytes) into memory,CALL it into action
  59. with an optional memory variable and then RELEASE MODULE when you
  60. are done with it...to allow other Modules to be loaded...dBaseIII
  61. treats the loaded module as a procedure ... each module must
  62. follow certain programming rules but this should be a helpful
  63. tool for programmers.
  64.                   ********Numeric Overflow***********
  65.                   No longer returns a bunch of ***** but now
  66. shows an exponential format....which may or may not be a relief
  67. to your clients....mine will still call and ask if they are
  68. supposed to press Ctrl-Alt-Del now...
  69.                   *******Numeric Accuracy************
  70.                   If some of you were wondering if you were
  71. loosing your marbles because the formula looked right and the
  72. calculator said "That's right!" but your program kept saying
  73. "nah"...or you are a rare breed who said having accurate numeric
  74. operations was important...good news...so does dBaseIII 1.2
  75.                   *******Date Formatting**************
  76.                   Well,if you needed it,you got it...new date
  77. formatting...in a simple format SET DATE <AMERICAN/ANSI/BRITISH/
  78. ITALIAN/FRENCH/GERMAN>...and that's all there is to it.
  79.                   A somewhat more applicable application for me
  80. is the new SET CENTURY ON/OFF ... with it on you can show the
  81. century...for example ... today is July 4th,1985 ... and you know
  82. that dBaseIII says that's 07/04/85 ... and if you set century on
  83. ... 07/04/1985
  84.                   *******Keyboard Buffer Control*******
  85.                   dBaseIII 1.2 allows you to set the type ahead
  86. buffer,just like the big boy programmers!...The default is 20
  87. characters..but if you want a buffer of 32,000(for those speed
  88. typists in your secretary pool...),you got it...but a better
  89. application could be setting it to 0...so they have to sit still
  90. and read what is going on...the command is SET TYPEAHEAD TO
  91. (<expN>)
  92.                   Well,if you got used to CLEAR,CLEAR ALL,CLEAR
  93. GETS,CLEAR MEMORY...get ready for CLEAR TYPEAHEAD...it does what
  94. the command implies,clears out the typeahead buffer(no matter
  95. what it's set for in the SET TYPEAHEAD buffer)..we use it for our
  96. Copyright screens and error messages and editing screens...so
  97. they cannot just buzz by them without taking some notice of what
  98. is taking place.
  99.                   *********EVENT PROCESSING************
  100.                   At least, that's what A-T calls these three new
  101. commands...very useful too I might add...I bet you'll have no
  102. trouble finding valuable uses for these in your applications...
  103.                   The first is ON ERROR,and it works like this...
  104. in your command file,you put the command ON ERROR DO Whoops...
  105. when dBase encounters an error condition,(you know the impossible
  106. of impossibles ever coming true...since all your software is bug
  107. free)instead of freaking your customer out,it will activate
  108. Whoops (which may include an apology and a calling up of their
  109. still favorite programmer ... or as we do request they turn on
  110. their printer...still no test for that ...  and call up a PrtSc
  111. routine to record the offending part of the program)and return
  112. control of the program to your customer.
  113.                   The second one is ON ESCAPE,and it is a little
  114. different in that it allows you to control the program when and
  115. if the Esc is pressed during program operation... a little more
  116. effective than just setting it off. We already use it for a
  117. printer pause in our mail merge/label program(to allow them to
  118. reload paper,adjust the paper if it got gnarled up)...it works
  119. like this ON ESCAPE DO Pausing...so if they press Esc,they will
  120. be taken to the module Pausing to make a choice...rather than get
  121. the ever so lovely "Terminate command file?(Y/N)" if you happen
  122. to give them the option to escape in times of distress.
  123.                   The last one is ON KEY...which is really
  124. flexible, you have the ability to test for any key being pressed
  125. and give your customer the option to quit or resume with the
  126. program operation. ON KEY DO Sure...where Sure could request a
  127. verification to continue or abort...
  128.  
  129.                   ****Database manipulation*******
  130.  
  131.                   * SET MEMOWIDTH TO(allows adjustment of output
  132. columns of memo fields...printing or display)
  133.                     ex. as a default,1.1 let it be 50...so a SET
  134. MEMOWIDTH TO 25 would crunch it up to have a column width of 25,
  135. the SET MARGIN TO 8 would only affect the printer...not the
  136. display.
  137.                   * SET ORDER TO (set controlling index file
  138. order w/o closing,reopening .ndx file)
  139.                     ex. USE Rentals Index Client,Address,Rate
  140.                         (obviously Client is the controlling .ndx
  141. file)
  142.                          SET ORDER TO 2 (changes the controlling
  143. .ndx file to be Address... TO 3 would be Rate)
  144.                   *
  145.  
  146.          >> Functions
  147.  
  148.                   ********Functions********************
  149.                   A whole mouth watering bunch of them...some
  150. you'll find indespensible and others you'll make use of now and
  151. again...both point to the fact, that A-T is listening to it's
  152. programming community and making changes.
  153.  
  154.                   <<<<Input functions>>>>>>
  155.                   These are probably some of the most requested
  156. changes...and extremely useful...my old workarounds were dogs
  157. compared to these simple functions...enjoy them.
  158.                   * INKEY() ... allows you to determine which key
  159. or keys the customer last pressed and take appropriate action...
  160. as you know,ever key has a corresponding ASCII code value...
  161. that's what you test for... and act on it...so now you can use
  162. the numeric key pad(cursor keys) and allow some creative uses in
  163. editing,entry,screen displays,etc.
  164.                   * READKEY() is like INKEY() but there is some
  165. crucial differences...it is like INKEY by returning that same
  166. ASCII code...but you use it during full-screen commands(you know
  167. what they are...APPEND,EDIT,etc)...and it also allows you to know
  168. if any data on that screen was changed.
  169.  
  170.                   <<<character type functions>>>
  171.  
  172.                   * LEFT ... Substring search from the first part
  173. of a character string.
  174.                   * LTRIM ... removes all leading blanks to your
  175. character expression.
  176.                   * REPLICATE ... one of my favorites ...
  177. already...REPLICATE("*",25) will produce a string of 25 * at the
  178. current position...it's really great to use in box drawing on
  179. your screen... or to simulate a bar graph(example in dB3 manual)
  180.                   * RIGHT ... substring search starts from the
  181. farthest right character(opposite of LEFT...makes sense).
  182.                   * STUFF ... what every programming language
  183. should have a STUFF command ... actually this can be quite handy
  184. ... it allows you to change any part of a character string, with-
  185. out the need to reconstruct the entire string. Hard to visualize?
  186. i.e. STUFF([abc],2,1,[xyz]) will give you axyzc ... the syntax is
  187. STUFF(<expC1>,<start position>,<number of characters>,<expC2>)
  188.                   * TRANSFORM ...allows you to present a
  189. formatted PICTURE of a characters/numbers utilizing any of the
  190. following...?,??,DISPLAY,LABEL,LIST,REPORT...syntax as follows:
  191.                   suppose you had a .dbf and the first record's
  192. C_name was Ashtot
  193.                   . DISPLAY TRANSFORM(C_name,[@R X X X X X X])
  194.                   . A s h t o t
  195.                   suppose you had a yearly income of $23,500 from
  196. Ashtot.
  197.                   . DISPLAY TRANSFROM(Yr_income,[###,###.##]
  198.                   .  23,500.00
  199.  
  200.                   <<<Numeric Type>>>
  201.  
  202.                   * ABS ... seems pretty obvious(as the other two
  203. are)...gives you the absolute value of a number...which means you
  204. don't get a negative value ... even if you say ? ABS(30-25),
  205. results in 5 ...  has no different results saying ? ABS(25-30).
  206.                   * MAX ... will give the maximum value of two
  207. numeric expressions
  208.                   * MIN ... does the exact opposite ... the
  209. minimum of two numeric expressions
  210.                   * MOD ... short for modulus...will allow you to
  211. determine the fraction result of two numbers ... the first number
  212. is limited and divided by the second number...
  213.                   . ? MOD(133,36)
  214.                   . 25
  215.                   . ? MOD(36,133)
  216.                   . 36
  217.                   . ? MOD(12,10)
  218.                   . 2
  219.                   . ? MOD(10,12)
  220.                   . 10
  221.                   . ? MOD(12,-10)
  222.                   . -8
  223.  
  224.                   <<<<Testing Functions>>>>
  225.  
  226.                   These are some of the ones that I really have
  227. been anxiously waiting for since dBaseII was introduced...I hope
  228. you'll also see alot of program controlling value in these
  229. functions.
  230.                   * DBF() will return the name of database of the
  231. currently selected work area
  232.                   * NDX() will return the indexes open in the
  233. currently selected work area
  234.                   * DISKSPACE() will return the amount of
  235. diskspace available on any given drive
  236.                   * FIELD() will return all the field names of
  237. the current dbf ... FIELD(4) will give you the name of the fourth
  238. field in the current dbf
  239.                   * FOUND() returns a logical variable ... in
  240. response to a previous FIND,SEEK,LOCATE,CONTINUE...a quicker
  241. access to results than EOF() test,especially on a large dbf
  242.                   * IFF(<expL>,<exp1>,<exp2>) .... a conditional
  243. expression ... w/o IF ELSE ENDIF ... it works like this... if the
  244. expL test returns true,then do exp1 otherwise do exp2...the IFF
  245. statement can be used from the prompt,command files,Report forms
  246. or Labels.
  247.                   * ISALPHA(<expC>)...will evaluate the expC to
  248. see if expC begins with an Character,rather than a number... it
  249. returns a logical .T. or .F.
  250.                   * ISCOLOR()... evaluates for a color monitor
  251. ... and returns a .T. or .F. ... so you can manipulate the screen
  252. appropriately for the monitor present.
  253.                   * ISLOWER(<expC>) ... returns a .T. or a .F.
  254. after evaluating the expC for the initial character as lower
  255.  
  256.                   * ISUPPER(<expC>) ... just the opposite of
  257. above ... checking for first letter of expC to be upper and
  258. return a .T. or .F.
  259.                   * LUPDATE() ... excellent tool for autoback ups
  260. ... returns the date of the last update of the dbf in use.
  261.                   * RECCOUNT() ... gives you the fastest possible
  262. way of counting the number of records in the dbf in use.
  263.                   * RECSIZE() ... determines the size of a record
  264. in the currently used dbf
  265.  
  266.                   <<<<Identification Functions>>>>
  267.  
  268.                   * FKLABEL(<expN>...is a function to allow you
  269. to set function keys on computers that have use non-numeric
  270. labels as identification for their function keys.
  271.                   * FKMAX() ... will tell you how many function
  272. keys are on a particular computer... and then using FKLABEL...
  273. redefine them for your programs needs.
  274.                   * GETENV(<expC>) .. will return specific
  275. operating system environmental information. Example:
  276.                   ? GETENV("PATH")
  277.                   . c:\brief;c:\dos;c:\
  278.                   * OS ... returns name of the operating system
  279. .. footsteps towards bigger and better things to come?
  280.                   * VERSION ... returns what version of dBaseIII
  281. you are running in today...in case you want to test for specific
  282. versions,since your commands from dBase III 1.2 will not run on
  283. 1.1 or 1.0.
  284.  
  285.  
  286.                   Well,that about does it for this quick and
  287. dirty review...hope it helps you out some...if you have any
  288. questions...call Ashton-Tate...or leave me a note on this RBBS...
  289. I will try and answer what questions you have...
  290. -----------------------------------------------------------------
  291. Review by: Randy Wallin, West Palm Beach, FL   -07/14/85-
  292.  
  293. First transmitted to the SMUG BBS, 301-963-5249, -07/14/85-
  294. -----------------------------------------------------------------
  295.