home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
database
/
db4bugs.zip
/
ANOMLY10.TXT
< prev
next >
Wrap
Text File
|
1989-05-22
|
8KB
|
170 lines
ANOMALIES UPLOADED ON 5-22-89
ANOMALY10.TXT
The following listing addresses four known anomalies when using
dBASE IV. Use of these techniques will aid you in avoiding
anomalies that have been reported to our Software Support
Center. There is also one Usage Tip that may be used in order to
avoid further problems or misunderstandings when using the dBASE
IV product. This report will be supplemented as new information
is received.
*****************************************************************************
ANOMALIES
SPOOL not available in dBASE IV
The SPOOL command is not available in Novell versions 2.10
and above. dBASE IV is certified to run only on versions
2.1x. Page D-7 of Network Installation illustrates a sample
Login script which initializes a print spooler with the
command #SPOOL. The proper command to activate a spooler in
a login script in 2.1x is #CAPTURE. Novell versions 2.0x
used the SPOOL command syntax.
There are other places that reference SPOOL, such as on page
2-5 of Network Installation, and page GS-7 of Getting
Started, where printer device selections list \\SPOOLER as
an option. Again, this option is non-functional under the
2.1x environment.
================================================================================
APGEN won't overwrite old .PRG files on a network
Regenerating an existing application does not overwrite the
associated .PRG files using the Application Generator on a
network. Even when you specify Y when asked whether or not
to overwrite, the old .PRG files are not overwritten but the
newly generated code is appended to the end of the file.
WORKAROUND:
Delete the <application name>.PRG and <main menu>.PRG files
before regenerating the application.
================================================================================
KEY() <.MDX filename> needs to be a character expression
The explanation of the KEY() function is misleading in the
"Functions" page 4-65 of Language Reference. The <.MDX
filename> argument is a character expression, meaning it
should be enclosed in quotes.
================================================================================
ROLLBACK/COMPLETED() do not function as documented
The functionality of ROLLBACK in Transaction processing is
not the same as stated in the documentation (both on pages
2-229 of Language Reference and on page 4-21 of Networking
with dBASE IV.) The same is true of the values returned by
the COMPLETED() function.
A transaction is a unit of work which contains a sequence of
database operations. The transaction processing commands of
dBASE IV provide the capability of data recovery if an error
occurs during the course of a transaction. The BEGIN
TRANSACTION command creates a transaction log file of all
changes made to the involved database files during a
transaction. The log file(s) (TRANSLOG.LOG in single user
operation, WRKSTN#.LOG in multiuser operation) gives the
user the ability to set the affected file back to the
original values that it contained when the transaction
began. This is done via the ROLLBACK command. (See Chapter
3, "Transaction Processing" in Networking with dBASE IV.)
The ROLLBACK command sets all involved files back to their
original, consistent state, as if the transaction never
occurred. However, the ROLLBACK command behaves like an END
TRANSACTION command in that the transaction log file resets
the involved files to their original states, the transaction
is ended, the log file is deleted and the program continues
on to the line following the END TRANSACTION command. The
documentation is incorrect in stating that a ROLLBACK
command will leave the transaction open and active.
Another consideration with the ROLLBACK command is that it
functions much like a RETURN or DEACTIVATE MENU command - it
causes an immediate return from the procedure in which it is
contained so that any commands that are located after the
ROLLBACK command will never be executed. As stated above,
program command will continue on to the line after the END
TRANSACTION command. Consequently, many of the examples in
the documentation in Networking with dBASE IV Chapter 3 are
incorrect (e.g. on pages 3-4 and 3-7).
The documented return values of the COMPLETED() function are
also inaccurate. COMPLETED() tests whether a transaction
has ended successfully or not. If the END TRANSACTION
command was issued, COMPLETED() will be set to a true value
and the log file will be deleted. If a ROLLBACK has
occurred, the changes made during the transaction are
aborted, hence COMPLETED() will return a false value (.F.).
It also returns a false when tested within a transaction
procedure, since the transaction is in progress. The
function does not return a .T. after a ROLLBACK command, as
documented.
Two other important functions should be discussed:
ISMARKED() and ROLLBACK(). ISMARKED() tests whether or not
a file is in an inconsistent state; either a transaction is
in progress or perhaps the program never finished and the
transaction log file still exists. If ISMARKED() is set to
.T. because an error occurred, a ROLLBACK may be required.
The ROLLBACK() function returns a default value of .T. and
will also return .T. after a successfully completed ROLLBACK
command. If a ROLLBACK command fails to reset the files to
their original states for any reason, ROLLBACK() will return
a false value.
The transaction processing functions return the following
values:
────────────────────────────────────────────────────────────────────────
Transaction status: COMPLETED() ISMARKED()
ROLLBACK()
────────────────────────────────────────────────────────────────────────
In the middle of a
Transaction: (a) .F. .T. .T.
After a completed
Transaction: (b) .T. .F. .T.
After a completed
ROLLBACK: (b) .F. .F. .T.
If the ROLLBACK
fails: (b) .F. .T. .F.
────────────────────────────────────────────────────────────────────────
(a) - Tested in an error procedure
(b) - Tested after the END TRANSACTION
================================================================================
USAGE-TIP
BROWSE:Fields:Blank Field on index key field is dimmed
The menu option BROWSE:Fields:Blank field is dimmed, that
is, unavailable on a master index key field. However, when
the cursor is on that key field, the contents may be changed
manually. In order to blank a master key field within
BROWSE, cursor to that field and then press {Ctrl-Y} or
{Ctrl-T}.