home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Du Jour
/
SoftwareDuJour.iso
/
BUSINESS
/
DBASE
/
DB3V12.ARC
/
DB3V12.RVW
Wrap
Text File
|
1985-10-02
|
15KB
|
295 lines
Ashton Tate Developer's Release of dBaseIII
(also known as dBaseIII Version 1.2)
It is important to note that dBase III 1.2 enhancements do not
work on version 1.0 or 1.1...these enhancements(new commands and
functions) only work on machines running dBaseIII 1.2 or dBrun.
Released on July 1,1985 and includes the following features:
Developer's version of dBaseIII with 16 new commands and
about 30 new functions...listed below.
Commands>>
********Debugging Tools***********
History is a new concept to dBaseIII...but for
those of you who use DOSEDIT or CED in DOS,you have long ago
appreciated the ability to recall and edit commands at the DOS
prompt and reenter them...especially when all you left out was a
"t" in the filename you wanted to copy.
History is always active...to activate it just
press esc and bingo you can see a 3 row window open on your
screen at the prompt...and by pressing the up or down arrow key
you can have access to the last 20 commands you have entered...
alter or edit or just reenter them...to get back to the lovely
dot prompt press another esc...but you can manipulate HISTORY
with some special commands...
* SET HISTORY ON/OFF ... usually is off ...
but when you turn it on (at the prompt or in a .prg) the editing
becomes a full screen project...instead of the 3 row window.
* SET HISTORY TO <expN> ... will not only erase
all the currently stored commands but will allow you to increase
or decrease the number of commands stored from 0 to 16,000(the
latter will definately effect memory available...you can figure
out how much by by adding 9 bytes to each command to be stored).
* SET DOHISTORY ON/OFF ... usually is off ...
when it is turned on,it will capture the last 20 lines of your
command files...to be edited or reentered.
* LIST HISTORY or DISPLAY HISTORY do pretty
much like what they say...either list or display the currently
stored history to screen or printer.
By the way,whenever dBaseIII encounters an
error or your left or right(depending on your keyboard)pinky
finds itself frantically pressing escape while executing a
command file no longer gives you the choice of just cancelling
the program (you know,the good old "Need Help?" -NEVER,EVER- or
the ever so lovely "Terminate command file?(Y/N)" but now has a
new prompt "What now - Cancel,Ignore, or Suspend?(C,I,S)" ....
pressing enter will get you a Cancel, pressing "I" will get the
program running again but pressing "S" will get you into a new
realm of debugging...Suspend mode (or as we have called it the
Twilight mode)
* SUSPEND ... can be executed from the command
file too ... but once you are here,you can edit (from history)
and restart the program by entering RESUME(anther new command!).
Take note though any changes made during SUSPEND...need to be
reentered and saved on your text editor if you want them to be
permanently a part of your command file.
********Assembly Language Interface********
You can now LOAD up to five .bin or .com files
(each can be up to 32,000 bytes) into memory,CALL it into action
with an optional memory variable and then RELEASE MODULE when you
are done with it...to allow other Modules to be loaded...dBaseIII
treats the loaded module as a procedure ... each module must
follow certain programming rules but this should be a helpful
tool for programmers.
********Numeric Overflow***********
No longer returns a bunch of ***** but now
shows an exponential format....which may or may not be a relief
to your clients....mine will still call and ask if they are
supposed to press Ctrl-Alt-Del now...
*******Numeric Accuracy************
If some of you were wondering if you were
loosing your marbles because the formula looked right and the
calculator said "That's right!" but your program kept saying
"nah"...or you are a rare breed who said having accurate numeric
operations was important...good news...so does dBaseIII 1.2
*******Date Formatting**************
Well,if you needed it,you got it...new date
formatting...in a simple format SET DATE <AMERICAN/ANSI/BRITISH/
ITALIAN/FRENCH/GERMAN>...and that's all there is to it.
A somewhat more applicable application for me
is the new SET CENTURY ON/OFF ... with it on you can show the
century...for example ... today is July 4th,1985 ... and you know
that dBaseIII says that's 07/04/85 ... and if you set century on
... 07/04/1985
*******Keyboard Buffer Control*******
dBaseIII 1.2 allows you to set the type ahead
buffer,just like the big boy programmers!...The default is 20
characters..but if you want a buffer of 32,000(for those speed
typists in your secretary pool...),you got it...but a better
application could be setting it to 0...so they have to sit still
and read what is going on...the command is SET TYPEAHEAD TO
(<expN>)
Well,if you got used to CLEAR,CLEAR ALL,CLEAR
GETS,CLEAR MEMORY...get ready for CLEAR TYPEAHEAD...it does what
the command implies,clears out the typeahead buffer(no matter
what it's set for in the SET TYPEAHEAD buffer)..we use it for our
Copyright screens and error messages and editing screens...so
they cannot just buzz by them without taking some notice of what
is taking place.
*********EVENT PROCESSING************
At least, that's what A-T calls these three new
commands...very useful too I might add...I bet you'll have no
trouble finding valuable uses for these in your applications...
The first is ON ERROR,and it works like this...
in your command file,you put the command ON ERROR DO Whoops...
when dBase encounters an error condition,(you know the impossible
of impossibles ever coming true...since all your software is bug
free)instead of freaking your customer out,it will activate
Whoops (which may include an apology and a calling up of their
still favorite programmer ... or as we do request they turn on
their printer...still no test for that ... and call up a PrtSc
routine to record the offending part of the program)and return
control of the program to your customer.
The second one is ON ESCAPE,and it is a little
different in that it allows you to control the program when and
if the Esc is pressed during program operation... a little more
effective than just setting it off. We already use it for a
printer pause in our mail merge/label program(to allow them to
reload paper,adjust the paper if it got gnarled up)...it works
like this ON ESCAPE DO Pausing...so if they press Esc,they will
be taken to the module Pausing to make a choice...rather than get
the ever so lovely "Terminate command file?(Y/N)" if you happen
to give them the option to escape in times of distress.
The last one is ON KEY...which is really
flexible, you have the ability to test for any key being pressed
and give your customer the option to quit or resume with the
program operation. ON KEY DO Sure...where Sure could request a
verification to continue or abort...
****Database manipulation*******
* SET MEMOWIDTH TO(allows adjustment of output
columns of memo fields...printing or display)
ex. as a default,1.1 let it be 50...so a SET
MEMOWIDTH TO 25 would crunch it up to have a column width of 25,
the SET MARGIN TO 8 would only affect the printer...not the
display.
* SET ORDER TO (set controlling index file
order w/o closing,reopening .ndx file)
ex. USE Rentals Index Client,Address,Rate
(obviously Client is the controlling .ndx
file)
SET ORDER TO 2 (changes the controlling
.ndx file to be Address... TO 3 would be Rate)
*
>> Functions
********Functions********************
A whole mouth watering bunch of them...some
you'll find indespensible and others you'll make use of now and
again...both point to the fact, that A-T is listening to it's
programming community and making changes.
<<<<Input functions>>>>>>
These are probably some of the most requested
changes...and extremely useful...my old workarounds were dogs
compared to these simple functions...enjoy them.
* INKEY() ... allows you to determine which key
or keys the customer last pressed and take appropriate action...
as you know,ever key has a corresponding ASCII code value...
that's what you test for... and act on it...so now you can use
the numeric key pad(cursor keys) and allow some creative uses in
editing,entry,screen displays,etc.
* READKEY() is like INKEY() but there is some
crucial differences...it is like INKEY by returning that same
ASCII code...but you use it during full-screen commands(you know
what they are...APPEND,EDIT,etc)...and it also allows you to know
if any data on that screen was changed.
<<<character type functions>>>
* LEFT ... Substring search from the first part
of a character string.
* LTRIM ... removes all leading blanks to your
character expression.
* REPLICATE ... one of my favorites ...
already...REPLICATE("*",25) will produce a string of 25 * at the
current position...it's really great to use in box drawing on
your screen... or to simulate a bar graph(example in dB3 manual)
* RIGHT ... substring search starts from the
farthest right character(opposite of LEFT...makes sense).
* STUFF ... what every programming language
should have a STUFF command ... actually this can be quite handy
... it allows you to change any part of a character string, with-
out the need to reconstruct the entire string. Hard to visualize?
i.e. STUFF([abc],2,1,[xyz]) will give you axyzc ... the syntax is
STUFF(<expC1>,<start position>,<number of characters>,<expC2>)
* TRANSFORM ...allows you to present a
formatted PICTURE of a characters/numbers utilizing any of the
following...?,??,DISPLAY,LABEL,LIST,REPORT...syntax as follows:
suppose you had a .dbf and the first record's
C_name was Ashtot
. DISPLAY TRANSFORM(C_name,[@R X X X X X X])
. A s h t o t
suppose you had a yearly income of $23,500 from
Ashtot.
. DISPLAY TRANSFROM(Yr_income,[###,###.##]
. 23,500.00
<<<Numeric Type>>>
* ABS ... seems pretty obvious(as the other two
are)...gives you the absolute value of a number...which means you
don't get a negative value ... even if you say ? ABS(30-25),
results in 5 ... has no different results saying ? ABS(25-30).
* MAX ... will give the maximum value of two
numeric expressions
* MIN ... does the exact opposite ... the
minimum of two numeric expressions
* MOD ... short for modulus...will allow you to
determine the fraction result of two numbers ... the first number
is limited and divided by the second number...
. ? MOD(133,36)
. 25
. ? MOD(36,133)
. 36
. ? MOD(12,10)
. 2
. ? MOD(10,12)
. 10
. ? MOD(12,-10)
. -8
<<<<Testing Functions>>>>
These are some of the ones that I really have
been anxiously waiting for since dBaseII was introduced...I hope
you'll also see alot of program controlling value in these
functions.
* DBF() will return the name of database of the
currently selected work area
* NDX() will return the indexes open in the
currently selected work area
* DISKSPACE() will return the amount of
diskspace available on any given drive
* FIELD() will return all the field names of
the current dbf ... FIELD(4) will give you the name of the fourth
field in the current dbf
* FOUND() returns a logical variable ... in
response to a previous FIND,SEEK,LOCATE,CONTINUE...a quicker
access to results than EOF() test,especially on a large dbf
* IFF(<expL>,<exp1>,<exp2>) .... a conditional
expression ... w/o IF ELSE ENDIF ... it works like this... if the
expL test returns true,then do exp1 otherwise do exp2...the IFF
statement can be used from the prompt,command files,Report forms
or Labels.
* ISALPHA(<expC>)...will evaluate the expC to
see if expC begins with an Character,rather than a number... it
returns a logical .T. or .F.
* ISCOLOR()... evaluates for a color monitor
... and returns a .T. or .F. ... so you can manipulate the screen
appropriately for the monitor present.
* ISLOWER(<expC>) ... returns a .T. or a .F.
after evaluating the expC for the initial character as lower
* ISUPPER(<expC>) ... just the opposite of
above ... checking for first letter of expC to be upper and
return a .T. or .F.
* LUPDATE() ... excellent tool for autoback ups
... returns the date of the last update of the dbf in use.
* RECCOUNT() ... gives you the fastest possible
way of counting the number of records in the dbf in use.
* RECSIZE() ... determines the size of a record
in the currently used dbf
<<<<Identification Functions>>>>
* FKLABEL(<expN>...is a function to allow you
to set function keys on computers that have use non-numeric
labels as identification for their function keys.
* FKMAX() ... will tell you how many function
keys are on a particular computer... and then using FKLABEL...
redefine them for your programs needs.
* GETENV(<expC>) .. will return specific
operating system environmental information. Example:
? GETENV("PATH")
. c:\brief;c:\dos;c:\
* OS ... returns name of the operating system
.. footsteps towards bigger and better things to come?
* VERSION ... returns what version of dBaseIII
you are running in today...in case you want to test for specific
versions,since your commands from dBase III 1.2 will not run on
1.1 or 1.0.
Well,that about does it for this quick and
dirty review...hope it helps you out some...if you have any
questions...call Ashton-Tate...or leave me a note on this RBBS...
I will try and answer what questions you have...
-----------------------------------------------------------------
Review by: Randy Wallin, West Palm Beach, FL -07/14/85-
First transmitted to the SMUG BBS, 301-963-5249, -07/14/85-
-----------------------------------------------------------------