README.TXT ========== This file contains information about using the Oracle Data Browser Demo Disk. For more product information, please contact Oracle Corporation at (800) 633-0580. CONFIG.SYS ========== This version of the Oracle Data Browser demo disk does not support loading of MS-DOS into the high memory area (HMA). Before using the Oracle Data Browser demo disk, you should check your MS-DOS configuration file (CONFIG.SYS) found in the root directory of your system disk. If the root directory of your system disk contains the line "DOS=HIGH", you should change this line to "DOS=LOW,NOUMB" and reboot your machine before starting the Oracle Data Browser Demo Disk. MOUSE SUPPORT ============= The Oracle Data Browser Demo Disk does provide limited mouse support in its main menu. Load your mouse driver (e.g. MOUSE.COM) before starting the demo. This demo disk should work with the Microsoft Mouse or compatible pointing devices. STARTING THE DEMO ================= You must set your default drive to the floppy drive that contains the Oracle Data Browser Demo Disk. For example, if you inserted the Oracle Data Browser Demo Disk into drive A, you should then set your default drive to drive A by entering "A:" at the MS-DOS command line. To start the demo, enter "DEMO" at the MS-DOS command line. Use the space bar to advance to the next slide and the <Scroll Lock> key to pause. Press the <ESC> key to exit the demo. COPYING THE DEMO DISK ===================== This disk is not copy protected. Use the MS-DOS command DISKCOPY to copy this disk. Please feel free to copy as needed for demonstration purposes.
This is the SQL*Forms 3.0.16.11.3 release.
(Linked with PL/SQL 1.0.35.1.0)
This version was primarily created as a synchronized-release version, but
also includes the bug fixes noted below in section "BUGS FIXED IN 3.0.16".
Additionally, bugs 91978, 123888, 124022, 124749, 129519, 131235, 132999,
134900, 135121, 135239, 135983, 137235, 138310 have been fixed in this
version of SQL*Forms.
Bugs outstanding: 115687, 127098, 129342, 138247, 138491.
+------------------------------------------------------+
| CAUTION: |
| Installation of this patch on an OS/2 system with a |
| local ORACLE database requires that the database |
| and Required Support Files be updated to 6.0.36.1.0 |
| BEFORE this patch can be applied! Failure to do so |
| may result in making the RDBMS inoperable! |
| |
| Installation of this patch on a client-only system |
| (no local database) requires that Required Support |
| Files (16-bit) 6.0.36.1.0 be installed on the client |
| system BEFORE this patch can be applied! | |
+------------------------------------------------------+
Attached below is the standard README text file which discusses bug fixes and
functionality changes. This text file is a cumulative file for all 3.0.16
versions of SQL*Forms.
--------------------------------------------------------------------------------
Release Bulletin
SQL*Forms Version 3.0.16 (Production)
April 13, 1992
This bulletin contains important information about this release of SQL*Forms.
It is recommended that you familiarize yourself with the contents of this
bulletin before attempting to use this version. The bulletin includes function
key mappings for this release for VT100 and VT220 terminals.
New Features since Versions 2.0 and 2.3
=======================================
A complete list of new and changed features can be found in Appendix A of the
SQL*Forms Designer's Reference Version 3.0. Major new features include:
o Enhanced User Interface Portability
o The SQL*Forms (Design) interface is completely revised and includes:
o Streamlined Menu structure with pull-down menus
o Ability to reference and copy application objects such as triggers
o Ability to enforce referential integrity constraints
o Context-sensitive online help
o Enhanced Debug Mode
o Integrated text editor
o Automatic master-detail block coordination
o PL/SQL Integration
o Ability to integrate pull-down menus built with SQL*Menu
o Enhanced SQL*Forms (Run Form) Capabilities:
o Pop-up Pages, List-of-Values, and Field Editor
o Format masks for formatting field contents
o Dynamic field and display attributes
o Mouse support for bitmap environments
Documentation
=============
Complete documentation is available with the release. All users are advised to
obtain the most current documentation. The Version 3.0 documentation set
includes:
SQL*Forms Operator's Guide 3301-V3.0
SQL*Forms Operator's Quick Reference 3704-V3.0
SQL*Forms Designer's Tutorial 3302-V3.0
SQL*Forms Designer's Quick Reference 3708-V3.0
SQL*Forms Designer's Reference 3304-V3.0
| NEW! Advanced SQL*Forms Techniques 5763-V3.0
Introduction to SQL*Forms and SQL*Menu 19192-V3
NEW! Advanced SQL*Forms designers are encouraged to get the new Advanced
SQL*Forms Techniques book, now available showing you how to implement specific
SQL*Forms functionality in your applications.
For information on mapping function keys and video attributes or customizing
key mappings, consult the Oracle*Terminal User's Guide, part no. 5206-V1.0.
For complete information on PL/SQL, refer to the PL/SQL User's Guide and
Reference, part no. 800-V1.0.
Keyboard cards are available for designers and operators:
SQL*Forms Designer's Keyboard Card 755-V3.0
SQL*Forms Operator's Keyboard Card 3906-V3.0
Upgrading from Earlier Versions
===============================
1. All forms created prior to Version 3.0.15 must be regenerated to run
with SQL*Forms Version 3.0.15. This was due to a PL/SQL problem that
was fixed, that required regeneration on the SQL*Forms side. Now that
version 3.0.16 is full production, we will strive to minimize future
regeneration needs.
2. Forms created prior to SQL*Forms Version 3.0 must have their .INP files
converted, using CONVFORM -vXX inp_filename formname username/password,
where:
XX is either 20 or 23, depending on if you are converting from
Version 2.0 or 2.3 of SQL*Forms
inp_filename is the name (without the .INP suffix) of the old
INP file that you are converting to Version 3.0 - not the name
of the new INP file that you want to create as stated on page
23-4 of the SQL*Forms Designer's Reference Version 3.0. This
documentation bug has been fixed in the latest reprint of the
document.
Once the .INP files are converted to the Version 3.0 format, forms must
be regenerated by using GENERATE inp_filename username/password.
3. When you use the CONVFORM utility to convert an INP file which you have
been running under Version 2.0, Oracle Corporation recommends that you
specify the -f switch in order to preserve the forms's functionality.
The -f parameter inserts the NOFAIL key-word after #exemacro in all
trigger steps. For more information on the NOFAIL key-word, refer to
the SQL*Forms Documentation Addendum Version 2.3.
If you decide to take advantage of Version 3.0's success/failure logic,
you should not specify the -f switch. However, be advised that the
resulting form's changed behavior might require you to perform
additional modification and testing.
Also, when converting directly from Version 2.0 to 3.0, you need to
convert the CRT files in order for your forms to interpret box
characters. This is not the case when going from Version 2.3 to 3.0.
If you do not have CRT installed when you run the CONVFORM utility from
Version 2.0 to 3.0 you either need to copy the necessary CRT files into
the SQLFORMS30 directory, or you need to reassign the logicals
ora_crt30 and ora_crtdef30 to point to the location of the CRT files.
4. For information on using Version 2 CRT files and key mappings with
SQL*Forms 3.0, refer to the Key Mappings section below and the
Oracle*Terminal Release Bulletin.
5. To aid in your migration from SQL*Forms 2.3 to SQL*Forms 3.0, some of
the symbols used to invoke SQL*Forms 2.3 have been retained for
SQL*Forms 3.0. These symbols are IAC, IAD, IAG, IAP, RUNFORM,
SQLFORMS, CONVFORM, and GENERATE. While this prevents users from
having to learn new ways to invoke SQL*Forms 3.0, it can cause
problems for Oracle products which require SQL*Forms 2.3. These
products include:
CASE*Dictionary 4.1
CASE*Generator for SQL*Forms 1.0
CASE*Designer 1.1
SQL*Menu 4.1
Easy*SQL 2.3
SQL*Plus 3.0
SQL*TextRetrieval 1.1
Before using any of these products, the user must type:
@ORA_SQLFORMS:SQLFORMSUSER
It might be convenient to have your system manager define this
command as a symbol.
After using this command and before using SQL*Forms 3.0 or
SQL*Menu 5.0, the user must type:
@ORA_SQLFORMS30:SQLFORMS30USER
Alternatively, if you specify a "30" at the end of the above symbols
(e.g. sqlforms30), they will run SQL*Forms 3.0, while a "23" will
invoke SQL*Forms 2.3 (e.g. sqlforms23).
6. In SQL*Forms Version 2.3, it was possible, though not recommended, to
have a column defined as a CHAR in a database table and have the
corresponding field defined as a NUMBER or a DATE within the SQL*Forms
applications. In most cases, this was done to perform some type of
formatting for the field.
SQL*Forms Version 3.0 processes NUMBER and DATE fields as true NUMBER
and DATE datatypes - not character strings. A form developed on
Version 2.3 that used this convention will not behave the same in
SQL*Forms 3.0. For example, leading zeroes would be truncated on a Zip
Code field that was defined as CHAR in the database and NUMBER in the
form. Format masks are an easier way to enforce changes in the display
format of a field and to ensure that valid data gets entered.
In previous versions of SQL*Forms, RMONEY fields would round fields
when data retrieved had more than 2 decimal places. In SQL*Forms 3.0,
an error message is issued that informs the user that too many decimal
places have been entered (bug fix 31586). If rounding is desired, a
format mask can be used to enforce rounding. This should be done on a
field defined with a NUMBER datatype - not RMONEY.
General Notes/Restrictions
==========================
1. All Oracle*Terminal key mappings are stored in ORA_ROOT:[SQLFORMS30].
Default mappings can be found in the ORATERM.R resource file, and
should not be deleted nor moved from the [SQLFORMS30] directory.
2. On VMS systems, when SQL*Forms 3.0 is installed, the CONVFORM and
CONVFORM30 symbols are created to invoke the SQL*Forms convert utility.
Note that the SQL*Forms Designer's Reference only refers to
CONVFORM and not CONVFORM30.
3. On page 23-4 of some versions of the SQL*Forms 3.0 Designer's
Reference, in the section named 'INP to INP Conversion' the text and
the example are wrong. The example should read:
CONVFORM -v23 OLD OLD [username/password]
where:
the first 'OLD' is the name of the INP file that you want to
convert (without the .INP suffix) - not the name of the INP
file you want to create.
the second 'OLD' is the name of the old form that you want
to convert, not the name of the new form you want to create.
These documentation bugs have been fixed in the latest reprints of the
documentation.
4. When using SQL*Forms on the PC, a form is limited to 744 fields per
form. Also on the PC, all form text, V2 trigger text, trigger
procedures, and compiled PL/SQL code is now unlimited.
5. The DEMOBLD.COM file has been revised. In Version 3.0.15 and above,
when demobld.com is executed, it will inform the user that certain
demo tables will be dropped and then asks if the user wants to proceed
(as opposed to not informing the user and just dropping the demo
tables).
PL/SQL Notes/Restrictions
=========================
1. PL/SQL CHECKS
~~~~~~~~~~~~
In the course of applications development using SQL*Forms
and PL/SQL, infrequently an error message such as:
PL/SQL Check 12345 -- Please inform your Oracle Representative
may present itself at trigger/procedure-compilation time. In
most cases these "Check" errors are the result of
inadvertently using a PL/SQL object in an unexpected or
unsupported manner, or even more often by an error in syntax
which confuses the PL/SQL compiler. An example might be the
(invalid) attempt to assign a value to a user-defined
exception, or an (incorrect) attempt to RAISE a local PL/SQL
variable. In nearly all cases, a systematic use of comments
/* ... */ can quickly narrow down the problem to a
particular statement in the PL/SQL block. This simpler case
can then be examined more closely to see which syntactic or
semantic error is causing the "Check" error.
2. INTERNAL SQL*FORMS CONSTANTS
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The arguments to many of the SQL*Forms packaged procedures and
packaged functions occasionally cause confusion. One may
wonder why sometimes values are enclosed in single quotes,
while other values are simply given without quotes. An
example of a packaged function that illustrates this point
is:
BLOCK_CHARACTERISTIC( 'blockname', FIRST_FIELD )
Or consider the packaged procedure:
EXIT_FORM( ASK_COMMIT , NO_ROLLBACK );
These "special words" like ASK_COMMIT, NO_ROLLBACK, and
FIRST_FIELD do not require quotes because they are actually
PL/SQL numeric constants which are declared automatically by
SQL*Forms at startup. Each one of these PL/SQL constants
corresponds to a unique integer, whose *actual* numeric value
is of no practical use to the Forms designer. With this in mind,
it is easy to see how a Form-Level procedure could actually
"receive" the value ASK_COMMIT in a *NUMBER* parameter. In
fact some of the automatically-generated Master/Detail
procedures DO use this technique. Currently there is no
mechanism for designers to declare their own such numeric
constants, so the internally declared ones are the only ones
which exist in Forms 3.0.
3. DEFAULT PARAMETER VALUES FOR PL/SQL PROCEDURES
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When declaring a PL/SQL procedure, it is possible to assign
default values to the formal parameters declared. The default
value (either a constant or an expression) must, of course,
correspond in datatype with the type declared for the formal
parameter with which it is associated. For example, consider
the procedure below:
PROCEDURE fp_raise_sal ( pp_sal IN OUT NUMBER,
pp_percent_raise IN NUMBER)
IS
BEGIN
pp_sal := pp_sal * ( pp_percent_raise / 100 );
END;
To raise the salary of the current employee in the EMP block
by thirty (30) percent, we would then use the command:
fp_raise_sal( :EMP.SAL , 30 );
However, if ten (10) percent was the default raise, we could
build this fact into the procedure itself by giving the
PL/SQL parameter 'pp_percent_raise' a deafult value of ten
(10). We use the intuitive syntax:
PROCEDURE fp_raise_sal ( pp_sal IN OUT NUMBER,
pp_percent_raise IN NUMBER := 10 )
IS ... ~~~~~
+--------+ /
__ Default ________/
Value
+--------+
This allows us to call the 'FP_RAISE_SAL' procedure with
either of the following two syntaxes:
fp_raise_sal ( :EMP.SAL ); /* Trailing parameter */
/* which has a default */
/* may be omitted. */
fp_raise_sal ( :EMP.SAL , 20 ); /* Providing a value for */
/* the 2nd parameter */
/* overrides the default */
This technique could also be used to enhance existing
procedures to accept additional parameters *without* having to
alter any of the existing invocations of that procedure --
provided each of the new parameters has a Default Value
associated to it.
4. RESTRICTIONS
~~~~~~~~~~~~
(+) Default values for formal parameters are allowed
exclusively for 'IN' parameters.
Both 'OUT' and 'IN OUT' parameters must have a place to
copy their value on the way "out" of the procedure, and
hence cannot be omitted from the procedure's parameter list.
(+) Only *TRAILING* parameters having default values may be
omitted from the procedure call.
For example, if a procedure is declared with two formal
parameters having default values as follows:
PROCEDURE fp_proc ( pp_one IN CHAR,
pp_two IN CHAR := 'Hello',
pp_three IN CHAR := 'World') IS ...
Then we have the following behaviour when omitting one
parameter.
fp_proc( 'FirstVal', 'SecondVal');
| |
V V
fp_proc( pp_one , pp_two , pp_three );
| | |
V V V
'FirstVal' 'SecondVal' 'World'
and definitely NEVER :
~~~~~
fp_proc( 'FirstVal', 'SecondVal');
| \_______
V \
fp_proc( pp_one , pp_two , pp_three );
| | |
V V V
'FirstVal' 'Hello' 'SecondVal'
In short, in this example, to specify a value for the
third parameter, you *MUST* also supply a value for the
second parameter.
5. DECLARING AND USING PL/SQL FUNCTIONS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In addition to (Form-Level) procedures, SQL*Forms also
supports the use of PL/SQL functions. Any designer who has
used both the built-in packaged procedures and packaged
functions will understand the simple differences between
the two. Below we compare the two:
Procedure Function
------------------------- --------------------------
(+) Defined in the SQL*Forms (+) Defined in the SQL*Forms
'Procedure Definition' 'Procedure Definition'
Screen Screen
(+) May be referenced or (+) May be referenced or
copied from "library" copied from "library"
form form, as if it were a
procedure
(+) Is a Named PL/SQL Block (+) Is a named PL/SQL Block
which performs a task which represents an expression
when invoked of an explicit datatype
when evaluated
(+) May accept parameters (+) May accept parameters
(+) Has no return value, but (+) MUST return one value, and
May pass back results May pass back results
in OUT parameters in OUT parameters
(+) May have default values (+) May have default values
for formal parameters for formal parameters
(+) Allows trailing params (+) Allows trailing params
possessing deault values possessing default values
to be omitted when to be omitted when
invoking evaluating
(+) For exception handling, (+) For exception handling,
Behaves like embedded Behaves like embedded
PL/SQL block when invoked PL/SQL block when evaluated
The syntax for declaring a PL/SQL function parallels that of
a Procedure, with the addition of the 'RETURN datatype'
clause which identifies the type of value which the function
returns:
--------------------------------------------------------------
FUNCTION function_name ( parameter_name mode [:= value], ... )
~~~~ ~~~~~
RETURN datatype
~~~~~~~~
IS
BEGIN
:
RETURN( expression );
: ~~~~~~~~~~
EXCEPTION
:
RETURN( expression );
: ~~~~~~~~~~
END;
--------------------------------------------------------------
MODE: Is one of IN, OUT, or IN OUT.
~~~~
VALUE: Optional constant or expression of the same
~~~~~ datatype as the associated parameter to specify
a default value for the formal parameter. An
explicit value passed-in at evaluation time
overrides the default value.
DATATYPE: Any of the datatypes that are supported for PL/SQL
~~~~~~~~ formal parameters are supported for the RETURN
value of a PL/SQL function. These include DATE,
NUMBER, CHAR, and BOOLEAN. Recall that LONG is not
a supported datatype of either parameters or return
values.
EXPRESSION: A constant or expression of the same datatype as
~~~~~~~~~~ declared in the Function Specification's
'RETURN datatype' clause. It is an *ERROR* if a
PL/SQL function does *NOT* return a value on exit.
The PL/SQL instruction 'RETURN( expr )' returns the given
expression as the value of the function and exits with success.
Since a function represents an expression of a given
datatype, it may be used in precisely the same way that a
constant or local variable of the same datatype would be
used.
One notable exception to this rule is the use of PL/SQL
functions in DML statements. Only constants or local
variables may be used in the role of 'bind variables' in DML
statements. A function value can always be assigned to a
local variable of appropriate datatype, and this local
variable used in the DML statement, to accomplish the same
result.
An example of a function, FF_DEPT_SIZE, which returns the
total number of employees in a given department follows:
+--------------------------------------------------------
| Procedure Name: FF_DEPT_SIZE
+--------------------------------------------------------
| ---- Procedure Text ----
|
| /* FF_DEPT_SIZE
| ** ~~~~~~~~~~~~~
| ** Returns the number of employees in
| ** the department whose number is passed in as
| ** a parameter.
| */
| FUNCTION ff_dept_size ( pp_deptno IN NUMBER )
|
| RETURN NUMBER /* Funct. Return Type */
|
| IS
| lv_temp_count NUMBER; /* Declaration Section */
|
| BEGIN
| SELECT COUNT(*)
| INTO lv_temp_count
| FROM EMP
| WHERE DEPTNO = pp_deptno;
| RETURN ( lv_temp_count ); /* Return Function Val */
|
| EXCEPTION
| WHEN OTHERS THEN
| RETURN ( -1 ); /* Return minus one */
| END; /* if problems arise */
+--------------------------------------------------------
Then, a trigger could use this function in the following way:
+--------------------------------------------------------
| Trigger Name: ON-VALIDATE-FIELD
+--------------------------------------------------------
| /*
| ** If the Total Number of Employees in
| ** the current department exceeds 100,
| ** then disallow this entry
| */
| IF ( ff_dept_size(:DEPT.DEPTNO) > 100 ) THEN
| ------------
| MESSAGE('WOW! Current Department is too big now...');
| RAISE FORM_TRIGGER_FAILURE;
| ELSE
| :CONTROL.TOTAL_EMPS := ff_dept_size( :DEPT.DEPTNO );
| END IF;
+--------------------------------------------------------
While the above trigger is not the most efficient way of
accomplishing the goal -- i.e. we call the function twice
when we could have coded it such that we only used the
function once -- it does demonstrate that functions can be
used in IF...THEN and assignment statements.
NOTE: Anything that can be done with a Function, can also be
done with a Procedure which includes an OUT parameter
to return the desired value. Anything that can be done
with a Procedure, can also be performed with a Function
whose RETURN value reports the status of the task
performed. So, while the syntax of a Procedure and a
Function differs slightly, a particular task can be
done via a PL/SQL Procedure or Function based on the
syntax which the designer deems most convenient.
6. PLANNING AHEAD FOR BUILT-IN PROCEDURES (FORMS 4.0 AND HIGHER)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL*Forms 4.0 will introduce a number of new packaged
procedures, or "built-ins", that will enhance the current set
of functionality available to the Forms Designer. Future versions
of SQL*Forms (4.0 and higher) will all use these built-ins.
When these new procedures (and functions) are introduced in
the software, these new names will become reserved words and
would conflict with any Form-Level procedures with the same
names in your application. To plan ahead, we have provided a
tentative list of "built-in" procedure names which should not
be used for names of Form-Level Procedures and Functions of
your own creation. Any conflicts that you identify can be
changed now to avoid problems later. Adopting a naming
convention for your procedures and functions in your
applications like:
FP_PROCNAME for Forms Procedure
FF_FUNCTNAME for Forms Function
PP_PARMNAME for PL/SQL Parameter
can insure that your future development will not encounter
any naming conflicts as SQL*Forms is enhanced.
The tentative list for 4.0 includes:
------------------------------------
Add_Association_List_Pair
Add_Group_Column
Add_Group_Row
Cancel_Dialog
Change_Alert_Message
Clear_Message_Line
Close_Query
Convert_Other_Value
Create_Association_List
Create_Group
Create_Group_From_Query
Create_Queried_Record
Delete_Association_List
Delete_Group
Delete_Group_Row
Delete_Group_Rows
Delete_Timer
Disable_Item
Fetch_Record
Find_Alert
Find_BColumn
Find_CColumn
Find_DColumn
Find_Editor
Find_Group
Find_LOV
Find_NColumn
Find_Window
Get_Editor_Value
Get_Group_Cell
Get_Group_Row
Get_Group_Row_Count
Get_Group_Select_Count
Get_Group_Selection
Get_LOV_Selection
Get_Menu_Item
Get_Menu_Radio_Group
Group_Rows_Fetched
Hide_Window
Image_Add
Image_And
Image_Or
Image_Subtract
Image_UnZoom
Image_Xor
Image_Zoom
Insert_Record
Logon
Logon_Screen
Logout
Move_Window
OracleGraphics_Available
Populate_Group
Read_Image_Database
Read_Image_File
Read_Sound_Database
Read_Sound_File
Replace_Content
Repopulate_Group_With_Query
Reset_Group_Selection
Resize_Window
Run_OracleGraphics
Run_SQLReportWriter
Scroll_Canvas
Select_Records
Set_Block
Set_Form
Set_Group_Cell
Set_Group_Selection
Set_Group_Row
Set_Menu_Item
Set_Timer
Set_Record_Status
Set_Window_Content
Show_Alert
Show_Dialog
Show_Editor
Show_LOV
Show_Window
SQLReportWriter_Available
Update_Record
Write_Image_Database
Write_Image_File
Write_Sound_Database
Write_Sound_File
Built-ins planned for 5.0:
--------------------------
Add_Button
Add_Checkbox
Add_Edit_Item
Add_Image
Add_Radio_Group
Add_Radio_Item
Add_Rectangle
Add_Sound
Add_Text
Add_Text_List
Create_Alert
Create_Editor
Create_LOV
Create_Window
Delete_Alert
Delete_LOV_Selection
Delete_Editor
Delete_Window
Pecs_Event
Pecs_Facility
POWERSOFT POWERBUILDER [TM]
(C) Copyright 1991-1993 Powersoft Corporation. All rights reserved.
Version 3.0
(Use scroll bar to review)
BEFORE INSTALLING POWERBUILDER
1. IMPORTANT: If Microsoft Windows is installed in a write-protected network
directory, a person with write privileges to the Windows directory must install
this product.
2. Review the Product Release Notes, if any, for special instructions pertaining to
the installation of this product.
3. Be sure that no Powersoft products or the Watcom SQL engine are running.
TO INSTALL POWERBUILDER
1. Insert the diskette labeled "Disk 1 of 5" into the floppy drive of your computer.
2. Run the SETUP program on the diskette. You can do this in one of three ways.
(This example uses Drive A, however, your floppy drive may be a different letter.)
* From the DOS prompt, type: WIN A:\SETUP
* From Windows Program Manager, choose File/Run and type: A:\SETUP
* From Windows File Manager, double-click on the SETUP.EXE file on Drive A.
3. Below is a brief description of what is installed when you make your selections:
* PowerBuilder Enterprise Edition: Includes all files necessary to run the
Powersoft PowerBuilder development environment. When installing this
selection, the PowerBuilder ODBC Database driver and initialization file,
PBODB030.DLL and PBODB030.INI, are installed in the PowerBuilder
directory.
* Sample Application: Files that provide a collection of examples which
demonstrate PowerBuilder features. Although this is optional, we
recommend that you install it.
* PowerBuilder Sample Database: Installs the PowerBuilder Demo Database
and Database Log files. This is a prerequisite when installing the Sample
Application.
* WATCOM SQL: Installs files to run WATCOM SQL in the PowerBuilder
environment. This option is required when installing the Sample
Application.
* Open Database Connectivity Drivers: Based on your selections, the
appropriate vendor ODBC drivers are installed in your Windows system
subdirectory (for example, c:\windows\system).
4. The installation procedure will prompt you:
* When the procedure needs the next diskette or more information, or when
it requires a decision to change or replace files. Respond to the prompts
and select options as appropriate.
* When the procedure finds existing Powersoft initialization (*.INI) files in
the target directory or newer versions of ODBC drivers in your Windows
system subdirectory, such as ODBC.DLL and ODBCINST.DLL. If you are
unsure as to how to proceed, we suggest that you consult your system
administrator for direction.
* When the procedure is ready to update your AUTOEXEC.BAT file. You can
choose to let the installation procedure change the existing file, create a
new file for you, or proceed without making any file changes.
* When the procedure is ready to add the PowerBuilder and WATCOM
program items to a Program Manager group. You can choose to let the
installation procedure create the Program Group and add the Program
Items. To familiarize yourself with the Program Items, we strongly
recommend that you allow this installation procedure to create the
Program Group, and delete any unnecessary Program Items afterwards.
5. Exit to DOS and verify that the Powersoft directory(s) is included in your DOS
PATH command. This will happen automatically if you let the installation
procedure update your AUTOEXEC.BAT file in the previous step.
6. Re-boot your PC and start Windows.
FOR FURTHER INFORMATION
1. Powersoft offers an electronic Bulletin Board Service to all users of Powersoft
Enterprise Series products. This BBS enables you to upload PowerBuilder
libraries for review by the technical support team. It also enables you to
download fixes, code samples, documentation, the latest training course
schedules, and PowerNotes (a series of technical writeups). You can access
the BBS 24 hours a day, 7 days a week, without a fee.
* Powersoft BBS phone number: (617) 229-9735
* Connect information: 8 DataBits, No Parity, 1 Stop Bit, and
speeds of up to 9600 BPS are supported.
2. Powersoft FaxBack provides information in the form of code samples, tips,
techniques, and other documentation sent to your fax machine. You can use
FaxBack 24 hours a day, 7 days a week, without a fee.
* Powersoft FaxBack phone number: (617) 238-6800
3. If you are a CompuServe subscriber, you can use the Powersoft forum, which
is dedicated to answering questions about products, services, and technical
issues. To access this forum on CompuServe, type: GO POWERSOFT
4. For availability of additional ODBC drivers, check the Powersoft Bulletin Board
Service or CompuServe.
5. For technical support when installing PowerBuilder, call (617) 238-1212 from
9 a.m. to 8 p.m. Eastern time, Monday-Friday.
6. To receive ongoing Telephone Support, call (800) 395-3525 for information.
(C) Copyright 1991-1993 Powersoft Corporation
Powersoft Corporation ("Powersoft") claims copyright in this Program and
documentation as an unpublished work, versions of which were first licensed on the
date indicated in the foregoing notice. Claim of copyright does not imply waiver of
Powersoft's other rights. See Notice of Proprietary Rights.
NOTICE OF PROPRIETARY RIGHTS
This program and documentation are confidential trade secrets and the property of
Powersoft. Use, examination, reproduction, copying, disassembly, decompilation,
transfer and/or disclosure to others are strictly prohibited except by express
written agreement with Powersoft.
----------------------------------------
Microsoft Access Version 1.1 README File
May 1993
----------------------------------------
(C) Copyright Microsoft Corporation, 1993
This document provides complementary or late-breaking
information as a supplement to the standard Microsoft
Access documentation.
------------------------
How to Use This Document
------------------------
To view README on screen in Windows Notepad, maximize
the Notepad window.
To print README, open it in Windows Write, Microsoft
Word, or another word processor. Then select the entire
document and format the text in 10-point Courier before
printing.
--------
Contents
--------
Microsoft Access Q&A
Using Microsoft Access with Microsoft LAN Manager
Using Microsoft Access with Microsoft Windows for Workgroups
Additional Information on Setting Up Microsoft Access
on a Network Server
Version 1.1 Setup and Custom Tool Bars and AccessWizards
Running Multiple Data Access Applications
Using SQL Server Data Installed on a Novell NetWare LAN
or a Banyan Network
Using Microsoft Access to Import, Attach, or Export to
Microsoft FoxPro Version 2.5 Files
Setting ODBC Options in the MSACCESS.INI File
Installing the ODBC Stored Procedures (INSTCAT.SQL)
Asynchronous Query Execution and ODBC Drivers
ORACLE Server and Null Indexes
Using Microsoft Access on Novell NetWare Servers and
Banyan VINES Servers (Increasing the Number of
Record Locks)
Setting Up Microsoft Access with a Microsoft License Pak
Enhancing Performance
Installing International Versions of Cue Cards
Using Sample Applications
Analyzing Database Structure
Solving Problems Printing Forms and Reports
Updated SQL Pass Through DLL and Data Definition Language DLL
Available Disk Space
Using DECOMP.EXE to Decompress Microsoft Access Files
Outdated Version 1.0 Files
Microsoft Access Files
IMPORTANT: The errata and omissions in Microsoft Access
documentation are contained in ERRATA.TXT in the Microsoft
Access program directory.
--------------------
Microsoft Access Q&A
--------------------
The Microsoft Access Help file includes answers for the most
frequently asked questions about Microsoft Access. To view
these, click Product Support in the Microsoft Access Help
Table of Contents, and then click Common Questions and Answers
in the Microsoft Access Product Support topic.
-------------------------------------------------
Using Microsoft Access with Microsoft LAN Manager
-------------------------------------------------
The following problem may occur when using products based
on Microsoft LAN Manager versions prior to 2.2 on your
MS-DOS or PC-DOS workstation.
Using Microsoft Access on an MS-DOS or PC-DOS workstation
running a product based on versions of Microsoft LAN Manager
prior to version 2.2 can irreparably corrupt a database file.
Database corruption is most likely to occur when a user
workstation operates faster than the file server storing
the database file. (Note that the CPU speed alone does not
determine the operation speed of the server. Heavy network
traffic can make the server operate more slowly than a user
workstation(s).)
Products that may be affected include:
DEC Pathworks for DOS version 4.1
Microsoft LAN Manager prior to version 2.2
NCR StarGroup LAN Manager version 3.6
Olivetti Olinet LAN Manager version 2.1
Ungermann-Bass LAN Manager version 2.1
See your network administrator to find out if the information
in this section applies to your network software.
To prevent data corruption when using the enhanced version
of Microsoft LAN Manager version 2.1 or 2.1a, your network
administrator should install the Hotfix that is included
on the ODBC disk.
To determine your version of Microsoft LAN Manager:
> Type net ver at the command prompt to determine which
version of LAN Manager is installed on the user workstation.
You will see information such as the following:
C:\>NET VER
Microsoft LAN Manager Version 2.1.0
DOS Enhanced Workstation
Created at 11-15-91 07:27am
Proceed to the procedure, "To install the Hotfix on each
user workstation," only if the command reports you are
using Microsoft LAN Manager version 2.1 or 2.1a.
If the command does not report which version of Microsoft
LAN Manager you are using, you are using a version earlier
than 2.1. You need to upgrade the workstation to Microsoft LAN
Manager version 2.2 or follow the procedure, "To adapt a
workstation using a version of Microsoft LAN Manager prior to
2.1," at the end of this section.
IMPORTANT: If you are using network software based on Microsoft
LAN Manager and aren't sure which version of Microsoft LAN
Manager it corresponds to, do not install the Hotfix. Instead,
follow the procedure, "To adapt a workstation using a version
of Microsoft LAN Manager prior to 2.1." You can install the
Hotfix later if it's determined you need it.
To install the Hotfix on each user workstation:
1 Type ver at the command prompt to determine which
version of MS-DOS is installed on the user workstation.
2 Insert the ODBC disk in drive A.
3 Copy the appropriate NETWKSTA file on the ODBC Setup disk
to the LAN Manager NETPROG directory and rename the file
NETWKSTA.EXE. You should use the NETWKSTA.500 file for both
MS-DOS version 5.0 and MS-DOS version 6.0. For example, if
LAN Manager is currently installed in the LANMAN.DOS
directory on drive C, and you are using MS-DOS version
5.0, type:
copy a:netwksta.500 c:\lanman.dos\netprog\netwksta.exe
If you are using MS-DOS version 3.3 or 4.0, you must contact
Microsoft Product Support Services to request the appropriate
NETWKSTA file. In the United States, call Microsoft LAN Manager
Product Support Services at (206) 635-7020.
4 Reboot the user workstation.
To adapt a workstation using a version of Microsoft LAN Manager
earlier than 2.1:
> To prevent database corruption when using versions of Microsoft
LAN Manager earlier than version 2.1, turn write-behind off by
adding or modifying the following line in the [workstation]
section of your LANMAN.INI file:
[workstation]
wrkheuristics=X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
NOTE: The Xs are placeholders for values in the range of 0-2.
In all, there should be 33 values in this entry, and the second
value must be 0 (zero). See your Microsoft LAN Manager
Administrator's Reference for details.
IMPORTANT: If this line already exists in your LANMAN.INI file,
change only the second value to 0 (zero).
Note that adding this line may slightly decrease the
performance of your system.
You can also resolve this problem by upgrading to LAN Manager
version 2.2 or later. For details, please contact your network
vendor or Microsoft Product Support at the numbers listed in your
Microsoft Access User's Guide or in Microsoft Access Help. (From
the Help menu, choose Contents, and then click Product Support.)
------------------------------------------------------------
Using Microsoft Access with Microsoft Windows for Workgroups
------------------------------------------------------------
IMPORTANT: Read this topic before you use Microsoft Access
with Microsoft Windows for Workgroups.
While running Microsoft Windows for Workgroups, if you use the
Network button in Microsoft Access dialog boxes to connect
to a password-protected server, you may lose data. To avoid
damaging your database, you must install the updated Microsoft
Windows for Workgroups driver included with Microsoft Access.
Until you have installed this driver, do not use the Network
button in Microsoft Access dialog boxes to make network
connections.
NOTE: If you are considering installing Windows for Workgroups
at a later date, install the updated driver now.
To install the updated Windows for Workgroups driver:
1 Exit Microsoft Windows or Windows For Workgroups.
This driver cannot be installed while you are running
Microsoft Windows.
2 Insert the ODBC disk in drive A.
3 Type a: and then press the Enter key to switch to drive A.
4 Type wfwdrv if Windows is installed on your PC and is in the
PATH statement in your AUTOEXEC.BAT file. Otherwise, do one of
the following:
* If Windows is installed on your PC but is not in the
PATH statement in AUTOEXEC.BAT, type the path where
Windows is installed. For example, type:
wfwdrv c:\windows.
* If Windows is installed on the network, specify the system
directory where USER.EXE is found. For example, to install
the driver in the Q:\SYSTEM directory, type:
wfwdrv q:\system
The Windows for Workgroups driver is installed.
5 Type win to restart Windows.
If you have any questions about this driver, please contact
Microsoft Product Support Services for Windows for Workgroups.
-----------------------------------------------------
Additional Information on Setting Up Microsoft Access
on a Network Server
-----------------------------------------------------
To set up Microsoft Access on a network server, you must run
Setup /a from floppy disks. Do not copy the files to a hard
disk and run Setup /a from there. Unless you run Setup /a
from floppy disks, Microsoft Access won't be properly
configured on the network server, and users won't be able to
set up their workstations from the server using Setup /n.
If you received Microsoft Access on a compact disc and want
to set it up on a network server, you must copy the disk
images to floppy disks and run Setup /a from the floppy disks.
If you're setting up Microsoft Access on a local machine, you
can run Setup directly from the compact disc.
--------------------------------------------------------
Version 1.1 Setup and Custom Tool Bars and AccessWizards
--------------------------------------------------------
Microsoft Access version 1.1 includes updated UTILITY.MDA
and WIZARD.MDA files. If you have modified either of these
library databases -- by creating custom tool bars or adding
custom AccessWizards, for example -- you should make backup
copies of these files before installing Microsoft Access
version 1.1. Then modify the version 1.1 copies of the files
to include your changes.
-----------------------------------------
Running Multiple Data Access Applications
-----------------------------------------
Microsoft Access, Microsoft Access custom applications,
Microsoft Visual Basic version 3.0, and Visual Basic custom
applications all use the same database engine to perform
their database-related operations. If one or more of these
are running simultaneously, you must be sure that all
sections and entries from the initialization (.INI) file
that are used for data manipulation (the entries in the
[Installable ISAMs], [Paradox ISAM], and [dBASE ISAM]
sections) are included in the initialization file for each
application. This ensures that you can use data in other
formats or applications, such as FoxPro, dBASE, or Paradox.
If two or more applications that use the database engine
are running simultaneously, the engine is initialized to
the .INI file settings of the application that was
started first.
If the entries in the three data manipulation sections are
not included in the .INI file of the first application that
starts the database engine, then no application that uses
the engine will be able to use FoxPro, dBASE, or Paradox
data while the first application is running.
For example, when you start Microsoft Access, it initializes
the database engine according to the settings in the
MSACCESS.INI file. If you then start Visual Basic version 3.0
while Microsoft Access is still running, the database engine
will use the MSACCESS.INI file settings rather than the
settings in the Visual Basic initialization file.
The list below shows where each application looks for its
initialization information:
Application .INI file
----------- ---------
Microsoft Access MSACCESS.INI
Microsoft Access application <APPNAME>.INI
Visual Basic at design time VB.INI
Visual Basic at run time VB.INI
Visual Basic .EXE application <APPNAME>.INI
-------------------------------------------------------
Using SQL Server Data Installed on a Novell NetWare LAN
or a Banyan Network
-------------------------------------------------------
If you use Microsoft Access on a workstation running under
Microsoft Windows for Workgroups and want to access SQL
Server data installed on a Novell NetWare LAN or a Banyan
network, you must use the SQL Server Network Integration Kit
(NIK). For details, see your Network Integration Kit and
SQL Server documentation. If you still have questions,
contact Microsoft Product Support at one of the numbers
listed in the Microsoft Access User's Guide or in Microsoft
Access Help. (From the Help menu, choose Contents, and then
click Product Support.)
------------------------------------------------------
Using Microsoft Access to Import, Attach, or Export to
Microsoft FoxPro Version 2.5 Files
------------------------------------------------------
FoxPro version 2.5 doesn't distinguish between tables
created with the MS-DOS version and those created with the
Microsoft Windows version. Data in tables created with FoxPro
version 2.5 for MS-DOS is stored in OEM format. Data in tables
created with FoxPro version 2.5 for Windows is stored in ANSI
format. Microsoft Access converts all FoxPro version 2.5 data
from an OEM code page to the ANSI 1252 code page when importing
or attaching FoxPro 2.5 data, and it converts the ANSI code
page to an OEM code page when exporting to FoxPro 2.5 tables.
The result is that extended characters in tables created with
FoxPro version 2.5 for Windows aren't converted properly.
If your FoxPro version 2.5 tables contain extended characters,
you should be certain that the tables are stored in OEM format
(that is, created by FoxPro version 2.5 for MS-DOS). FoxPro
version 2.5a will be able to identify the code page format of
the data, enabling Microsoft Access to correctly determine how
to convert extended characters. For information on FoxPro version
2.5a, please contact Microsoft End-User Sales at (800) 426-9400.
---------------------------------------------
Setting ODBC Options in the MSACCESS.INI File
---------------------------------------------
The following table lists all the valid entries applying
to ODBC that can appear in the Microsoft Access initialization
file, MSACCESS.INI. They appear in the [Debug] and [ODBC]
sections.
Entry Value Effect
------- ----- ------
Section: [Debug]
RmtTrace 0 Use asynchronous query execution
if possible; no ODBC API tracing
(default).
8 Trace ODBC API calls in ODBCAPI.TXT
in the Microsoft Access directory.
16 Force synchronous query execution.
24 Trace ODBC API calls; force
asynchronous query execution.
Section: [ODBC]
TraceSQLMode 0 No tracing of SQL queries (default).
1 Trace SQL queries sent to ODBC in
SQLOUT.TXT in the Microsoft Access
directory.
QueryTimeout S Wait S seconds for queries sent to
ODBC, and then stop trying to process
the query results (for asynchronous
queries only). (Default: 60 seconds).
LoginTimeout S Wait S seconds for ODBC login response,
and then stop trying to connect to a
server. (Default: 20 seconds).
ConnectionTimeout S Wait S seconds, and then close idle
ODBC connections. (Default: 600
seconds).
AsyncRetryInterval M Retry asynchronous queries every M
milliseconds. (Default: 500
milliseconds).
AttachCaseSensitive 0 Attach the first table whose name
matches the specified string,
regardless of case.
1 Attach a table only if its name
exactly matches the specified string.
AttachableObjects string A list of object types you can attach.
(Default: 'TABLE','VIEW','SYSTEM TABLE',
'ALIAS', 'SYNONYM'.)
SnapshotOnly 0 Get index information when tables are
attached so that dynasets are allowed
(default).
1 Ignore index information when tables
are attached so that only snapshots
are allowed.
---------------------------------------------------
Installing the ODBC Stored Procedures (INSTCAT.SQL)
---------------------------------------------------
Microsoft Access version 1.1 contains a new version of the
ODBC stored procedures (found in the INSTCAT.SQL file),
which must be installed on a SQL Server before you can
access data from that server. However, the INSTCAT.SQL file
that comes with version 1.1 can't be used with version 1.0 of
Microsoft Access. If you have Microsoft Access version 1.0 and
attempt to attach a table from a database on a SQL Server where
version 1.1 of the ODBC stored procedures have been installed,
you will see this error message:
"'<ownername>.<tablename>' isn't a valid name."
To fix this problem, you should update all of the computers
on your network to version 1.1 of Microsoft Access and
install version 1.1 of INSTCAT.SQL on your SQL Servers.
If you have Sybase SQL Server databases, you MUST upgrade
all users to Microsoft Access 1.1 and use the version 1.1
INSTCAT.SQL, which contains fixes that are required for
Sybase SQL Server databases. If you have Microsoft SQL
Server databases and have a mixture of Microsoft Access 1.0
and 1.1 installations, you can use the version 1.0
INSTCAT.SQL until all users are upgraded to Microsoft Access
version 1.1.
The version 1.1 INSTCAT.SQL file is also included with
Microsoft Visual Basic version 3.0. If you are using this
version of Visual Basic and want to access SQL Server
databases from both Visual Basic and Microsoft Access, you
should either update all of your users to Microsoft Access
version 1.1 or use the version 1.0 INSTCAT.SQL instead of
the version supplied with Visual Basic. Visual Basic version
3.0 will work correctly with the version 1.0 INSTCAT.SQL,
except that it will be unable to delete indexes from tables.
---------------------------------------------
Asynchronous Query Execution and ODBC Drivers
---------------------------------------------
When executing queries against Open Database Connectivity
(ODBC) data sources, Microsoft Access will attempt, if
supported by the ODBC driver, to execute the query
asynchronously. The client-server network libraries
supported by some ODBC drivers may experience difficulties
while executing queries asynchronously. If you encounter
problems with query execution, you can disable asynchronous
execution by adding the following entry to the [Debug]
section of your MSACCESS.INI file:
RmtTrace=16
------------------------------
ORACLE Server and Null Indexes
------------------------------
Some databases, such as ORACLE Server databases, allow
multiple Null primary keys in an index, although the index
is still considered unique. Microsoft Access can't modify
records that have multiple occurrences of the same unique
(Null) value, although it can modify other records in the
table.
If you want to modify records in such a database, make sure
that each record has a unique primary key and that no more
than one of these is Null.
------------------------------------------------------------
Using Microsoft Access on Novell NetWare Servers and Banyan
VINES Servers (Increasing the Number of Record Locks)
------------------------------------------------------------
On Novell NetWare Servers:
If you are attempting to use large Microsoft Access
databases on a Novell NetWare server, set the "maximum
record locks per connection" to the largest allowable
value (10,000). The execution of large bulk operations
in Microsoft Access (such as a large update query) can
cause the server to run out of record lock connections.
If you don't set the number of record locks to the maximum
value while using Microsoft Access, it could result in
the loss of data due to a server crash.
See your Novell NetWare documentation for a description of
how to set the number of record locks.
On Banyan VINES Servers:
If you are attempting to use large Microsoft Access
databases on a Banyan VINES server, you may exceed the
number of record locks allowed. (Note that the number of
record locks is not user-definable for Banyan VINES
servers.)
Banyan VINES version 4.11 allows a maximum of 500 record
locks. It is conceivable that a large Microsoft Access bulk
operation would require that many record locks. Banyan VINES
version 5.00 allows only 100 record locks, which would
severely limit Microsoft Access use. Banyan VINES version
5.5 allows at least 10,000 record locks.
--------------------------------------------------------
Setting Up Microsoft Access with a Microsoft License Pak
--------------------------------------------------------
The first time you install Microsoft Access using the
Microsoft License Pak, Setup stores the company name but
not the user name. Setup customizes the user name for each
installation.
To install Microsoft Access using the Microsoft License
Pak:
1 In the Windows Program Manager, choose Run from the File
menu.
2 In the Command Line box, type <path> setup /l where
<path> is the directory in which the Microsoft Access
program files are stored. (Note that l is the letter l,
not the number one).
For example, if your Microsoft Access files are on
drive C in a directory called ACCESS, you'd type
c:\access\setup /l in this box.
---------------------
Enhancing Performance
---------------------
For information on increasing the buffer space, read the
PERFORM.TXT file in your Microsoft Access directory. This
file also desribes other ways of tuning Microsoft Access
to get the best performance.
----------------------------------------------
Installing International Versions of Cue Cards
----------------------------------------------
You will not be able to use Cue Cards if you install it
in a directory whose name contains a ligature, such as the
characters ▀ and µ. To resolve this problem, delete all the
Microsoft Access files and remove the directory. Then rerun
Microsoft Access Setup.
-------------------------
Using Sample Applications
-------------------------
In addition to the Northwind Traders database (NWIND.MDB),
which is used in examples throughout the Microsoft Access
documentation, you can install two sample applications:
Personal Information Manager (PIM.MDB) and Order Entry
(ORDENTRY.MDB). These are just two examples of the types
of applications you can create with Microsoft Access. You
can use them as a learning tool for creating your own
applications -- and perhaps in your daily work and business
as well.
If you chose the Complete Installation option when you
installed Microsoft Access, the Setup program installed the
sample application files. If you made a different choice or
if you have removed the files, you can install them by running
Setup again, choosing Custom Installation, and selecting
Sample files. Setup installs the files in the program
directory.
General information and instructions on using each
application are available online for the Personal Information
Manager and Order Entry applications. To use this information,
start Microsoft Access and open the database file for the
application. Then press F1 or choose Contents from the Help
menu.
NOTE: The Personal Information Manager and Order Entry
applications are designed to be run on a VGA or SVGA monitor
only.
----------------------------
Analyzing Database Structure
----------------------------
When you develop a new database or modify an existing one, you'll
probably want detailed information about its structure. Microsoft
Product Support Services provides an informal diagnostic tool for
this purpose called the Database Analyzer. Using this tool, you
can display or print tables listing the structural features of
many of the objects in a database. For information on installing
and using the Database Analyzer, read the ANALYZER.TXT file found
in your Microsoft Access program directory.
-------------------------------------------
Solving Problems Printing Forms and Reports
-------------------------------------------
Microsoft Access forms or reports, because of a driver problem,
may not print correctly on an HP LaserJet IIISi printer using
non-TrueType fonts. For best results, use TrueType fonts with
this printer.
------------------------------------------------
Updated SQL Pass Through DLL and Data Definition
Language DLL
------------------------------------------------
The SQL Pass Through DLL and Data Definition Language DLL
have been updated for Microsoft Access version 1.1. If you
are currently using version 1.0 of either of these DLLs
(SPT.DLL or MSADDL10.DLL), you must upgrade to the version
1.1 DLLs (MSASP110.DLL and MSADDL11.DLL). You can download
the version 1.1 DLLs from the MSACCESS forum on CompuServe.
Support for these DLLs is provided on CompuServe only.
--------------------
Available Disk Space
--------------------
The DBLSPACE utility supplied with MS-DOS version 6.0
(as well as other similar disk compression utilities)
enables you to set a compression ratio, which affects
the amount of disk space that commands like the MS-DOS
command DIR report as available. For example, if you
have 5 megabytes of actual disk space, but you've set
the compression ratio to 20:1, DIR will report that you
have 100 MB of free space. You can use the compression
ratio to approximate the amount of room you have for
compressed files on your hard disk.
However, different kinds of files actually compress at
different ratios. For example, the Microsoft Access .EXE
file, Help files, and DLLs compress at a ratio closer to
1.5:1. Although DIR may report that you have enough disk
space to install Microsoft Access, there might not be
enough room to fully install all the Microsoft Access files.
If you run out of disk space when installing Microsoft
Access, you can free disk space by deleting unnecessary files.
You can also use the Custom Setup option during Microsoft
Access Setup, and select only the minimal set of files
you need to run Microsoft Access (for example, you can
choose not to install Cue Cards or the Help file).
You may also want to adjust your compression ratio if you
find you are running out of disk space when DIR tells you
that you have enough.
-----------------------------------------------------
Using DECOMP.EXE to Decompress Microsoft Access Files
-----------------------------------------------------
Microsoft Access includes a decompression utility,
DECOMP.EXE. You can use DECOMP.EXE to decompress files
without running Setup. This allows you to install
individual Microsoft Access files. DECOMP.EXE uses the
following syntax:
DECOMP [/A /F /Q] <source> [<destination>]
The <source> argument specifies the file or files to be
decompressed; it can be a file name or a wildcard pattern.
The <destination> argument is the name of the decompressed
file or directory.
The following table summarizes the decompression utility
command-line options.
Option Description
------ -----------
/A Appends the decompressed version of the source
file to the file specified by <destination>.
/F Forces overwriting of the file specified by
<destination>.
/Q Calculates the size of the uncompressed file
(no output).
--------------------------
Outdated Version 1.0 Files
--------------------------
If you are installing Microsoft Access version 1.1 in the
same directory as an existing copy of version 1.0, the
Microsoft Access Setup program installs the version 1.1
files and at the same time deletes or replaces outdated
version 1.0 files.
The following files are no longer used by Microsoft Access,
and are deleted by Setup:
BTRVISAM.DLL
DBSISAM.DLL
MSABC100.DLL
MSAES100.DLL
MSAIN100.DLL
MSAJU100.DLL
MSAJT100.DLL
PDXISAM.DLL
README_.TXT (deleted only if you start Setup by typing
setup /a)
For a complete list of the version 1.1 files, see the
"Microsoft Access Files" section in this README file.
----------------------
Microsoft Access Files
----------------------
File name Destination Description
--------- ----------- -----------
1.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
1e.wmf N/A Billboard displayed during
setup. EGA resolution.
2.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
2e.wmf N/A Billboard displayed during
setup. EGA resolution.
3.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
3e.wmf N/A Billboard displayed during
setup. EGA resolution.
4.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
4e.wmf N/A Billboard displayed during
setup. EGA resolution.
5.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
5e.wmf N/A Billboard displayed during
setup. EGA resolution.
6.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
6e.wmf N/A Billboard displayed during
setup. EGA resolution.
7.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
7e.wmf N/A Billboard displayed during
setup. EGA resolution.
8.wmf N/A Billboard displayed during
setup. VGA and higher
resolution.
8e.wmf N/A Billboard displayed during
setup.EGA resolution.
analyzer.md$ <Program> Microsoft Access Product
Support Services utility.
analyzer.tx$ <Program> PSS Analyzer utility readme.
btrieve.tx$ <Program> Information about configuring
Btrieve for use with Microsoft
Access.
btrv110dl$ <Windows\System> Btrieve ISAM DLL.
cbtlib4.dl$ <Program> Cue Cards DLL.
commdlg.dl$ <Windows\System> Common dialog boxes. This is a
file shipped with Windows
version 3.1.
commdlg.dl_ N/A Uncompressed version of common
dialog boxes used by Setup
program.
ctl3d.dl$ <Windows> 3D-look DLL.
cuecard.ex$ <Program> Cue Cards executable.
cuecards.dl$ <Program> Cue Cards communication DLL.
cuecards.le$ <Program> Cue Cards lesson file.
ddeml.dl$ <Windows\System> DDE support DLL.
decomp.exe N/A Utility to individually
decompress files on the Microsoft
Access disks.
detcmd.dl_ <Program> DLL used by Setup.
errata.tx$ <Program> Microsoft Access documentation
errata file. Contains late
changes to documentation.
graph.ex$ <Windows\MSApps\ Microsoft Graph executable.
MSGraph>
msabc110.dl$ <Windows\System> Microsoft Access Basic code DLL.
msacces2.hl$ <Program> Part 2 of the Microsoft Access
Help file.
msaccess.ex$ <Program> Microsoft Access executable.
msaccess.hl$ <Program> Part 1 of the Microsoft Access
Help file.
msaccess.in$ <Windows> Microsoft Access initialization
file.
msaccess.re$ N/A Input file for additions Setup
makes to the OLE registration
database.
msaes110.dl$ <Windows\System> Microsoft Access expression
service DLL.
msafin.dl$ <Program> Additional financial functions
DLL.
msain110.dl$ <Program> International resources for
Microsoft Access.
msajt110.dl$ <Windows\System> Microsoft Access JET engine.
msaju110.dl$ <Windows\System> Microsoft Access JET engine
utilities.
msgraph.hl$ <\Windows\MSApps\ Microsoft Graph Help file.
MSGraph>
newcust.db$ <Program> Sample dBASE file used in
Getting Started.
nwind.md$ <Program> Northwind Traders sample
database.
olecli.dl$ <Windows\System> OLE Client support DLL.
olesvr.dl$ <Windows\System> OLE Server support DLL.
ordentry.hl$ <Program> Order Entry sample application
Help file.
ordentry.md$ <Program> Order Entry sample application
database.
ordentry.tx$ <Program> Order Entry sample application
readme.
pdx110.dl$ <Windows\System> Paradox version 3.5 ISAM DLL.
perform.tx$ <Program> Performance tips.
pim.hl$ <Program> Personal Information Manager
Help file.
pim.md$ <Program> Personal Information Manager
database.
readme.txt <Program> Microsoft Access readme file
(this file.) Contains issues
you should be aware of.
regedit.ex$ <Windows> Windows version 3.1 registration
database editor.
setup.exe N/A Setup executable.
setup.ini <Program> Setup initialization file.
share.ex$ <Windows> MS-DOS 5.0 file locking utility.
(Not installed if already
present.)
shell.dl$ <Windows\System> Windows version 3.1 utility DLL.
smallb.fo$ <Windows\System> Required font for Microsoft
Access.
smalle.fo$ <Windows\System> Required font for Microsoft
Access.
smallf.fo$ <Windows\System> Required font for Microsoft
Access.
stfsetup.ex_ <Program> Microsoft Access second-level
Setup executable. Also used by
Change Workgroup utility.
stfsetup.in_ N/A Microsoft Access second-level
Setup initialization file.
utility.md$ <Program> Microsoft Access utility database.
ver.dl$ <Windows\System> Windows 3.1 version checking DLL.
ver.dl_ N/A Uncompressed version of Windows
3.1 version checking DLL used
during setup.
wfwdrv.exe N/A Utility to update Windows for
Workgroups driver.
wfwdrv.txt N/A Information about Windows for
Workgroups driver.
wfwnet.dr$ <Windows\System> Windows for Workgroups driver.
wfwnet.dr_ N/A Windows for Workgroups driver
installed by WFWDRV.EXE.
winhelp.ex$ <Windows> Windows version 3.1 Help
executable.
winhelp.hl$ <Windows> Windows version 3.1 Help
program Help file.
wizard.md$ <Program> Microsoft Access AccessWizards.
workgrp.in_ <Program> Microsoft Access workgroup
initialization file used during
setup. Renamed STFSETUP.INF.
xbs110.dl$ <Windows\System> FoxPro and dBASE ISAM DLL.
NOTE: In the Destination column, the name in brackets indicates
the most common name for this directory; however, the directory
name on your machine may be different. For example, your Windows
directory may be called WIN31 or just WIN. The name <Program>
indicates the directory where your Microsoft Access program files
are stored.
----------------------------------------
Microsoft Access Version 2.0 README File
February 1994
----------------------------------------
(C) Copyright Microsoft Corporation, 1994
The ACREADME.HLP file supplied with Microsoft Access
version 2.0 contains complementary and late-breaking
information about the Microsoft Access version 2.0
product and its documentation. To view this file,
double-click its icon in the Microsoft Access program
group.
If you have not yet installed Microsoft Access, you can
open ACREADME.HLP directly from Disk 1. To start Help
and open this file, double-click the file name in the
Windows File Manager.
/* Please note the following corrections and additions to the Microsoft SQL Server Evaluation Guide: p. 11, top: After opening a query file that is larger than will fit in the Query window, you can use Ctrl-HOME to position the window at the top of the file. p. 49, Activity 7, Step 2: To see the reults of this activity as described in the "Discussion" section, please run this query (ACT07B.QRY) under the System Administration Facility (SAF). p. 62, top: The syntax for the create rule step lists the rule name incorrectly as "pubidrule." The correct name is "pub_idrule." p. 82, Activity 20, Step 1: The c:\sql\install directory contains the installation script to recreate the PUBS database. It does not contain the isql utility. */
/* Please note the following corrections and additions to the Microsoft SQL Server Evaluation Guide: p. 11, top: After opening a query file that is larger than will fit in the Query window, you can use Ctrl-HOME to position the window at the top of the file. p. 49, Activity 7, Step 2: To see the reults of this activity as described in the "Discussion" section, please run this query (ACT07B.QRY) under the System Administration Facility (SAF). p. 62, top: The syntax for the create rule step lists the rule name incorrectly as "pubidrule." The correct name is "pub_idrule." p. 82, Activity 20, Step 1: The c:\sql\install directory contains the installation script to recreate the PUBS database. It does not contain the isql utility. */
======================================
README NOTES
FOR
INFORMIX ISQL 2.10.06E PRODUCT RELEASE
Dec 1989
======================================
I. OVERVIEW OF README NOTES
The DOS products have a limitation that no more than one frontend
may be running at the same time or problems can develop. Specifically,
if you run one frontend and call another with your database still
open (for example, RUN a perform screen from within a 4GL program
or bang out of Perform and run a 4GL program), when the "inner"
frontend terminates, the database will be closed to the "outer"
backend.
Due to the 640KB memory limit on PC-DOS, it is strongly recommended
that you not escape ("bang out") to the DOS shell while the network
software, and the real mode ISQL and STARTSQL are loaded. This
could "hang" your system as there might be insufficient memory to
load command.com or other software.
II. CONTACTS AND SUGGESTIONS
This Release Notes document has been provided to you in an effort
to assist your product update efforts. If you currently have a
maintenance contract with Informix, please direct questions on
this document and products contained in the '.06E' release to the
Technical Support Department at (415) 926-6300.
Comments and suggestions on ways to improve this document are also
appreciated and should be directed to the Informix Product Planning
Department.
======================================
README NOTES
FOR
INFORMIX 4GL RDS 1.10.06E PRODUCT RELEASE
Dec 1989
======================================
I. OVERVIEW OF README NOTES
The DOS products have a limitation that no more than one frontend
may be running at the same time or problems can develop. Specifically,
if you run one frontend and call another with your database still
open (for example, RUN a perform screen from within a 4GL program
or bang out of Perform and run a 4GL program), when the "inner"
frontend terminates, the database will be closed to the "outer"
backend.
II. CONTACTS AND SUGGESTIONS
This Release Notes document has been provided to you in an effort
to assist your product update efforts. If you currently have a
maintenance contract with Informix, please direct questions on
this document and products contained in the '.06E' release to the
Technical Support Department at (415) 926-6300.
Comments and suggestions on ways to improve this document are also
appreciated and should be directed to the Informix Product Planning
Department.
======================================
README NOTES
FOR
INFORMIX ISQL 2.10.06E PRODUCT RELEASE
Dec 1989
======================================
I. OVERVIEW OF README NOTES
The DOS products have a limitation that no more than one frontend
may be running at the same time or problems can develop. Specifically,
if you run one frontend and call another with your database still
open (for example, RUN a perform screen from within a 4GL program
or bang out of Perform and run a 4GL program), when the "inner"
frontend terminates, the database will be closed to the "outer"
backend.
Due to the 640KB memory limit on PC-DOS, it is strongly recommended
that you not escape ("bang out") to the DOS shell while the network
software, and the real mode ISQL and STARTSQL are loaded. This
could "hang" your system as there might be insufficient memory to
load command.com or other software.
II. CONTACTS AND SUGGESTIONS
This Release Notes document has been provided to you in an effort
to assist your product update efforts. If you currently have a
maintenance contract with Informix, please direct questions on
this document and products contained in the '.06E' release to the
Technical Support Department at (415) 926-6300.
Comments and suggestions on ways to improve this document are also
appreciated and should be directed to the Informix Product Planning
Department.
欢迎使用 WinBase 2.0
1.如何安装 WinBase :
运行A盘或B盘的SETUP,例如:
C>A:SETUP <==运行A盘的SETUP
C>B:SETUP <==运行B盘的SETUP
或
A>SETUP <==在A盘运行SETUP
B>SETUP <==在B盘运行SETUP
2.如何运行 WinBase:
运行 WinBase 请使用如下命令:
WBS
3.运行或安装 WinBase 时出现死机如何处理:
(1).检查 CONFIG.SYS 中的 FILES,以下是
最基本要求:
FILES=40
(2).检查系统的可用内存是否太少,WinBase
理想的可用内存应是大于 550K.
4.运行 WinBase 太慢如何处理:
(1).将虚拟盘(不低于1.5M)作为临时文件存放
处,例如:若 E 盘是虚拟盘,可如下设置:
SET BASETEMP=E:\
(2).使用硬盘缓存程序,例如: Smartdrv 或
pc-cache等.
(3).尽可能增大系统的可用内存.
5.以下是WinBase的最新改进:
一.数据库维护函数Winbrows:
在原Winbrows中的以下参数做了改动:
<flag>:在"H"、"V"、"F"、"R"后可以付加两个标志:
R:表示只读的,例如:"HR"、"RR"等
D:表示字段的编辑在当前位置进行,无须弹出编辑窗口.
例如:"VD"、"FD"等
<fontdbf>:该参数已被去掉
Winbrows中更新或增加如下操作:
1.在水平显示方式下F5、F6可更方便调整显示宽度
2.在水平显示方式下F8+F8可对字段进行求和
3.ALT_T 可获得当前数据库的计录总数
4.ALT_= 可将当前记录复制到内存
5.ALT_- 可将内存中的记录内容复制到当前记录
6.增加了尽可能丰富的索引操作,包括:
(1).新建索引
(2).打开索引
(3).增加索引
(4).重建索引
(5).改变索引顺序
(6).关闭索引
二.报表设计:
(1).Design函数已被改为如下格式:
design(<prtname>,<dbfalias>,<fomalias>,<prt__flag>),其中:
<prtname>: 报表文件名(.PRT)
<dbfalias>: 数据库别名
<fonalias>: 格式文件别名
<prt__flag>: 打印标记,同前
(2).操作按键的改变:
ALT_Z: 选择要复制的行
ALT_X: 选择要复制的列
ALT_<: 画或取消当前项的左竖线
ALT_>: 画或取消当前项的横线
ALT_/: 画或取消当前项的上竖线
ALT_\: 画或取消当前项的下竖线
(3).改进或新增的报表输出函数
sumc(<开始列>,<结束列>[,条件]) :对报表列求和
sumr(<开始行>,<结束行>[,条件]) :对报表行求和
sum_cond(<字段名>[,条件]) :对数据库字段求和
sum_all(<函数>[,条件]) :针对数据库所有内容对函数返回值求和
ave_cond(<字段名>[,条件]) :对数据库字段求平均
ave_all(<函数>[,条件]) :针对数据库所有内容对函数返回值求平均
三.改进或新增的函数:
(1).windowstart(<dbfpath>,<prtpath>)
功能:Winbase初始化
<dbfpath>:访问数据库的路径
<prtpath>:建立报表文件的路经
返回:无
(2).wbhelp(<helpfile>,<key>)
功能:显示帮助信息,其中:
<helpfile>:帮助文件名,由字段wb__title(3C)及wb__help(M)构成
<key> :要查找的内容(与wb__title匹配的)
返回:无
(3).isdir(<path>)
功能:判断或创建<path>路径
返回:成功返回.T.,否则为.F.
(4).mappal16([flag])
功能:设置调色板
若flag为空,则为标准16色,否则为Windows的16色调色板
返回:无
(5).mousekey()
功能:获取键盘或鼠标输入
本函数依赖于全局变量mousekey的设置,若mousekey为空,则保持原功能,否则执
行mousekey所指定的函数的功能;若该函数返回0,则执行原函数, 否则其返回值
将做为本函数的返回值
返回:按键或鼠标按钮值,参见WINBASE.CH
(6).msgbox(<msg1>,<msg2>,<type>[,<botton1>,<botton2>,<botton3>])
功能:弹出信息窗口,可用<botton1>,<botton2>,<botton3>替换原来的标准按钮
返回:无
(7).mouse(<flag>)
功能:显示或者关闭鼠标,按<flag>的值设置鼠标器状态,
返回:返回先前的状态(1-显示,0-关闭).
<flag>=0:关闭鼠标
<flag>=1:显示鼠标
(8).netfldput(<fldnum>,<fld_val>)
功能:在网络环境中给字段赋值
<fldnum>:字段序号
<fld_val>:为字段赋的值
返回:无
(9).netdelete()
功能:在网络环境中给记录加删除标记
返回:无
(10).netrecall()
功能:在网络环境中去掉记录删除标记
返回:无
(11).filepath(<file>)
功能:在WINBASE设定的路径中查找文件<file>
返回:若找到返回带路径的文件名,否则返回空.
(12).radomfile([<head>[,<ext>]])
功能:返回一随机文件名
<head>:文件名的头三个字符
<ext>:文件名的后缀
返回:文件名
(13).getcond([<title>],<dbfalias>[,<init_val>[,<helpproc>[,<fomalias>[,<ret_type>]]])
功能:弹出组合条件、公式或表达式的对话框
<title>:对话框标题
<dbfalias>:数据库别名
<init_val>:初始值
<helpproc>:帮助函数名
<fomalias>:格式文件别名
<ret_type>:若为空,则返回值必须是逻辑类型,否则任意
返回:字符串或为空
例如:
ret=getcond("构造计算公式","dbfalias","1+2","myhelp",,1)
(14).swprun(<cmd>,<mem>,<runpath>,<swppath>,<clsflag>)
功能:运行其它可执行文件或DOS命令
<cmd>:可执行文件或DOS命令,可带有命令行参数
<mem>:执行文件所需内存,若为0,则尽可能多地分配内存
<runpath>:运行文件的路径,可为空
<swppath>:存放交换文件的路径,可为空
<clsflag>:清屏标志,若为空则清屏
返回:无
例如:
swprun("foxgraph",0,"","")
(15).isalias(<string>)
功能:判断指定字符串是否为别名
<string>:字符串
返回:成功返回.T.,否则为.F.
(16).nop()
功能:空执行
返回:NIL
(17).closealias(<alias>)
功能:关闭指定别名的数据库
<alias>:别名
返回:无
(18).wbedit(<editstr>,<row1>,<col1>,<row2>,<col2>,<title>,<fc>,<bc>,<ed_flag>)
功能:编辑文本字符串
<editstr>:字符串
<row1>,<col1>,<row2>,<col2>:
<title>:标题
<fc>:前景色
<bc>:背景色
<ed_flag>:修改标志
返回:被编辑的字符串
(19).delfiles(<filespec>)
功能:删除文件,可使用通配符*,?
<filespec>:文件名
返回:无
(20).loadpcx(<x1>,<y1>,<x2>,<y2>,<filename>,<mode>)
功能:显示PCX图像
<x1>,<y1>,<x2>,<y2>:象素坐标
<filename>:图像文件名
<mode>:显示模式
返回:无
(21).wintitle(titlename)
功能:替换窗口标题
<titlename>:标题
返回:无
6.对手册的某些说明:
(1). WINBASE 的详细安装已做了如上说明.
(2). 某些汉字文件名存盘后与原名不同,这是汉字系统与DOS的
某些冲突造成的.例如用户手册中第三章中的"工资.DBF".
93.12.1
卡片通安装方法
接通计算机电源, 使系统处于DOS状态下(C:>)。
将卡片通系统盘插入A(或B)驱动器, 输入A:INSTCRD(或B:INSTCRD)
如下:
C:>A:INSTCRD 或
C:>B:INSTCRD
有如下画面显示时
建立卡片通目录?C:\CRD
卡片通目录被自动设置成CRD, 按Enter即可。若您要修改目录名,
则用BS可删除当前设置, 然后重新输入目录名, 按Enter即可。
有如下画面显示时
请将卡片通系统盘插入驱动器输入所用驱动器号[A]
按Enter即可。若是B驱动器, 则按一下B, 再按Enter即可。
卡片通程序即被装入到您所指定的目录中。
卡片通系统环境设置
程序装入完毕后, 自动进入系统环境设置, 有如下画面显示:
卡片通系统环境设置
汉字系统
显示器
自动进入卡片通
此时,您按照实际情况逐条回答即可。
系统环境设置将修改硬盘中AUTOEXEC.BAT文件的内容。而将修改前的
这个文件保存成AUTOEXEC.OLD
当系统环境变化, 需要重新进行设置时, 您只需输入SETCRD命令。
如下所示:
C:>SETCRD
卡片通启动
卡片通的启动, 依系统环境设置中"自动进入卡片通"的设置情况,
而有两种方法。
自动进入卡片通
接通计算机电源或重新热启动(按ALT+CTRL+DEL)或
按RESET钮之后, 计算机先启动DOS, 而后自动进入卡片通, 停在卡片
通主菜单下。
非自动进入卡片通
在DOS状态下, 输入CRD命令。
如: C:>CRD
卡片通被启动, 停在卡片通主菜单下。
========================================================================
1 Welcome to Clipper 5.01!
Copyright (c) 1991 Nantucket Corporation. All rights reserved.
Welcome to Clipper 5.01! This file contains the most up-to-date
information about the product, including additional installation
instructions and detailed distribution disk contents.
During the installation procedure, two additional documentation
files, Errata.doc and Debugger.doc, will be copied to the \CLIPPER5
directory. Errata.doc is a text file that contains errata for the
printed documentation. Debugger.doc is a print file that contains
new documentation for The Clipper Debugger (CLD.EXE) which has been
substantially revised. To print either of these files, use the
following DOS command:
C>COPY <filename> PRN:
========================================================================
2 What's New
In Clipper 5.01, we have made many changes and improvements which
include, but are not limited to:
1. Fixes to known anomalies
2. Increased Clipper Summer '87 compatibility
3. Improved performance
4. Improved runtime error handling and facilities
5. New and improved debugger
6. New and improved installation system
7. Added support for color in @...SAY...GET and box drawing
commands
8. Revised Get system with new and documented API
9. New database functions that can be used in place of database
commands
10. New screen functions that allow the display output system to
buffer display updates
11. New memo functions to determine position based on formatting
12. Append mode for SET ALTERNATE and SET PRINTER files
13. Revised on-line documentation including:
Release Notes documentation database
Change Summaries for Clipper 5.0 and Clipper 5.01
Errata for printed documentation
For a complete list of new features, consult the Release Notes
documentation database.
========================================================================
3 On-line Documentation
There have been several changes made to Clipper 5.01 since the
documentation was printed. The new information is covered either in
the files mentioned above or in the on-line documentation. In the
on-line documentation, new items that do not appear anywhere in the
printed documentation are indicated with the Greek character Omega.
Items that have been revised significantly since the documentation
was printed are indicated with the Sigma character.
The on-line documentation system consists of the Norton Instant
Access Engine (NG.EXE) and several documentation databases that are
listed below:
C5G01A.NG The Guide To Clipper
(Clipper language and reference tables)
C5G02A.NG Error Messages
(Compiler, linker, runtime, RMAKE error messages)
C5G03A.NG Extend System
(Extend function reference documentation)
C5G04A.NG Utilities
(Utilities reference documentation)
C5G05A.NG Release Notes
(Change summaries and topical information)
C5G06A.NG Sample Reference
(Reference for sample programs)
All of the documentation databases and the Instant Access Engine are
installed in the default configuration into \NG which exists at the
same level as the \CLIPPER5 directory.
Within the Instant Access Engine's Options:Database pick list, the
names of the Clipper 5.01 documentation databases are formatted as
follows:
Clipper 5.01a >> The Guide To Clipper
^ ^ ^ ^
| | | |_____ documentation database name
| | |__________ database revision number
| |______________ product version number
|______________________ product name
========================================================================
4 Installation Problems
This section provides information on the installation procedure for
Clipper 5.01. If you have problems installing the software, consult
the following list of problems and solutions. If you experience an
installation problem not listed here, please contact Nantucket
Support at the Nantucket office serving your country. Telephone
numbers appear in the Contacting Nantucket section of the Product
and Services Guide.
When contacting Nantucket Support, have ready information about your
environment such as: machine make and model, DOS version, memory
available during installation, and any memory-resident software you
are using.
4.1 Command-line Arguments
The following table shows the command-line arguments for
INSTALL.EXE.
Table: INSTALL.EXE Command-line Arguments
-------------------------------------------------------------------
Argument Description
-------------------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-------------------------------------------------------------------
4.2 Problems and Solutions
Some common problems that may occur during installation are listed
below:
1. Problem: Missing files due to insufficient disk space on the
target drive.
Solution: Make more space available on the target drive and
then run the install program again.
2. Problem: Insufficient memory to build utilities ("memory
overbooked" messages).
Solution: To build the utilities, INSTALL requires
approximately 400KB of free memory when INSTALL.EXE is invoked.
Make additional memory available by rebooting your computer
without memory resident utilities or network software, then run
INSTALL again. Alternatively, you can build the utility
programs manually (see Building Utilities Manually below).
3. Problem: System hangs while building utilities.
Solution: The install script file includes a SET PATH command
to add some necessary directories to the PATH environment
variable. Under some versions of DOS, attempting to increase
the length of the PATH environment variable beyond 128 bytes
causes COMMAND.COM to hang. Remove unnecessary entries from
PATH and run INSTALL again. Alternatively, you can build the
utility programs manually (see Building Utilities
Manually below).
4.3 Modifying Your Environment Variables
Certain environment (SET command) variables should be set for
Clipper 5.01. If you elected to modify the AUTOEXEC.BAT file
during the installation process, your file should be up-to-date.
Otherwise, the appropriate settings should be in a file called
AUTOEXEC.CHG located in the \CLIPPER5 directory. In either case,
it is important that you modify your AUTOEXEC.BAT file to
incorporate these additional settings so that Clipper 5.01 will
know where to find files. The required settings are as follows:
1. The PATH variable should include the directory where Clipper
5.01 executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where Clipper 5.01
library files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where Clipper
5.01 include files reside (example: C:\CLIPPER5\INCLUDE).
3. The PLL variable should include the directory where Clipper 5.01
pre-linked library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\INCLUDE
You may also wish to set other environment variables. For more
information, refer to the Getting Started Guide and Programming and
Utilities Guide. For general information about the DOS environment
and setting environment variables, refer to your DOS manual.
4.4 Building Utilities Manually
Certain Clipper 5.01 utility programs (DBU, PE, RL) are supplied in
source code form. These utilities must be compiled and linked
before they can be used. INSTALL will optionally install and
build these utilities automatically. If you elected not to install
or build the utilities or if INSTALL failed to build them
successfully, they may be built manually.
Before the utilities can be successfully built, the following
requirements must be met:
1. The Clipper 5.01 executables, libraries, and include files (the
files in C:\CLIPPER5\BIN, C:\CLIPPER5\LIB, and
C:\CLIPPER5\INCLUDE, respectively) must be properly installed.
2. Your environment variables must be set correctly (see above).
3. The source files for the desired utility must be available. If
the source files have not been transferred from the distribution
disks, you can retrieve them using the INSTALL program.
Each utility includes a make file (a .RMK file used by RMAKE) that
will compile and link the utility. To make a utility, simply go to
the appropriate directory and execute RMAKE on the script (.RMK)
file. For example, to make the Database Utility, enter the
following commands:
C:
CD \CLIPPER5\SOURCE\DBU
RMAKE DBU
COPY DBU.EXE \CLIPPER5\BIN
COPY DBU.HLP \CLIPPER5\BIN
Note that the make files for building the Clipper 5.01 utilities
create the .EXE file in the current directory. If you copy the
executable file into the \CLIPPER5\BIN directory, it will be
accessible via SET PATH.
4.5 Building BASE50.PLL Manually
Pre-linked libraries (.PLL files) allow faster linking and code
sharing among different applications. The distribution disks
contain a linker script file (BASE50.LNK) which will create a
general purpose .PLL called BASE50.PLL (for information on building
and using .PLL files, refer to the Programming and Utilities
Guide).
BASE50.PLL is optionally created during installation. If you
elected not to create BASE50.PLL or if the install program did not
create it successfully, you can create it manually. Before
BASE50.PLL can be successfully created, the following requirements
must be met:
1. The Clipper 5.01 executables, libraries, and include files (the
files in C:\CLIPPER5\BIN, C:\CLIPPER5\LIB, and
C:\CLIPPER5\INCLUDE, respectively) must be properly installed.
2. Your environment variables must be set correctly (see above).
3. The PLL directory (\CLIPPER5\PLL) must be created and the
BASE50.LNK file must reside in it. If this file has not been
transferred from the distribution disks, you can retrieve it
using the INSTALL program.
To build the BASE50.PLL, enter the following commands:
C:
CD \CLIPPER5\PLL
RTLINK @BASE50
========================================================================
5 Distribution Disk Contents
This section provides information regarding the contents of the
Clipper 5.01 distribution disks. The files are described in general
terms of their contents followed by several tables showing the
various disk configurations.
5.1 Documentation Files
The README file that you are viewing now is located on Disk 1.
5.2 Disk Identifier Files
Each disk in the Clipper 5.01 package contains a file named DISK.ID
that is used by the install program to verify version and disk
number.
5.3 Install Files
The install program (INSTALL.EXE) and the installation script
(INSTALL.DAT) are located on Disk 1. Together, these two files
allow you to install Clipper 5.01 onto your hard disk.
5.4 Archive Files
The Clipper 5.01 distribution files are supplied in the form of
archive files. Most of the archive files have a .LIF extension,
but the file containing the main documentation database is split up
into two files with .001 and .002 extensions. Each of the archive
files is listed in the table below, followed by several tables
showing the contents of each archive file.
Table: Archive File Descriptions
-------------------------------------------------------------------
Archive Contents
-------------------------------------------------------------------
BIN1.LIF Linker and debugger files and other executables
CLIPPER.LIF Compiler executable file
DBU.LIF Database Utility source files
DOC.LIF Additional documentation files
INCLUDE.LIF Header files
LIB1.LIF Support libraries
LIB2.LIF Support libraries
NG1.001 On-line documentation databases
NG1.002 On-line documentation databases
NG2.LIF Norton Instant Access Engine
PE.LIF Program Editor source files
PLL.LIF Linker script for base 5.01 pre-linked library
RL.LIF Report and Label Utility source files
SAMPLE.LIF Sample program source files
SYS.LIF System component source files
-------------------------------------------------------------------
Table: BIN1.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CL.BAT Compile and Link batch file
CLD.EXE Clipper Debugger
DBT50.EXE DBT update utility
RTLINK.EXE .RTLink linker
RTLINK.DAT .RTLink data file
RTLINK.HLP .RTLink data file
RTLINKST.COM .RTLink data file
RMAKE.EXE RMAKE make utility
RO.COM Read-only file status utility
-------------------------------------------------------------------
Table: CLIPPER.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLIPPER.EXE Clipper 5.01 compiler
-------------------------------------------------------------------
Table: DBU.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DBU.LNK .RTLink script for DBU
DBU.RMK RMAKE script for DBU
DBU.HLP DBU help file
DBU.PRG DBU source
DBUCOPY.PRG DBU source
DBUEDIT.PRG DBU source
DBUHELP.PRG DBU source
DBUINDX.PRG DBU source
DBUSTRU.PRG DBU source
DBUUTIL.PRG DBU source
DBUVIEW.PRG DBU source
-------------------------------------------------------------------
Table: DOC.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ERRATA.DOC Clipper 5.01 Errata Documentation
DEBUGGER.DOC Revised Clipper Debugger Documentation
-------------------------------------------------------------------
Table: INCLUDE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ACHOICE.CH Header file for ACHOICE() function
BOX.CH Header file for box string definitions
DBEDIT.CH Header file for DBEDIT() function
DBSTRUCT.CH Header file for DBSTRUCT() function
DIRECTRY.CH Header file for DIRECTORY() function
ERROR.CH Header file for runtime error system
FILEIO.CH Header file for binary file I/O functions
GETEXIT.CH Header file for Get system
INKEY.CH Header file for keyboard functions
MEMOEDIT.CH Header file for MEMOEDIT() function
RESERVED.CH Header file for reserved words
SET.CH Header file for SET() function
SETCURS.CH Header file for SETCURS() function
SIMPLEIO.CH Header file for standard I/O functions
STD.CH Header file containing standard command set
EXTEND.H Header file for C Extend functions
EXTASM.INC Header file for Assembler Extend functions (5.01)
EXTENDA.INC Header file for Assembler Extend functions (S87)
EXTENDA.MAC Header file for Assembler Extend functions (A86)
-------------------------------------------------------------------
Table: LIB1.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLIPPER.LIB Clipper 5.01 support library
-------------------------------------------------------------------
Table: LIB2.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLD.LIB Clipper Debugger library
DBFNTX.LIB Database driver
EXTEND.LIB Clipper 5.01 support library
RTLUTILS.LIB .RTLink static overlay support library
TERMINAL.LIB Terminal I/O drivers
-------------------------------------------------------------------
Table: NG1.001 Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
C5G01A.NG Clipper 5.01 documentation database (partial)
-------------------------------------------------------------------
Table: NG1.002 Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
C5G01A.NG Clipper 5.01 documentation database (continued)
-------------------------------------------------------------------
Table: NG2.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
NG.EXE Norton Instant Access Engine
C5G02A.NG Clipper 5.01 documentation database
C5G03A.NG Clipper 5.01 documentation database
C5G04A.NG Clipper 5.01 documentation database
C5G05A.NG Clipper 5.01 documentation database
C5G06A.NG Clipper 5.01 documentation database
-------------------------------------------------------------------
Table: PE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
PE.PRG PE source
PE.RMK RMAKE script for PE
-------------------------------------------------------------------
Table: PLL.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
BASE50.LNK .RTLink script for base 5.01 pre-linked library
-------------------------------------------------------------------
Table: RL.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
RL.RMK RMAKE script file for RL
RLBACK.PRG RL source
RLDIALG.PRG RL source
RLFRONT.PRG RL source
-------------------------------------------------------------------
Table: SAMPLE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ARRAY.CH Header file for array manipulation examples
ARRAY.PRG Array manipulation examples
ASRTDEMO.PRG Error checking assertions example
ASSERT.CH Header file for error checking assertions
BOX.PRG Simple box menus
BROWSE.PRG Database browser
DATE.PRG Date manipulation functions
DICT.CH Header file for keyed dictionary utility
DICT.PRG Keyed dictionary utility
DOT.PRG Dot prompt emulator
ENVIRON.PRG File look up and state control functions
EXAMPLEP.PRG Miscellaneous examples
FILEIO.PRG Binary file manipulation
FILEDEMO.PRG Demonstration of file manager function
FILEDEMO.RMK RMAKE script for file manager function
FILEMAN.CH Header file for file manager function
FILEMAN.PRG File manager function
GAUGDEMO.PRG Demonstration program for GAUGE.PRG
GAUGE.PRG Status gauge functions
ITERATOR.PRG Array iterator functions
KEYBOARD.PRG Keyboard functions
LOCKS.PRG Database file locking functions
LOCKS87.CH Header file for S87 locking functions compatibility
NUM.PRG Numeric functions
ODEMO1.PRG Demonstration of menu functions
ODEMO1.RMK RMAKE script for ODEMO1.PRG
ODEMO2.PRG Demonstration of menu functions
ODEMO2.RMK RMAKE script for ODEMO2.PRG
OMENU.CH Header file for menu functions
OMENU.DOC Documentation for menu functions
OMENU.PRG Menu functions
OMENU.RMK RMAKE script for menu functions
PRINT.PRG Printer control function
SCROLBAR.PRG Scroll bar functions
STACK.PRG Functions to implement a stack data structure
STATUS.PRG Status indicator function
STRING.PRG String manipulation functions
TBDEMO.PRG Example of using TBrowse objects
TIME.PRG Time manipulation functions
TIME87.CH Header file for S87 time functions compatibility
VALEDIT.PRG Example of using Get objects
EXAMPLEC.C Clipper/C interface examples
EXAMPLEA.ASM Clipper/Assembler interface examples
TEMPLATE.ASM Assembler source code example
-------------------------------------------------------------------
Table: SYS.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ERRORSYS.PRG Source file for default runtime error handler
FRMDEF.CH Header file for REPORT runtime system
FRMBACK.PRG Source file for REPORT runtime system
FRMRUN.PRG Source file for REPORT runtime system
GETSYS.PRG Source file for default Get system
LBLDEF.CH Header file for LABEL runtime system
LBLBACK.PRG Source file for LABEL runtime system
LBLRUN.PRG Source file for LABEL runtime system
-------------------------------------------------------------------
5.5 Distribution Disk Contents
Table: 360KB Disk Format
-------------------------------------------------------------------
Disk Contents
-------------------------------------------------------------------
Disk 1 DISK.ID, README, INSTALL.EXE, INSTALL.DAT,
CLIPPER.LIF
Disk 2 DISK.ID, BIN1.LIF
Disk 3 DISK.ID, LIB1.LIF
Disk 4 DISK.ID, INCLUDE.LIF, LIB2.LIF, PLL.LIF, SYS.LIF
Disk 5 DISK.ID, DBU.LIF, PE.LIF, RL.LIF, SAMPLE.LIF
Disk 6 DISK.ID, NG1.001
Disk 7 DISK.ID, NG1.002, NG2.LIF
-------------------------------------------------------------------
Table: 720KB Disk Format
-------------------------------------------------------------------
Disk Contents
-------------------------------------------------------------------
Disk 1 DISK.ID, README, INSTALL.EXE, INSTALL.DAT, BIN1.LIF,
CLIPPER.LIF, INCLUDE.LIF
Disk 2 DISK.ID, LIB1.LIF, LIB2.LIF, NG2.LIF, PLL.LIF,
SYS.LIF
Disk 3 DISK.ID, NG1.001, NG1.002, DBU.LIF, PE.LIF, RL.LIF,
SAMPLE.LIF
-------------------------------------------------------------------
========================================================================
6 Copyrights
The installation program used to install Clipper 5.01, INSTALL, is
based on licensed software provided by Knowledge Dynamics Corp,
Highway Contract 4 Box 185-H, Canyon Lake, Texas 78133-3508 (USA),
1-512-964-3994. INSTALL is Copyright (c) 1987-1991 by Knowledge
Dynamics Corp which reserves all copyright protection worldwide.
INSTALL is provided to you for the exclusive purpose use of
installing Clipper 5.01. Nantucket has made modifications to the
software as provided by Knowledge Dynamics Corp, and thus the
performance and behavior of the INSTALL program shipped with Clipper
5.01 may not represent the performance and behavior of INSTALL as
shipped by Knowledge Dynamics Corp. Nantucket is exclusively
responsible for the support of Clipper 5.01, including support
during the installation phase. In no event will Knowledge Dynamics
Corp be able to provide any technical support for Clipper 5.01.
* * *
========================================================================
1 Welcome to Clipper 5.01!
Copyright (c) 1991 Nantucket Corporation. All rights reserved.
Welcome to Clipper 5.01! This file contains the most up-to-date
information about the product, including additional installation
instructions and detailed distribution disk contents.
During the installation procedure, two additional documentation
files, Errata.doc and Debugger.doc, will be copied to the \CLIPPER5
directory. Errata.doc is a text file that contains errata for the
printed documentation. Debugger.doc is a print file that contains
new documentation for The Clipper Debugger (CLD.EXE) which has been
substantially revised. To print either of these files, use the
following DOS command:
C>COPY <filename> PRN:
========================================================================
2 What's New
In Clipper 5.01, we have made many changes and improvements which
include, but are not limited to:
1. Fixes to known anomalies
2. Increased Clipper Summer '87 compatibility
3. Improved performance
4. Improved runtime error handling and facilities
5. New and improved debugger
6. New and improved installation system
7. Added support for color in @...SAY...GET and box drawing
commands
8. Revised Get system with new and documented API
9. New database functions that can be used in place of database
commands
10. New screen functions that allow the display output system to
buffer display updates
11. New memo functions to determine position based on formatting
12. Append mode for SET ALTERNATE and SET PRINTER files
13. Revised on-line documentation including:
Release Notes documentation database
Change Summaries for Clipper 5.0 and Clipper 5.01
Errata for printed documentation
For a complete list of new features, consult the Release Notes
documentation database.
========================================================================
3 On-line Documentation
There have been several changes made to Clipper 5.01 since the
documentation was printed. The new information is covered either in
the files mentioned above or in the on-line documentation. In the
on-line documentation, new items that do not appear anywhere in the
printed documentation are indicated with the Greek character Omega.
Items that have been revised significantly since the documentation
was printed are indicated with the Sigma character.
The on-line documentation system consists of the Norton Instant
Access Engine (NG.EXE) and several documentation databases that are
listed below:
C5G01A.NG The Guide To Clipper
(Clipper language and reference tables)
C5G02A.NG Error Messages
(Compiler, linker, runtime, RMAKE error messages)
C5G03A.NG Extend System
(Extend function reference documentation)
C5G04A.NG Utilities
(Utilities reference documentation)
C5G05A.NG Release Notes
(Change summaries and topical information)
C5G06A.NG Sample Reference
(Reference for sample programs)
All of the documentation databases and the Instant Access Engine are
installed in the default configuration into \NG which exists at the
same level as the \CLIPPER5 directory.
Within the Instant Access Engine's Options:Database pick list, the
names of the Clipper 5.01 documentation databases are formatted as
follows:
Clipper 5.01a >> The Guide To Clipper
^ ^ ^ ^
| | | |_____ documentation database name
| | |__________ database revision number
| |______________ product version number
|______________________ product name
========================================================================
4 Installation Problems
This section provides information on the installation procedure for
Clipper 5.01. If you have problems installing the software, consult
the following list of problems and solutions. If you experience an
installation problem not listed here, please contact Nantucket
Support at the Nantucket office serving your country. Telephone
numbers appear in the Contacting Nantucket section of the Product
and Services Guide.
When contacting Nantucket Support, have ready information about your
environment such as: machine make and model, DOS version, memory
available during installation, and any memory-resident software you
are using.
4.1 Command-line Arguments
The following table shows the command-line arguments for
INSTALL.EXE.
Table: INSTALL.EXE Command-line Arguments
-------------------------------------------------------------------
Argument Description
-------------------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-------------------------------------------------------------------
4.2 Problems and Solutions
Some common problems that may occur during installation are listed
below:
1. Problem: Missing files due to insufficient disk space on the
target drive.
Solution: Make more space available on the target drive and
then run the install program again.
2. Problem: Insufficient memory to build utilities ("memory
overbooked" messages).
Solution: To build the utilities, INSTALL requires
approximately 400KB of free memory when INSTALL.EXE is invoked.
Make additional memory available by rebooting your computer
without memory resident utilities or network software, then run
INSTALL again. Alternatively, you can build the utility
programs manually (see Building Utilities Manually below).
3. Problem: System hangs while building utilities.
Solution: The install script file includes a SET PATH command
to add some necessary directories to the PATH environment
variable. Under some versions of DOS, attempting to increase
the length of the PATH environment variable beyond 128 bytes
causes COMMAND.COM to hang. Remove unnecessary entries from
PATH and run INSTALL again. Alternatively, you can build the
utility programs manually (see Building Utilities
Manually below).
4.3 Modifying Your Environment Variables
Certain environment (SET command) variables should be set for
Clipper 5.01. If you elected to modify the AUTOEXEC.BAT file
during the installation process, your file should be up-to-date.
Otherwise, the appropriate settings should be in a file called
AUTOEXEC.CHG located in the \CLIPPER5 directory. In either case,
it is important that you modify your AUTOEXEC.BAT file to
incorporate these additional settings so that Clipper 5.01 will
know where to find files. The required settings are as follows:
1. The PATH variable should include the directory where Clipper
5.01 executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where Clipper 5.01
library files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where Clipper
5.01 include files reside (example: C:\CLIPPER5\INCLUDE).
3. The PLL variable should include the directory where Clipper 5.01
pre-linked library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\INCLUDE
You may also wish to set other environment variables. For more
information, refer to the Getting Started Guide and Programming and
Utilities Guide. For general information about the DOS environment
and setting environment variables, refer to your DOS manual.
4.4 Building Utilities Manually
Certain Clipper 5.01 utility programs (DBU, PE, RL) are supplied in
source code form. These utilities must be compiled and linked
before they can be used. INSTALL will optionally install and
build these utilities automatically. If you elected not to install
or build the utilities or if INSTALL failed to build them
successfully, they may be built manually.
Before the utilities can be successfully built, the following
requirements must be met:
1. The Clipper 5.01 executables, libraries, and include files (the
files in C:\CLIPPER5\BIN, C:\CLIPPER5\LIB, and
C:\CLIPPER5\INCLUDE, respectively) must be properly installed.
2. Your environment variables must be set correctly (see above).
3. The source files for the desired utility must be available. If
the source files have not been transferred from the distribution
disks, you can retrieve them using the INSTALL program.
Each utility includes a make file (a .RMK file used by RMAKE) that
will compile and link the utility. To make a utility, simply go to
the appropriate directory and execute RMAKE on the script (.RMK)
file. For example, to make the Database Utility, enter the
following commands:
C:
CD \CLIPPER5\SOURCE\DBU
RMAKE DBU
COPY DBU.EXE \CLIPPER5\BIN
COPY DBU.HLP \CLIPPER5\BIN
Note that the make files for building the Clipper 5.01 utilities
create the .EXE file in the current directory. If you copy the
executable file into the \CLIPPER5\BIN directory, it will be
accessible via SET PATH.
4.5 Building BASE50.PLL Manually
Pre-linked libraries (.PLL files) allow faster linking and code
sharing among different applications. The distribution disks
contain a linker script file (BASE50.LNK) which will create a
general purpose .PLL called BASE50.PLL (for information on building
and using .PLL files, refer to the Programming and Utilities
Guide).
BASE50.PLL is optionally created during installation. If you
elected not to create BASE50.PLL or if the install program did not
create it successfully, you can create it manually. Before
BASE50.PLL can be successfully created, the following requirements
must be met:
1. The Clipper 5.01 executables, libraries, and include files (the
files in C:\CLIPPER5\BIN, C:\CLIPPER5\LIB, and
C:\CLIPPER5\INCLUDE, respectively) must be properly installed.
2. Your environment variables must be set correctly (see above).
3. The PLL directory (\CLIPPER5\PLL) must be created and the
BASE50.LNK file must reside in it. If this file has not been
transferred from the distribution disks, you can retrieve it
using the INSTALL program.
To build the BASE50.PLL, enter the following commands:
C:
CD \CLIPPER5\PLL
RTLINK @BASE50
========================================================================
5 Distribution Disk Contents
This section provides information regarding the contents of the
Clipper 5.01 distribution disks. The files are described in general
terms of their contents followed by several tables showing the
various disk configurations.
5.1 Documentation Files
The README file that you are viewing now is located on Disk 1.
5.2 Disk Identifier Files
Each disk in the Clipper 5.01 package contains a file named DISK.ID
that is used by the install program to verify version and disk
number.
5.3 Install Files
The install program (INSTALL.EXE) and the installation script
(INSTALL.DAT) are located on Disk 1. Together, these two files
allow you to install Clipper 5.01 onto your hard disk.
5.4 Archive Files
The Clipper 5.01 distribution files are supplied in the form of
archive files. Most of the archive files have a .LIF extension,
but the file containing the main documentation database is split up
into two files with .001 and .002 extensions. Each of the archive
files is listed in the table below, followed by several tables
showing the contents of each archive file.
Table: Archive File Descriptions
-------------------------------------------------------------------
Archive Contents
-------------------------------------------------------------------
BIN1.LIF Linker and debugger files and other executables
CLIPPER.LIF Compiler executable file
DBU.LIF Database Utility source files
DOC.LIF Additional documentation files
INCLUDE.LIF Header files
LIB1.LIF Support libraries
LIB2.LIF Support libraries
NG1.001 On-line documentation databases
NG1.002 On-line documentation databases
NG2.LIF Norton Instant Access Engine
PE.LIF Program Editor source files
PLL.LIF Linker script for base 5.01 pre-linked library
RL.LIF Report and Label Utility source files
SAMPLE.LIF Sample program source files
SYS.LIF System component source files
-------------------------------------------------------------------
Table: BIN1.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CL.BAT Compile and Link batch file
CLD.EXE Clipper Debugger
DBT50.EXE DBT update utility
RTLINK.EXE .RTLink linker
RTLINK.DAT .RTLink data file
RTLINK.HLP .RTLink data file
RTLINKST.COM .RTLink data file
RMAKE.EXE RMAKE make utility
RO.COM Read-only file status utility
-------------------------------------------------------------------
Table: CLIPPER.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLIPPER.EXE Clipper 5.01 compiler
-------------------------------------------------------------------
Table: DBU.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DBU.LNK .RTLink script for DBU
DBU.RMK RMAKE script for DBU
DBU.HLP DBU help file
DBU.PRG DBU source
DBUCOPY.PRG DBU source
DBUEDIT.PRG DBU source
DBUHELP.PRG DBU source
DBUINDX.PRG DBU source
DBUSTRU.PRG DBU source
DBUUTIL.PRG DBU source
DBUVIEW.PRG DBU source
-------------------------------------------------------------------
Table: DOC.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ERRATA.DOC Clipper 5.01 Errata Documentation
DEBUGGER.DOC Revised Clipper Debugger Documentation
-------------------------------------------------------------------
Table: INCLUDE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ACHOICE.CH Header file for ACHOICE() function
BOX.CH Header file for box string definitions
DBEDIT.CH Header file for DBEDIT() function
DBSTRUCT.CH Header file for DBSTRUCT() function
DIRECTRY.CH Header file for DIRECTORY() function
ERROR.CH Header file for runtime error system
FILEIO.CH Header file for binary file I/O functions
GETEXIT.CH Header file for Get system
INKEY.CH Header file for keyboard functions
MEMOEDIT.CH Header file for MEMOEDIT() function
RESERVED.CH Header file for reserved words
SET.CH Header file for SET() function
SETCURS.CH Header file for SETCURS() function
SIMPLEIO.CH Header file for standard I/O functions
STD.CH Header file containing standard command set
EXTEND.H Header file for C Extend functions
EXTASM.INC Header file for Assembler Extend functions (5.01)
EXTENDA.INC Header file for Assembler Extend functions (S87)
EXTENDA.MAC Header file for Assembler Extend functions (A86)
-------------------------------------------------------------------
Table: LIB1.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLIPPER.LIB Clipper 5.01 support library
-------------------------------------------------------------------
Table: LIB2.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
CLD.LIB Clipper Debugger library
DBFNTX.LIB Database driver
EXTEND.LIB Clipper 5.01 support library
RTLUTILS.LIB .RTLink static overlay support library
TERMINAL.LIB Terminal I/O drivers
-------------------------------------------------------------------
Table: NG1.001 Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
C5G01A.NG Clipper 5.01 documentation database (partial)
-------------------------------------------------------------------
Table: NG1.002 Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
C5G01A.NG Clipper 5.01 documentation database (continued)
-------------------------------------------------------------------
Table: NG2.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
NG.EXE Norton Instant Access Engine
C5G02A.NG Clipper 5.01 documentation database
C5G03A.NG Clipper 5.01 documentation database
C5G04A.NG Clipper 5.01 documentation database
C5G05A.NG Clipper 5.01 documentation database
C5G06A.NG Clipper 5.01 documentation database
-------------------------------------------------------------------
Table: PE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
PE.PRG PE source
PE.RMK RMAKE script for PE
-------------------------------------------------------------------
Table: PLL.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
BASE50.LNK .RTLink script for base 5.01 pre-linked library
-------------------------------------------------------------------
Table: RL.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
RL.RMK RMAKE script file for RL
RLBACK.PRG RL source
RLDIALG.PRG RL source
RLFRONT.PRG RL source
-------------------------------------------------------------------
Table: SAMPLE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ARRAY.CH Header file for array manipulation examples
ARRAY.PRG Array manipulation examples
ASRTDEMO.PRG Error checking assertions example
ASSERT.CH Header file for error checking assertions
BOX.PRG Simple box menus
BROWSE.PRG Database browser
DATE.PRG Date manipulation functions
DICT.CH Header file for keyed dictionary utility
DICT.PRG Keyed dictionary utility
DOT.PRG Dot prompt emulator
ENVIRON.PRG File look up and state control functions
EXAMPLEP.PRG Miscellaneous examples
FILEIO.PRG Binary file manipulation
FILEDEMO.PRG Demonstration of file manager function
FILEDEMO.RMK RMAKE script for file manager function
FILEMAN.CH Header file for file manager function
FILEMAN.PRG File manager function
GAUGDEMO.PRG Demonstration program for GAUGE.PRG
GAUGE.PRG Status gauge functions
ITERATOR.PRG Array iterator functions
KEYBOARD.PRG Keyboard functions
LOCKS.PRG Database file locking functions
LOCKS87.CH Header file for S87 locking functions compatibility
NUM.PRG Numeric functions
ODEMO1.PRG Demonstration of menu functions
ODEMO1.RMK RMAKE script for ODEMO1.PRG
ODEMO2.PRG Demonstration of menu functions
ODEMO2.RMK RMAKE script for ODEMO2.PRG
OMENU.CH Header file for menu functions
OMENU.DOC Documentation for menu functions
OMENU.PRG Menu functions
OMENU.RMK RMAKE script for menu functions
PRINT.PRG Printer control function
SCROLBAR.PRG Scroll bar functions
STACK.PRG Functions to implement a stack data structure
STATUS.PRG Status indicator function
STRING.PRG String manipulation functions
TBDEMO.PRG Example of using TBrowse objects
TIME.PRG Time manipulation functions
TIME87.CH Header file for S87 time functions compatibility
VALEDIT.PRG Example of using Get objects
EXAMPLEC.C Clipper/C interface examples
EXAMPLEA.ASM Clipper/Assembler interface examples
TEMPLATE.ASM Assembler source code example
-------------------------------------------------------------------
Table: SYS.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
ERRORSYS.PRG Source file for default runtime error handler
FRMDEF.CH Header file for REPORT runtime system
FRMBACK.PRG Source file for REPORT runtime system
FRMRUN.PRG Source file for REPORT runtime system
GETSYS.PRG Source file for default Get system
LBLDEF.CH Header file for LABEL runtime system
LBLBACK.PRG Source file for LABEL runtime system
LBLRUN.PRG Source file for LABEL runtime system
-------------------------------------------------------------------
5.5 Distribution Disk Contents
Table: 360KB Disk Format
-------------------------------------------------------------------
Disk Contents
-------------------------------------------------------------------
Disk 1 DISK.ID, README, INSTALL.EXE, INSTALL.DAT,
CLIPPER.LIF
Disk 2 DISK.ID, BIN1.LIF
Disk 3 DISK.ID, LIB1.LIF
Disk 4 DISK.ID, INCLUDE.LIF, LIB2.LIF, PLL.LIF, SYS.LIF
Disk 5 DISK.ID, DBU.LIF, PE.LIF, RL.LIF, SAMPLE.LIF
Disk 6 DISK.ID, NG1.001
Disk 7 DISK.ID, NG1.002, NG2.LIF
-------------------------------------------------------------------
Table: 720KB Disk Format
-------------------------------------------------------------------
Disk Contents
-------------------------------------------------------------------
Disk 1 DISK.ID, README, INSTALL.EXE, INSTALL.DAT, BIN1.LIF,
CLIPPER.LIF, INCLUDE.LIF
Disk 2 DISK.ID, LIB1.LIF, LIB2.LIF, NG2.LIF, PLL.LIF,
SYS.LIF
Disk 3 DISK.ID, NG1.001, NG1.002, DBU.LIF, PE.LIF, RL.LIF,
SAMPLE.LIF
-------------------------------------------------------------------
========================================================================
6 Copyrights
The installation program used to install Clipper 5.01, INSTALL, is
based on licensed software provided by Knowledge Dynamics Corp,
Highway Contract 4 Box 185-H, Canyon Lake, Texas 78133-3508 (USA),
1-512-964-3994. INSTALL is Copyright (c) 1987-1991 by Knowledge
Dynamics Corp which reserves all copyright protection worldwide.
INSTALL is provided to you for the exclusive purpose use of
installing Clipper 5.01. Nantucket has made modifications to the
software as provided by Knowledge Dynamics Corp, and thus the
performance and behavior of the INSTALL program shipped with Clipper
5.01 may not represent the performance and behavior of INSTALL as
shipped by Knowledge Dynamics Corp. Nantucket is exclusively
responsible for the support of Clipper 5.01, including support
during the installation phase. In no event will Knowledge Dynamics
Corp be able to provide any technical support for Clipper 5.01.
* * *
========================================================================
Welcome to CA-Clipper Version 5.2!
Copyright (c) 1993, Computer Associates International, Inc.
All rights reserved.
This file, README, contains information on issues that did not
make the printed or online documentation. It also contains some
corrections to errors in the printed documentation.
========================================================================
1. Contents
The following topics are covered in this documentation file:
1. Contents
2. Installation
3. Online Documentation
4. Drivers
5. Error Handling
6. New Error Messages
7. Utilities
8. Sample Programs
9. Memory
10. Compatibility Issues
11. Errata
12. Technical Reference
13. Copyright
========================================================================
2. Installation
The interactive installation program, INSTALL.EXE, copies the
CA-Clipper 5.2 files to the appropriate directories and
subdirectories of your hard disk. The installation procedure is
documented in Chapter 2 of the Getting Started Guide, but this
section contains additional information that you may need to
successfully install CA-Clipper 5.2.
Important: The CA-Clipper 5.2 installation program default
installation directory is \CLIPPER5. If you have a previous
version of CA-Clipper installed into a directory with this name,
you will need to modify the install program default directory
(when prompted), otherwise your previous version of CA-Clipper
will be overwritten.
---------------------------------------------------------------------
2.1 Command Line Arguments
The following table shows the command line arguments for
INSTALL.EXE.
INSTALL.EXE Command Line Arguments
-----------------------------------------------------------
Argument Description
-----------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-----------------------------------------------------------
---------------------------------------------------------------------
2.2 Default Directory Structure
The CA-Clipper 5.2 directory structure created by the installation
procedure is as follows:
\CLIPPER5 Master CA-Clipper 5.2 directory
\BIN Executable (.EXE and .COM), batch (.BAT), and
help (.hlp) files
\INCLUDE Header (.CH and .H) files
\LIB Library (.LIB) files
\PLL Prelinked library (.PLL, .PLT, and .LNK) files
\OBJ Object (.OBJ) files
\SOURCE Master directory for source (.prg) files
\DBU Database Utility source files
\PE Program editor source files
\RL Report and Label Utility source files
\SYS Source files for runtime systems
(Get system, Error system, runtime portions
of the Report and Label system, and
Rddsys.prg)
\SAMPLE Sample program source files
\NG The Guide to CA-Clipper files
---------------------------------------------------------------------
2.3 Modifying Your Environment Variables
Certain environment variables (e.g., PATH, LIB, INCLUDE) should be
set for CA-Clipper 5.2. If you elected to modify the AUTOEXEC.BAT
file during the installation process, your file should be up-to-
date. Otherwise, the appropriate settings are written to a file
called AUTOEXEC.NEW located in the root directory of the boot
drive. In either case, it is important that your AUTOEXEC.BAT
file contain these additional settings so that CA-Clipper 5.2 will
find your files. The required settings are as follows:
1. The PATH variable should include the directory where CA-Clipper
5.2 executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where CA-Clipper
5.2 library files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where
CA-Clipper 5.2 include files reside (example:
C:\CLIPPER5\INCLUDE).
4. The PLL variable should include the directory where CA-Clipper
5.2 prelinked library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\PLL
You may also wish to set other environment variables. For a
summary of environment variables used and supported by CA-Clipper
5.2, refer to Chapter 10 of the Quick Reference Guide. For more
information on setting up and using the CA-Clipper development
environment, refer to the Programming and Utilities Guide. For
general information about the DOS environment and setting
environment variables, refer to your DOS manual.
The installation program modifies CONFIG.SYS to:
FILES=25
BUFFERS=15
If you choose to retain your current CONFIG.SYS the installation
program creates a file named CONFIG.NEW and places it in the root
directory of your boot drive.
========================================================================
3. Online Documentation
The online documentation consists of the Norton Instant Access
Engine (NG.EXE) and the following documentation databases:
C52G01B.NG The Guide To CA-Clipper
(CA-Clipper Language Reference and Tables)
C52G02B.NG Error Messages
(Compiler, Linker, RMAKE, Runtime, and DOS errors)
C52G03B.NG Technical Reference (not included)
(Available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed
slip card)
C52G04B.NG Utilities and Environment Variables
(Reference documentation for Utilities (Compiler,
Linker, RMAKE, PE, DBU, RL, and CLD) and DOS (SET)
Environment Variables)
C52G05B.NG Release Notes
(Version Specific Information (i.e., Change Summaries)
C52G06B.NG Sample Programs
(Sample Program Reference)
C52G07B.NG CA-Clipper Drivers Documentation
(Complete Drivers Guide online)
All of the documentation databases and the Instant Access Engine
are installed in the \NG directory, which exists at the same level
as the \CLIPPER5 directory.
========================================================================
4. Drivers
CA-Clipper 5.2 includes new replaceable database drivers (RDDs) as
well as enhanced functionality in the default DBFNTX and the
DBFNDX drivers. The included database drivers are DBFNTX
(CA-Clipper indexes), DBFNDX (dBASE III compatible indexes),
DBFMDX (dBASE IV compatible multiple indexes), DBFCDX (FoxPro
compatible indexes) and DBPX (Paradox compatible tables).
CA-Clipper 5.2 documentation includes a Drivers Guide that
describes the RDDs, their new and enhanced command set, and the
alternate Terminal drivers.
Please note: The online version of the DBFNTX Driver
documentation contains "new" information about DBFNTX's optional
new locking scheme. Please be sure to refer to this section if
using the DBFNTX driver.
---------------------------------------------------------------------
4.1 Alternate Terminal Drivers Instructions
The GT.OBJ supplied in the \CLIPPER5\OBJ directory must be used
with the Alternate Terminal Drivers PCBIOS and ANSITERM. This
object replaces the default GT.OBJ that is contained in
CLIPPER.LIB. Failing to link in this replacement GT.OBJ will
result in improper screen displays and possibly cause the computer
to hang when using the alternate drivers.
Note: GT.OBJ does not support the horizontal argument in the
SCROLL() function nor does it support _gtDispBegin(),
_gtDispEnd(), or _gtDispCount().
---------------------------------------------------------------------
4.2 Nantucket Tools II Instructions
The CT2PATCH.OBJ supplied in the \CLIPPER5\OBJ directory adds
TOOLS II compatibility to CA-Clipper 5.2. You should always use
it with CA-Clipper 5.2 applications that utilize TOOLS II. This
is not necessary for users that do not have TOOLS II. The
CTUS.OBJ supplied in the \CLIPPER5\OBJ directory replaces the
NT2US50.OBJ object initially shipped with TOOLS II. Use CTUS.OBJ
with CA-Clipper 5.2 applications that utilize TOOLS II and
NT2US50.OBJ. This is not necessary for users that do not have
TOOLS II.
---------------------------------------------------------------------
4.3 Database Driver Interoperability
When using the APPEND FROM and COPY TO commands with either
DELIMITED or SDF data, the allowable data types are limited to
valid CA-Clipper data types. Drivers that support "extended" data
types will only be able to copy to and from DELIMITED or SDF data
using databases that contain only valid CA-Clipper data types.
---------------------------------------------------------------------
4.4 Addendum: to Drivers Reference Chapter
Commands and functions that open indexes behave differently than
documented when using (.mdx) and (.cdx) indexes. On these "multi-
tag" indexes, the index order is not automatically set to the
first tag in the index. Instead, the order is set to 0 (natural
order). Therefore, you must set the index order to the desired
tag before performing any action that requires an index (e.g.,
SEEK). This affects the following commands and functions: SET
INDEX, DBSETINDEX(), and ORDLISTADD().
---------------------------------------------------------------------
4.5 DBFCDX Driver note
EVAL and EVERY clauses of the INDEX ON command
The EVAL clause functions differently in the DBFCDX driver than it
does in other RDDs. The EVAL block is evaluated at the beginning
and at the end of each indexing process as well as at each record
as in other RDDs. At the beginning of the index process both
BOF() and EOF() are true (.T.). At the end of the indexing
process only EOF() is true (.T.).
---------------------------------------------------------------------
4.6.1 DBPX Driver Notes
Creating Secondary Indexes
The DBPX Driver automatically creates two index files of the same
name as the table whenever indexes are created. These files have
the extensions (.x??) and (.y??) where "??" represents the ordinal
position of the key field.
Example:
USE Customer // Contains fields Lastname
// and Phone
INDEX ON Lastname TO Temp1 // Creates CUSTOMER.X01 and
// CUSTOMER.Y01.
// The name "Temp1" is ignored
INDEX ON Phone TO Temp2 // Creates CUSTOMER.X02 and
// CUSTOMER.Y02.
// The name "Temp2" is ignored.
---------------------------------------------------------------------
4.6.2 Opening Secondary Indexes
Since all secondary indexes take the name of the table, you open
and access them by the name of their key field.
Example:
// Continuing the example in 4.6.1:
SET INDEX TO Lastname // Open the index using the
// name of the key field,
// not "Temp1"
SET INDEX TO Lastname, Phone // Open the indexes using the
// names of the key fields.
ORDSETFOCUS("Phone") // Set "Phone" as the
// controlling index
========================================================================
5. Error Handling
---------------------------------------------------------------------
5.1 (b) LOCKERRHAN
During abnormal program terminations or when the program is
canceled by Alt-C, CA-Clipper 5.2 produces a trace back of all the
functions active at the time of termination. Users who are used
to this information will find a new item in the trace back that
looks like (b) LOCKERRHAN. This is a special error handler that
is automatically installed as an INIT procedure. This is normal.
Other error handlers installed by INIT procedures, created by
third-party vendors or applications developers will show up in
this manner as well.
========================================================================
6. New Error Messages
---------------------------------------------------------------------
6.1 DBFCDX/1050 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.2 DBFMDX/1028 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.3 DBPX/306 Create error
Explanation: Insufficient memory for an operation like SORT. It
is unlikely that this error will occur in the current version.
Action: Allocate more conventional memory. Do this by removing
TSRs, using a 386 memory manager, etc. Ensure that any C or
assembly language code in use is using the virtual memory system
if it is performing dynamic memory allocation. Any memory
allocated using the Fixed Memory Allocator function (_xalloc() and
_xgrab()) reduces the amount of conventional memory available.
Free this memory as soon as possible after use.
---------------------------------------------------------------------
6.4 DBPX/503 Create error
Explanation: An error was encountered creating, reading or
writing a table, a lock file, or a temporary file.
Action: Make sure that sufficient disk space and directory
entries are available. If the file exists, make sure it is not
marked read-only. In a network environment, make sure the
application has the necessary rights to create the file.
See Also: INDEX command, Network Programming chapter in the
Programming and Utilities guide
========================================================================
7. Utilities
---------------------------------------------------------------------
7.1 DBU Network Capable Features
The DBU sample program has been updated to allow shared use of
databases. By default, DBU now opens all databases in shared mode
and automatically performs the necessary record locks when writing
data.
Additionally, anytime a database must be opened exclusively (e.g.,
CREATE INDEX, MODIFY STRUCTURE, ZAP) DBU automatically reopens the
file in exclusive mode. Should opening the file in exclusive mode
fail, DBU attempts to reopen it in shared mode so that you can
continue.
All operations are done transparently. If an error occurs, the
user is notified and recovery is automatic. In Browse mode,
changes made by another user are automatically reflected in your
Browse screen.
========================================================================
8. Sample Programs
---------------------------------------------------------------------
8.1 SAMPLES.LIB
Included in the \CLIPPER5\LIB directory is a new library called
SAMPLES.LIB. It contains most of the samples in compiled, ready
to use form. To use any of the sample functions you can include
SAMPLES.LIB in your link line as follows:
RTLINK FI <appObjectList> LIB SAMPLES
========================================================================
9. Memory
9.1 Free Memory and Load size
Free Memory is the amount of memory available to run applications.
You can find this value by using the MEM command in DOS version
5.0, or CHKDSK in earlier versions of DOS.
Load Size is the amount of memory used by the application as it is
loaded into memory by DOS. .RTLink reports this value (in
Kilobytes) at the end of a successful link.
Applications require an amount of memory beyond Load Size, for
data storage. The approximate total memory to run an application
is :
minimum: 120K over load size
desirable for best performance: +160K over load size
---------------------------------------------------------------------
9.2 Fixed Memory (FM) Usage
To reduce the memory requirement of your application, you should
convert your C and ASM modules to use Virtual Memory instead of
Fixed Memory. The VM.API headers accompany these files, but the
documentation will be available later (be sure to mail the
included card).
---------------------------------------------------------------------
9.3 CA-Clipper File Services
You may reduce the load size of a CA-Clipper application by using
the built-in CA-Clipper file I/O services instead of the Microsoft
runtime services. The FILESYS.API headers accompany these files,
but the documentation will be available later (be sure to mail the
included card).
========================================================================
10.Compatibility Issues
---------------------------------------------------------------------
Compiler Kit for dBASE IV
The dBASE IV Kit, version 1.10 is not compatible with CA-Clipper
5.2. You can only use version 1.5 of the dBASE IV Kit with
CA-Clipper 5.2.
========================================================================
11.Errata
11.1 Reference Guide
---------------------------------------------------------------------
11.1.1 Page 2-62, (Compound Assign) operator
The documentation states that the correct operator for doing
compound exponentiation/assignment is **=. This is not correct.
The correct operator is ^=. Thus, the syntax and all references
to **= must be changed to ^=. There is also a note in this
entry that states:
Note: The exponentiation operator (^) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is **=.
Replace this paragraph with:
Note: The exponentiation operator (**) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is ^=.
---------------------------------------------------------------------
11.1.2 Page 2-244, DBSETFILTER() function
The description of the <cCondition> parameter should read:
<cCondition> stores the filter condition as a character string
for later retrieval by the DBFILTER() function. If you omit
this optional parameter, the DBFILTER() function will return an
empty string for the work area.
---------------------------------------------------------------------
11.1.3 Page 2-373, Get class
Under the Examples heading, the last line of code:
objGet:postBlock := { |cValue| !EMPTY(cValue) }
should read:
objGet:postBlock := { |oGet| !EMPTY(oGet:varGet()) }
---------------------------------------------------------------------
11.1.4 Page 2-479, OUTSTD() function
The reference to SIMPLIO.CH in both the Description and Files
section of the OUTSTD() function entry should be SIMPLIO.CH.
---------------------------------------------------------------------
11.1.5 Page 2-525, REINDEX command
The command syntax has too many square brackets at the end. The
syntax should read:
REINDEX [EVAL <lCondition>]
[EVERY <nRecords>]
---------------------------------------------------------------------
11.1.6 Page 2-416, LASTREC() function
Because of the expanded functionality of RECNO() to encompass the
concept of "identity", we wish to state here that the LASTREC()
function continues to return only record numbers - not identities.
LASTREC() has no expanded functionality so it is not "identity
aware"
---------------------------------------------------------------------
11.2 Programming and Utilities Guide
---------------------------------------------------------------------
11.2.1. Page 11-3, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3. Quick Reference Guide
---------------------------------------------------------------------
11.3.1. Page 7-7, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3.2. Page 8-1, PE [/E] switch
PE has no switches. It accepts only the filename as a
parameter.
---------------------------------------------------------------------
11.3.3. Page 8-1, DBU /e switch
This switch is optional and not case-sensitive.
---------------------------------------------------------------------
11.4. CA-Clipper Drivers Guide
---------------------------------------------------------------------
11.4.1. Page 2-3, RDDSYS.PRG
The first line of code in RDDSYS.PRG (#include "rddsys.ch") should
be omitted.
---------------------------------------------------------------------
11.4.2. Page 3-27, ORDCREATE()
In the ORDCREATE() syntax, the code block is not optional. The
syntax should be:
ORDCREATE( <cOrderBagName>,[<cOrderName>],
<cExpKey>, <bExpKey>, [<lUnique>]) --> NIL
---------------------------------------------------------------------
11.4.3 Page 8-6, Primary Indexes
To clarify the documentation on the creation of key violation
tables: a key violation table (KEYVIOL.DB) is created only on the
APPEND FROM command, when the source is a (.db) file and the
destination is a keyed (.db) file.
---------------------------------------------------------------------
11.4.4 Page 8-7, Temporary Indexes
This version of DBPX does NOT support Temporary (partial) indexes
---------------------------------------------------------------------
11.4.5 Page 8-7, Secondary Indexes
Secondary Indexes, contrary to the documentation, ARE maintained
the same way normal DBFNTX indexes are maintained.
---------------------------------------------------------------------
11.4.6 Page 8-8, Passwords and Security
The current Paradox driver, contrary to the documentation, does
NOT support Passwords and Security.
Contrary to the documentation, you may have more than twenty-four
Paradox tables open at one time. The number of files is
determined by the available memory. You may have up to fifteen
secondary indexes open in any work area.
========================================================================
12.Technical Reference
The Technical Reference Guide which includes API (Advanced
Programming Interface) documentation on the Extend, Fixed Memory,
Virtual Memory, Terminal, Replaceable Database Driver, and several
additional APIs is available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed slip card.
========================================================================
13.Copyright
The installation program used to install CA-Clipper 5.2, INSTALL,
is based on licensed software provided by Knowledge Dynamics Corp,
P. O. Box 1558, Canyon Lake, Texas 78130-1558 (USA). INSTALL is
Copyrighted (c) 1987-1991 by Knowledge Dynamics Corp which
reserves all copyright protection worldwide. INSTALL is provided
to you for the exclusive purpose of installing CA-Clipper 5.2.
Computer Associates has made modifications to the software as
provided by Knowledge Dynamics Corp, and thus the performance and
behavior of the INSTALL program shipped with CA-Clipper 5.2 may
not represent the performance and behavior of INSTALL as shipped
by Knowledge Dynamics Corp. Computer Associates is exclusively
responsible for the support of CA-Clipper 5.2, including support
during the installation phase. In no event will Knowledge
Dynamics Corp be able to provide any technical support for
CA-Clipper 5.2.
All trade names referenced herein are either trademarks or
registered trademarks of their respective companies.
* * *
========================================================================
Welcome to CA-Clipper Version 5.2!
Copyright (c) 1993, Computer Associates International, Inc.
All rights reserved.
This file, README, contains information on issues that did not
make the printed or online documentation. It also contains some
corrections to errors in the printed documentation.
========================================================================
1. Contents
The following topics are covered in this documentation file:
1. Contents
2. Installation
3. Online Documentation
4. Drivers
5. Error Handling
6. New Error Messages
7. Utilities
8. Sample Programs
9. Memory
10. Compatibility Issues
11. Errata
12. Technical Reference
13. Copyright
========================================================================
2. Installation
The interactive installation program, INSTALL.EXE, copies the
CA-Clipper 5.2 files to the appropriate directories and
subdirectories of your hard disk. The installation procedure is
documented in Chapter 2 of the Getting Started Guide, but this
section contains additional information that you may need to
successfully install CA-Clipper 5.2.
Important: The CA-Clipper 5.2 installation program default
installation directory is \CLIPPER5. If you have a previous
version of CA-Clipper installed into a directory with this name,
you will need to modify the install program default directory
(when prompted), otherwise your previous version of CA-Clipper
will be overwritten.
---------------------------------------------------------------------
2.1 Command Line Arguments
The following table shows the command line arguments for
INSTALL.EXE.
INSTALL.EXE Command Line Arguments
-----------------------------------------------------------
Argument Description
-----------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-----------------------------------------------------------
---------------------------------------------------------------------
2.2 Default Directory Structure
The CA-Clipper 5.2 directory structure created by the installation
procedure is as follows:
\CLIPPER5 Master CA-Clipper 5.2 directory
\BIN Executable (.EXE and .COM), batch (.BAT), and
help (.hlp) files
\INCLUDE Header (.CH and .H) files
\LIB Library (.LIB) files
\PLL Prelinked library (.PLL, .PLT, and .LNK) files
\OBJ Object (.OBJ) files
\SOURCE Master directory for source (.prg) files
\DBU Database Utility source files
\PE Program editor source files
\RL Report and Label Utility source files
\SYS Source files for runtime systems
(Get system, Error system, runtime portions
of the Report and Label system, and
Rddsys.prg)
\SAMPLE Sample program source files
\NG The Guide to CA-Clipper files
---------------------------------------------------------------------
2.3 Modifying Your Environment Variables
Certain environment variables (e.g., PATH, LIB, INCLUDE) should be
set for CA-Clipper 5.2. If you elected to modify the AUTOEXEC.BAT
file during the installation process, your file should be up-to-
date. Otherwise, the appropriate settings are written to a file
called AUTOEXEC.NEW located in the root directory of the boot
drive. In either case, it is important that your AUTOEXEC.BAT
file contain these additional settings so that CA-Clipper 5.2 will
find your files. The required settings are as follows:
1. The PATH variable should include the directory where CA-Clipper
5.2 executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where CA-Clipper
5.2 library files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where
CA-Clipper 5.2 include files reside (example:
C:\CLIPPER5\INCLUDE).
4. The PLL variable should include the directory where CA-Clipper
5.2 prelinked library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\PLL
You may also wish to set other environment variables. For a
summary of environment variables used and supported by CA-Clipper
5.2, refer to Chapter 10 of the Quick Reference Guide. For more
information on setting up and using the CA-Clipper development
environment, refer to the Programming and Utilities Guide. For
general information about the DOS environment and setting
environment variables, refer to your DOS manual.
The installation program modifies CONFIG.SYS to:
FILES=25
BUFFERS=15
If you choose to retain your current CONFIG.SYS the installation
program creates a file named CONFIG.NEW and places it in the root
directory of your boot drive.
========================================================================
3. Online Documentation
The online documentation consists of the Norton Instant Access
Engine (NG.EXE) and the following documentation databases:
C52G01B.NG The Guide To CA-Clipper
(CA-Clipper Language Reference and Tables)
C52G02B.NG Error Messages
(Compiler, Linker, RMAKE, Runtime, and DOS errors)
C52G03B.NG Technical Reference (not included)
(Available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed
slip card)
C52G04B.NG Utilities and Environment Variables
(Reference documentation for Utilities (Compiler,
Linker, RMAKE, PE, DBU, RL, and CLD) and DOS (SET)
Environment Variables)
C52G05B.NG Release Notes
(Version Specific Information (i.e., Change Summaries)
C52G06B.NG Sample Programs
(Sample Program Reference)
C52G07B.NG CA-Clipper Drivers Documentation
(Complete Drivers Guide online)
All of the documentation databases and the Instant Access Engine
are installed in the \NG directory, which exists at the same level
as the \CLIPPER5 directory.
========================================================================
4. Drivers
CA-Clipper 5.2 includes new replaceable database drivers (RDDs) as
well as enhanced functionality in the default DBFNTX and the
DBFNDX drivers. The included database drivers are DBFNTX
(CA-Clipper indexes), DBFNDX (dBASE III compatible indexes),
DBFMDX (dBASE IV compatible multiple indexes), DBFCDX (FoxPro
compatible indexes) and DBPX (Paradox compatible tables).
CA-Clipper 5.2 documentation includes a Drivers Guide that
describes the RDDs, their new and enhanced command set, and the
alternate Terminal drivers.
Please note: The online version of the DBFNTX Driver
documentation contains "new" information about DBFNTX's optional
new locking scheme. Please be sure to refer to this section if
using the DBFNTX driver.
---------------------------------------------------------------------
4.1 Alternate Terminal Drivers Instructions
The GT.OBJ supplied in the \CLIPPER5\OBJ directory must be used
with the Alternate Terminal Drivers PCBIOS and ANSITERM. This
object replaces the default GT.OBJ that is contained in
CLIPPER.LIB. Failing to link in this replacement GT.OBJ will
result in improper screen displays and possibly cause the computer
to hang when using the alternate drivers.
Note: GT.OBJ does not support the horizontal argument in the
SCROLL() function nor does it support _gtDispBegin(),
_gtDispEnd(), or _gtDispCount().
---------------------------------------------------------------------
4.2 Nantucket Tools II Instructions
The CT2PATCH.OBJ supplied in the \CLIPPER5\OBJ directory adds
TOOLS II compatibility to CA-Clipper 5.2. You should always use
it with CA-Clipper 5.2 applications that utilize TOOLS II. This
is not necessary for users that do not have TOOLS II. The
CTUS.OBJ supplied in the \CLIPPER5\OBJ directory replaces the
NT2US50.OBJ object initially shipped with TOOLS II. Use CTUS.OBJ
with CA-Clipper 5.2 applications that utilize TOOLS II and
NT2US50.OBJ. This is not necessary for users that do not have
TOOLS II.
---------------------------------------------------------------------
4.3 Database Driver Interoperability
When using the APPEND FROM and COPY TO commands with either
DELIMITED or SDF data, the allowable data types are limited to
valid CA-Clipper data types. Drivers that support "extended" data
types will only be able to copy to and from DELIMITED or SDF data
using databases that contain only valid CA-Clipper data types.
---------------------------------------------------------------------
4.4 Addendum: to Drivers Reference Chapter
Commands and functions that open indexes behave differently than
documented when using (.mdx) and (.cdx) indexes. On these "multi-
tag" indexes, the index order is not automatically set to the
first tag in the index. Instead, the order is set to 0 (natural
order). Therefore, you must set the index order to the desired
tag before performing any action that requires an index (e.g.,
SEEK). This affects the following commands and functions: SET
INDEX, DBSETINDEX(), and ORDLISTADD().
---------------------------------------------------------------------
4.5 DBFCDX Driver note
EVAL and EVERY clauses of the INDEX ON command
The EVAL clause functions differently in the DBFCDX driver than it
does in other RDDs. The EVAL block is evaluated at the beginning
and at the end of each indexing process as well as at each record
as in other RDDs. At the beginning of the index process both
BOF() and EOF() are true (.T.). At the end of the indexing
process only EOF() is true (.T.).
---------------------------------------------------------------------
4.6.1 DBPX Driver Notes
Creating Secondary Indexes
The DBPX Driver automatically creates two index files of the same
name as the table whenever indexes are created. These files have
the extensions (.x??) and (.y??) where "??" represents the ordinal
position of the key field.
Example:
USE Customer // Contains fields Lastname
// and Phone
INDEX ON Lastname TO Temp1 // Creates CUSTOMER.X01 and
// CUSTOMER.Y01.
// The name "Temp1" is ignored
INDEX ON Phone TO Temp2 // Creates CUSTOMER.X02 and
// CUSTOMER.Y02.
// The name "Temp2" is ignored.
---------------------------------------------------------------------
4.6.2 Opening Secondary Indexes
Since all secondary indexes take the name of the table, you open
and access them by the name of their key field.
Example:
// Continuing the example in 4.6.1:
SET INDEX TO Lastname // Open the index using the
// name of the key field,
// not "Temp1"
SET INDEX TO Lastname, Phone // Open the indexes using the
// names of the key fields.
ORDSETFOCUS("Phone") // Set "Phone" as the
// controlling index
========================================================================
5. Error Handling
---------------------------------------------------------------------
5.1 (b) LOCKERRHAN
During abnormal program terminations or when the program is
canceled by Alt-C, CA-Clipper 5.2 produces a trace back of all the
functions active at the time of termination. Users who are used
to this information will find a new item in the trace back that
looks like (b) LOCKERRHAN. This is a special error handler that
is automatically installed as an INIT procedure. This is normal.
Other error handlers installed by INIT procedures, created by
third-party vendors or applications developers will show up in
this manner as well.
========================================================================
6. New Error Messages
---------------------------------------------------------------------
6.1 DBFCDX/1050 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.2 DBFMDX/1028 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.3 DBPX/306 Create error
Explanation: Insufficient memory for an operation like SORT. It
is unlikely that this error will occur in the current version.
Action: Allocate more conventional memory. Do this by removing
TSRs, using a 386 memory manager, etc. Ensure that any C or
assembly language code in use is using the virtual memory system
if it is performing dynamic memory allocation. Any memory
allocated using the Fixed Memory Allocator function (_xalloc() and
_xgrab()) reduces the amount of conventional memory available.
Free this memory as soon as possible after use.
---------------------------------------------------------------------
6.4 DBPX/503 Create error
Explanation: An error was encountered creating, reading or
writing a table, a lock file, or a temporary file.
Action: Make sure that sufficient disk space and directory
entries are available. If the file exists, make sure it is not
marked read-only. In a network environment, make sure the
application has the necessary rights to create the file.
See Also: INDEX command, Network Programming chapter in the
Programming and Utilities guide
========================================================================
7. Utilities
---------------------------------------------------------------------
7.1 DBU Network Capable Features
The DBU sample program has been updated to allow shared use of
databases. By default, DBU now opens all databases in shared mode
and automatically performs the necessary record locks when writing
data.
Additionally, anytime a database must be opened exclusively (e.g.,
CREATE INDEX, MODIFY STRUCTURE, ZAP) DBU automatically reopens the
file in exclusive mode. Should opening the file in exclusive mode
fail, DBU attempts to reopen it in shared mode so that you can
continue.
All operations are done transparently. If an error occurs, the
user is notified and recovery is automatic. In Browse mode,
changes made by another user are automatically reflected in your
Browse screen.
========================================================================
8. Sample Programs
---------------------------------------------------------------------
8.1 SAMPLES.LIB
Included in the \CLIPPER5\LIB directory is a new library called
SAMPLES.LIB. It contains most of the samples in compiled, ready
to use form. To use any of the sample functions you can include
SAMPLES.LIB in your link line as follows:
RTLINK FI <appObjectList> LIB SAMPLES
========================================================================
9. Memory
9.1 Free Memory and Load size
Free Memory is the amount of memory available to run applications.
You can find this value by using the MEM command in DOS version
5.0, or CHKDSK in earlier versions of DOS.
Load Size is the amount of memory used by the application as it is
loaded into memory by DOS. .RTLink reports this value (in
Kilobytes) at the end of a successful link.
Applications require an amount of memory beyond Load Size, for
data storage. The approximate total memory to run an application
is :
minimum: 120K over load size
desirable for best performance: +160K over load size
---------------------------------------------------------------------
9.2 Fixed Memory (FM) Usage
To reduce the memory requirement of your application, you should
convert your C and ASM modules to use Virtual Memory instead of
Fixed Memory. The VM.API headers accompany these files, but the
documentation will be available later (be sure to mail the
included card).
---------------------------------------------------------------------
9.3 CA-Clipper File Services
You may reduce the load size of a CA-Clipper application by using
the built-in CA-Clipper file I/O services instead of the Microsoft
runtime services. The FILESYS.API headers accompany these files,
but the documentation will be available later (be sure to mail the
included card).
========================================================================
10.Compatibility Issues
---------------------------------------------------------------------
Compiler Kit for dBASE IV
The dBASE IV Kit, version 1.10 is not compatible with CA-Clipper
5.2. You can only use version 1.5 of the dBASE IV Kit with
CA-Clipper 5.2.
========================================================================
11.Errata
11.1 Reference Guide
---------------------------------------------------------------------
11.1.1 Page 2-62, (Compound Assign) operator
The documentation states that the correct operator for doing
compound exponentiation/assignment is **=. This is not correct.
The correct operator is ^=. Thus, the syntax and all references
to **= must be changed to ^=. There is also a note in this
entry that states:
Note: The exponentiation operator (^) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is **=.
Replace this paragraph with:
Note: The exponentiation operator (**) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is ^=.
---------------------------------------------------------------------
11.1.2 Page 2-244, DBSETFILTER() function
The description of the <cCondition> parameter should read:
<cCondition> stores the filter condition as a character string
for later retrieval by the DBFILTER() function. If you omit
this optional parameter, the DBFILTER() function will return an
empty string for the work area.
---------------------------------------------------------------------
11.1.3 Page 2-373, Get class
Under the Examples heading, the last line of code:
objGet:postBlock := { |cValue| !EMPTY(cValue) }
should read:
objGet:postBlock := { |oGet| !EMPTY(oGet:varGet()) }
---------------------------------------------------------------------
11.1.4 Page 2-479, OUTSTD() function
The reference to SIMPLIO.CH in both the Description and Files
section of the OUTSTD() function entry should be SIMPLIO.CH.
---------------------------------------------------------------------
11.1.5 Page 2-525, REINDEX command
The command syntax has too many square brackets at the end. The
syntax should read:
REINDEX [EVAL <lCondition>]
[EVERY <nRecords>]
---------------------------------------------------------------------
11.1.6 Page 2-416, LASTREC() function
Because of the expanded functionality of RECNO() to encompass the
concept of "identity", we wish to state here that the LASTREC()
function continues to return only record numbers - not identities.
LASTREC() has no expanded functionality so it is not "identity
aware"
---------------------------------------------------------------------
11.2 Programming and Utilities Guide
---------------------------------------------------------------------
11.2.1. Page 11-3, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3. Quick Reference Guide
---------------------------------------------------------------------
11.3.1. Page 7-7, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3.2. Page 8-1, PE [/E] switch
PE has no switches. It accepts only the filename as a
parameter.
---------------------------------------------------------------------
11.3.3. Page 8-1, DBU /e switch
This switch is optional and not case-sensitive.
---------------------------------------------------------------------
11.4. CA-Clipper Drivers Guide
---------------------------------------------------------------------
11.4.1. Page 2-3, RDDSYS.PRG
The first line of code in RDDSYS.PRG (#include "rddsys.ch") should
be omitted.
---------------------------------------------------------------------
11.4.2. Page 3-27, ORDCREATE()
In the ORDCREATE() syntax, the code block is not optional. The
syntax should be:
ORDCREATE( <cOrderBagName>,[<cOrderName>],
<cExpKey>, <bExpKey>, [<lUnique>]) --> NIL
---------------------------------------------------------------------
11.4.3 Page 8-6, Primary Indexes
To clarify the documentation on the creation of key violation
tables: a key violation table (KEYVIOL.DB) is created only on the
APPEND FROM command, when the source is a (.db) file and the
destination is a keyed (.db) file.
---------------------------------------------------------------------
11.4.4 Page 8-7, Temporary Indexes
This version of DBPX does NOT support Temporary (partial) indexes
---------------------------------------------------------------------
11.4.5 Page 8-7, Secondary Indexes
Secondary Indexes, contrary to the documentation, ARE maintained
the same way normal DBFNTX indexes are maintained.
---------------------------------------------------------------------
11.4.6 Page 8-8, Passwords and Security
The current Paradox driver, contrary to the documentation, does
NOT support Passwords and Security.
Contrary to the documentation, you may have more than twenty-four
Paradox tables open at one time. The number of files is
determined by the available memory. You may have up to fifteen
secondary indexes open in any work area.
========================================================================
12.Technical Reference
The Technical Reference Guide which includes API (Advanced
Programming Interface) documentation on the Extend, Fixed Memory,
Virtual Memory, Terminal, Replaceable Database Driver, and several
additional APIs is available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed slip card.
========================================================================
13.Copyright
The installation program used to install CA-Clipper 5.2, INSTALL,
is based on licensed software provided by Knowledge Dynamics Corp,
P. O. Box 1558, Canyon Lake, Texas 78130-1558 (USA). INSTALL is
Copyrighted (c) 1987-1991 by Knowledge Dynamics Corp which
reserves all copyright protection worldwide. INSTALL is provided
to you for the exclusive purpose of installing CA-Clipper 5.2.
Computer Associates has made modifications to the software as
provided by Knowledge Dynamics Corp, and thus the performance and
behavior of the INSTALL program shipped with CA-Clipper 5.2 may
not represent the performance and behavior of INSTALL as shipped
by Knowledge Dynamics Corp. Computer Associates is exclusively
responsible for the support of CA-Clipper 5.2, including support
during the installation phase. In no event will Knowledge
Dynamics Corp be able to provide any technical support for
CA-Clipper 5.2.
All trade names referenced herein are either trademarks or
registered trademarks of their respective companies.
* * *
========================================================================
Welcome to CA-Clipper Version 5.2!
Copyright (c) 1993, Computer Associates International, Inc.
All rights reserved.
This file, README, contains information on issues that did not
make the printed or online documentation. It also contains some
corrections to errors in the printed documentation.
========================================================================
1. Contents
The following topics are covered in this documentation file:
1. Contents
2. Installation
3. Online Documentation
4. Drivers
5. Error Handling
6. New Error Messages
7. Utilities
8. Sample Programs
9. Memory
10. Compatibility Issues
11. Errata
12. Technical Reference
13. Copyright
========================================================================
2. Installation
The interactive installation program, INSTALL.EXE, copies the
CA-Clipper 5.2 files to the appropriate directories and
subdirectories of your hard disk. The installation procedure is
documented in Chapter 2 of the Getting Started Guide, but this
section contains additional information that you may need to
successfully install CA-Clipper 5.2.
Important: The CA-Clipper 5.2 installation program default
installation directory is \CLIPPER5. If you have a previous
version of CA-Clipper installed into a directory with this name,
you will need to modify the install program default directory
(when prompted), otherwise your previous version of CA-Clipper
will be overwritten.
---------------------------------------------------------------------
2.1 Command Line Arguments
The following table shows the command line arguments for
INSTALL.EXE.
INSTALL.EXE Command Line Arguments
-----------------------------------------------------------
Argument Description
-----------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-----------------------------------------------------------
---------------------------------------------------------------------
2.2 Default Directory Structure
The CA-Clipper 5.2 directory structure created by the installation
procedure is as follows:
\CLIPPER5 Master CA-Clipper 5.2 directory
\BIN Executable (.EXE and .COM), batch (.BAT), and
help (.hlp) files
\INCLUDE Header (.CH and .H) files
\LIB Library (.LIB) files
\PLL Prelinked library (.PLL, .PLT, and .LNK) files
\OBJ Object (.OBJ) files
\SOURCE Master directory for source (.prg) files
\DBU Database Utility source files
\PE Program editor source files
\RL Report and Label Utility source files
\SYS Source files for runtime systems
(Get system, Error system, runtime portions
of the Report and Label system, and
Rddsys.prg)
\SAMPLE Sample program source files
\NG The Guide to CA-Clipper files
---------------------------------------------------------------------
2.3 Modifying Your Environment Variables
Certain environment variables (e.g., PATH, LIB, INCLUDE) should be
set for CA-Clipper 5.2. If you elected to modify the AUTOEXEC.BAT
file during the installation process, your file should be up-to-
date. Otherwise, the appropriate settings are written to a file
called AUTOEXEC.NEW located in the root directory of the boot
drive. In either case, it is important that your AUTOEXEC.BAT
file contain these additional settings so that CA-Clipper 5.2 will
find your files. The required settings are as follows:
1. The PATH variable should include the directory where CA-Clipper
5.2 executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where CA-Clipper
5.2 library files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where
CA-Clipper 5.2 include files reside (example:
C:\CLIPPER5\INCLUDE).
4. The PLL variable should include the directory where CA-Clipper
5.2 prelinked library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\PLL
You may also wish to set other environment variables. For a
summary of environment variables used and supported by CA-Clipper
5.2, refer to Chapter 10 of the Quick Reference Guide. For more
information on setting up and using the CA-Clipper development
environment, refer to the Programming and Utilities Guide. For
general information about the DOS environment and setting
environment variables, refer to your DOS manual.
The installation program modifies CONFIG.SYS to:
FILES=25
BUFFERS=15
If you choose to retain your current CONFIG.SYS the installation
program creates a file named CONFIG.NEW and places it in the root
directory of your boot drive.
========================================================================
3. Online Documentation
The online documentation consists of the Norton Instant Access
Engine (NG.EXE) and the following documentation databases:
C52G01B.NG The Guide To CA-Clipper
(CA-Clipper Language Reference and Tables)
C52G02B.NG Error Messages
(Compiler, Linker, RMAKE, Runtime, and DOS errors)
C52G03B.NG Technical Reference (not included)
(Available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed
slip card)
C52G04B.NG Utilities and Environment Variables
(Reference documentation for Utilities (Compiler,
Linker, RMAKE, PE, DBU, RL, and CLD) and DOS (SET)
Environment Variables)
C52G05B.NG Release Notes
(Version Specific Information (i.e., Change Summaries)
C52G06B.NG Sample Programs
(Sample Program Reference)
C52G07B.NG CA-Clipper Drivers Documentation
(Complete Drivers Guide online)
All of the documentation databases and the Instant Access Engine
are installed in the \NG directory, which exists at the same level
as the \CLIPPER5 directory.
========================================================================
4. Drivers
CA-Clipper 5.2 includes new replaceable database drivers (RDDs) as
well as enhanced functionality in the default DBFNTX and the
DBFNDX drivers. The included database drivers are DBFNTX
(CA-Clipper indexes), DBFNDX (dBASE III compatible indexes),
DBFMDX (dBASE IV compatible multiple indexes), DBFCDX (FoxPro
compatible indexes) and DBPX (Paradox compatible tables).
CA-Clipper 5.2 documentation includes a Drivers Guide that
describes the RDDs, their new and enhanced command set, and the
alternate Terminal drivers.
Please note: The online version of the DBFNTX Driver
documentation contains "new" information about DBFNTX's optional
new locking scheme. Please be sure to refer to this section if
using the DBFNTX driver.
---------------------------------------------------------------------
4.1 Alternate Terminal Drivers Instructions
The GT.OBJ supplied in the \CLIPPER5\OBJ directory must be used
with the Alternate Terminal Drivers PCBIOS and ANSITERM. This
object replaces the default GT.OBJ that is contained in
CLIPPER.LIB. Failing to link in this replacement GT.OBJ will
result in improper screen displays and possibly cause the computer
to hang when using the alternate drivers.
Note: GT.OBJ does not support the horizontal argument in the
SCROLL() function nor does it support _gtDispBegin(),
_gtDispEnd(), or _gtDispCount().
---------------------------------------------------------------------
4.2 Nantucket Tools II Instructions
The CT2PATCH.OBJ supplied in the \CLIPPER5\OBJ directory adds
TOOLS II compatibility to CA-Clipper 5.2. You should always use
it with CA-Clipper 5.2 applications that utilize TOOLS II. This
is not necessary for users that do not have TOOLS II. The
CTUS.OBJ supplied in the \CLIPPER5\OBJ directory replaces the
NT2US50.OBJ object initially shipped with TOOLS II. Use CTUS.OBJ
with CA-Clipper 5.2 applications that utilize TOOLS II and
NT2US50.OBJ. This is not necessary for users that do not have
TOOLS II.
---------------------------------------------------------------------
4.3 Database Driver Interoperability
When using the APPEND FROM and COPY TO commands with either
DELIMITED or SDF data, the allowable data types are limited to
valid CA-Clipper data types. Drivers that support "extended" data
types will only be able to copy to and from DELIMITED or SDF data
using databases that contain only valid CA-Clipper data types.
---------------------------------------------------------------------
4.4 Addendum: to Drivers Reference Chapter
Commands and functions that open indexes behave differently than
documented when using (.mdx) and (.cdx) indexes. On these "multi-
tag" indexes, the index order is not automatically set to the
first tag in the index. Instead, the order is set to 0 (natural
order). Therefore, you must set the index order to the desired
tag before performing any action that requires an index (e.g.,
SEEK). This affects the following commands and functions: SET
INDEX, DBSETINDEX(), and ORDLISTADD().
---------------------------------------------------------------------
4.5 DBFCDX Driver note
EVAL and EVERY clauses of the INDEX ON command
The EVAL clause functions differently in the DBFCDX driver than it
does in other RDDs. The EVAL block is evaluated at the beginning
and at the end of each indexing process as well as at each record
as in other RDDs. At the beginning of the index process both
BOF() and EOF() are true (.T.). At the end of the indexing
process only EOF() is true (.T.).
---------------------------------------------------------------------
4.6.1 DBPX Driver Notes
Creating Secondary Indexes
The DBPX Driver automatically creates two index files of the same
name as the table whenever indexes are created. These files have
the extensions (.x??) and (.y??) where "??" represents the ordinal
position of the key field.
Example:
USE Customer // Contains fields Lastname
// and Phone
INDEX ON Lastname TO Temp1 // Creates CUSTOMER.X01 and
// CUSTOMER.Y01.
// The name "Temp1" is ignored
INDEX ON Phone TO Temp2 // Creates CUSTOMER.X02 and
// CUSTOMER.Y02.
// The name "Temp2" is ignored.
---------------------------------------------------------------------
4.6.2 Opening Secondary Indexes
Since all secondary indexes take the name of the table, you open
and access them by the name of their key field.
Example:
// Continuing the example in 4.6.1:
SET INDEX TO Lastname // Open the index using the
// name of the key field,
// not "Temp1"
SET INDEX TO Lastname, Phone // Open the indexes using the
// names of the key fields.
ORDSETFOCUS("Phone") // Set "Phone" as the
// controlling index
========================================================================
5. Error Handling
---------------------------------------------------------------------
5.1 (b) LOCKERRHAN
During abnormal program terminations or when the program is
canceled by Alt-C, CA-Clipper 5.2 produces a trace back of all the
functions active at the time of termination. Users who are used
to this information will find a new item in the trace back that
looks like (b) LOCKERRHAN. This is a special error handler that
is automatically installed as an INIT procedure. This is normal.
Other error handlers installed by INIT procedures, created by
third-party vendors or applications developers will show up in
this manner as well.
========================================================================
6. New Error Messages
---------------------------------------------------------------------
6.1 DBFCDX/1050 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.2 DBFMDX/1028 Create error
Explanation: The maximum number of Orders per Order Bag was
exceeded. The allowable number of Orders that an Order Bag can
contain varies by database driver. See the Drivers guide.
Action: Create a new Order Bag (index file).
---------------------------------------------------------------------
6.3 DBPX/306 Create error
Explanation: Insufficient memory for an operation like SORT. It
is unlikely that this error will occur in the current version.
Action: Allocate more conventional memory. Do this by removing
TSRs, using a 386 memory manager, etc. Ensure that any C or
assembly language code in use is using the virtual memory system
if it is performing dynamic memory allocation. Any memory
allocated using the Fixed Memory Allocator function (_xalloc() and
_xgrab()) reduces the amount of conventional memory available.
Free this memory as soon as possible after use.
---------------------------------------------------------------------
6.4 DBPX/503 Create error
Explanation: An error was encountered creating, reading or
writing a table, a lock file, or a temporary file.
Action: Make sure that sufficient disk space and directory
entries are available. If the file exists, make sure it is not
marked read-only. In a network environment, make sure the
application has the necessary rights to create the file.
See Also: INDEX command, Network Programming chapter in the
Programming and Utilities guide
========================================================================
7. Utilities
---------------------------------------------------------------------
7.1 DBU Network Capable Features
The DBU sample program has been updated to allow shared use of
databases. By default, DBU now opens all databases in shared mode
and automatically performs the necessary record locks when writing
data.
Additionally, anytime a database must be opened exclusively (e.g.,
CREATE INDEX, MODIFY STRUCTURE, ZAP) DBU automatically reopens the
file in exclusive mode. Should opening the file in exclusive mode
fail, DBU attempts to reopen it in shared mode so that you can
continue.
All operations are done transparently. If an error occurs, the
user is notified and recovery is automatic. In Browse mode,
changes made by another user are automatically reflected in your
Browse screen.
========================================================================
8. Sample Programs
---------------------------------------------------------------------
8.1 SAMPLES.LIB
Included in the \CLIPPER5\LIB directory is a new library called
SAMPLES.LIB. It contains most of the samples in compiled, ready
to use form. To use any of the sample functions you can include
SAMPLES.LIB in your link line as follows:
RTLINK FI <appObjectList> LIB SAMPLES
========================================================================
9. Memory
9.1 Free Memory and Load size
Free Memory is the amount of memory available to run applications.
You can find this value by using the MEM command in DOS version
5.0, or CHKDSK in earlier versions of DOS.
Load Size is the amount of memory used by the application as it is
loaded into memory by DOS. .RTLink reports this value (in
Kilobytes) at the end of a successful link.
Applications require an amount of memory beyond Load Size, for
data storage. The approximate total memory to run an application
is :
minimum: 120K over load size
desirable for best performance: +160K over load size
---------------------------------------------------------------------
9.2 Fixed Memory (FM) Usage
To reduce the memory requirement of your application, you should
convert your C and ASM modules to use Virtual Memory instead of
Fixed Memory. The VM.API headers accompany these files, but the
documentation will be available later (be sure to mail the
included card).
---------------------------------------------------------------------
9.3 CA-Clipper File Services
You may reduce the load size of a CA-Clipper application by using
the built-in CA-Clipper file I/O services instead of the Microsoft
runtime services. The FILESYS.API headers accompany these files,
but the documentation will be available later (be sure to mail the
included card).
========================================================================
10.Compatibility Issues
---------------------------------------------------------------------
Compiler Kit for dBASE IV
The dBASE IV Kit, version 1.10 is not compatible with CA-Clipper
5.2. You can only use version 1.5 of the dBASE IV Kit with
CA-Clipper 5.2.
========================================================================
11.Errata
11.1 Reference Guide
---------------------------------------------------------------------
11.1.1 Page 2-62, (Compound Assign) operator
The documentation states that the correct operator for doing
compound exponentiation/assignment is **=. This is not correct.
The correct operator is ^=. Thus, the syntax and all references
to **= must be changed to ^=. There is also a note in this
entry that states:
Note: The exponentiation operator (^) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is **=.
Replace this paragraph with:
Note: The exponentiation operator (**) does not have a
corresponding compound assignment operator. The exponentiation
compound assignment operator is ^=.
---------------------------------------------------------------------
11.1.2 Page 2-244, DBSETFILTER() function
The description of the <cCondition> parameter should read:
<cCondition> stores the filter condition as a character string
for later retrieval by the DBFILTER() function. If you omit
this optional parameter, the DBFILTER() function will return an
empty string for the work area.
---------------------------------------------------------------------
11.1.3 Page 2-373, Get class
Under the Examples heading, the last line of code:
objGet:postBlock := { |cValue| !EMPTY(cValue) }
should read:
objGet:postBlock := { |oGet| !EMPTY(oGet:varGet()) }
---------------------------------------------------------------------
11.1.4 Page 2-479, OUTSTD() function
The reference to SIMPLIO.CH in both the Description and Files
section of the OUTSTD() function entry should be SIMPLIO.CH.
---------------------------------------------------------------------
11.1.5 Page 2-525, REINDEX command
The command syntax has too many square brackets at the end. The
syntax should read:
REINDEX [EVAL <lCondition>]
[EVERY <nRecords>]
---------------------------------------------------------------------
11.1.6 Page 2-416, LASTREC() function
Because of the expanded functionality of RECNO() to encompass the
concept of "identity", we wish to state here that the LASTREC()
function continues to return only record numbers - not identities.
LASTREC() has no expanded functionality so it is not "identity
aware"
---------------------------------------------------------------------
11.2 Programming and Utilities Guide
---------------------------------------------------------------------
11.2.1. Page 11-3, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3. Quick Reference Guide
---------------------------------------------------------------------
11.3.1. Page 7-7, RMAKE [/S] switch
The RMAKE /S switch is no longer supported.
---------------------------------------------------------------------
11.3.2. Page 8-1, PE [/E] switch
PE has no switches. It accepts only the filename as a
parameter.
---------------------------------------------------------------------
11.3.3. Page 8-1, DBU /e switch
This switch is optional and not case-sensitive.
---------------------------------------------------------------------
11.4. CA-Clipper Drivers Guide
---------------------------------------------------------------------
11.4.1. Page 2-3, RDDSYS.PRG
The first line of code in RDDSYS.PRG (#include "rddsys.ch") should
be omitted.
---------------------------------------------------------------------
11.4.2. Page 3-27, ORDCREATE()
In the ORDCREATE() syntax, the code block is not optional. The
syntax should be:
ORDCREATE( <cOrderBagName>,[<cOrderName>],
<cExpKey>, <bExpKey>, [<lUnique>]) --> NIL
---------------------------------------------------------------------
11.4.3 Page 8-6, Primary Indexes
To clarify the documentation on the creation of key violation
tables: a key violation table (KEYVIOL.DB) is created only on the
APPEND FROM command, when the source is a (.db) file and the
destination is a keyed (.db) file.
---------------------------------------------------------------------
11.4.4 Page 8-7, Temporary Indexes
This version of DBPX does NOT support Temporary (partial) indexes
---------------------------------------------------------------------
11.4.5 Page 8-7, Secondary Indexes
Secondary Indexes, contrary to the documentation, ARE maintained
the same way normal DBFNTX indexes are maintained.
---------------------------------------------------------------------
11.4.6 Page 8-8, Passwords and Security
The current Paradox driver, contrary to the documentation, does
NOT support Passwords and Security.
Contrary to the documentation, you may have more than twenty-four
Paradox tables open at one time. The number of files is
determined by the available memory. You may have up to fifteen
secondary indexes open in any work area.
========================================================================
12.Technical Reference
The Technical Reference Guide which includes API (Advanced
Programming Interface) documentation on the Extend, Fixed Memory,
Virtual Memory, Terminal, Replaceable Database Driver, and several
additional APIs is available through the Computer Associates
Supplemental Offer. To order, refer to the enclosed slip card.
========================================================================
13.Copyright
The installation program used to install CA-Clipper 5.2, INSTALL,
is based on licensed software provided by Knowledge Dynamics Corp,
P. O. Box 1558, Canyon Lake, Texas 78130-1558 (USA). INSTALL is
Copyrighted (c) 1987-1991 by Knowledge Dynamics Corp which
reserves all copyright protection worldwide. INSTALL is provided
to you for the exclusive purpose of installing CA-Clipper 5.2.
Computer Associates has made modifications to the software as
provided by Knowledge Dynamics Corp, and thus the performance and
behavior of the INSTALL program shipped with CA-Clipper 5.2 may
not represent the performance and behavior of INSTALL as shipped
by Knowledge Dynamics Corp. Computer Associates is exclusively
responsible for the support of CA-Clipper 5.2, including support
during the installation phase. In no event will Knowledge
Dynamics Corp be able to provide any technical support for
CA-Clipper 5.2.
All trade names referenced herein are either trademarks or
registered trademarks of their respective companies.
* * *
OverLay() 3.5
This README file contains additions and bug fix information
for OverLay() version 3.5. Listed below is each major
version release (including 3.5) and it's improvements over
the previous major release.
This file contains printer page feeds to start a new page
at each major section.
If you are using Blinker, WarpLink, or RTLink, please note
that you MUST link RESIDENT.OBJ into the root. Also, if
you are using RTLink/Plus and want to use virtual memory
overlays, you must use the auto-response file OVERCLVM.LNK
which uses a special version of the OverLay() library file
called OVERCLRT.LIB.
-----------------------------------------------------------
Corrections to the manual:
On page 89 in the listing of OverLay() error codes, error 9
should be entitled, "Error writing/reading from HIMEM
memory" instead of "Error locking HIMEM for
writing/reading"
-----------------------------------------------------------
Version 3.5 bug fixes and enhancements to version 3.4:
OverLay() now works with HIMEM.SYS memory under Windows
3.0's 386 enhanced mode. OverLay() now uses an alternative
method of writing to HIMEM.SYS memory that is compatible
with Windows 3.0's 386 enhanced mode.
OverLay() now saves the entire interrupt table, not just
the first 63 interrupts. This eliminates the need for the
Advanced Functions O_SaveInts() and O_LoadInts() which
were needed with a few software packages that changed
interrupts above the first 63.
When expanded handle tables are in use, it is best to make
sure that 15 or fewer files are open when the OverLay()
function is called. OverLay() uses an alternative method
of moving expanded handle tables under DOS 3.3 or above if
15 or fewer files are open. This will assure that your
program will work under OS/2's DOS compatibility box. This
enhancement of the OverLay() function has removed the need
for the O_SetFiles() function.
The .OBJ files containing OverLay()'s library of functions
were renamed to match the name of the function they
contain.
Many of the "default setting" functions were modified to
return the current value when no parameter is passed to
them. These modified functions include: O_EnvSize(),
O_ExtInUse(), O_ExtraEnv(), O_NewEnv(), O_RestDir(),
O_Stuff0(), O_TempExt(), O_TempName(), O_UseDOS2(),
O_UseExp(), O_UseExt(), O_UseHIMEM(), O_Relocate(),
O_RestInts().
The O_CD() function would return true if you specified the
root directory of a non-existent drive. This has been
fixed.
The O_ErrWait() function was added to modify OverLay()'s
behavior when a critical error occurs.
The O_ExtINKEY() and O_INKEY() functions were modified to
return the "enhanced" keycode of the extra keys on an
"enhanced keyboard".
The O_GetTemp() function was modified to return the fully
qualified path of the temporary file. O_GetTemp()'s file
numbering logic was also modified to allow a user to create
large numbers of temporary files in the same directory
faster.
The O_Keyboard() function has been greatly enhanced. You
can now specify non-alphanumeric keys within curly
brackets. You no longer have to specify the keycodes for
these keys. This totally eliminates the need for the
O_INKEY() and O_ExtINKEY() functions.
The O_Keyboard() function was also enhanced to eliminate
the need to use the O_Stuff0(.f.) function with some
programs such as WordPerfect when an enhanced keyboard is
being used.
The O_NewEnv() function has been modifed to copy enviroment
strings passed to it into static "locked" memory. This
function can now be used with Clipper 5.0.
The O_SetFiles() function is no longer needed and has been
removed from the library.
The O_SkipInts() function has been added as an Advanced
Function to make it easier to keep interrupt routines
active while shelled out with OverLay(). The function
eliminates the need for the Advanced Functions O_ResetInt()
and O_RestInts().
The O_TempName() function can now accept a name of less
than four characters.
The O_Version() function has been standardized so that the
first three characters will always represent the version
number in use.
The TSR utility TSRINT.COM was enhanced to mark changed
interrupts with an "*".
-----------------------------------------------------------
Version 3.4 bug fixes and enhancements to version 3.3:
OverLay() can now be used with RTLink/Plus! The entire
library can even be virtualized! You must link in
OVERCLRT.LIB and you must use the supplied OVERCLVM.LNK
auto response file.
When using the O_GetID() function under DR-DOS, the
function would return the current directory instead of an
empty string to indicate there was no previous OverLay()
shell at the specified level. This was due to an anomoly
in DR-DOS. OverLay()'s O_GetID() function has been
enhanced to overcome this problem. It is important to note
that the change to O_GetID() requires you to re-link all of
your applications that use the O_GetID() function.
-----------------------------------------------------------
Version 3.3 bug fixes and enhancements to version 3.2:
Quite incredibly, a rather unsightly bug was discovered
during routine testing. It appears that this bug existed
in the last several revisions of OverLay().
When OverLay() is called it checks to see how much memory
is already free and only frees up what it has to free up.
If no memory needs to be freed up to meet the requested
amount of free memory, then OverLay() does not free any up.
The bug occurred under those circumstances. If the amount
of already free memory exceeded the request for free memory
and expanded memory was turned on, OverLay() would try to
allocate 0K of expanded memory and would be unsuccessful.
O_ErrMajor() would then return an error code of 8.
Since most program using OverLay() are huge and they use
OverLay() to run other huge programs, not many would have
encountered this problem.
-----------------------------------------------------------
Version 3.2 bug fixes and enhancements to version 3.1:
The O_Keyboard() command has been enhanced. You may now
use the number 1 by itself as a special character. This
tells O_Keyboard() to wait for the user to hit a key before
continuing. This has limited uses, but is useful when the
user must make a choice or enter a code.
The O_Keyboard() command did fool some programs that allow
the use of "enhanced keyboards". These programs would
think a "standard keyboard" was installed instead. This
caused the F11 and F12 keys to appear to be disabled.
OverLay() has now been enhanced to support the "enhanced
keyboard" BIOS calls.
Some TSRs (particularly some mainframe communications TSRs)
do not expect other programs to use expanded memory or if
other programs use expanded memory, the TSRs expect the
other programs to restore the expanded memory "mapping".
OverLay() has been enhanced to accomodate those TSRs.
The demo version of OverLay() contained a line of code that
caused problems with Blinker if the OVERCL.LIB file was
dynamically overlaid. In particular, Blinker would cause
OverLay() to overwrite a random byte in memory. This line
of code has now been modified to overcome this limitation
of Blinker. The problem only occured with the demo version
of OverLay() and only with Blinker.
-----------------------------------------------------------
Version 3.1 bug fixes and enhancements to version 3.0:
Two new functions were added. O_DOSVer() returns the DOS
version number. O_SetFiles() expands/contracts the DOS
file handle table and is used especially with OS/2's DOS
compatibility box.
If OverLay() encountered an error allocating expanded
memory or HIMEM.SYS memory, it would continue saving to
disk. Yet, upon return it would report an error allocating
expanded or HIMEM.SYS memory. This has been changed. Now,
if an allocation error occurs, OverLay() returns
immediately and reports the error.
The .OBJ file's "MODULE" names were changed to match the
name of the function contained in the .OBJ. This is useful
in connection with PLINK86 and RTLINK's SECTION MODULE
command. Please see Appendix G and H below for more
information.
When linking with PLINK86, PLINK86 would sometimes report a
Warning 10 when OVERLAY.OBJ was put into a PLINK86 overlay.
This would happen when other functions from The OverLay()
Library were also used and their .OBJ files were not
individually linked in, but, rather, OVERCL.LIB was linked
in so that PLINK86 could find the functions. This has now
been corrected.
-----------------------------------------------------------
Version 3.0 bug fixes and enhancements to version 2.09:
When a critical error occurs, OverLay() now displays a
message on the screen describing the error number before
aborting to DOS.
The O_Keyboard() function has been expanded to allow you to
"stuff" up to 250 characters.
OverLay() has been improved to allow better use within a
overlay. If you place the OVERLAY.OBJ file in an overlay,
you no longer have to set OverLay()'s user definable
options every time you call OverLay().
OverLay() can now be used with "dynamic" overlay managers
such as Blinker and WarpLink. These "dynamic" linkers are
similiar to RTLink (that will be included in Clipper 5.0),
but they also allow the "dynamic" overlaying of C and
Assembler code, as well as Clipper code. When used with
either product, OverLay() increases the .EXE size by less
than 1K!
OverLay() is now compatible with PC-MOS/386.
OverLay() now saves the first 63 interrupts instead of just
the first 40. This makes it more compatible with other 3rd
party products such as Clipper Tools One. With Clipper
Tools One you no longer need to use the DSETWINDOW()
function before calling OverLay().
OverLay() is now compatible with DOS version 2.0 and 2.10.
Because of a bug in DOS versions prior to 2.11, OverLay()
was only compatible with DOS version 2.11 and higher. We
have now found a way around the DOS bug.
The O_DirExist() function was finally (truly) fixed to
detect the existence of drives only. Thus, you can see if
drive E: exists by calling the function O_DirExist("E:").
The expanded memory support has been enhanced. Some
expanded memory managers were operating in an "unexpected"
way from the standpoint of OverLay() causing one of several
problems. OverLay() now allows for this "unexpected"
behavior.
Support for expanded handle tables with DOS versions 3.3
and above was modified. This corrects a problem with
certain versions of DOS 3.3 that caused an extra 64K to be
unavailable.
OverLay() was interfering with at least one program's
ability to return the current directory. Extra safeguards
have been added to prevent this from happening again.
-----------------------------------------------------------
Version 2.09 bug fixes and enhancements to version 2.05:
The OverLay() function had faulty logic when restoring the
interrupts after returning from the called program. This
could cause the computer to "hang" if the calling program
changed any interrupts before calling OverLay(). This has
been corrected.
The O_RestAll() function has been removed from the library.
OverLay() now restores all of the first 40 interrupts (now
the first 63 interrupts with version 3.0) that have been
changed.
The O_RestInts(.F.) function now prevents OverLay() from
restoring changed interrupts when OverLay() returns from
the called program, as well as, preventing OverLay() from
restoring changed interrupts when OverLay() is called.
Interrupts 0, 15, 16, 21, 23, 24 are special cases. They
are almost always restored when OverLay() returns from the
called program.
The O_DirExist() function sometimes would give errorneous
results when checking for a drive letter only, i.e. the
call O_DirExist("F:") could return .T. even if it did not
exist.
The OverLay() function was always restoring the cursor if
it was turned off. This has been removed.
The O_GetTemp() function had a serious logic error that
caused a random location in memory to be overwritten. This
could, of course, cause serious problems.
HIMEM.SYS driver use has now been turned OFF by default.
You must call the function O_UseHIMEM(.T.) to turn on
HIMEM.SYS usage. Extended memory usage is still turned OFF
by default. Expanded memory usage is still turned ON by
default.
OverLay() can now be placed within a PLINK86-type overlay.
-----------------------------------------------------------
This is the shareware version of the Super.Lib Library for
Clipper. It is fully functional. See documentation for registration,
which entitles you to FULL SOURCE CODE latest version
and 24 hour BBS support.
** Fri 04-06-1990 ADDED SUPPORT FOR BLINKER LINKER
** Fri 06-29-1990 Added Clipper 5.0 support
Files on this disk
README.DOC This file
SF.PRG Super.Lib demo program source
SUPER.LIB Super.Lib library
SUPER.DOC General Documentation
SUPER.FUN Full Clipper function description
SUPER_C.FUN Full C/ASM function description
ALPHA.FUN Alphabetical function list
SUPPORT.DOC Support information
TODATE.DOC Changes log (chronological)
ORDER.DOC Order form
BLCOMP.BAT Sample batch for BLINKER compile
PLCOMP.BAT Sample batch for PLINK compile
TLCOMP.BAT Sample batch for TLINK compile
MSCOMP.BAT Sample batch for LINK compile
SUPER.NG Norton Guide Datafile for SUPER.LIB
Demonstration:
------------------------------------------------------------------------
The file SF.PRG is provided as a useable demo of the library functions.
SF.PRG is an all-purpose generic data handler.
Compile SF.PRG (Clipper SF )
To link SF.OBJ
Turbo Link (Tlink) :
TLINK SF,,,clipper + extend + super
Microsoft Link :
LINK SF,,,clipper,extend,super /SE:512 /NOE
Plink86 :
PLINK86 fi SF lib clipper,super,extend
BLINKER :
BLINKER fi SF lib super,clipper,extend
---------------------------------------------------------
Try the library for as long as you like. If you decide to
incorporate it into your apps, or would like the source
code and additional support, send in the registration or
call.
If you use the library, please register it. This is what I
do for a living, and your support is appreciated.
Garry Prefontaine
Functional Software
FlexFile
Version 1.07
Ganahl Software, Inc.
Copyright (c) 1991
Please read the contents of this file. It represents changes to
the documentation which occurred after printing and in some cases
represents information critical to the use of FlexFile.
In all cases, the Norton Guides database (FlexFile.ng) and the
(FlexFile.doc) supercede the printed manual. In addition, all
elements discussed in this readme file are incorporated into the
Guides and FlexFile.doc.
Note: FlexFile is a commercial product. Do not make any copies
except for archival purposes.
Ganahl Software, Inc.
P.O. Box 4275
Deerfield Beach
Tel: (305) 566-1796
FAX: (305) 566-3517
*************************************************************************
General Notes (Ver 1.07)
This readme file is updated in reverse chronological order. Therefore,
if you already own FlexFile and receive this as an update, you will only
have to read down to your previous version.
The only change in Ver 1.07 is the addition of the encryption and
decryption functions V_ENCRYPT(), V_DECRYPT() and V_SETKEY(). See the
Norton Guides Database (included in self extracting arcive FlexFile.exe).
*************************************************************************
General Notes (Ver 1.06)
Version 1.06 is a minor upgrade addressing a few minor bugs and adding a
couple of new functions.
The main feature, however, is internal error checking for programmer
errors. There were several instances in previous versions where, if the
program went awry, the DBV file would get corrupted. Error checking has
been introduced to thwart corruption (even by code that behaves poorly).
*************************************************************************
General Notes (Ver 1.03, 1.04, 1.05)
Minor bug fixes.
*************************************************************************
General Notes (Ver 1.02)
Version 1.02 of FlexFile is primarily a maintenance release. However, the
system which saves and restores Clipper arrays has been completely
rewritten. This should only affect you if ALL of the following three
conditions apply to you.
1. You have an application written in Clipper 5.0x that is sharing a
FlexFile DBV file with an application written in S87.
2. You had saved a Clipper S87 array to this FlexFile DBV using the
FLEX_87.LIB version 1.01 or less (version 1.01 was dated 2/18/91).
3. You want to retrieve that array with a program linked with
FLEXFILE.LIB version 1.02 or greater (version 1.02 is dated 7/27/91).
The only change you must make is to use V_FILLEN() in place of V_LEN() when
DECLAREing the array. To get a full description of this process, read the
documentation on V_FILLEN() and V_FILLARR() in the Norton Guides data base
or the FlexFile.doc documentation.
The good news is that any array saved with this *new* FLEX_87.LIB (version
1.02) are totally compatible with single dimentional arrays saved or
restored with the *new* FLEXFILE.LIB (version 1.02). That means that you
do not have to use the V_FILLARR() functions in your 5.0 code to read
arrays that are created with S87 code version 1.02. Read the documentation
on V_ARETRIEVE() and V_FILLARR() to understand how to implement these
functions for Clipper 5.0x code and for Summer 87 code, respectively.
The reason for all these array changes is a vast improvement in speed and a
substantial reduction in size of the *new* stored arrays.
*************************************************************************
The following functions were omitted from the manual because they are new
since the time of printing. They are fully documented in the Guides and the
text documentation "FlexFile.doc".
V_ARETRIEVE() - Retrieve an array from a field (Clipper 5.0 only)
V_AREPLACE() - Replace old data with an array (Clipper 5.0 only)
V_COMMIT() - Commit DOS buffers to disk. (DOS 3.3 or greater)
V_DECRYPT() - Decrypt a variable previously encrypted with V_ENCRYPT().
V_ENCRYPT() - Encrypt a Clipper string to an unreadable form.
V_FILLEN() - Get length of array saved by FLEX_87.lib (ver 1.01 or less).
V_HANDLE() - Return the DOS file handle for a DBV file.
V_ISOPEN() - Determine if a file is open in a DBV work area.
V_RANDOM() - Return or seed a psuedo random number.
V_SET_COMMIT()- Set DBV/DOS buffer flushing automatically on/off.
V_SETKEY() - Set a password key to be used with V_ENCRYPT() and V_DECRYPT()
V_TOPPTR() - Read/Replace FlexFile data without a DBF file (advanced).
V_WALK_DBV() - Step from field to field in a DBV file without a DBF.
V_WNDCREATE() - Create a Proclip window from one previously V_REPLACE()d
******************************************************************************
Disaster Recovery
Read the documentation on Disaster Recovery in the Norton Guides data base
or the FlexFile.doc file. This outlines probable causes of corrupted DBV
files, methods for recovery of corrupted DBV files, and how to manage a DBV
file when its related DBF file is lost or dammaged. Read the documentation
on V_WALK_DBV() if you have lost the controlling DBF for a DBV.
******************************************************************************
FlexFile Strongly Typed Arrays
FlexFile's Strongly Typed Arrays were designed primarily to allow
multi-dimensional arrays in far less memory. However, because of the new
VMM system in Clipper, flexfile's "S"tring type arrays SHOULD NOT BE USED
with Clipper 5.0x. They will actually use more conventional memory than
their Clipper counterparts. However, all other types of FlexFile arrays
are handled properly by the VMM system and will be smaller and more
efficient than their Clipper counterparts.
The Clipper 5.0 A_ADD() and A_SIZE() had some problems in the version 1.01
and version 1.00. These functions have been fixed in version 1.02.
******************************************************************************
Version 1.01
*************************************************************************
The manual (pg. 10) states that V_USE will fail (returning -1) if
you are V_USE()ing a file in shared mode and are working on a
local drive that does not have SHARE.EXE loaded. This was
changed in order to be compatable with Clipper's USE and locking
functions.
The new implementation allows a file to be opened in shared mode
on a local drive (even if SHARE.EXE is not loaded). No actual
locking is provided, of course, until SHARE.EXE is loaded or
until a network shell such as NET4 is introduced into the
environment.
*************************************************************************
A_DECLARE() has a main syntax and an optional syntax. The
printed documentation has a misprint in the optional sytax for
the function (bottom of page 77).
The printed documentation reads (incorrectly):
aLargeArr = A_DECLARE(@<aLargeArr>,
<cType>,
<nElement>,
[<nElements>...] )
The following syntax is what was intended:
// Do not use the return value from A_DECLARE when passing
// the array by reference. Also, note the order of parameters
// one and two.
A_DECLARE( <cType>,
@<aLargeArr>,
<nElement>,
[<nElements>...] )
*************************************************************************
Binary (logical) arrays are not supported by many of the FlexFile
array functions. For example, you cannot A_SORT() a binary array. The
FlexFile array functions which operate on binary arrays are:
A_STORE()
A_SCAN()
A_RETRIEVE()
A_LEN()
A_TYPE()
The printed manual failed to recognize this fact in several of the
array functions.
Note also, that the previous "Readme.txt" file specifically stated that
A_SCAN() did not support binary arrays. A_SCAN() does support binary
arrays; the readme file was in error.
*************************************************************************
Many of the array functions are described in the manual as having a
default scope of "to the end of the row in the current dimension".
This was changed in every case to be "to the end of the array".
So, for example, if you are copying one array into another and do not
pass a parameter indicating how many elements to copy, FlexFile will
copy all elements to the end of the array. This is true for multi-
dimensional arrays as well. See the section on ARRAYS in the manual
to understand the "wrapping" behavior of functions like these that span
several dimensions.
*************************************************************************
The following functions have had minor changes in the written
documentation. The Norton Guides and the "FlexFile.doc" file have
the most up to date documentation on these functions.
A_AVERAGE()
if nCount is not specified, the average will continue until
the end of the array, not the end of the current row.
A_ADD()
<aTarget> _must_ be passed by reference.
return is .t. or .f. not value.
value is no longer a parameter.
A_SIZE()
<aTarget> _must_ be passed by reference.
V_REPLACE()
returns a (.F.) on error
A_RETRIEVE()
returns a '' on error
V_POKE()
optional parameter #3 was not originally optional
**************************************************************************
The error codes in Appendix B have be defined explicitly in
the Guides and in FlexFile.doc
**************************************************************************
The manual states that a V_REPLACE( "", old_fld ) is not the same
as a V_DELETE(). This has been changed so that the two have the
same affect. The above stated V_REPLACE will return six spaces
which is a "null pointer" to FlexFile. All space that was associated
with old_fld will become available for use by other data.
**************************************************************************
========================================================================
1 Welcome to Matt Whelan Compiler Kit - dBASE IV Edition
Copyright (c) 1992 Nantucket Corporation. All rights reserved.
This file contains the most up-to-date information about the
product, including additional installation instructions and
detailed distribution disk contents.
========================================================================
2 On-line Documentation
The on-line documentation system consists of the Norton Instant
Access Engine (NG.EXE) and several documentation databases that are
listed below:
IVKIT.NG The Guide to IV Kit
(Compiler Kit reference)
C5G01A.NG The Guide To Clipper
(Clipper language and reference tables)
C5G02A.NG Error Messages
(Compiler, linker, runtime, RMAKE error messages)
C5G03A.NG Extend System
(Extend function reference documentation)
C5G04A.NG Utilities
(Utilities reference documentation)
C5G05A.NG Release Notes
(Change summaries and topical information)
C5G06A.NG Sample Reference
(Reference for sample programs)
All of the documentation databases and the Instant Access Engine are
installed in the default configuration into \NG.
========================================================================
2 Performance Tips
Due to the overhead required to handle dBASE IV extensions,
performance for screens containing a large number of GETS may become
slower than expected. Note that it is the GET creation, not the
display which causes the reduction in performance, therefore
anything you can do to avoid repetitive re-drawing will show a big
improvement.
1. Use FORMAT files. With FMT files, GETs are only created the
first time, and are kept for re-use on subsequent screens.
2. Save and re-use your GETs. We have added the following commands:
SAVE GETS [ AS <name> ]
RESTORE GETS [ FROM <name> ]
RELEASE GETS [ FROM <name> ] SHOW GETS
Using these, a quick edit of your program should give instant
benefits. Separate the screen-draw and GET code and only
execute the GET code once, saving the GETs for re-use. Example:
DO SETUP && first time
DO WHILE dataentry
RESTORE GETS FROM fred
SHOW GETS
READ
... etc
ENDDO
PROCEDURE SETUP
DO SCRNDRAW && the ..SAY parts (should only need this once!)
DO MYGETS && the ..GET parts
SAVE GETS AS fred
RETURN
Popups
One of the limitations of dBASE FIELD popups is they cannot
accept an expression, and then load the whole database into memory.
The IVKit popups do not need to load the entire database, can use
expressions, and will make use of an index for key searching when
it is available. You can obtain significant speed improvements by
making sure there is a usable index active when invoking the Popup.
To use expressions the syntax is virtually identical to other
popups:
DEFINE POPUP <name> <options> PROMPT EXPRESSION <expression> <opts>
========================================================================
3 Compatibility
We have gone to extreme lengths to make the Compiler Kit compatible
and easy to use. Most of our large test applications compile on
'auto-pilot', and we expect yours to as well.
If this is not the case please let us know, and we'll do our best to
fix it as quickly as possible. One of the benefits of the dBase
language is its flexibility, but that can also be a problem for
people like us. There are so many ways of using each command, and
combinations of commands, that even the developers of dBase have
probably never fully understood all of the variations.
As well as offering you an early update to the 1.5 version of the
kit, we will be providing regular updates through on-line services
such as CompuServe. There is already a message section and library
devoted to the Kit on the Nantucket Forum (GO NANFORUM).
dBase IV Version 1.5
--------------------
The 1.1 version of the Compiler Kit was developed to be compatible
with dBase IV Version 1.1. The recent release of Version 1.5
introduced a range of new features which will be fully supported in
your Kit update in the near future.
However, we have already implemented almost all of the programming-
related features of 1.5, including more than 25 new commands and
functions. The only exceptions we've noticed in testing are mouse
support, SET KEY index 'filters', the REINDEX option of verbs like
APPEND, disk swapping for the RUN() function, and the LEFT/RIGHT
components of the @...SCROLL command.
Transaction Processing
----------------------
Another feature we've left incomplete pending the update is
Transaction Processing. As you'll see if you look closely at our
translation files, we have embedded Transaction support in the
system. However, a last-minute change in the Transaction Log
format in dBase itself meant we felt safer holding this component
for the update.
We only discovered the change in dBase version 1.5 a few weeks
before shipping the Compiler Kit and did not want to introduce
potentially costly bugs in such an important component by making
last-minute changes.
========================================================================
4 Using the Compiler Kit within Windows 3.x:
To use the Compiler Kit under Windows 3.x, first add the file
COMPILEW.BAT as a new Program Item. An icon for the Compiler Kit
is provided in the file KIT.ICO.
When invoking COMPILEW.BAT from within Windows, you are given the
option to specify parameters. Specify the path to the files, the
file(s) you want to compile, and any command line options.
NOTE: The COMPILEW.BAT file expects the first parameter to be
the path to the file(s); this path MUST include a trailing
backslash!. It will pass this to dPrep using the /I<input path>
switch so dPrep can find the files to compile, and will also use
the supplied path to tell the Compiler utilities where to start
work.
You may also want to modify the COMPILEW.BAT file to automatically
run the resulting EXE after compilation. The batch file parameter
%2 will contain the name of the main program, thus the
modification to COMPILEW.BAT would be as follows:
...
if errorlevel 1 goto errmake
%2
goto end
...
If you always compile programs in the same directory, there is an
alternative to using COMPILEW.BAT. You can add the COMPILE.BAT file
as a new Program item, and modify the COMPILE.PIF file so that the
start-up directory points to the appropriate directory. In this
case you would not specify the path when invoking COMPILE.BAT, just
the file(s) you wish to compile and any command line options.
To modify COMPILE.BAT to automatically execute the resulting EXE,
you would use the %1 parameter as follows:
...
if errorlevel 1 goto errmake
%1
goto end
...
========================================================================
5 Installation Problems
This section provides information on the installation procedure for
the Compiler Kit. If you have problems installing the software,
consult the following list of problems and solutions. If you
experience an installation problem not listed here, please contact
Nantucket Support at the Nantucket office serving your country.
Telephone numbers appear in the Contacting Nantucket section of the
Product and Services Guide.
When contacting Nantucket Support, have ready information about your
environment such as: machine make and model, DOS version, memory
available during installation, and any memory-resident software you
are using.
5.1 Command-line Arguments
The following table shows the command-line arguments for
INSTALL.EXE.
Table: INSTALL.EXE Command-line Arguments
-------------------------------------------------------------------
Argument Description
-------------------------------------------------------------------
/NOSWAP Do not swap to EMS or disk
/BW Monochrome for color display (for Laptops)
/MONO Force monochrome display
-------------------------------------------------------------------
5.2 Modifying Your Environment Variables
Certain environment (SET command) variables should be set for the
Compiler Kit. If you elected to modify the AUTOEXEC.BAT file
during the installation process, your file should be up-to-date.
Otherwise, the appropriate settings should be in a file called
AUTOEXEC.CHG located in the \CLIPPER5 directory. In either case,
it is important that you modify your AUTOEXEC.BAT file to
incorporate these additional settings so that the Compiler Kit
will know where to find files. The required settings are as
follows:
1. The PATH variable should include the directory where
executable files reside (example: C:\CLIPPER5\BIN).
2. The LIB variable should include the directory where library
files reside (example: C:\CLIPPER5\LIB).
3. The INCLUDE variable should include the directory where
include files reside (example: C:\CLIPPER5\INCLUDE).
4. The PLL variable should include the directory where pre-linked
library files reside (example: C:\CLIPPER5\PLL).
For example:
SET PATH=C:\CLIPPER5\BIN;%PATH%
SET LIB=C:\CLIPPER5\LIB
SET INCLUDE=C:\CLIPPER5\INCLUDE
SET PLL=C:\CLIPPER5\INCLUDE
You may also wish to set other environment variables. For more
information, refer to the Getting Started Guide and Programming and
Utilities Guide. For general information about the DOS environment
and setting environment variables, refer to your DOS manual.
========================================================================
6 Distribution Disk Contents
This section provides information regarding the contents of the
Compiler Kit distribution disks. The files are described in general
terms of their contents followed by several tables showing the
various disk configurations.
6.1 Disk Identifier Files
Each disk in the Compiler Kit package contains a file named DISK.ID
that is used by the install program to verify version and disk
number.
6.2 Install Files
The install program (INSTALL.EXE) and the installation script
(INSTALL.DAT) are located on Disk 1. Together, these two files
allow you to install the Compiler Kit onto your hard disk.
6.3 Archive Files
The Compiler Kit distribution files are supplied in the form of
archive files. Most of the archive files have a .LIF extension,
but the file containing the main documentation database is split up
into two files with .001 and .002 extensions. Each of the archive
files is listed in the table below, followed by several tables
showing the contents of each archive file.
Table: Archive File Descriptions
-------------------------------------------------------------------
Archive Contents
-------------------------------------------------------------------
4BIN.LIF DPREP program
4OBJ.LIF Compiler Kit object files and database driver
4LIB1.LIF Compiler Kit support libraries
4LIB2.LIF Compiler Kit support libraries
4INCL.LIF Compiler Kit header files
4NATION.LIF Nations Language support
4SAMPLE.LIF Compiler Kit sample application
4NG.LIF On-line documentation database
-------------------------------------------------------------------
Table: 4BIN.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DPREP.EXE dBASE IV .prg pre-processor program
DPREP.CFG Configuration file for DPREP.EXE
DPREP.RSV Reserved word list
COMPILE.BAT Compilation batch file
COMPILE.PIF Program information file for COMPILE.BAT
COMPILEW.BAT Compilation batch file for use with Windows 3.x
COMPILEW.PIF Program information file for COMPILEW.BAT
KIT.ICO Windows icon for Compiler Kit
Table: 4LIB1.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
IVKIT.LIB Compiler Kit library
IVTOOLS.LIB Compiler Kit library
Table: 4LIB2.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DB4DBF.LIB dBASE IV DBF driver
DBFNTXN.LIB Special NTX driver for Compiler Kit
DBASEIV.LNK .RTlink script for building pre-linked library
Table: 4OBJ.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DBFMDX.LIB dBASE IV MDX driver
IVTOOLS.OBJ Compiler Kit support routines
Table: 4INCL.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
D4STD.CH Header file for standard command set
DPSTD.CH Translations for dBASE IV commands
DPDEFS.CH Preprocessor directives
-------------------------------------------------------------------
Table: 4NATION.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
NATION.BAT Batch program to change selected language default
CHOOSE.COM Batch utility
NAT_USA.LIB US English Nations Library (US Collation sequences)
NAT_UK.LIB UK English Nations Library (UK Collation sequences)
NAT_FREN.LIB French Nations Library (French Collation sequences)
NAT_DUTC.LIB Dutch Nations Library (Dutch Collation sequences)
NAT_SPAN.LIB Spanish Nations Library (Spanish Collation sequences)
Table: 4SAMPLE.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
DEMO.PRG Sample application - main program
DEMOBAR.PRG Sample application - support file
DEMOMDX.PRG Sample application - support file
DEMOQRYP.PRG Sample application - support file
DEMOSCR.PRG Sample application - support file
DEMO.DBF Sample database
DEMO.MDX Multiple index file
DEMO.FMT Format file
DEMOQBE.QBE Sample QBE file
DEMORPT1.FRG Generated report
DEMORPT2.FRG Generated report
DEMOLBL1.LBG Generated label
DEMOLBL2.LBG Generated label
DEMO.APP Application definition file
DEMOBAR.BAR Menu definition file
DEMOEXIT.POP Menu definition file
DEMOMNTN.POP Menu definition file
DEMOQRYM.POP Menu definition file
DEMOREC.POP Menu definition file
DEMOFILE.FIL File list definition
DEMORPT1.FRM Report definition file
DEMORPT2.FRM Report definition file
DEMOLBL1.LBL Label definition file
DEMOLBL2.LBL Label definition file
DEMO.SCR Screen definition file
Table: 4NG.LIF Archive File Contents
-------------------------------------------------------------------
File Contents
-------------------------------------------------------------------
IVKIT.NG Compiler Kit on-line documentation database
NG.INI Setup file for Norton Instant Access Engine
========================================================================
7 Copyrights
The installation program used to install the Compiler Kit,
INSTALL, is based on licensed software provided by Knowledge
Dynamics Corp, Highway Contract 4 Box 185-H, Canyon Lake, Texas
78133-3508 (USA), 1-512-964-3994. INSTALL is Copyright (c) 1987-
1991 by Knowledge Dynamics Corp which reserves all copyright
protection worldwide. INSTALL is provided to you for the
exclusive purpose use of installing the Compiler Kit. Nantucket
has made modifications to the software as provided by Knowledge
Dynamics Corp, and thus the performance and behavior of the
INSTALL program shipped with the Compiler Kit may not represent
the performance and behavior of INSTALL as shipped by Knowledge
Dynamics Corp. Nantucket is exclusively responsible for the
support of the Compiler Kit, including support during the
installation phase. In no event will Knowledge Dynamics Corp be
able to provide any technical support for the Compiler Kit.
* * *
`@L 神采网络中文系统运行环境@A`
`@j硬件配置@A`
IBM PC系列机及兼容机;至少一个软盘驱动器,或具有一个硬盘;单色显示器,
或VGA、EGA 显示器;640K以上内存;神采软件锁。
`@j软件环境@A`
单用户:3.0 以上DOS版本。
网络: 3.1 以上DOS版本,3+,3+OPEN,NOVELL网等。
最新支持 DOS 5.0 的 HIMEN.SYS 驱动 增大主存空间。
`@L 神采网络中文系统及其配套产品@A`
神采网络中文操作系统。
神采编辑器。
神采造字系统。
神采转换器(使西文 FOXPRO/LAN 2.0 具有彻底的中文处理能力,是一个强大
的中文数据库)。
`@L 神采网络中文操作系统简介:@A`
`@j 1。 出色的网络功能:@A`
专门为网络而设计的中文操作系统。只需把系统安装在网络服务器中,
自动识别各工作站和终端的显示器类型,共享使用系统各种功能,共享
使用打印字库,节约大量硬件资源。本系统也可单机使用。
`@j 2。 西文软件不需要汉化可在神采系统下运行:@A`
神采中文系统采用全新的方法,使西文软件都能在中文状态下运行,
并使得汉化工作只须修改显示信息即可,而不需要修改软件程序。
`@j 3。 占用内存最少: @A`
神采中文系统全部占用38 ̄72K内存,小于目前流行的同类中文系
统.自动识别内存设置,字库依次放在(EMS,扩充内存,内存),也
可以放在虚拟盘、硬盘,留给用户使用的内存在530K以上,使用户可
以运行大型软件。
`@j 4。 最丰富的色采:@A`
提供优良的显示界面, EGA、VGA支持前景、后景各16种颜色,
多于其他中文系统。其色采鲜艳夺目,媲美西文软件。
`@j 5。 汉字整字处理:@A`
所有汉字以整字进行输入和删除,消除了半个汉字。
`@j 6。 简繁体字显示和打印: @A`
提供40多种简体和繁体字型显示和打印,屏幕硬拷贝(1-4倍),
`@j 7。 最快的显示速度:@A`
本系统采用直接写屏幕缓从区的方式显示信息,不同于其他中文系统使用
BIOS显示中断服务的方式,因此具有很快的显示刷新速度。
`@j 8。 高度兼容各类最新软件:@A`
支持MSDOS5.0、DRDOS6.0
无论VGA、EGA或单色显示器均提供所有25行显示给用户使用;同
时不占用功能键;可直接运行大部分图行软件;并高度兼容其它汉字系统
下的汉化软件;支持鼠标。
`@j 9。 多种中文输入方式:@A`
内置五笔字型、全拼、双拼、首尾、区位(双拼双音)等。码表采用内存
覆盖方式,不占用内存。可修改所有码表,也可建新码表。
支持多种24针和9针打印机。
`@j 10。 提供多种实用程序:@A`
其编辑器、安装程序、设置程序、造字程序等均采用菜单提示,方便实用
功能齐全。
`@j二.安装、启动与退出:@A`
神采网络中文系统包括以下文件:
1. INSTALL.BAT 神采中文系统安装批文件。
SC_INS.EXE 神采中文系统安装程序。
2. SC.BAT 神采中文系统启动批文件。
SC-H.COM 神采中文系统主程序(单色版)。
SC-E.COM 神采中文系统主程序(EGA版---256K VRAM)。
SC-V.COM 神采中文系统主程序(VGA版---256K VRAM)。
SC-V512.COM 神采中文系统主程序(VGA版---512K VRAM)。
3. CH.16 8X16西文字符点阵字库。
4. HZ.16 16X16简体宋体中文点阵字库。
5. FHZ.16 16X16繁体宋体中文点阵字库。
6. HZ.24S 24X24简体宋体中文点阵字库。
7. HZ.24F 24X24简体仿宋体中文点阵字库。
8. HZ.24K 24X24简体楷体中文点阵字库。
9. HZ.24H 24X24简体黑体中文点阵字库。
10. FHZ.24S 24X24繁体宋体中文点阵字库。
11. HZ.24T 24X24简体图型字库。
12. PY.TBL 双拼方案输入码表。
13. SW.TBL 首尾方案输入码表。
14. WB.TBL 五笔字型方案输入码表。
15. QPIN.TBL 全拼方案输入码表。
16. SPSY.TBL 双拚双音方案输入码表(可选)。
17. SCSET.EXE 神采中文系统配置程序。
18. SCUTL.EXE 神采中文系统服务程序(造字、码表)。
19. README 帮助说明文件(本文)。
20. SE 编辑器。
21. LX 联想安装程序。
神采中文系统适用于IBM PC/XT、AT、386及兼容机,DOS版本从3.1到5.0。可以安装
在任何磁盘的任何目录下,只要求上述文件都在同一个目录。
例如:
安装在硬盘C盘上:
退出所有的中文系统,回到西文DOS下。
A: 插入神采中文系统盘1号,转到A:驱动器
INSTALL 运行INSTALL程序,根据提示完成安装。
安装完成后在硬盘C:盘根目录下生成SC.BAT批文件。
启动神采中文系统时,用户可以在任何目录下键入。
C:\SC
如需要退出神采中文系统,运行SCQUIT.EXE
`@j三.功能键及使用方法:@A`
神采中文系统自定义了一组功能键,按键为<SHIFT><CTRL>+键,即
先按下<SHIFT>和<CTRL>键,然后按下其它键,即可选择相应的功能。现已
定义的功能及按键有:
1. <SHIFT><CTRL>+F1 选择<区位>输入方法
汉字码是以区、位方式排列,每区94个汉字或符号。基本汉字库共有
94个区(区号为01--94),常用其中的87个区,包括15个
区的符号和外文字母(英、日、希腊、俄等),72个区汉字(基本汉
字一集、二集)。<区位>输入方法即是以区位号为编码输入汉字。
神采中文系统的<区位>输入方法除了与其它CCDOS兼容外,还
有输入提示,并可以用"<"、">"键向前、后快速查找所需的汉字
或符号,而不需要记住区位码。
2. <SHIFT><CTRL>+F2 选择<首尾>输入方法
<首尾>码以汉字的首、尾笔画字型作为汉字编码。
3. <SHIFT><CTRL>+F3 选择<双拼>输入方法
<双拼>码以汉语拼音为基础,并简化汉语拼音的声母、韵母作为汉字
编码。
在选择任何一种汉字输入方法输入汉字时,都可以使用"?"字符作为
通配符,来代替任何输入字符,这样可以当不知道某一位输入编码时也
可以继续输入,而不需要查看太多的无关编码。
4. <SHIFT><CTRL>+F4 选择<全拼>输入方法
5. <SHIFT><CTRL>+F5 选择<五笔字型>输入方法
6. <SHIFT><CTRL>+F7 转换中文/西文显示
按下本键可以在中文与西文文本显示方式之间转换。
7. <SHIFT><CTRL>+F8 联想方式(设置/取消)
首先运行 LX.COM 联想安装程序。按下本键进入联想方式。
再次按下本键取消联想方式。
8. <SHIFT><CTRL>+F9 转换纯中文输入方式
按下本键进入纯中文输入方式,这时输入任何非编码键都转换成汉字编
码的字母和符号。再次按下本键退出纯中文方式,输入的任何非编码键
都保持不变,即按西文方式输入。
9. <SHIFT><CTRL>+F10 键盘提示
10. <SHIFT><CTRL>+<+> 加快刷新速度
11. <SHIFT><CTRL>+<-> 减少刷新速度
12. <SHIFT><CTRL>+<空格键> 转换中文/ASCII输入方式
如果已经选择了一种汉字编码输入方式,按下本键转换到ASCII输
入方式。这时输入任何字符都按ASCII方式处理,但纯中文输入状
态仍然有效。再次按下本键恢复中文输入状态,可以接着退出中文输入
前的状态继续输入。
13. <SHIFT><CTRL>+数字(0-9) 选择输入汉字
如果已经选择了一种汉字编码输入方式并且输入提示区有汉字或字符,
可以用<SHIFT><CTRL>+数字(0-9)选择输入提示区的
汉字,这里0-9对应提示区的0-9。
14. 快速制表键:
<SHIFT><CTRL>+小键盘:7 制表符 '┏'
<SHIFT><CTRL>+小键盘:8 制表符 '┳'
<SHIFT><CTRL>+小键盘:9 制表符 '┓'
<SHIFT><CTRL>+小键盘:4 制表符 '┣'
<SHIFT><CTRL>+小键盘:5 制表符 '╋'
<SHIFT><CTRL>+小键盘:6 制表符 '┫'
<SHIFT><CTRL>+小键盘:1 制表符 '┗'
<SHIFT><CTRL>+小键盘:2 制表符 '┻'
<SHIFT><CTRL>+小键盘:3 制表符 '┛'
<SHIFT><CTRL>+小键盘:0 制表符 '━'
<SHIFT><CTRL>+小键盘:+ 制表符 '┃'
`@j四.打印系统@A`
1、可任意改变打印行距、字符间距、字型、页长、页间空行、左边空、行宽、单双
向打印、轻打、打印背景(七种)、反白、上下划线、左右旋转、上下角标、全中文、暂停
(改变字符间距时9区的造表符横线及背景仍可相连,以上改变用可显示特殊字符`);
`@I字体@A`:本系统使用4种汉字字体:`@A宋体、@E仿宋体、@I黑体、@M楷体`。
`@I字形@A`:16×16点阵:`@Q神采汉字0123@R神采汉字0123@S神采汉字0123@T神采汉字0123@A`
`@q神采汉字0123@r神采汉字0123@s神采汉字0123@t神采汉字0123@A`
24×24点阵:`@A`神采汉字0123`@B`神采汉字0123`@C`神采汉字0123`@D`神采汉字0123
`@a神采汉字0123@b神采汉字0123@c神采汉字0123@d神采汉字0123@A`
`@I背景@A`:任何汉字字符打印均可选择以下背景:
`%11、网 点%0` `%66、右斜线%0`
`%22、网 格%0` `%77、交叉线%0`
`%33、横 线%0` `\8、反 白=`
`%44、竖 线%0` `/9、上划线=`
`%55、左斜线%0` `_10、下划线=`
`@I旋转@A`:任何汉字均可向左或向右旋转90度打印(其中九区制表符不旋转):
`(向左旋转 )向右旋转?`
`@I上下标@A`:任何字符均可用上标或下标方式打印:
`aX+`2n+1`!`+bX`+`2n-1`!`=0 aX`-1!`+bY`-1!`=cZ`-`m-n`!` H`-2!`O Ba`+`2+`!`+SO`-4+`2-`!`→BaSO`-4!`↓
2.支持多种9针和24针打印机。
3.16、24和48点阵点阵打印有常用字库功能:打印汉字时系统先到内存中的常用字库区
找字,找到就直接送打印机,找不到再读硬盘,并将读出点阵写入内存常用字库区,内存
常用字库区最大分别可达64K。
4.可加深颜色重复打印(次数1-255)。
5.屏幕硬拷贝(倍数1-4)。
`@d 打 印 字 型 表@I`
字型 点阵 `@j字 样@A`
─────────────────────────────────────
A 24*24 `@A神采汉字系统ABC012345@A`
B 24*48 `@B神采汉字系统ABC012345@A`
C 48*24 `@C神采汉字系统ABC012345@A`
D 48*48 `@D神采汉字系统ABC012345@A`
E 24*24 `@E神采汉字系统ABC012345@A`
F 24*48 `@F神采汉字系统ABC012345@A`
G 48*24 `@G神采汉字系统ABC012345@A`
H 48*48 `@H神采汉字系统ABC012345@A`
I 24*24 `@I神采汉字系统ABC012345@A`
J 24*48 `@J神采汉字系统ABC012345@A`
K 48*24 `@K神采汉字系统ABC012345@A`
L 48*48 `@L神采汉字系统ABC012345@A`
M 24*24 `@M神采汉字系统ABC012345@A`
N 24*48 `@N神采汉字系统ABC012345@A`
O 48*24 `@O神采汉字系统ABC012345@A`
P 48*48 `@P神采汉字系统ABC012345@A`
Q 16*16 `@Q神采汉字系统ABC012345@A`
R 16*32 `@R神采汉字系统ABC012345@A`
S 32*16 `@S神采汉字系统ABC012345@A`
T 32*32 `@T神采汉字系统ABC012345@A`
a 24*16 `@a神采汉字系统ABC012345@A`
b 24*36 `@b神采汉字系统ABC012345@A`
c 36*24 `@c神采汉字系统ABC012345@A`
d 36*36 `@d神采汉字系统ABC012345@A`
e 24*16 `@e神采汉字系统ABC012345@A`
f 24*36 `@f神采汉字系统ABC012345@A`
g 36*24 `@g神采汉字系统ABC012345@A`
h 36*36 `@h神采汉字系统ABC012345@A`
i 24*16 `@i神采汉字系统ABC012345@A`
j 24*36 `@j神采汉字系统ABC012345@A`
k 36*24 `@k神采汉字系统ABC012345@A`
l 36*36 `@l神采汉字系统ABC012345@A`
m 24*16 `@m神采汉字系统ABC012345@A`
n 24*36 `@n神采汉字系统ABC012345@A`
o 36*24 `@o神采汉字系统ABC012345@A`
p 36*36 `@p神采汉字系统ABC012345@A`
q 24*16 `@q神采汉字系统ABC012345@A`
r 24*32 `@r神采汉字系统ABC012345@A`
s 48*16 `@s神采汉字系统ABC012345@A`
t 48*32 `@t神采汉字系统ABC012345@A`
`@j五、特殊打印功能@A`
标识符: ` (ASCII码为60H,与 ̄共用一键)
格 式: `@字型` 功 能: `@M置字型@A`(A~x,默认A)
`@色号` `@M置颜色@A`(LQ2500、M1570用,一行一色)
其中:色号=0黑,1红,2蓝,3紫,4黄,5橙,6绿
`@<或>` `@M置纵扩字双向或单向打印@A`(默认单向)
`&行距` `@M置行距@A`(1~255)
`^列数` `@M置字符间距@A`(0~255,汉字间距加倍)
`#行数` `@M置页长@A`(0~255,默认0)
`*行数` `@M置页间空行@A`(0~255,默认0)
`[字符数` `@M置左边空@A`(0~255,默认0)
`]字符数` `@M置行宽@A`(0~255,默认最宽)
` ̄列数` `@M输出空列@A`(0~2447)
`|列数` `@M水平定位@A`(0~2447)
`{` `@M横向放大@A`(行首执行,TH3070用)
`}` `@M结束放大@A`(行尾执行)
`%0~7` `@M置打印背景@A`
其中:0无背景,1网点,2网格,3横线,4竖线,5右斜线,6左斜线,7交叉线
`@j` 8置表格向下连接,`@A`9取消表格向下连接
`¥...¥` `@M将二¥间字符直送打印机@A`
`>`或ESC+I+> `@M置单向打印@A`
`<`或ESC+I+< `@M置双向打印@A`
`;` `@M置抽点打印@A`(轻打)
`\` `@M置\反白=打印@A`
`/` `@M置/上划线=打印@A`
`_` `@M置_下划线=打印@A`
`=` `@M置正常打印@A`(开机状态,清以上四项)
`(` `@M置(左旋?90度打印@A`
`)` `@M置)右旋?90度打印@A`
`?` `@M置结束旋转@A`(开机状态,清以上二项)
`+` `@M置上标字符+ABC0123!@A`
`-` `@M置下标字符-ABC0123!@A`
`!` `@M置正常字符ABC0123@A`(开机状态,清以上三项)
`.` `@M暂停打印@A`(按任一键继续)
注:一打印行(以回车或换行结尾)字符数不得超过320,二标识符间可有汉字或其他
字符(回车可代替一个标识符)。左旋与右旋互锁,上下标和全角字符功能互锁(即设
置一种另外的就自动取消)。九区图形符号不旋转,当有字间距时横线仍可相连。
置左边空和行宽,单位字符,以12列为一字符单位。
输出表格向下连接:
`@B&24%8`
┏━━━━━━━━━━━━━━━━┓
┃ 神采中文系统产品介绍 ┃
┣━━━━━┯━━━━━┯━━━━┫
┃ │ 彩色版 │ 单色版 ┃
┠─────┼─────┼────┨
┃ 解析度 │ 640*480 │ 640*400┃
┠─────┼─────┼────┨
┃ 输入法 │ 5 种 │ 5 种 ┃
┠─────┼─────┼────┨
┃ 打印字型 │ 40 种 │ 40 种 ┃
┗━━━━━┷━━━━━┷━━━━┛
`@A%9`
`@j附录:@A`
`@j`打印机代码:`@A`
0 = 九针打印机
2 = M2024 (1724) 24针打印机
4 = AR3240(CR3240) 24针打印机
5 = EPSON LQ系列 24针打印机
6 = OKI8320(5320) 24针打印机
`@j` 神采中文系统主程序命令行参数设置:`@A`
p:(打印机代码)
l:d 显示字库驻留磁盘。
v:# 显示字库使用虚拟盘。 # = 盘号。运行前需将字库(HZ.16)
拷贝至虚拟盘根目录下。
( 例如 C:>sc v=e 显示字库在虚拟盘E)
t:f 显示字库为繁体点阵字库。
h:n 取消键盘提示。
/? 提示帮助
注意:
本程序全部是用汇编语言开发,加密是在源程序中实现的,它用多要素方式加密。
程序一旦发现多个要素中部分被解,程序照样能运行一段较长时间,之后程序将不能
运行,并将产生不可预知的后果。对此本公司将不负任何责任。本软件已进行版权登记,
对解密者及仿冒者,本公司将追究法律责任。
敬请用户使用原版软件, 由此用户将会获得最好的技术支持, 及最好的咨询服务。
本部热诚为社会各界提供咨询及服务
联系人 : 神采中文系统电脑部 陈小姐
联系电话 : (广州) 6688126-214 BB机: Call 717747
------------------------------------------------------------------------
ADDITIONAL INFORMATION ABOUT FOXPRO FOR WINDOWS
------------------------------------------------------------------------
Remember that information in online help is the most current information
available.
------------------------------------------------------------------------
Sample Files
------------------------------------------------------------------------
Sample files are included with FoxPro for Windows. These files are in
the \GOODIES directory and are installed in a compressed form to save
you hard disk space. To unpack these files, open the File Manager and
double-click on ALLUNPAK.BAT in the FOXPROW\GOODIES directory.
Note: You may use the bitmaps in GOODIES\BITMAPS or modified versions
of them in your applications. However, you are not allowed to make
and sell copies of the bitmaps in GOODIES\BITMAPS or any portion of
them.
------------------------------------------------------------------------
DDEExecute( ) Correction
------------------------------------------------------------------------
The syntax for DDEExecute( ) is incorrect on page L3-363 of the Language
Reference manual and in the help file. The correct syntax is:
DDEExecute(<expN>, <expC1>[, <expC2>])
where <expC2> is the name of a user-defined function (UDF). There is
no format parameter in this command.
------------------------------------------------------------------------
Installation Questions and Answers
------------------------------------------------------------------------
Overview of Questions
1 What is the easiest way to install FoxPro on a network?
2 What kind of "rights" do I need to install FoxPro on the network?
3 Why are workstation users on our network unable to use the graphing
and spelling-checker features in FoxPro?
4 During installation I was asked to select either DOS-style
keystrokes or Windows-style keystrokes. Which should I choose?
5 What is the minimum files setting for FoxPro for Windows?
6 Does FoxPro for Windows update any Dynamic Link Libraries (DLLs) in
the Windows subdirectory where system files are kept?
7 I accidentally deleted some of the FoxPro sample files. Can I
reinstall these files without reinstalling FoxPro?
8 I am having difficulty reading the FoxPro disks because of an
alignment problem with my floppy drives. Is there another option
for installation?
9 I'm trying to install FoxPro for Windows under Windows 3.0 and
I'm getting the message "cannot write VER.DLL". Any suggestions?
10 I'm having difficulty installing FoxPro. I've tried streamlining both
my CONFIG.SYS and AUTOEXEC.BAT and I still can't install
FoxPro for Windows.
11 Can I put a common WIN.INI file up on the server?
12 What is the best way to edit the WIN.INI file?
13 If I modify my WIN.INI file, is it advisable to restart Windows?
14 Can I delete the directory named ~msstfqf.t?
15 I get the error message "Insufficient Memory" when trying to load
FoxPro for Windows. What setting needs to be modified?
16 I am running with 4 MB of RAM. How large a swap file do
I need?
17 If I am running with 5 MB or more of RAM, how large a swap file
do I need?
18 When using my Lantastic network card, why do I always get a memory
conflict when loading FoxPro for Windows?
19 When using a Paradise driver, why do I get a memory conflict when
trying to load FoxPro for Windows?
20 When I use QEMM386 memory manager with FoxPro for Windows, why do
I get a memory conflict?
21 When I use the Mach32 video card with my Gateway 2000, why do I get a
General Protection Fault in module MACH32.DRV at 0003:0E22?
22 I understand that a number of video drivers do not work properly
with FoxPro for Windows. Why is this and what steps should I
take to resolve the situation?
23 I occasionally experience problems when trying to open more than
15 tables at one time. What could be wrong?
24 I'm running Windows for Workgroups. Do I need to load SHARE?
25 Where does FoxPro create its temporary files?
26 I frequently use the RUN command to change drives and
directories within an application. Why isn't this working in FoxPro
for Windows?
27 Why isn't FoxPro registered in REG.DAT within Windows?
28 Why doesn't the value returned by SYS(2010) match the number of
FILES specified in the CONFIG.SYS file?
29 What memory allocation options are available with the PIF
settings?
------------------------------------------------------------------------
Question 1
What is the easiest way to install FoxPro on a network?
Answer 1
In a network environment you must first install FoxPro on the server and
then set up each workstation. Installation on the server is called an
Administrative Setup (/A). This option decompresses all FoxPro for
Windows files and Setup files. FoxPro for Windows files will be read-
only on the network drive.
To perform an Administrative Setup, Choose Run... from the Windows
Program Manager File menu. When the Run dialog appears, type
a:\SETUP /A or b:\SETUP /A (depending on the floppy drive you are using)
in the Command Line box. Press Enter and proceed with the installation.
You will be prompted for your user information and an installation
directory, default drive, path name, etc. For more detailed information
refer to the Instructions for Administrative Setup in the Installation
and Configuration guide for FoxPro for Windows.
Installation on individual workstations is called Workstation Setup (/N)
and requires a previous Administrative Setup. The Workstation Setup
copies FoxPro initialization files, updates some common .DLL files, and
creates a Program Manager group and an icon on each workstation to run a
shared network version of FoxPro for Windows.
The workstation setup may be performed in two ways: from the network or
from disk. To install from a network drive, open the Windows File
Manager and then open a window with the correct network path for FoxPro
for Windows and double-click on SETUP.EXE. Choose the Workstation
Installation button in the Installation Type dialog. To install from
disk, type a:\SETUP /N or b:\SETUP /N in the Run dialog Command Line
box, then press Enter. For more detailed information refer to the
Instructions for Workstation Setup in the Installation and Configuration
guide for FoxPro for Windows.
------------------------------------------------------------------------
Question 2
What kind of "rights" do I need to install FoxPro on the network?
Answer 2
You will need full system rights to install on the network. Contact
your system administrator for further information about your specific
installation.
------------------------------------------------------------------------
Question 3
Why are workstation users on our network unable to use the graphing and
spelling-checker features in FoxPro?
Answer 3
Workstation users need access to the MSGRAPH and PROOF subdirectories in
order to use these features. Contact your system administrator
regarding user access to these subdirectories.
------------------------------------------------------------------------
Question 4
During installation I was asked to select either DOS-style keystrokes or
Windows-style keystrokes. Which should I choose?
Answer 4
If you are not sure which style to use, select Windows-style keystrokes.
Windows-style keystrokes correspond to standard Windows keystrokes.
DOS-style keystrokes let FoxPro for Windows behave like FoxPro for
MS-DOS. Later, if you want to use DOS-style keystrokes, add the line
KEYCOMP=DOS to your CONFIG.FPW files. For more information about the
styles of keystrokes, see the SET KEYCOMP TO command in the FoxPro
Language Reference manual or online help.
------------------------------------------------------------------------
Question 5
What is the minimum files setting for FoxPro for Windows?
Answer 5
The minimum FILES setting is 40. During installation, Setup checks your
CONFIG.SYS file. If your FILES setting is less than 40, a dialog gives
you three choices: have Setup make the modifications for you, have Setup
make the modifications after you have reviewed and edited the changes,
or allow you to make the modifications later. If you allow Setup to
modify your CONFIG.SYS, your old file is saved as CONFIG.OLD or CONFIG.001
if CONFIG.OLD already exists. For more information, see the chapter on
Customizing FoxPro in the Installation and Configuration guide.
------------------------------------------------------------------------
Question 6
Does FoxPro for Windows update any Dynamic Link Libraries (DLLs) in the
Windows subdirectory where system files are kept?
Answer 6
Yes. The following DLLs are updated: COMMDLG.DLL, DDEML.DLL, OLECLI.
DLL, OLESVR.DLL, SHELL.DLL, TOOLHELP.DLL and VER.DLL.
The FoxPro graphing capabilities require that these two files be stored
in the Windows subdirectory \MSAPPS\MSGRAPH: GRAPH.EXE and GRAPH.HLP
FoxPro spelling-checking capabilities require that these three files be
stored in the Windows subdirectory \MSAPPS\PROOF: MSSPELL.DLL,
MSSP_AM.LEX, and MSSP_BR.LEX
------------------------------------------------------------------------
Question 7
I accidentally deleted some of the FoxPro sample files. Can I reinstall
these files without reinstalling FoxPro?
Answer 7
Yes. Run Setup again and select the Custom Installation option from the
Installation Type dialog. This option lets you choose which components
to install.
------------------------------------------------------------------------
Question 8
I am having difficulty reading the FoxPro disks because of an alignment
problem with my floppy drives. Is there another option for installation?
Answer 8
Try copying all the files to a directory on your hard disk and then
install from the hard drive.
------------------------------------------------------------------------
Question 9
I'm trying to install FoxPro for Windows under Windows 3.0 and I'm
getting the message "Cannot write VER.DLL." Any suggestions?
Answer 9
Rename the VER.DLL file in the Windows System subdirectory.
------------------------------------------------------------------------
Question 10
I'm having difficulty installing FoxPro. I've tried streamlining both
my CONFIG.SYS and AUTOEXEC.BAT and I still can't install
FoxPro for Windows.
Answer 10
First of all, don't try to install from within a replacement shell
(Norton, etc.). Second, make certain you have disabled all TSRs,
including anti-virus software. Check the WIN.INI file for the LOAD= and
RUN= lines. Comment these lines out using a semicolon (;).
------------------------------------------------------------------------
Question 11
Can I put a common WIN.INI file up on the server?
Answer 11
No. Each workstation has its own WIN.INI file.
------------------------------------------------------------------------
Question 12
What is the best way to edit the WIN.INI file?
Answer 12
The WIN.INI file may be edited with Notepad or EDIT.EXE in MS-DOS 5.0.
------------------------------------------------------------------------
Question 13
If I modify my WIN.INI file, is it advisable to restart Windows?
Answer 13
Yes. As a general rule, always restart Windows when you have modified
the WIN.INI file. There are some exceptions, but if you are trouble-
shooting you want to be certain that all changes are reflected in the
current environment.
------------------------------------------------------------------------
Question 14
Can I delete the directory named ~msstfqf.t?
Answer 14
Yes. The directory named ~msstfqf.t is created during setup. Ordinarily
this directory is deleted at the end of the installation process. This
directory may be deleted.
------------------------------------------------------------------------
Question 15
I get the error message "Insufficient Memory" when trying to load FoxPro
for Windows. What setting needs to be modified?
Answer 15
Add a MEMLIMIT statement to your CONFIG.FPW file. The syntax for this
statement is MEMLIMIT=%,min,max where % is a calculated amount based on
available memory and min and max represent actual minimum and maximum
allocations.
For example, specifying MEMLIMIT=80,1024,4096 allocates 80 percent of
your system's available memory to FoxPro with a minimum allocation of
1024K and a maximum of 4096K.
------------------------------------------------------------------------
Question 16
I am running with 4 MB of RAM. How large a swap file do I need?
Answer 16
Use a 2 MB permanent swap file for virtual memory and do not include a
MEMLIMIT setting in the CONFIG.FPW file. Let FoxPro run with the
default setting. In addition, do not use a RAM drive or an expanded
memory manager. Expanded memory is not used by FoxPro for Windows. A
disk cache should be no larger than 256K.
------------------------------------------------------------------------
Question 17
If I am running with 5 MB or more of RAM, how large a swap file do I
need?
Answer 17
If you have 5 MB or more of RAM, do not use a swap file for virtual
memory. Set your virtual memory to None and set MEMLIMIT to 90 in the
CONFIG.FPW file. Remember that devoting more memory to FoxPro means that
less memory is available for Windows and other applications that are
running. FoxPro takes advantage of all the memory allocated for it.
Therefore, you must maintain the balance of memory allocated to FoxPro,
Windows and other applications that you intend to run. For more
information refer to the chapter on Optimizing your System in the
Installation and Configuration guide.
------------------------------------------------------------------------
Question 18
When using my Lantastic network card, why do I always get a memory
conflict when loading FoxPro for Windows?
Answer 18
Try putting EMMExclude=D800-DFFF in the SYSTEM.INI file in the Windows
directory.
------------------------------------------------------------------------
Question 19
When using a Paradise driver, why do I get a memory conflict when trying
to load FoxPro for Windows?
Answer 19
Try putting EMMExclude=C600-C800 in the SYSTEM.INI file in the Windows
directory.
------------------------------------------------------------------------
Question 20
When I use QEMM386 memory manager with FoxPro for Windows, why do I get
a memory conflict.
Answer 20
Try putting EMMExclude=C0FF-C7FF in the SYSTEM.INI file in the Windows
directory.
------------------------------------------------------------------------
Question 21
When I use the Mach32 video card with my Gateway 2000, why do I get a
General Protection Fault in module MACH32.DRV at 0003:0E22.
Answer 21
You are experiencing a problem with your video driver. Contact your
video card vendor for the most recent version of the driver. In the
meantime, you can use the VGA.DRV or the SUPERVGA.DRV drivers that come
with Windows.
------------------------------------------------------------------------
Question 22
I understand that a number of video drivers do not work properly with
FoxPro for Windows. Why is this and what steps should I take to resolve
the situation?
Answer 22
FoxPro for Windows makes intensive use of screen I/O. If you
are experiencing GPFs (General Protection Faults) or display problems
(borders, status bar, fonts, unusual alignment when previewing reports)
you may be experiencing a problem with your video driver. To test this
situation, load one of the standard Windows drivers and go through the
steps to reproduce the earlier problem. If the problem no longer exists
when you are using a standard Windows driver, it is very likely that the
old driver was the cause of the problem. Contact the vendor for an
updated version of the driver or download the Windows Driver Library
(WDL) on the Microsoft Download Service (MSDL). Complete instructions
for obtaining the Windows Driver Library is contained in the Product
Support section of this file.
We have identified problems with the following video cards:
ATI Ultra Graphics Pro (local bus) -- caused GPF, fixed with update
AST Power Premium 486 w/VGA on Motherboard -- fixed with update
Genoa 7900 MM card
Dell 486/20 with VGA on Motherboard
Compaq QVision
Speed Star 24x
Trident 8900C
TIGA 1024 x 768 x 256 small fonts
NEC 2A
MACH32
Contact your video card vendor for the most recent version of the driver
for your card. In the meantime, you can use the VGA.DRV or the
SUPERVGA.DRV drivers that come with Windows.
------------------------------------------------------------------------
Question 23
I occasionally experience problems when trying to open more than 15
tables at one time. What could be wrong?
Answer 23
Make certain you have the correct SHARE statement in your AUTOEXEC.BAT
file:
SHARE /F:4096 /L:500
------------------------------------------------------------------------
Question 24
I'm running Windows for Workgroups. Do I need to load SHARE?
Answer 24
No. Windows for Workgroups automatically loads VSHARE, which takes the
place of SHARE.
------------------------------------------------------------------------
Question 25
Where does FoxPro create its temporary files?
Answer 25
FoxPro creates its temporary files in the same directory where Windows
stores its temporary files, unless you specifically designate an
alternate location by including one or more of the EDITWORK, SORTWORK,
PROGWORK and/or TMPFILES statements in the CONFIG.FPW file. The
location of Windows .TMP files is specified with the MS-DOS set variable
TEMP. In most cases, you should let FoxPro write .TMP files to the same
location. However, if this location is a RAM drive, make sure that
enough space is available for both FoxPro and Windows .TMP files.
------------------------------------------------------------------------
Question 26
I frequently use the RUN command to change drives and directories within
an application. Why isn't this working in FoxPro for Windows?
Answer 26
Each time you issue the RUN command to change drives and directories,
Windows opens a new "session" of MS-DOS, otherwise known as a "virtual
machine", and executes the command within the newly created "session."
When you exit from this session or "shut down" the virtual machine,
you are right back where you started without having changed drives.
Consequently, you will want to take advantage of some of FoxPro's own
drive and directory commands instead of using the RUN command. For
example, using SET DEFAULT TO c:\newdir will actually issue the MS-DOS
command CHDIR.
------------------------------------------------------------------------
Question 27
Why isn't FoxPro registered in REG.DAT within Windows?
Answer 27
Only OLE servers are registered in REG.DAT. FoxPro is not an OLE server.
------------------------------------------------------------------------
Question 28
Why doesn't the value returned by SYS(2010) match the number of FILES
specified in the CONFIG.SYS file?
Answer 28
Windows interacts with the MS-DOS open file tables in such a way that
the value reported in the MS-DOS box and in Windows may be different.
------------------------------------------------------------------------
Question 29
What memory allocation options are available with the PIF settings?
Answer 29
In the PIF Editor "memory requirements" section the "KB Required" and
"KB Desired" may both be set to "-1". This will tell Windows to give
all the available memory it can to a MS-DOS application. This does not
mean that the MS-DOS application will have more than 600K, but it will get
about as much conventional memory as you had available before starting
Windows (minus some conventional memory that Windows itself occupies).
Changing the "EMS Memory" and "XMS Memory" sections will tell Windows to
provide or not provide the MS-DOS application and EMS (Expanded Memory
Services) or XMS (Extended Memory Services). This will not, however,
allow an application that does not support accessing EMS or XMS to do
so. Only applications that have the capability will be able to access
the additional memory provided. It is important to note that once you
tell Windows to create EMS or XMS for an application, it does so
whether the application can use it or not.
In the "Execution" section, if Exclusive is selected, no other
application, be it Windows or MS-DOS, will run while the application with
Exclusive is the current application.
In the "Advanced Options" there is a "Multitasking Options" section.
This section is very important when you are trying to get a MS-DOS
application to run in the background. If the MS-DOS application is very
I/O intensive (reads and writes to disk, asynchronous communication,
etc.) it will be necessary to increase the "Background Priority".
Unfortunately there is no "rule of thumb" when it comes to the exact
number that should be used. It is important to note that the larger the
number for "Background Priority" the slower other applications will run
while the MS-DOS application with the high priority is running in the
background.
FoxPro for Windows Developers Guide
(copyright 1993, Sams Publishing)
____________________________________________________
FoxMasters magazine special edition
Vol2 Num 0
(copyright 1992, Tetra Press)
This disk contains the sample programs from Jeb
Long's FoxPro for Windows Developers Guide. It is
contained within a sample issue of FoxMasters
Magazine. FoxMasters runs within the FoxPro for
Windows environment.
This file will cover these topics:
* Installing the disk
* Using FoxMasters
* Experimenting with the author's programs
* The LZSS compression Library
INSTALLING THE DISK
-------------------
If you haven't installed this disk yet, put the disk
in your floppy drive and follow these instructions:
1. From Program Manager or File Manager, choose
File | Run from the menu.
2. Type B:\INSTALL and press Enter. If the floppy
disk is in your A: drive, type A:INSTALL.
Follow the instructions on your screen - the program
will guide you through the installation process.
You will need at least 5M of free space on your hard drive
to install the files.
USING FOXMASTERS
(by Bruce Braunstein, Editor of FoxMasters magazine)
----------------
To run FoxMasters, you must be running FoxPro for Windows.
1. Select Program | Do from the menu (or type DO ? in the
command dialog box, and press Enter).
2. Select the directory that you chose to install the files
in (the default is \FOXPRODG).
3. Select the file FMW.APP and press Enter or click DO.
The FoxMasters prompt will appear on the main system menu bar.
It will let you select the articles that you wish to read from
the 'Table of Contents.' In this option you can read an
article, run the code, print it out, or simply exit.
Each time you finish any action on an article, you'll
need to reselect the table of contents.
The next option is the 'Editorial.' Here you can read my
opinions.
This is followed by the 'Entertainment' section that gives you
a game of POPTRIS written in FoxPro by Gerald Garcia. This
shows what can be done with FoxPro for Windows. (Also included
on the disk is a FoxPro version of the Game of Life written by
Tom Rombouts - you'll find this in the main Table of Contents).
The 'About FoxMasters' section provides information covering
what FoxMasters is, how to write for it and how you can
subscribe.
'FM_Setup' lets you choose which issue you want to read by issue
number (if this is the only issue of FoxMasters you have, this
issue is already chosen by default). It also lets you choose if
you want the FoxMasters popup to open when you activate FPW.APP.
Finally the 'Unload' options lets you remove FoxMasters from
memory and from your hard disk.
If you have any questions, or suggestions don't hesitate to get
in touch with me.
EXPERIMENTING WITH THE AUTHOR'S PROGRAMS
----------------------------------------
If you're not running FoxMasters magazine, you can still access
Jeb Long's programs and his program code. You can directly run
and examine these program within FoxPro for Windows.
Look in the directory where you chose to install the book's
software (the default is \FOXPRODG). You'll find a directory
named VOL2NUM0. Under this directory, you'll find a number of
subdirectories, which contain the various programs and examples
from the book.
THE LZSS COMPRESSION LIBRARY
----------------------------
The LZSS Compresion library is a shareware product from Eschalon
Development. It consists of a DLL which can be called from within
Windows programs, including FoxPro for Windows programs.
The author has written an example program which shows how to do
this - it is located in the VOL2NUM0\DOCUMENT directory, and
is named DOCUMENT.PRG.
You'll find the complete files for this product in the LZSSLIB
directory.
*** end ***
README.TXT
**********************************************************
Microsoft(R) FoxPro(R) Version 2.5
Library Construction Kit for Windows(TM)and MS-DOS(R)
(C)1993 Microsoft Corporation. All Rights Reserved.
This file contains additions and corrections to the
FoxPro Library Construction Kit Developer's Guide.
**********************************************************
========
CONTENTS
========
Part Description
---- -----------
1 Additions to Documentation Since Printing
2 Corrections to Documentation Since Printing
----------------------------------------------------------
=================================================
Part 1: Additions to Documentation Since Printing
=================================================
The EXAMPLES directory contains a FoxPro database with all
the example code that is used in the manual. Simply
search for the function with example code you wish to
copy and then extract the code from the memo field. You
are free to use this code in your own applications.
-----------------------------------------------------------
The following function has been added:
WHANDLE _WMainWindow( )
Description:
_WMainWindow( ) returns the WHANDLE of the main FoxPro
window in FoxPro for Windows or of the FoxPro desktop
in FoxPro for MS-DOS.
Example:
The following example writes a message to the main FoxPro
window in FoxPro for Windows or to the FoxPro desktop in
FoxPro for MS-DOS.
FoxPro Code:
SET LIBRARY TO WMAIN
= EXWMAIN()
C Code:
#include <pro_ext.h>
void FAR example(ParamBlk FAR *parm)
{
WHANDLE wh = _WMainWindow();
_WPutStr(wh, "\nThis is the main FoxPro window or desktop.");
}
FoxInfo myFoxInfo[] = {
{"EXWMAIN", example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
===================================================
Part 2: Corrections to Documentation Since Printing
===================================================
Page 2: In the Reverse.C example:
The comment "/* Check to see if we can allocate the memory
needed. */" is missing the end comment marker */.
The three-line comment "Since this routine doesn't call
any functions that cause memory reorganization . . .
prior to de-referencing them (_HandToPtr)" is missing the
single line comment marker // in the second and third
lines.
This statement:
for (i = 0; i << parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
should be:
for (i = 0; i < parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
Change the "<<" in the original example to "<".
----------------------------------------------------------
Page 5: The Value Structure Fields table should include
the General FoxPro data type. The applicable fields and
their values are listed below:
val.ev_type = 'G'
val.ev_width = FCHAN
val.ev_long = length of general field
val.ev_real = offset of general field
----------------------------------------------------------
Page 6: The data type FPFI, a FAR pointer to a function
returning Int, is mistakenly listed as "FPDI".
----------------------------------------------------------
Page 7: In addition to the Point, Rect and EventRec data
structures, PointP and RectP should be included. PointP
and RectP are identical to Point and Rect except that
Point and Rect coordinates are in rows and columns while
PointP and RectP coordinates are in pixels.
----------------------------------------------------------
Page 12: The example
if (parm->p[0].val.ev_type='C'
x=parm->p[0].val.ev_length
should be:
if (parm->p[0].val.ev_type=='C')
x=parm->p[0].val.ev_length;
Use an expression ==, a closed parenthesis at the end of
the first line, and a semicolon at the end of the second
line.
----------------------------------------------------------
Page 22: When compiling a .PLB library in Microsoft C7 or
Visual C/C++, you need to use the following command line:
CL /O /ALw /Zp /GW
When linking a .PLB library in Microsoft C7 or C8, you
need to use the /NOE and /NONULLS switches.
Leaving out /NOE can cause redefinition errors. Leaving
out /NONULLS will cause FoxPro not to recognize the .PLB
as a valid library.
----------------------------------------------------------
Page 25: The section heading for the makefile on this page
is incorrect. It should say "Microsoft C/C++ Makefile for
MS-DOS" instead of "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 26: The makefile on this page should have the
following section heading: "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 39: The example doesn't work as intended in all
cases. To have it work, you need to change the following
line:
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
to:
(( char FAR *) _HandToPtr(p0.ev_handle))[p0.ev_length - 1] = '\0';
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length - 1] = '\0';
----------------------------------------------------------
Page 85: The following information applies to the
_DBSeek( ) function: The struct Value passed to _DBSeek( )
(via a pointer) must be of ev_type == 'N' when seeking a
numeric field even if that field has 0 decimal digits.
If the struct Value has an ev_type of 'I', _DBSeek( )will
return the internal error number -302, "Data type
mismatch."
----------------------------------------------------------
Page 109: The struct EDENV documented with _EdGetEnv( ) isn't
correct. The actual structure from PRO_EXT.H appears
as follows:
NOTE: (R) indicates that this member is read-only and
can't be set using _EdSetEnv( ).
(B) indicates that these members takes on one of
two Boolean values: 1 = true or 0 = false.
typedef struct
{
char filename[MAXFILENAME]; // (R)
EDPOS length; // # of bytes in text. (R)
unsigned short lenLimit; // Max allowable length. 0 = infinite.
unsigned short dirty, // Has the file been changed? (R, B)
autoIndent, // Auto indent? (B)
backup, // Make backup files? (B)
addLineFeeds, // Add line feeds when saving? (B)
autoCompile, // Shall we auto compile this thing? (B)
addCtrlZ, // Add end of file ctrl-z? (B)
savePrefs, // Save edit preferences? (B)
dragAndDrop, // Allow drag-and-drop. (B)
readOnly, // 0 = not r/o, 1 = file is r/o,
// 2 = file is r/w, opened r/o,
// 3 = file is r/o, opened r/o. (R)
status, // Display status bar? (B)
lockPrefs, // Can update the preferences ? (B)
insertMode; // (B)
short wrap; // If < 0, new line at Return only.
EDPOS selStart; // Selection start. (R)
EDPOS selEnd; // Selection end. (R)
EDPOS selAnchor; // Selection anchor point. (R)
short justMode; // Justification (0 = left, 1 = right, 2 = center).
short tabWidth; // TAB size in spaces.
char fontName[MAXFONTNAME];
short fontSize;
short fontStyle; // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic.
short kind; // Kind of editor session; EDCOMMAND, EDPROGRAM, etc.
// defined in pro_ext.h. (R)
} EDENV;
----------------------------------------------------------
Page 122: The syntax for _EdOpenFile() is missing the
"mode" argument. It should read:
_EdOpenFile(TEXT *filename, int mode)
TEXT *filename; /* File to open. */
int mode; /* Mode option. */
The following Mode options are available:
FO_READONLY, FO_WRITEONLY, FO_READWRITE.
----------------------------------------------------------
Page 315: zoomEvent is a FoxPro for MS-DOS event. You
can't trap for this event in FoxPro for Windows.
----------------------------------------------------------
In an EventHandler in the FoxPro for Windows Library
Construction Kit, if you make a call to FoxPro which
generates another event, the original event record may be
changed. This won't happen in the FoxPro for MS-DOS
Library Construction Kit. The following example
illustrates this:
#include <pro_ext.h>
int g_eventid = 0; // Our event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
Point pt;
switch (ev->what) // Determine the event type.
{
case keyDownEvent:
if (theWindow == _WMainWindow())
return NO;
else
{
pt.h = 35;
pt.v = 10;
// This causes the event handler to be re-entered.
_WSize(theWindow, pt);
}
_PutStr("\nDone with the keyDownEvent");
break;
case sizeEvent:
_PutStr("\nSize Event received.");
break;
default:
return NO;
}
return NO;
}
FAR EventExit()
{
_DeActivateHandler(g_eventid); // Get rid of our event handler.
}
FAR Quotes(ParamBlk FAR *parm)
{
// Set up our event handler.
g_eventid = _ActivateHandler(EventHandler);
}
FoxInfo myFoxInfo[] = {
{"QUOTES", Quotes, 0, ""},
{"EVENTEXIT", EventExit, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
=================
End of README.TXT
=================
Additional Information about FoxPro for MS-DOS Remember that information in online help is the most current information available. There are three types of installation for FoxPro for MS-DOS: Normal Installation, Administrative Installation and Workstation Installation. Instructions for Normal Installation are in the FoxPro Installation and Configuration manual. For information about Administrative and Workstation Installation, see INSTALL.TXT on FoxPro for MS-DOS Disk 1. The directory FOXPRO25\GOODIES\LCKUPDAT contains files that allow you to update PLBs built using the FoxPro 2.0 Library Construction Kit for use with FoxPro 2.5 for MS-DOS. If you obtained your PLBs from another source, such as a software supplier or online service, contact that source for updated libraries that work with FoxPro 2.5. To use these files, follow the directions in the LCKUPDAT.TXT file located in the FOXPRO25\GOODIES\LCKUPDAT directory.
README.TXT
**********************************************************
Release Notes for
Microsoft(R) FoxPro(R) for MS-DOS (R) Version 2.5b
(C)1993 Microsoft Corporation. All Rights Reserved.
Information in the FoxPro online Help is more current than
information in the printed documentation. This README
provides information not contained in the FoxPro online
help or documentation, and provides corrections to both.
**********************************************************
========
CONTENTS
========
Part Description
---- -----------
1 Installation
2 WAIT...WINDOW Enhancements
3 New Commands and Functions
4 New Transporter and Screen Directives
5 International and Cross-Platform Recommendations
----------------------------------------------------------
====================
Part 1: Installation
====================
There are three types of installation for FoxPro for
MS-DOS: Normal Installation, Administrative Installation
and Workstation Installation. Instructions for Normal
Installation are in the FoxPro Installation and
Configuration manual. For information about Administrative
and Workstation Installation, see INSTALL.TXT on FoxPro
for MS-DOS Disk 1.
----------------------------------------------------------
================================
Part 2: WAIT WINDOW Enhancements
================================
WAIT WINDOW now supports multiple line messages. Use a
carriage return (CHR(13)) to move portions of your message
to additional lines. The message window is automatically
expanded to accommodate additional lines. For example, this
command creates a message window that contains two lines:
WAIT WINDOW "This is the 1st line" + CHR(13) + ;
"This is the 2nd line"
The width of the message window is adjusted to fit the
longest line in the message. All lines in the message are
left justified in the message window. Line feeds (CHR(10))
following CHR(13) are ignored.
----------------------------------------------------------
==================================
Part 3: New Commands and Functions
==================================
Several new commands and functions are added to
FoxPro 2.5b. For additional information about these
commands and functions, see the "International and Cross
Platform Recommendations" section below and the
corresponding topics in Help.
New Commands
------------
SET NOCPTRANS
SET COLLATE
New Functions
-------------
CPCURRENT( )
CPDBF( )
CPCONVERT( )
IDXCOLLATE( )
----------------------------------------------------------
=============================================
Part 4: New Transporter and Screen Directives
=============================================
Several new Transporter and screen directives have been
added.
The #DOSOBJ, #MACOBJ, #UNIXOBJ and #WINOBJ
Transporter directives allow you to transport objects
created in the Screen Builder and Report Writer to
specific FoxPro platforms. For additional information
about these Transporter directives, see the Transporting
Files topic in Help.
#TRAN SNIPPET ONLY, a new screen directive, is available
in FoxPro 2.5b. This screen directive affects how screen
objects are transported, and is not discussed in Help.
#TRAN SNIPPET ONLY is designed to limit the Transporter's
changes to just screen snippets, and is placed in
a screen's Setup snippet.
When screen objects are transported to a different FoxPro
platform, only the screen snippets for updated screen
objects are transported if #TRAN SNIPPET ONLY is included.
All other screen object attributes are not transported to
the different platform.
Note that #TRAN SNIPPET ONLY only affects updated screen
objects; it does not affect new or unchanged screen
objects or screen objects being transported for the first
time.
----------------------------------------------------------
=========================================================
Part 5: International and Cross Platform Recommendations
=========================================================
*** IMPORTANT ***
*******************************************************
* Be sure to read this section completely before you *
* change code pages or collation sequences! *
*******************************************************
Overview of topics
1 FoxPro Collation Sequences
2 Case-Insensitive Collation Sequences
3 Case-Sensitive Collation Sequences
4 How do the SEEK and SKIP commands work?
5 Alternatives to SEEK and SKIP
6 Additional Recommendations
7 New Code Pages
8 CPZERO Program
9 Corrections to the Help File
FoxPro 2.5b gives international developers and users
powerful new features for handling accented characters
across different FoxPro platforms, and provides
accurate sorting in many languages.
For international FoxPro users, this section describes
how code pages and collation sequences affect sorting,
seeking and comparisons using the SORT and SEEK commands,
and also provides recommendations for taking advantage
of these features.
U.S. FoxPro users whose applications don't contain
accented characters may not need any of the new
international 2.5b features. In this case, you can
disregard this section of the README and the
International/X-Platform topic in Help. FoxPro 2.5b is
100% percent compatible with FoxPro 2.5.
1 FoxPro Collation Sequences
----------------------------
With a MACHINE collation sequence, which earlier FoxPro
versions use (and to which FoxPro 2.5b still defaults),
each character in the code page, whether it's a Roman
character, an accented character, or a line-drawing
character, has a unique "sort weight" determined by its
position in the code page. In a majority of code
pages, all accented characters appear after the unaccented
characters. In this situation an ä sorts after z, which
isn't correct in most languages (although it is true in
Swedish, for instance).
Furthermore, in most languages accented characters sort
after their unaccented counterparts, but only if the
unaccented versions of all characters being compared are
the same. For example, in German, ä sorts after the
unaccented a, but the string äa sorts before the string ab
because the second character a is less than the second
character b. In this way, characters are interleaved in
many cultures.
FoxPro 2.5b supports a number of new collation sequences
to correctly sort in many languages. These sequences take
into account all the complex rules of the language
(including two-to-one, three-to-one and one-to-two
mappings). The following collation sequences were
available when this README was created. The code pages
for which these collation sequences are defined are also
included.
Collation Sequence Friendly Name Code Pages
------------------ ------------- ----------
CZECH Czech 852, 895, 1250
DUTCH Dutch 437, 850, 1252
GREEK Greek 737, 1253
GENERAL General 437, 620, 850,
852, 861, 865,
895, 1250, 1252,
10000
HUNGARY Hungarian 852, 1250
ICELAND Icelandic 437, 850, 861,
1252
MACHINE Machine All
NORDAN Norwegian/Danish 437, 850, 865,
1252
POLISH Polish 620, 852, 1250
RUSSIAN Russian 866, 1251
SLOVAK Slovak 852, 895, 1250
SPANISH Spanish 437, 850, 1252
SWEFIN Swedish/Finnish 437, 850, 1252
UNIQWT Unique Weight 437, 850, 1252,
10000
If you specify a collation sequence in the SET COLLATE
command as a string literal, enclose the collation
sequence in quotation marks. Don't enclose the collation
sequence in quotation marks if you specify a collation
sequence in your FoxPro configuration file (CONFIG.FP or
CONFIG.FPW).
If you use the SET COLLATE command to specify a collation
sequence that isn't supported by the current code page,
FoxPro generates an error. If you specify a collation
sequence in your FoxPro configuration file that isn't
supported by the current code page, the collation sequence
defaults to MACHINE.
If you specify a collation sequence in the International
panel in the View window, the collation sequence names
appear in longer forms. For example, the NORDAN option
appears as Norwegian & Danish, and the SWEFIN option
appears as Swedish & Finnish.
For additional information about collation sequences, see
SET COLLATE in Help.
3 Case-Sensitive Collation Sequences
------------------------------------
Two case-sensitive collation sequences are available in
FoxPro: the familiar MACHINE sequence, the default
sequence in earlier FoxPro versions, and the sequence
named UNIQWT. UNIQWT is a "unique weight" sort in which
each accented character sorts strictly after its
unaccented counterpart (unlike the interleaving of
accented characters described earlier).
While the collation sequence with UNIQWT isn't strictly
culturally correct as with GENERAL, it may aid developers
in migrating their applications from earlier FoxPro
versions. One reason is that upper- and lower-case letter
are treated distinctly as they were in earlier FoxPro
versions. Another reason is described in the section
titled "How do the SEEK and SKIP commands work?"
4 How do the SEEK and SKIP commands work?
-----------------------------------------
The SEEK command accepts an expression. FoxPro transforms
that expression into a sort key which it compares to
keys in the master index or tag. SEEK then positions the
record pointer at the first index entry that's greater
than or equal to ( >= ) the supplied key.
With a machine sort, SEEK finds a match if there is one.
The UNIQWT sort has the same property. But when FoxPro
uses the new language-specific collation sequences to
create indexes, only the alphabetic part of the key is
considered and any diacritical marks are ignored. In other
words, even if you SEEK "äbc" you may find "abc". Note
that partial searches (where you search for part of the
field) using SEEK may not return the results you expect
when the current collation sequence is not MACHINE or
UNIQWT.
FoxPro behaves this way for the following three reasons:
1) Performance.
2) Consistency with the SKIP command.
3) Consistency with the SET NEAR command.
To have SEEK and SKIP find only those records that exactly
match accented characters, you must either SET EXACT ON or
use an index tag created with the MACHINE or UNIQWT
collation sequences.
Note that SEEK and SKIP use the collation sequence of the
master index or tag, and ignore the current collation
sequence. SEEK can't be used unless there is an index is
active.
5 Alternatives to SEEK and SKIP
-------------------------------
If you use accented characters, use one of the following
methods to search a table:
1) Construct a loop with SCAN FOR ... ENDSCAN.
2) Use LOCATE FOR ... CONTINUE.
LOCATE and SCAN use an index if one is active, and
they have two very significant advantages over SEEK when
data contains accented characters.
First, both LOCATE and SCAN remember the condition with
which they were invoked, so they can be used for looping
on a condition. SEEK, on the other hand, simply positions
you somewhere in the index, and SKIP continues down the
index from that point. With international data, this may
not give you the results you want.
Second, LOCATE and SCAN are diacritically-sensitive,
whereas SEEK isn't. In addition, both LOCATE and SCAN can
be fully optimized by Rushmore if the current collation
sequence is MACHINE or UNIQWT; otherwise partial
optimization will occur.
The ORDER BY clause of the SQL SELECT command uses the
current collating sequence, which is returned by
SET("COLLATE")).
6 Additional Recommendations
----------------------------
1) If you aren't concerned with indexing accented
characters in a language-specific way, feel free to
continue to use machine indexes. For many U.S. users,
this is appropriate.
2) For the best performance when using a collation
sequence other than MACHINE or UNIQWT, be sure that the
current collation sequence is the same as the collation
sequence of any indexes you are using.
3) Most international users will want accented characters
in all fields to be translated automatically by FoxPro
when running cross-platform applications. However, if you
have a table with a character field that's actually
storing binary information (data), the SET NOCPTRANS
command allows you to inform FoxPro that characters
in such a field should not be translated.
Binary data might otherwise be changed, because of
FoxPro's "nearest" character mapping. For characters such
as the MS-DOS line-drawing characters, FoxPro maps to the
"nearest" character in the destination code page.
If you choose to use SET NOCPTRANS, you must do so
immediately after issuing the USE command. From that
point on, FoxPro's automatic character translation is
not in effect for any fields you designate. In particular,
you must issue the SET NOCPTRANS command before issuing
a SQL SELECT command -- you cannot let SQL SELECT open
tables for you if the tables contain fields which should
not be translated.
Note that SET NOCPTRANS only operates on fields for the
table open in the currently selected work area. If you
close a table and then open the table again, you must
reissue SET NOCPTRANS and designate the fields which
should not be translated.
4) If you create cross platform applications, you should
avoid using FoxFont. FoxFont is an OEM MS-DOS font that
you may find useful in some situations. But if you use
FoxFont in an application you create in FoxPro for
Windows, some of the characters in the application may
not transport correctly to other FoxPro platforms.
Furthermore, FoxFont won't correctly display characters
typed on international Windows keyboards. If you have
automatic code page translation enabled, FoxPro will
display accented characters correctly.
FoxFont is the installed default font for the FoxPro
desktop. FoxFont is the default font for user-defined
windows created with DEFINE WINDOW when the FONT clause
is omitted. Be sure to include the FONT clause when
creating user-defined windows in FoxPro for Windows.
FixedSys is the default font for the Command, Trace and
Debug windows if you're using Windows 3.1. Text editor
windows default to the current Command window font.
5) FoxPro 2.5b can automatically translate accented
characters in most files types such as .DBF, .SCX, and
.FXP files. However, program (.PRG) and text (.TXT)
files don't have a header and can't be marked with a code
page. Therefore, FoxPro must assume that a program or text
file was designed for use on the platform on which it is
opened.
It's important that you compile each program on the
platform on which it was written. Since compiled programs
(.FXP files) have a header, once you compile a program, it
can be run on any FoxPro platform and accented characters
in the original source program are automatically
translated when automatic code page translation is in
effect.
6) Do not mix programs created on different FoxPro
platforms in a project. The Project Manager assumes that
all programs in a project are native to the current FoxPro
platform. If you create an application or an executable
from a project that contains programs created on different
FoxPro platforms, translation of accented characters in
the programs might not be translated properly.
Also, within the Project Manager you can't specify the
platform on which a program or text file was created.
Therefore, in the Project Manager don't edit programs or
tables created on a FoxPro platform other than the current
platform. This means that you shouldn't double-click on a
file to open it in the Project Manager if you've enabled
automatic translation by including CODEPAGE = AUTO in
your FoxPro configuration file.
If you create an application that contains files created
on different FoxPro platforms, do not open the files for
editing from within the Project Manager.
However, once you build an application (.APP file), it
will run on any FoxPro platform and FoxPro can
automatically translate accented characters.
7) If you have a project created in FoxPro for MS-DOS
version 2.0 and the files within the project contain
accented characters, you can share the project and
its files across different FoxPro platforms by performing
the following steps to convert the project and its files.
This conversion is required just once, and enables cross
platform sharing of all the elements of the project.
a) Open the project in FoxPro for MS-DOS 2.5b or FoxPro
for Windows 2.5b. A dialog appears, asking if you would
like to convert the project to a 2.5 format. Choose
Yes, then close the project.
b) Open every screen, report, label, menu and table
contained in the project with the USE command. You are
prompted for the code page (437, 850 and so on) on
which each was created. Specify the MS-DOS code page
on which each was built and then choose Yes.
c) Use MODIFY COMMAND or MODIFY FILE and include the
AS clause to open EVERY program, query, format file
or text file contained in the project. In the AS
clause, specify the code page (437, 850 and so on)
of the FoxPro platform on which each was created.
Choose the Save As option from the File menu and choose
the Change Code Page check box. In the dialog that
appears after you choose Save, specify the code page
for the FoxPro platform on which the file will be used.
8) If you're developing a cross-platform application,
avoid using characters that appear in one code page and
not another. For example, the MS-DOS line drawing
characters aren't supported under Windows, so avoid using
them in screens you plan to transport between FoxPro for
MS-DOS and FoxPro for Windows.
You can use CHR() if your application absolutely requires
line drawing and accented characters. Output from CHR()
isn't translated when the function is executed, allowing
you to output any character.
9) The MS-DOS file system is case-insensitive and requires
uppercase file names. If your applications run on FoxPro
for MS-DOS, be sure to restrict file names to those
characters that have uppercase equivalents in your MS-DOS
code page.
For example, code page 437 doesn't contain uppercase
versions of several accented vowels. These characters
can't be safely used in a FoxPro file name. It's best
to avoid accented characters in file names.
7 New Code Pages
----------------
The following code pages are now supported:
Code Page Platform
--------- --------
437 U.S. MS-DOS
737 Greek MS-DOS (437G)
620 Mazovia (Polish) MS-DOS
850 International MS-DOS
852 EE MS-DOS (Latin II)
861 Icelandic MS-DOS
865 Nordic MS-DOS
866 Russian MS-DOS
895 Kamenicky (Czech) MS-DOS
1250 Windows EE
1251 Russian Windows
1252 Windows ANSI
1253 Greek Windows
10000 Standard Macintosh
Byte 29 in table headers contains the code page identifier.
The following table lists the code page and the
corresponding code page identifier in hex.
Code Page Code Page Identifier
--------- --------------------
437 x01
737 x6A
620 x69
850 x02
852 x64
861 x67
865 x66
866 x65
895 x68
1250 xC8
1251 xC9
1252 x03
1253 xCA
10000 x04
8 CPZERO Program
----------------
If you accidentally specify the wrong code page when
you open a table that isn't marked with a code page, run
CPZERO.PRG to reset the table's code page to zero. CPZERO
is a FoxPro program that is automatically installed in
your FoxPro directory. Before you run CPZERO, make sure
that the table whose code page you'll reset isn't open.
When you run CPZERO, you are prompted for the name of the
table to modify.
9 Corrections to the Help File
------------------------------
Configuring FoxPro and International/X-Platform Topics
------------------------------------------------------
These FoxPro 2.5b help file topics contain the following
line:
"Note that MODIFY STRUCTURE also marks a table with the
current code page."
This line is incorrect and should read:
"Note that MODIFY STRUCTURE doesn't mark a table with the
current code page. Rather, it preserves the table's
existing code page mark."
International/X-Platform Topic
------------------------------
This help file topic contains the following line:
For example, if the current collation sequence is GENERAL,
both of these return true (.T.):
"Straße" = "Strasse"
and
"Straße" == "Strasse"
"Straße" == "Strasse" will always return .F., not .T. as
it states in this topic. A strict machine comparison is
performed by ==. All characters in each string are
compared, including trailing blanks. For more information
about comparisons using = and ==, see SET EXACT in the
Language Reference or the FoxPro help facility.
----------------------------------------------------------
=================
End of README.TXT
=================
README.TXT
**********************************************************
Microsoft(R) FoxPro(R) Version 2.5
Library Construction Kit for Windows(TM)and MS-DOS(R)
(C)1993 Microsoft Corporation. All Rights Reserved.
This file contains additions and corrections to the
FoxPro Library Construction Kit Developer's Guide.
**********************************************************
========
CONTENTS
========
Part Description
---- -----------
1 Additions to Documentation Since Printing
2 Corrections to Documentation Since Printing
----------------------------------------------------------
=================================================
Part 1: Additions to Documentation Since Printing
=================================================
The EXAMPLES directory contains a FoxPro database with all
the example code that is used in the manual. Simply
search for the function with example code you wish to
copy and then extract the code from the memo field. You
are free to use this code in your own applications.
-----------------------------------------------------------
The following function has been added:
WHANDLE _WMainWindow( )
Description:
_WMainWindow( ) returns the WHANDLE of the main FoxPro
window in FoxPro for Windows or of the FoxPro desktop
in FoxPro for MS-DOS.
Example:
The following example writes a message to the main FoxPro
window in FoxPro for Windows or to the FoxPro desktop in
FoxPro for MS-DOS.
FoxPro Code:
SET LIBRARY TO WMAIN
= EXWMAIN()
C Code:
#include <pro_ext.h>
void FAR example(ParamBlk FAR *parm)
{
WHANDLE wh = _WMainWindow();
_WPutStr(wh, "\nThis is the main FoxPro window or desktop.");
}
FoxInfo myFoxInfo[] = {
{"EXWMAIN", example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
===================================================
Part 2: Corrections to Documentation Since Printing
===================================================
Page 2: In the Reverse.C example:
The comment "/* Check to see if we can allocate the memory
needed. */" is missing the end comment marker */.
The three-line comment "Since this routine doesn't call
any functions that cause memory reorganization . . .
prior to de-referencing them (_HandToPtr)" is missing the
single line comment marker // in the second and third
lines.
This statement:
for (i = 0; i << parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
should be:
for (i = 0; i < parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
Change the "<<" in the original example to "<".
----------------------------------------------------------
Page 5: The Value Structure Fields table should include
the General FoxPro data type. The applicable fields and
their values are listed below:
val.ev_type = 'G'
val.ev_width = FCHAN
val.ev_long = length of general field
val.ev_real = offset of general field
----------------------------------------------------------
Page 6: The data type FPFI, a FAR pointer to a function
returning Int, is mistakenly listed as "FPDI".
----------------------------------------------------------
Page 7: In addition to the Point, Rect and EventRec data
structures, PointP and RectP should be included. PointP
and RectP are identical to Point and Rect except that
Point and Rect coordinates are in rows and columns while
PointP and RectP coordinates are in pixels.
----------------------------------------------------------
Page 12: The example
if (parm->p[0].val.ev_type='C'
x=parm->p[0].val.ev_length
should be:
if (parm->p[0].val.ev_type=='C')
x=parm->p[0].val.ev_length;
Use an expression ==, a closed parenthesis at the end of
the first line, and a semicolon at the end of the second
line.
----------------------------------------------------------
Page 22: When compiling a .PLB library in Microsoft C7 or
Visual C/C++, you need to use the following command line:
CL /O /ALw /Zp /GW
When linking a .PLB library in Microsoft C7 or C8, you
need to use the /NOE and /NONULLS switches.
Leaving out /NOE can cause redefinition errors. Leaving
out /NONULLS will cause FoxPro not to recognize the .PLB
as a valid library.
----------------------------------------------------------
Page 25: The section heading for the makefile on this page
is incorrect. It should say "Microsoft C/C++ Makefile for
MS-DOS" instead of "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 26: The makefile on this page should have the
following section heading: "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 39: The example doesn't work as intended in all
cases. To have it work, you need to change the following
line:
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
to:
(( char FAR *) _HandToPtr(p0.ev_handle))[p0.ev_length - 1] = '\0';
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length - 1] = '\0';
----------------------------------------------------------
Page 85: The following information applies to the
_DBSeek( ) function: The struct Value passed to _DBSeek( )
(via a pointer) must be of ev_type == 'N' when seeking a
numeric field even if that field has 0 decimal digits.
If the struct Value has an ev_type of 'I', _DBSeek( )will
return the internal error number -302, "Data type
mismatch."
----------------------------------------------------------
Page 109: The struct EDENV documented with _EdGetEnv( ) isn't
correct. The actual structure from PRO_EXT.H appears
as follows:
NOTE: (R) indicates that this member is read-only and
can't be set using _EdSetEnv( ).
(B) indicates that these members takes on one of
two Boolean values: 1 = true or 0 = false.
typedef struct
{
char filename[MAXFILENAME]; // (R)
EDPOS length; // # of bytes in text. (R)
unsigned short lenLimit; // Max allowable length. 0 = infinite.
unsigned short dirty, // Has the file been changed? (R, B)
autoIndent, // Auto indent? (B)
backup, // Make backup files? (B)
addLineFeeds, // Add line feeds when saving? (B)
autoCompile, // Shall we auto compile this thing? (B)
addCtrlZ, // Add end of file ctrl-z? (B)
savePrefs, // Save edit preferences? (B)
dragAndDrop, // Allow drag-and-drop. (B)
readOnly, // 0 = not r/o, 1 = file is r/o,
// 2 = file is r/w, opened r/o,
// 3 = file is r/o, opened r/o. (R)
status, // Display status bar? (B)
lockPrefs, // Can update the preferences ? (B)
insertMode; // (B)
short wrap; // If < 0, new line at Return only.
EDPOS selStart; // Selection start. (R)
EDPOS selEnd; // Selection end. (R)
EDPOS selAnchor; // Selection anchor point. (R)
short justMode; // Justification (0 = left, 1 = right, 2 = center).
short tabWidth; // TAB size in spaces.
char fontName[MAXFONTNAME];
short fontSize;
short fontStyle; // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic.
short kind; // Kind of editor session; EDCOMMAND, EDPROGRAM, etc.
// defined in pro_ext.h. (R)
} EDENV;
----------------------------------------------------------
Page 122: The syntax for _EdOpenFile() is missing the
"mode" argument. It should read:
_EdOpenFile(TEXT *filename, int mode)
TEXT *filename; /* File to open. */
int mode; /* Mode option. */
The following Mode options are available:
FO_READONLY, FO_WRITEONLY, FO_READWRITE.
----------------------------------------------------------
Page 315: zoomEvent is a FoxPro for MS-DOS event. You
can't trap for this event in FoxPro for Windows.
----------------------------------------------------------
In an EventHandler in the FoxPro for Windows Library
Construction Kit, if you make a call to FoxPro which
generates another event, the original event record may be
changed. This won't happen in the FoxPro for MS-DOS
Library Construction Kit. The following example
illustrates this:
#include <pro_ext.h>
int g_eventid = 0; // Our event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
Point pt;
switch (ev->what) // Determine the event type.
{
case keyDownEvent:
if (theWindow == _WMainWindow())
return NO;
else
{
pt.h = 35;
pt.v = 10;
// This causes the event handler to be re-entered.
_WSize(theWindow, pt);
}
_PutStr("\nDone with the keyDownEvent");
break;
case sizeEvent:
_PutStr("\nSize Event received.");
break;
default:
return NO;
}
return NO;
}
FAR EventExit()
{
_DeActivateHandler(g_eventid); // Get rid of our event handler.
}
FAR Quotes(ParamBlk FAR *parm)
{
// Set up our event handler.
g_eventid = _ActivateHandler(EventHandler);
}
FoxInfo myFoxInfo[] = {
{"QUOTES", Quotes, 0, ""},
{"EVENTEXIT", EventExit, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
=================
End of README.TXT
=================
README.TXT
**********************************************************
Microsoft(R) FoxPro(R) Version 2.6 Professional Edition
Library Construction Kit for Windows(TM) and MS-DOS(R)
(C)1994 Microsoft Corporation. All Rights Reserved.
This file contains additions and corrections to the
FoxPro Library Construction Kit Developer's Guide.
**********************************************************
=========
CONTENTS
=========
Part Description
---- -----------
1 Installation
2 Additions to LCK Developer's Guide Since Printing
3 Corrections to LCK Developer's Guide Since Printing
----------------------------------------------------------
=====================
Part 1: Installation
=====================
Installing the Professional Edition of FoxPro 2.6
-------------------------------------------------
The Professional Edition of FoxPro 2.6 includes the
following kits:
Distribution Kit
Connectivity Kit
Library Construction Kit
WorkGroup Extensions (FoxPro for Windows only)
To install the Professional Edition of FoxPro, first install
the main FoxPro product, then follow the installation
instructions included with each individual kit. The order
in which the kits are installed does not matter.
----------------------------------------------------------
==========================================================
Part 2: Additions to LCK Developer's Guide Since Printing
==========================================================
In the LCK Developer's Guide, references to FoxPro 2.5
should be read as references to FoxPro 2.6.
----------------------------------------------------------
The EXAMPLES directory contains a FoxPro database with all
the example code that is used in the manual. Simply
search for the function with example code you wish to
copy and then extract the code from the memo field. You
are free to use this code in your own applications.
-----------------------------------------------------------
The following function has been added:
WHANDLE _WMainWindow( )
Description:
_WMainWindow( ) returns the WHANDLE of the main FoxPro
window in FoxPro for Windows or of the FoxPro desktop
in FoxPro for MS-DOS.
Example:
The following example writes a message to the main FoxPro
window in FoxPro for Windows or to the FoxPro desktop in
FoxPro for MS-DOS.
FoxPro Code:
SET LIBRARY TO WMAIN
= EXWMAIN()
C Code:
#include <pro_ext.h>
void FAR example(ParamBlk FAR *parm)
{
WHANDLE wh = _WMainWindow();
_WPutStr(wh, "\nThis is the main FoxPro window or desktop.");
}
FoxInfo myFoxInfo[] = {
{"EXWMAIN", example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
===================================================
Part 3: Corrections to LCK Developer's Guide Since
Printing
===================================================
Page 2: In the Reverse.C example:
The comment "/* Check to see if we can allocate the memory
needed. */" is missing the end comment marker */.
The three-line comment "Since this routine doesn't call
any functions that cause memory reorganization . . .
prior to de-referencing them (_HandToPtr)" is missing the
single line comment marker // in the second and third
lines.
This statement:
for (i = 0; i << parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
should be:
for (i = 0; i < parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
Change the "<<" in the original example to "<".
----------------------------------------------------------
Page 5: The Value Structure Fields table should include
the General FoxPro data type. The applicable fields and
their values are listed below:
val.ev_type = 'G'
val.ev_width = FCHAN
val.ev_long = length of general field
val.ev_real = offset of general field
----------------------------------------------------------
Page 6: The data type FPFI, a FAR pointer to a function
returning Int, is mistakenly listed as "FPDI".
----------------------------------------------------------
Page 7: In addition to the Point, Rect and EventRec data
structures, PointP and RectP should be included. PointP
and RectP are identical to Point and Rect except that
Point and Rect coordinates are in rows and columns while
PointP and RectP coordinates are in pixels.
----------------------------------------------------------
Page 12: The example
if (parm->p[0].val.ev_type='C'
x=parm->p[0].val.ev_length
should be:
if (parm->p[0].val.ev_type=='C')
x=parm->p[0].val.ev_length;
Use an expression ==, a closed parenthesis at the end of
the first line, and a semicolon at the end of the second
line.
----------------------------------------------------------
Page 22: When compiling a .PLB library in Microsoft C7 or
Visual C/C++, you need to use the following command line:
CL /O /ALw /Zp /GW
When linking a .PLB library in Microsoft C7 or C8, you
need to use the /NOE and /NONULLS switches.
Leaving out /NOE can cause redefinition errors. Leaving
out /NONULLS will cause FoxPro not to recognize the .PLB
as a valid library.
----------------------------------------------------------
Page 25: The section heading for the makefile on this page
is incorrect. It should say "Microsoft C/C++ Makefile for
MS-DOS" instead of "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 26: The makefile on this page should have the
following section heading: "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 39: The example doesn't work as intended in all
cases. To have it work, you need to change the following
line:
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
to:
(( char FAR *) _HandToPtr(p0.ev_handle))[p0.ev_length - 1] = '\0';
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length - 1] = '\0';
----------------------------------------------------------
Page 85: The following information applies to the
_DBSeek( ) function: The struct Value passed to _DBSeek( )
(via a pointer) must be of ev_type == 'N' when seeking a
numeric field even if that field has 0 decimal digits.
If the struct Value has an ev_type of 'I', _DBSeek( )will
return the internal error number -302, "Data type
mismatch."
----------------------------------------------------------
Page 109: The struct EDENV documented with _EdGetEnv( ) isn't
correct. The actual structure from PRO_EXT.H appears
as follows:
NOTE: (R) indicates that this member is read-only and
can't be set using _EdSetEnv( ).
(B) indicates that these members takes on one of
two Boolean values: 1 = true or 0 = false.
typedef struct
{
char filename[MAXFILENAME]; // (R)
EDPOS length; // # of bytes in text. (R)
unsigned short lenLimit; // Max allowable length. 0 = infinite.
unsigned short dirty, // Has the file been changed? (R, B)
autoIndent, // Auto indent? (B)
backup, // Make backup files? (B)
addLineFeeds, // Add line feeds when saving? (B)
autoCompile, // Shall we auto compile this thing? (B)
addCtrlZ, // Add end of file ctrl-z? (B)
savePrefs, // Save edit preferences? (B)
dragAndDrop, // Allow drag-and-drop. (B)
readOnly, // 0 = not r/o, 1 = file is r/o,
// 2 = file is r/w, opened r/o,
// 3 = file is r/o, opened r/o. (R)
status, // Display status bar? (B)
lockPrefs, // Can update the preferences ? (B)
insertMode; // (B)
short wrap; // If < 0, new line at Return only.
EDPOS selStart; // Selection start. (R)
EDPOS selEnd; // Selection end. (R)
EDPOS selAnchor; // Selection anchor point. (R)
short justMode; // Justification (0 = left, 1 = right, 2 = center).
short tabWidth; // TAB size in spaces.
char fontName[MAXFONTNAME];
short fontSize;
short fontStyle; // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic.
short kind; // Kind of editor session; EDCOMMAND, EDPROGRAM, etc.
// defined in pro_ext.h. (R)
} EDENV;
----------------------------------------------------------
Page 122: The syntax for _EdOpenFile() is missing the
"mode" argument. It should read:
_EdOpenFile(TEXT *filename, int mode)
TEXT *filename; /* File to open. */
int mode; /* Mode option. */
The following Mode options are available:
FO_READONLY, FO_WRITEONLY, FO_READWRITE.
----------------------------------------------------------
Page 315: zoomEvent is a FoxPro for MS-DOS event. You
can't trap for this event in FoxPro for Windows.
----------------------------------------------------------
In an EventHandler in the FoxPro for Windows Library
Construction Kit, if you make a call to FoxPro which
generates another event, the original event record may be
changed. This won't happen in the FoxPro for MS-DOS
Library Construction Kit. The following example
illustrates this:
#include <pro_ext.h>
int g_eventid = 0; // Our event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
Point pt;
switch (ev->what) // Determine the event type.
{
case keyDownEvent:
if (theWindow == _WMainWindow())
return NO;
else
{
pt.h = 35;
pt.v = 10;
// This causes the event handler to be re-entered.
_WSize(theWindow, pt);
}
_PutStr("\nDone with the keyDownEvent");
break;
case sizeEvent:
_PutStr("\nSize Event received.");
break;
default:
return NO;
}
return NO;
}
FAR EventExit()
{
_DeActivateHandler(g_eventid); // Get rid of our event handler.
}
FAR Quotes(ParamBlk FAR *parm)
{
// Set up our event handler.
g_eventid = _ActivateHandler(EventHandler);
}
FoxInfo myFoxInfo[] = {
{"QUOTES", Quotes, 0, ""},
{"EVENTEXIT", EventExit, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
=================
End of README.TXT
=================
[ BIG-5 SOLUTION ] 說明
────────────────────────────
※前言:
中文BIG-5 內碼系統與英文軟體一直存在著邊框字元衝碼
的問題。而在 FOXPRO 中這個問題也同樣存在,雖然在設計程
式時可使用一些自定函數來畫框;但是 FOXPRO 內部許多命令
、函數中便內含著畫框字元,為了避開這個衝碼問題,也同時
放棄了許多好用又有效率的工具,使得 FOXPRO 這套資料庫的
工具遜色不少。
雖然有人使用倚天碼來解決此項問題,但是倚天碼雖然不
會有邊框的困擾,但是卻在 ASCII(141) 這個碼上出現問題,
主要原因是在於該碼是 FOXPRO 的控制碼,在輸入中文字時會
被系統吃掉這個字元,如此反而又造成更大的麻煩出來。
本套軟體雖然稱之為 BIG-5 SOLUTION 但是並不僅限制在
BIG-5 內碼的範圍之內,如果使用其它的內碼系統(如:倚天
碼、公會碼....等)幾乎也不會有衝碼的現象。所以使用者可
以安心的使用它來開發軟體。
※適用範圍:
(1) Fox Holding 出版的 FOXPRO 2.0( 單機版 )。
(2) Fox Holding 出版的 FOXPRO 2.0( 網路版 )。
(3) MicroSoft 出版的 FOXPRO 2.0( 單機版 )。
(4) MicroSoft 出版的 FOXPRO 2.0( 網路版 )。
(5) MicroSoft 出版的 FOXPRO 2.5( DOS 版 )。
以上均包含 Distrbution Kit 與 FOXHELP 說明的衝碼。
※適用中文系統:
(1) 倚天中文系統。
(2) 震漢中文系統。
(3) 國喬中文系統(需載入 ETMODE.COM)。
※軟體內容:
A.原始磁片內容
**** 第一片 ****
(1)INSTALL.COM 安裝程式
(2)SOLBIG5.LSC 本軟體封裝檔
**** 第二片 ****
(3)DEMO20.APP 範例程式 FOR V2.0
20.APP
(4)DEMO25.APP 範例程式 FOR V2.5
25.APP
B.安裝後內容
(1)TRAN .EXE 轉碼作業主程式
(2)FONTASC.COM 轉換中文系統英文字形 (DOS)
(3)TFONT20.PLB 轉換中文系統英文字形
( FOXPRO V2.0 程式撰寫用 )
(4)TFONT25.PLB 轉換中文系統英文字形
( FOXPRO V2.5 程式撰寫用 )
(5)README .SOL 本軟體說明
(6)DEMO20.APP ─┬─ 範例程式 FOXPRO V20(於第二片,請自行 COPY)
20.APP ─┘
DEMO25.APP ─┬─ 範例程式 FOXPRO V25
25.APP ─┘
※本軟體所轉換的檔案:
FOXPRO FOXPRO FOXPRO
V2.0 V2.0 V2.5
單機版 網路版 DOS 版
┌──┴──┐ ┌──┴──┐ ┌──┴──┐
FOXPRO.EXE FOXPROL.EXE FOXPRO.EXE
FOXPRO.OVL FOXPROL.OVL FOXPRO.OVL
FOXPROX.EXE FOXPROLX.EXE FOXPROX.EXE
FOXPRO.ESL FOXPRO.ESL FOXPRO.ESL
FOXPRO.ESO FOXPRO.ESO FOXPRO.ESO
FOXPROX.ESL FOXPROX.ESL FOXPROX.ESL
FOXPRO.LIB FOXPRO.LIB FOXPRO.LIB
FOXPROX.LIB FOXPROX.LIB FOXPROX.LIB
FOXHELP.DBF FOXHELP.DBF FOXHELP.DBF
FOXHELP.FPT FOXHELP.FPT FOXHELP.FPT
FOXHELP.FPT FOXHELP.FPT FOXHELP.FPT
FOXHELP.FPT FOXHELP.FPT FOXHELP.FPT
GENMENU.PRG GENMENU.PRG GENMENU.PRG
GENSCRN.PRG GENSCRN.PRG GENSCRN.PRG
GENXTAB.PRG GENXTAB.PRG GENXTAB.PRG
TRANSPRT.PRG
※注意事項:
(1) 使用本轉碼軟體之前必需將 FOXPRO 安裝完畢,如想一併
轉換 Distrbution Kit,也要在事先將其安裝好。
(2) 使用本產品轉換後的 FOXPRO 系統,在進入中文之後,請
先執行 FONTASC.COM來轉換中文系統的字形之後,再執行
FOXPRO,如此便不會再有中文衝碼的問題,如果您想要在
程式內直接轉換中文系統的字形,請使用 TFONT20.PLB或
TFONT25.PLB。
(3) 本轉碼程式為防轉換時期的安全性(如轉換中途斷電),
所以不會覆蓋原安裝好的 FOXPRO 系統,僅會在轉換的同
時再行複製一份,所以在使用時必需要有相當的硬碟空間
(若完全轉換則約需12M的儲存空間)。
(4) FOXPRO各檔案於轉換完成後,必須拷貝至原來 FOXPRO 的
目錄之下,或者是將 FOXPRO 其它檔案拷貝至轉換過的檔
案所在目錄之下,不論你選擇何種方式,請一定要保持原
FOXPRO系統的完整架構。
(5) 在印表時若要使用改碼之後的框線,請先設定 ETCTL/P:C
(假設是倚天中系統),即指定列印ASC II字形時,使用
中文系統所提供的字形。但因中文系統限制了印表框線連
接的碼別,故仍無法列印出連接的框線。在此仍建議您在
列印時,請儘量使用中文所提供的特殊字元邊框。
(6) 換碼程式執行時最少需要 425 K的主記憶體,而且在開機
組態檔 CONFIG.SYS 中,FILES = 40以上,BUFFERS = 30
以上,否則程式將難以執行。
(7) 轉碼程式在轉換時無需進入中文系統,執行時請放掉中文
系統,留出較大的記憶體以供程式使用,如此可以加快一
些轉換的速度。
※安裝 BIG5 SOLUTION 的步驟:
(1) 先以 DOS 開機。
(2) 將原始磁片置入軟碟中(A碟或B碟均可)。
(3) 在DOS 系統提示號下鍵入以下指令:
┌────────────────────────┐
│C:\>A:INSTALL A:\ C:\BIG5.SOL\ │
│ └─┬──┘ │ │
│ ↓ ↓ │
│ 原始磁片所在位置 所欲安裝的磁碟機名及目錄 │
└────────────────────────┘
(4) 安裝程式開始執行時,首先會顯示本軟體標示畫面,在按
下任意鍵之後,便正式開始安裝。
(5) 系統安裝時,會出現下列畫面:
[ INSTALL BIG5 SOLUTION ]
=====================================
Uncompress => C:\BIG5.SOL\TRAN.EXE
Uncompress => C:\BIG5.SOL\TFONT20.PLB
Uncompress => C:\BIG5.SOL\TFONT25.PLB
Uncompress => C:\BIG5.SOL\FONTASC.COM
Uncompress => C:\BIG5.SOL\README.SOL
=====================================
[ SOLBIG5 INSTALL O.K. ! ]
(6) 等到DOS 系統提示號重新出現時,即完成安裝動作。
※使用說明:
A.TRAN.EXE(轉碼作業主程式)
☉功能介紹:針對 FOXPRO 系統作轉換處理。
☉使用方式:
(1)在系統提示號下鍵入 TRAN 即進入本程式。
(2)接著輸入 SOURCE PATH 及 TARGET PATH 的路徑資料。
※SOURCE PATH :存放 FOXPRO 原始系統的路徑。
※TARGET PATH :轉換後所產生的 FOXPRO 系統檔案存放
路徑。本目錄必需存在(即本程式不予許輸入一
個不存在的路徑,必要時請在執行前自行建立)。
※SOURTH PATH ≠ TARGET PATH,兩者路徑不可相同。
(3)視閣下所擁有的 FOXPRO 版本為何,利用←→鍵移動反
白游標至該版本位置,按下 [Enter]鍵確定。而後再以
↑↓鍵選擇所需轉換的檔案。
※[X] 或 ()表示已選定該個項目,若要取消該項目,則再
按一次 [Enter]鍵即可,顯示 [ ] 或 ( ) 即表未選擇。
(4)待完全選擇確定之後,移動游標到 < Ok > 處,接著再按
下 [Enter]鍵便開始執行轉換。如果要離開,則移動游標
至< Cancel >處,按下 [Enter]鍵,即離開本程式。
(5)程式進行轉換時,在螢幕右下方會顯示正在處理中的檔案
名稱及大小。
※FILE:尚有多少的檔案需要處理。
※[ filename ]:正在進行中的檔案名稱。
※COUNT:進行中的檔案尚有多少 Byte要處理。
(6)程式在所有選擇的檔案轉換完畢時,會在螢幕中央顯示一個
視窗提醒。
(7)轉換好的的 FOXPRO 系統之檔案均存在 TARGET PATH所指定
的目錄內,如果有必要時,可自行將本目錄下的檔案 COPY
到 SOURCE PATH指定的目錄下,覆蓋掉原始的 FOXPRO 系統
檔案。
☉備 註:
本程式僅需要執行一次,所轉換的 FOXPRO 系統便可
享有不會在中文下衝碼的快感。
B.FONTASC.COM(轉換中文系統英文字形)
☉功能介紹:在DOS系統下針對中文系統的英文字形作轉
換處理。
☉使用方式:
(1)FONTASC
直接在DOS 系統提示號或批次檔(Batch File)內,
輸入 FONTASC,程式便會直接對記憶體中的英文字形作
更動(自行檢查12 * 24 及 8 * 15 字形)。
(2)FONTASC /C
使用以 FONT.15 ( 8 * 15 )及FONT.24 (12 * 24)
為檔名的英文字形檔資料,更換系統中的英文字形。
(3)FONTASC /C [F15] [F24]
載入所指定名稱的字形檔來轉換。
EX. FONTASC /C ASCFONT.15 ASCFONT.24
↑ ↑
8*15 字形 12*24 字形
(4)FONTASC /B
將原中文系統存在記憶體中的英文字形備份至檔名
為 FONT.15 ( 8 * 15 ) 及 FONT.24 (12 * 24)兩個檔
案中。若系統中無 8 * 15 字形則不會產生 FONT.15,
同理無12 * 24 字形則不會產生 FONT.24。若磁碟現行
目錄下已有與此兩者相同檔名的檔案,則會被覆蓋掉。
(5)FONTASC /2
僅更改系統中12 * 24 的字形部份(針對24*24 中
文系統使用)。
(6)FONTASC /2 [F24]
僅載入指定的12 * 24 字形檔。
EX. FONTASC /2 ASCFONT.24
(7)FONTASC /?
顯示簡單的使用說明文件。
C.TFONT20.PLB & TFONT25.PLB(轉換中文系統英文字形)
☉功能介紹:在FOXPRO下設計程式時,針對中文系統
的英文字形作轉換處理。
☉區分說明:
(1)TFONT20.PLB :使用在 FOXPRO V2.0 系統。
(2)TFONT25.PLB :使用在 FOXPRO V2.5 系統。
☉使用方式:
(1)在所設計的程式前面鍵入下列指令:
SET LIBRARY TO TFONT25 ← 載入 TFONT25.PLB
*** 若是 FOXPRO V2.0 版,則請用 TFONT20 ***
=FONTASC() ← 更改系統英文字形
SET LIBRARY TO ← 載入 TFONT20.PLB
(2)如果傳回值是字串 "1" 則表示更換成功,"0" 則失敗。
(PS:TFONT20.PLB 會傳回值,TFONT25.PLB 不傳值)
D.DEMO.APP(範例程式)
☉功能介紹:顯示 BIG5 SOLUTION 更改後的效果,及本公司
其它API 產品的效果。
☉使用方式:
(1)請進入中文系統後,再以轉換後的 FOXPRO 系統執行。
EX. FOXPROX DEMO -T
(2)程式會自動進行,請依指示動作。
※本軟體使用邊框字元對照表:
01h( 1):�:DAh(218) 02h( 2):�:BFh(191)
03h( 3):�:C0h(192) 05h( 5):�:D9h(217)
06h( 6):�:B3h(179) 08h( 8):�:C4h(196)
09h( 9):�:C5h(197) 0Ah( 10):�:C3h(195)
0Bh( 11):�:B4h(180) 0Dh( 13):�:D8h(216)
0Eh( 14):�:C9h(201) 0Fh( 15):�:BBh(187)
13h( 19):�:C8h(200) 14h( 20):�:BCh(188)
15h( 21):�:BAh(186) 16h( 22):�:CDh(205)
17h( 23):�:CEh(206) 1Ch( 28):�:CCh(204)
7Fh(127):�:B9h(185) 80h(128):�:FEh(254)
81h(129):�:B0h(176) 82h(130):�:B1h(177)
83h(131):�:B2h(178) 84h(132):�:DBh(219)
85h(133):�:DCh(220) 86h(134):�:DDh(221)
87h(135):�:DEh(222) 88h(136):�:DFh(223)
89h(137):�:CFh(207)
────────────────────────────
設 計 者: 磐天科技有限公司 1993.04.01
☉本文所提各註冊商標均隸屬各該公司所有。
README.TXT
**********************************************************
Microsoft(R) FoxPro(R) Version 2.5
Library Construction Kit for Windows(TM)and MS-DOS(R)
(C)1993 Microsoft Corporation. All Rights Reserved.
This file contains additions and corrections to the
FoxPro Library Construction Kit Developer's Guide.
**********************************************************
========
CONTENTS
========
Part Description
---- -----------
1 Additions to Documentation Since Printing
2 Corrections to Documentation Since Printing
----------------------------------------------------------
=================================================
Part 1: Additions to Documentation Since Printing
=================================================
The EXAMPLES directory contains a FoxPro database with all
the example code that is used in the manual. Simply
search for the function with example code you wish to
copy and then extract the code from the memo field. You
are free to use this code in your own applications.
-----------------------------------------------------------
The following function has been added:
WHANDLE _WMainWindow( )
Description:
_WMainWindow( ) returns the WHANDLE of the main FoxPro
window in FoxPro for Windows or of the FoxPro desktop
in FoxPro for MS-DOS.
Example:
The following example writes a message to the main FoxPro
window in FoxPro for Windows or to the FoxPro desktop in
FoxPro for MS-DOS.
FoxPro Code:
SET LIBRARY TO WMAIN
= EXWMAIN()
C Code:
#include <pro_ext.h>
void FAR example(ParamBlk FAR *parm)
{
WHANDLE wh = _WMainWindow();
_WPutStr(wh, "\nThis is the main FoxPro window or desktop.");
}
FoxInfo myFoxInfo[] = {
{"EXWMAIN", example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
===================================================
Part 2: Corrections to Documentation Since Printing
===================================================
Page 2: In the Reverse.C example:
The comment "/* Check to see if we can allocate the memory
needed. */" is missing the end comment marker */.
The three-line comment "Since this routine doesn't call
any functions that cause memory reorganization . . .
prior to de-referencing them (_HandToPtr)" is missing the
single line comment marker // in the second and third
lines.
This statement:
for (i = 0; i << parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
should be:
for (i = 0; i < parm->p[0].val.ev_length; i++)
*(out_string--) = *(in_string++);
Change the "<<" in the original example to "<".
----------------------------------------------------------
Page 5: The Value Structure Fields table should include
the General FoxPro data type. The applicable fields and
their values are listed below:
val.ev_type = 'G'
val.ev_width = FCHAN
val.ev_long = length of general field
val.ev_real = offset of general field
----------------------------------------------------------
Page 6: The data type FPFI, a FAR pointer to a function
returning Int, is mistakenly listed as "FPDI".
----------------------------------------------------------
Page 7: In addition to the Point, Rect and EventRec data
structures, PointP and RectP should be included. PointP
and RectP are identical to Point and Rect except that
Point and Rect coordinates are in rows and columns while
PointP and RectP coordinates are in pixels.
----------------------------------------------------------
Page 12: The example
if (parm->p[0].val.ev_type='C'
x=parm->p[0].val.ev_length
should be:
if (parm->p[0].val.ev_type=='C')
x=parm->p[0].val.ev_length;
Use an expression ==, a closed parenthesis at the end of
the first line, and a semicolon at the end of the second
line.
----------------------------------------------------------
Page 22: When compiling a .PLB library in Microsoft C7 or
Visual C/C++, you need to use the following command line:
CL /O /ALw /Zp /GW
When linking a .PLB library in Microsoft C7 or C8, you
need to use the /NOE and /NONULLS switches.
Leaving out /NOE can cause redefinition errors. Leaving
out /NONULLS will cause FoxPro not to recognize the .PLB
as a valid library.
----------------------------------------------------------
Page 25: The section heading for the makefile on this page
is incorrect. It should say "Microsoft C/C++ Makefile for
MS-DOS" instead of "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 26: The makefile on this page should have the
following section heading: "WATCOM C Makefile for MS-DOS."
----------------------------------------------------------
Page 39: The example doesn't work as intended in all
cases. To have it work, you need to change the following
line:
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
to:
(( char FAR *) _HandToPtr(p0.ev_handle))[p0.ev_length - 1] = '\0';
(( char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length - 1] = '\0';
----------------------------------------------------------
Page 85: The following information applies to the
_DBSeek( ) function: The struct Value passed to _DBSeek( )
(via a pointer) must be of ev_type == 'N' when seeking a
numeric field even if that field has 0 decimal digits.
If the struct Value has an ev_type of 'I', _DBSeek( )will
return the internal error number -302, "Data type
mismatch."
----------------------------------------------------------
Page 109: The struct EDENV documented with _EdGetEnv( ) isn't
correct. The actual structure from PRO_EXT.H appears
as follows:
NOTE: (R) indicates that this member is read-only and
can't be set using _EdSetEnv( ).
(B) indicates that these members takes on one of
two Boolean values: 1 = true or 0 = false.
typedef struct
{
char filename[MAXFILENAME]; // (R)
EDPOS length; // # of bytes in text. (R)
unsigned short lenLimit; // Max allowable length. 0 = infinite.
unsigned short dirty, // Has the file been changed? (R, B)
autoIndent, // Auto indent? (B)
backup, // Make backup files? (B)
addLineFeeds, // Add line feeds when saving? (B)
autoCompile, // Shall we auto compile this thing? (B)
addCtrlZ, // Add end of file ctrl-z? (B)
savePrefs, // Save edit preferences? (B)
dragAndDrop, // Allow drag-and-drop. (B)
readOnly, // 0 = not r/o, 1 = file is r/o,
// 2 = file is r/w, opened r/o,
// 3 = file is r/o, opened r/o. (R)
status, // Display status bar? (B)
lockPrefs, // Can update the preferences ? (B)
insertMode; // (B)
short wrap; // If < 0, new line at Return only.
EDPOS selStart; // Selection start. (R)
EDPOS selEnd; // Selection end. (R)
EDPOS selAnchor; // Selection anchor point. (R)
short justMode; // Justification (0 = left, 1 = right, 2 = center).
short tabWidth; // TAB size in spaces.
char fontName[MAXFONTNAME];
short fontSize;
short fontStyle; // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic.
short kind; // Kind of editor session; EDCOMMAND, EDPROGRAM, etc.
// defined in pro_ext.h. (R)
} EDENV;
----------------------------------------------------------
Page 122: The syntax for _EdOpenFile() is missing the
"mode" argument. It should read:
_EdOpenFile(TEXT *filename, int mode)
TEXT *filename; /* File to open. */
int mode; /* Mode option. */
The following Mode options are available:
FO_READONLY, FO_WRITEONLY, FO_READWRITE.
----------------------------------------------------------
Page 315: zoomEvent is a FoxPro for MS-DOS event. You
can't trap for this event in FoxPro for Windows.
----------------------------------------------------------
In an EventHandler in the FoxPro for Windows Library
Construction Kit, if you make a call to FoxPro which
generates another event, the original event record may be
changed. This won't happen in the FoxPro for MS-DOS
Library Construction Kit. The following example
illustrates this:
#include <pro_ext.h>
int g_eventid = 0; // Our event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
Point pt;
switch (ev->what) // Determine the event type.
{
case keyDownEvent:
if (theWindow == _WMainWindow())
return NO;
else
{
pt.h = 35;
pt.v = 10;
// This causes the event handler to be re-entered.
_WSize(theWindow, pt);
}
_PutStr("\nDone with the keyDownEvent");
break;
case sizeEvent:
_PutStr("\nSize Event received.");
break;
default:
return NO;
}
return NO;
}
FAR EventExit()
{
_DeActivateHandler(g_eventid); // Get rid of our event handler.
}
FAR Quotes(ParamBlk FAR *parm)
{
// Set up our event handler.
g_eventid = _ActivateHandler(EventHandler);
}
FoxInfo myFoxInfo[] = {
{"QUOTES", Quotes, 0, ""},
{"EVENTEXIT", EventExit, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};
----------------------------------------------------------
=================
End of README.TXT
=================
Icon Make-It Icon Hear-It
Version 1.0
December 2, 1992
Welcome to version 1.0 of Icon Make-It.
Please read through this README.TXT file. It contains important information
not available when the manual was printed.
Icon Hear-It Lite:
This version of Icon Make-It contains a "Lite" version of our commercial
product Icon Hear-It. Hear-It Lite, contains some but not all of the
functionality of the full version. If you would like more information
on Icon Hear-It, please call Moon Valley Software at 602-375-9502.
Sound in Icon Hear-It Lite
If you do not hear any sound please try assigning the sound again.
If that doesn't work, check and make sure the HEARITFX
directory exists beneath Windows.
You can erase all or some of the files in HEARITFX without damaging
Icon Hear-It Lite. But, you will lose any of the preattached sounds whose
file you have deleted or moved. However, after relocating this directory
you can reattach these sounds.
Icon Hear-It Lite supports all .wav files. You can use your own sounds
with Icon Hear-It by clicking through the directory list boxes to the
directory that contains your .wav files and following the instructions
outlined in the User's Guide for attaching sounds.
Speaker Driver Setup
The Speaker Driver Setup push button in the Options Window works ONLY with
the speaker driver installed with Icon Hear-It. When loading, if
Icon Hear-It detects a sound board or speaker driver already on your
system, it will not allow you to use it Speaker Setup.
If you do not have a sound board or other speaker driver installed
and you still can't access the Speaker Driver Setup, you need to edit your
system.ini file and remove the line :
Wave= speakerdrivername
from underneath the [Drivers] section. The next time Icon Hear-It loads,
it will write a new "Wave = " with its own speaker driver.
Welcome to dBASE IV version 2.0
-------------------------------
This file contains important, late-breaking information about dBASE IV,
including revisions to the documentation. Information in this file
supersedes information in the dBASE IV documentation.
TABLE OF CONTENTS
-----------------
1. How to Contact Borland
2. Answers to Common Configuration Questions
3. Notes on dBASE's New High Performance Filter Optimization
4. Notes on Language Drivers
5. File-sharing in a Multi-tasking Environment
6. Running dBASE in Multiple Sessions
7. Creating User-defined Help
8. Creating Pop-ups for Data Validation
9. Improvements in International String Comparisons
10. Documentation Additions and Corrections
11. Compatibility Issues
1. HOW TO CONTACT BORLAND
-------------------------
If you have any problems with the product, please read this file and
the dBASE IV manuals first. If you still need assistance, you can get
help from the following sources:
1. CompuServe bulletin board: GO BORLAND
- Provides access to the Borland forums where you can ask technical
questions, and get the latest technical information, sample
files, utilities, and ideas.
2. File Download BBS: 1-408-439-9096 (8, N, 1)
- Contains sample files, applications, and technical information
that you can download.
3. Automated Support:
800 Automated Support (phone): 1-800-524-8420
Online Automated Support (via modem): 1-408-431-5250 (8, N, 1)
- Provides up-to-date technical information 24 hours a day, seven
days a week. Also provides product information, usage tips,
troubleshooting information, and answers to commonly-asked
questions.
4. TECHFAX service: 1-800-822-4269
- A 24-hours a day service that provides technical information
on all Borland products and delivers it to your fax machine.
5. dBASE Advisor Line: 1-900-555-1003.
- A faster, more comprehensive level of technical support. Each
call is $2.00 per minute (the first minute is free).
6. Borland Express Support Line: 1-800-524-8420
- Provides recorded answers to common questions.
7. dBASE Technical Support: 1-408-431-9060
For more information about all of the Borland Technical Support programs,
read the brochure, "Borland introduces a New Class of Technical Support,"
included with this product.
Information You Need When You Call Technical Support
----------------------------------------------------
When you call Technical Support, please have the following information
ready:
a. Product name and serial number on your original distribution disk.
Please have your serial number ready or we will be unable to process
your call.
b. Product version number.
c. Computer brand, model, and the brands and model numbers of any
additional hardware.
d. Operating system and version number. (The version number can be
determined by typing VER at the DOS prompt.)
e. Contents of your AUTOEXEC.BAT file.
f. Contents of your CONFIG.SYS file.
NOTE: You can obtain the requested information by typing the
following at the DOS prompt: DBINFO -x -o. This command
creates a file, DBINFO.TXT, which includes information on
your hardware configuration, operating system, CONFIG.SYS
and AUTOEXEC.BAT.
2. ANSWERS TO COMMON CONFIGURATION QUESTIONS
--------------------------------------------
Q1: I'm unable to start dBASE IV 2.0 under Windows 3.1. Each time I
try, I get an "Insufficient Memory" message.
A1: dBASE IV 2.0 requires approximately 4MB of virtual memory to
run. Use the following procedure to obtain information about
your system's memory and adjust memory allocation:
1) In Window's Program Manager, select About Program Manager...
from the Help menu and check the amount of free memory.
a) If you have LESS than 4MB of free memory, read step 2.
b) If you have MORE than 4MB of free memory, check the available
contiguous XMS memory by selecting the DOS prompt icon, and
typing PMINFO at the DOS prompt. This utility tells you how
much memory is available for DOS-16M programs. If it indicates
less than 3MB available memory, read step 2.
2) Increase the swap file size. To do so,
a) Choose Window's Control Panel.
b) Choose 386 Enhanced.
c) Click the Virtual Memory push button.
d) Click the Change push button.
e) Increase the value of the New Size option.
Increasing the swap file size should increase the amount of
available virtual memory.
3) If you have problems starting dBASE in multiple sessions,
close all your dBASE sessions, and type SET DOS16M=:4M at
the DOS prompt. This allocates a maximum of 4MB to each
session of dBASE.
Q2: I use Windows for Workgroups. How do I configure dBASE IV 2.0 so
that it runs optimally in this environment?
A2: Use the same memory configuration as described for Windows 3.1 in
the previous question.
Q3: Why isn't there an option to install cache during installation?
A3: dBASE IV 2.0 uses all available extended memory and no longer requires
a separate disk cache.
Q4: When I start dBASE under Windows 3.1, I get a "LOCALSHARE is currently
ON so you cannot run dBASE IV..." message followed by "Initialization
Error." What do I do?
A4: LOCALSHARE is a new Config.db setting which enables file-sharing
in a multi-tasking environment such as Windows 3.1. It is ON by
default. When you start dBASE under Windows 3.1, dBASE checks if
you have loaded SHARE.EXE, the DOS program that provides file-sharing
and locking capabilities. If SHARE.EXE is not loaded, you get the
"LOCALSHARE is currently ON so you cannot run dBASE IV..." message.
Depending on your work environment, use one of the following
procedures:
1) If you don't intend to share dBASE files in multiple dBASE
sessions or with other applications (such as Quattro), use
DBSETUP or edit the CONFIG.DB file to set LOCALSHARE=OFF.
2) If you want to share dBASE files in multiple dBASE sessions
or with other applications, install SHARE.EXE. Read your
DOS manual for instructions on how to do so.
Q5: When I start dBASE, I get a "System is not configured for the
current code page..." message. What should I do?
A5: You get this message if the code page you selected during installation
of dBASE IV 2.0 is different from your system's code page. Use the
following procedure to correct the problem:
1) At the DOS prompt, type CHCP to find out your system's code page.
2) Reinstall dBASE IV 2.0.
3) In the Code Page Value option, choose the value that matches
your system's code page. (By default, dBASE IV's installation
utility displays your system's code page value.)
Q6: I have a previous version of dBASE installed on my computer. I
want dBASE IV 2.0's installation utility to automatically overwrite
the existing files. What should I do?
A6: dBASE IV 2.0's installation utility gives you the option of
"protecting" old dBASE IV and SQL system files, or overwriting them.
Use the following procedure to overwrite the old system files:
1) During installation, select "Install Options... [KEEPDB4 SHIELDSQL]"
The installation utility displays the following options:
Protect Old dBASE IV System Files: [Yes]
Shield Existing SQL System Files: [Yes]
2) Change both options to "No" by pressing Enter when the option
is highlighted. Pressing Enter toggles the selection.
3) Press Esc to return to the previous menu.
Q7: When I try to start dBASE, I get a "Bad command or file name"
message. How do I correct this problem?
A7: dBASE may not be in your current path. Either set dBASE in the
DOS path in your AUTOEXEC.BAT file, or type the full path at the
DOS prompt.
The dBASE IV system files may be missing. Check that DBASE.EXE
exists in your dBASE home directory. If it doesn't, reinstall
dBASE IV. In the "Configuration... [dBASE SAMPLES TUTORIAL DTL
UTILS]" option, make sure that "dBASE IV System" is set to "Yes."
Q8: When I start dBASE IV, it appears in black and white. What happened
to the default colors?
A8: dBASE IV 2.0 loads in black and white in the following situations:
- You performed a network installation
- You have an existing CONFIG.DB in the dBASE home directory
(The installation utility does not overwrite or modify an
existing CONFIG.DB during installation)
- You are using a CGA monitor
To set the default screen colors, follow the instructions in the
"Setting Colors and Line Modes" section in Chapter 2 of the
"Getting Started" manual.
Q9: I'm running dBASE IV and I get a VM error 5312 or 5313. What
does this mean and what should I do?
A9: You were trying to execute an operation in low DOS memory, which
was fragmented. To correct this problem, you should reduce the
amount of low DOS memory that dBASE uses. To do so, use the
following procedure:
1. At dBASE's dot prompt, type ? MEMORY(5). This returns the
amount of memory that VMM is managing.
2. Subtract 222 from the value returned by MEMORY(5).
3. Use the resulting value as the MAXMEM value in the DBASE.VMC file.
4. If the resulting value is LESS than 1024, set MINMEM in the
DBASE.VMC file to this value also.
For example:
If ? MEMORY(5) returns 1200, set MAXMEM and MINMEM to 978 (1200 - 222).
If ? MEMORY(5) returns 1600, set MAXMEM to 1378 (1600 - 222).
3. NOTES ON dBASE'S NEW HIGH PERFORMANCE FILTER OPTIMIZATION
------------------------------------------------------------
The information in this section supplements the discussion of filter
optimization in Chapter 34 of "Programming in dBASE IV."
The following are some conditions where full optimization occurs:
- The database is in natural order and the filter condition corresponds
to an open index or order
- The database is indexed and the filter condition corresponds to the
master index
- The database is indexed on a complex character expression (for example,
firstname+lastname+address) and the filter condition corresponds to
a subset of the expression (for example, firstname or firstname+lastname)
The following table shows examples of expressions that are fully or
partially optimized:
Expressions Optimization
--------------------------------------------------------------------
INDEX ON State TAG State
SET FILTER TO State="CA" .OR. State="TN" Full
INDEX ON State+Zip TAG Statezip
SET FILTER TO State+Zip="CA95050" Full
SET FILTER TO State="WA" Full
INDEX ON State TAG State
SET FILTER TO .NOT. State="NY" Full
INDEX ON Lastname TAG Lastname
INDEX ON Year(Date_hired) TAG Year_hired
LIST FOR Year(Date_hired)=1993 .AND. Lastname="Smith" Full
INDEX ON STR(OrderNo,6)+STR(StockNo,6) TAG LineKey
LIST FOR STR(OrderNo,6)="100001" Full
SET FILTER TO State="CA" .OR. State="TN" && no index Partial
SET FILTER TO State+Zip="CA95050" && no index Partial
INDEX ON Lastname TAG Lastname
SET ORDER TO Firstname
SET FILTER TO Lastname="Smith" Partial
SET FILTER TO "Fred" $ Lastname
COUNT No
SUM Full; dBASE retains
the search results
of the previous
operation
SET FILTER TO FOUND(2) No
4. NOTES ON LANGUAGE DRIVERS
----------------------------
The information in this section supplements the discussion of language
drivers on pages 344 and 345 of the Language Reference.
dBASE IV version 2.0 supports DOS code pages (character sets) 437 and 850.
Previous versions supported only code page 437. If you decide to change to
code page 850 (the code page available, either as the default or as an
alternate, with all systems running DOS 5.0 or higher), please note the
following: dBASE files created on systems running code page 850 may appear
differently and generate unexpected results when used on a system running
code page 437, and vice versa.
This is because many of the extended ASCII (>127) characters differ between
the two code pages, and if you use these characters in your files, you will
get different results when viewing and sorting data.
To ensure data integrity, dBASE IV version 2.0 now marks each data file
(.dbf) and index file (.ndx or .mdx) with a Language Driver ID. This ID
identifies the code page and language table which the file was created with.
When you open a file, dBASE compares the language driver assigned to the
file with the system's current language driver. If the two are different,
dBASE displays a warning and gives you the option of continuing the
operation or cancelling it.
If, for example, you are currently using code page 850 and you open a
dBASE IV 2.0 data file that was created with code page 437, dBASE warns
you of mismatched language drivers. You can choose to cancel the operation
or use the file. If you use the file and it has an associated index file,
dBASE displays the warning again and prompts you to cancel the operation
or reindex the file with the current language driver. If you choose to
reindex the file, dBASE marks the index file with the new language driver ID.
It does not, however, mark the data file with the new language driver ID.
Data and index files created in previous versions of dBASE IV do not have
language driver IDs; if you open these files in dBASE IV 2.0 under code
page 437, dBASE automatically assigns the current language driver ID.
If you open these files in dBASE IV 2.0 under code page 850, dBASE prompts
you to assign, or reindex with, the current language driver ID.
The language driver ID assigned to an index file is changed each time you
reindex the file under a different language driver. The language driver ID
assigned to a data file, however, is permanent.
To "reassign" a language driver ID of a data file, use the COPY STRUCTURE
and APPEND FROM commands to create a new data file and transfer the data
under the current language driver.
NOTE: Marking a file with the new language driver ID does NOT convert
extended characters that differ between the two code pages. If
your file contains characters that differ, you should change them
to ensure data integrity.
5. FILE-SHARING IN A MULTI-TASKING ENVIRONMENT
-----------------------------------------------
Many operating systems and programs, such as OS/2, Windows, DOSSHELL,
and DESQVIEW, provide users with the capability to run dBASE in multiple
sessions and to share local files. You can now load dBASE IV in nine
different sessions (the maximum allowed), and use the same files in more
than one session. You can also share dBASE files with other applications
such as Quattro.
To support file-sharing on a local system, dBASE provides you with the
option of protecting your dBASE files from multi-tasking collisions
with a new Config.db setting, LOCALSHARE.
If you intend to use dBASE files in more than one session or application,
use LOCALSHARE=ON (the default setting) to enable file-sharing protection,
and remove EXCLUSIVE=ON or set EXCLUSIVE=OFF in your CONFIG.DB file.
When LOCALSHARE is ON, dBASE checks and ensures that your system is running
SHARE.EXE, a DOS program that provides file-sharing and locking capabilities
on your hard disk. If it detects SHARE, dBASE protects your dBASE file in
the same way it protects files in a multi-user (network) environment.
For example, dBASE will write the updates to the hard disk each time a
record is modified or created.
NOTE: SHARE limits the number of files that can be opened and the
number of locks available to your system. You can increase these
limits by using the /f and /l switches with the SHARE command.
Refer to your DOS manual for more information.
Unlike running dBASE IV in a multi-user environment, each multi-tasking
session of dBASE IV uses the same file name (TRANSLOG.LOG) for transaction
processing.
If LOCALSHARE is ON and you run dBASE under Windows without SHARE.EXE,
dBASE displays a message telling you to load SHARE.EXE. You can disable
file-sharing protection by specifying LOCALSHARE=OFF in your CONFIG.DB
file.
6. RUNNING dBASE IN MULTIPLE SESSIONS
-------------------------------------
If you load dBASE in multiple sessions, dBASE assigns a unique identifier
to each session. The identifier is a number from 1 to 9 and is added to the
user ID in a network environment. For example, in a network environment,
if a user name is "JSMITH", the first session ID is "JSMITH1". In a
single-user environment where user IDs are not used, the first session
is identified as "SESSION1".
The following commands and functions return session IDs:
ID()
USER()
LKSYS(2)
LKSYS(5)
LIST USERS
DISPLAY USERS
Session numbers are assigned and recycled, starting with the lowest
available number. Therefore, session numbers will not be in chronological
order if any sessions are closed before all nine are used. For example,
if you open five sessions, then close session 2, the next session you open
is assigned the number 2, not 6.
7. CREATING USER-DEFINED HELP
-----------------------------
The Form.gen template file lets you create user-defined Help frames.
The F1 Help key can now provide user-defined help information
for individual fields on the Edit screen. When you press F1 Help,
the information in the memo fields of a special database file
will display in a pop-up Help window. If you want to create your own
Help file, create the special database file described below.
The name of the database file must begin with the first six
characters of the name of the format file, followed by "_h.dbf".
For example, if the format file is called Entry.fmt, then the
Help file must be called Entry_h.dbf. The database file must
be created with the following structure, before you compile the
form:
Field Field Name Type Width Dec Tag
----- ---------- --------- ----- ---- ---
1 FLD_NAME Character 10 Y
2 FLD_HEADNG Character 25 N
3 FLD_HELP Memo 10 N
----------------------------------------------
Enter the names of the fields for which you want help in the Fld_name
field. You need to create an index tag named Fld_name, as follows:
INDEX ON UPPER( Fld_Name ) TAG Fld_Name
You do not need to include all the fields from the database in
the Help file, only the ones for which you want Help windows.
Enter the character string for the top frame of the Help window in the
Fld_headng field.
Enter the Help text you want displayed for each field in the Fld_help
memo field. If there is more text than will fit inside the help window,
navigation instructions are displayed inside the Help window.
8. CREATING POP-UPS FOR DATA VALIDATION
---------------------------------------
Using CREATE/MODIFY SCREEN, you can create a data validation
routine that presents a pop-up displaying the valid choices from
a lookup database file when a user enters a value that does
not match the lookup file.
To create a pop-up for data validation, start from the "Accept value when"
portion of a field's Edit Options table on the forms design screen. You
must enter the following syntax (including quotes):
"POPUP"="<database>-><fieldname> ORDER <fieldname> [REQ] [SHADOW]"
For example, to validate the Vendor_id field in Goods.dbf against the
Vendor_id field in Vendors.dbf, insert the following pop-up string in
the "Accept value when" fill-in when highlighting the Vendor_id field
in a form that uses Goods.dbf.
"POPUP" = "Vendors->Vendor_id ORDER Vendor_id REQ SHADOW"
If you want to attach an additional .AND. condition to the pop-up
validation, include the condition after the "POPUP"="..." expression.
The condition should not be delimited with quotes.
The components of this pop-up string are:
POPUP Initiates pop-up processing for this
field during EDIT.
Vendors->Vendor_id Indicates the database file to open and
the field in that database file to use
for data validation. You must have an index
tag on this field.
ORDER Vendor_id Specifies the index tag that orders this field.
REQ Shows that the user must enter something
into the field before moving on. This is
optional. If REQ is omitted, the user can
escape the pop-up and leave the field blank.
SHADOW Provides a shadowing effect underneath the
pop-ups. SHADOW is optional.
You can use a field from the .DBF file you are currently working
with or a .DBF from another work area. However, the validated file
and the lookup must be different files. Pop-ups are usually displayed
below the currently-highlighted field, unless the current field is
low on the form.
Limitations of Pop-up Validation:
- This feature is designed for EDIT and might not display as smoothly
in BROWSE. If you have a pop-up on your EDIT, the F2 toggle from EDIT
to BROWSE is disabled.
- Pop-up validation cannot be used on a multiple choice field.
- Pop-up validation cannot be used on a form created by using a view that
contains more than one file.
- In order to protect a procedure file you currently have in use, EDIT
will close it on entry and reopen it on exit. If this presents a
problem with forms that use procedures, see SET LIBRARY in the Language
Reference manual, and Sysproc and SET LIBRARY in the Programming in
dBASE IV manual.
- The first six characters of the form name and the first eight characters
of the field names with these pop-ups must be unique.
9. IMPROVEMENTS IN INTERNATIONAL STRING COMPARISONS
---------------------------------------------------
In dBASE IV 2.0, comparisons between strings with extended characters
have been improved. If you use LANGTABLES=ON and SET EXACT OFF, secondary
differences between characters are ignored. For example,
SET EXACT OFF
? "âbc" = "abc"
.T.
In previous versions of dBASE IV, ? "âbc" = "abc" would have returned .F.
We recommend that you REINDEX old files. This is important if you work
with LANGTABLES=ON, SET EXACT OFF, and INDEX ON with a FOR condition.
10. DOCUMENTATION ADDITIONS AND CORRECTIONS
------------------------------------------
This section of the README file contains new information and revisions
to the dBASE IV manuals.
"Getting Started"
-----------------
- p. 10: When you run dBASE IV under Windows 3.1 enhanced mode, use
the DOS environment variable SET DOS16M to set the maximum memory
to 4MB or higher.
- p. 11: When you run dBASE IV under OS/2, set DPMI_MEMORY_LIMIT to 4
or higher.
- p. 68: To increase or decrease user counts on a multi-user dBASE IV
system, you type ADDUSER4 at the DOS prompt, select the option you want,
and type in the requested LAN Access number. dBASE LAN Access Pack
version 2.0 no longer prompts you to insert a disk.
"Programming in dBASE IV"
-------------------------
- p. 498: VMM runs automatically when you start dBASE IV if your
system has less than 4.5MB of extended memory or if you change
VMM's default settings through the DBASE.VMC configuration file.
- p. 499: NOSWAPFILE is not a valid DBASE.VMC parameter.
- p. 501: The following are valid values for the BUFFSIZE parameter
in DBASEIV_BUFF: 1, 2, 4, 7, 8 (default), 9, 15, 20, 21, 30, 31, and 32.
The buffers are dynamically sub-allocated from 64K segments. Each
buffer allocated includes control header information. Consequently,
large buffer sizes (such as 16 and 32) which are exact divisors of
64 waste substantial amounts of memory (almost one full buffer)
because the last buffer (plus its header) doesn't fit into the
64K segment.
You can achieve optimum memory utilization by using buffer sizes
which are close to an even divisor of 63, for example, 7, 9, 15, or 21.
With these buffer sizes, extended memory is used more efficiently
since more buffers fit into the same physical space, thereby enlarging
the effective size of the buffer. This, in turn, improves overall dBASE
I/O performance.
Generally, larger buffers (such as 21) provide good performance with
sequential processing, such as scanning a database file without an
active index or copying a subset of one file to another. Smaller buffer
sizes are recommended for random file accesses.
Values 1 and 32 are seldom good settings. Values between 7 and 21
provide good overall performance. On networks, smaller values, such as
2 or 4, may improve performance.
- p. 508: The following commands should be added to the list of
commands that are optimized when the FOR clause is used: BLANK, DISPLAY,
and INDEX. SCAN is optimized only when preceded by SET FILTER TO.
"Language Reference"
--------------------
- p. 58: If you are appending from an SDF (System Data Format) file,
you can now speed up APPEND processing by using the optional NOVERIFY
argument to turn off error-checking and data validation during the APPEND.
If you use NOVERIFY, the source data is copied as-is into the target
fields. The following is an example of the APPEND FROM command with
the NOVERIFY option:
APPEND FROM Myfile TYPE SDF NOVERIFY
You should use this option only if your data is in the correct format.
Without data validation, dBASE doesn't check or convert your source data
to fit the data type of the target fields. For example, when you use
NOVERIFY, dBASE doesn't check the setting of POINT and accepts only a
period as a valid decimal point character. Therefore, if you want to
use the NOVERIFY option and get reliable results, use a period as the
decimal point in float and numeric data types in your source data.
- In previous versions of dBASE, when you used the SDF or DELIMITED clause
with the APPEND FROM command, the formfeed character was appended to the
database. Now, the formfeed is not appended to the database if it is
preceded by a carriage return.
- p. 239: If you are running dBASE in a multi-user or multi-tasking
environment, and you use REPLACE with a scope clause to replace an
indexed field, you are now required to have exclusive use of the database.
This ensures that all records are replaced properly.
- p. 275: This version of dBASE improves the internal processing of the
USE AGAIN command. If you use a database in more than one work area,
any changes made to the file in one work area are reflected in all other
work areas. Previously, if you used the same database in more than one
work area, updates to the database in one work area were not reflected
in the others.
NOTE: If you're working in a multi-tasking (LOCALSHARE=ON)
or multi-user environment, SET EXCLUSIVE must be OFF to use the USE AGAIN
command. If SET EXCLUSIVE is ON, dBASE displays a "File already open"
message.
- p. 214: If you omit <command> when you use ON SELECTION BAR, the
command previously assigned to the specified menu bar is disabled, and
a command specified with ON SELECTION POPUP is associated with the menu
bar.
- p. 216: If you omit <command> when you use ON SELECTION PAD, the
command previously assigned to the specified pad is disabled, and a
command specified with ON SELECTION MENU is associated with the pad.
- p. 287, 337, 351: The SET BLOCKSIZE command allocates the same block
size for both memo field data (.dbt files) and index data (.mdx files).
In this version of dBASE, you can specify different block sizes for memo
field blocks and index blocks by using SET MBLOCK and SET IBLOCK,
respectively. The following describes how the SET BLOCKSIZE setting
affects SET IBLOCK and SET MBLOCK, and vice versa:
- If you change the value of BLOCKSIZE through DBSETUP, dBASE IV changes
the IBLOCK and MBLOCK values to equivalent block sizes. For example,
setting BLOCKSIZE to 2 changes IBLOCK to 2 and MBLOCK to 16. Each sets
the block size to 1024 bytes.
- Through DBSETUP, you can change the IBLOCK and MBLOCK values
individually. These values do not change the BLOCKSIZE value.
For example, if you leave the BLOCKSIZE value at its default of
1 and set IBLOCK to 2 and MBLOCK to 4, dBASE creates 1024-byte
memo field blocks and 256-byte index blocks. In this case, the
IBLOCK and MBLOCK values override the BLOCKSIZE value.
- In a CONFIG.DB file, the command that appears further down the file
overrides one that appears earlier. For example, if "IBLOCK= " appears
after "BLOCKSIZE= " (and it does when DBSETUP writes to CONFIG.DB),
the IBLOCK value overrides the BLOCKSIZE value.
- Using the SET BLOCKSIZE command at the dBASE dot prompt changes IBLOCK
and MBLOCK values to equivalent block sizes.
- p. 489: MEMORY(7) returns the size, in kilobytes, of the swap file that
VMM creates. VMM always creates a swap file to improve overall
performance.
- p. 521: Setting the second option, <expL2>, of the RUN() function to
.T. tells dBASE to release all available extended memory prior to running
the specified command or program. To find out how much extended memory
is currently available to execute a command or program with RUN(), use
MEMORY(0). To determine how much extended memory dBASE will release when
you execute RUN(<expC>,.T.), use MEMORY(3).
- p. 696: Byte 29 in the database file header contains the language
driver ID.
11. COMPATIBILITY ISSUES
-------------------------
Using dBASE with DOS 5.0 DOSSHELL
---------------------------------
If you run dBASE IV under a task switcher, such as DOS 5.0 DOSSHELL, you
should install MULTI16M.EXE. This TSR is provided with dBASE IV. For
more information about this program, read MULTI16M.DOC. This file is
in your dBASE home directory.
Using dBASE with Stacker
------------------------
If you are using Stacker or another disk compression software,
the amount of disk space indicated by DIR or other commands may
be more than is actually available. This may cause you to run
out of disk space when installing dBASE. Stacker users who have
less than 10MB of disk space should run SCHECK to see how much
disk space is actually available. This information can be found
under "Bytes Free" in the STACVOL file.
Using dBASE under OS/2
----------------------
dBASE will fail to load under OS/2 unless you increase its
DPMI_MEMORY_LIMIT setting to 4 or higher.
If you run dBASE under OS/2 2.0 with the Service Pack installed, using
SET MOUSE ON and moving the mouse pointer causes dBASE IV to crash.
This is a problem with the OS/2 2.0 Virtual DOS mouse driver, which can
be resolved in one of the following ways:
1) Use the VMOUSE.SYS driver included with your original OS/2 2.0 disks.
2) Use MOUSE=OFF in your CONFIG.DB file.
3) Contact IBM OS/2 Support at 1-800-237-5511, and refer to problem
number PJ06533 to obtain the patch that corrects this problem.
Mouse drivers for Windows 3.1
-----------------------------
If you run dBASE IV 2.0 in a window session, you must use MOUSE.COM
or MOUSE.SYS version 8.20 or higher in order for the mouse to work.
You can use an older version of MOUSE.COM or MOUSE.SYS if you run dBASE
in full screen mode.
Running Multi-user dBASE IV with IBM LAN Server or Microsoft LAN Manager
------------------------------------------------------------------------
PC client workstations running multi-user dBASE IV with IBM LAN Server
or Microsoft LAN Manager may lose network connections and get the messages
"File not found," "Network busy," or "Device no longer exists" when
network traffic is heavy. This is a network problem and if it occurs,
contact IBM Technical Support or Microsoft Technical Support.
1
CONTENTS OF README.DOC FILE 17 July 1990
---------------------------
This file contains important additions to the following
dBASE IV manuals:
MANUAL PAGE
1. Getting Started With dBASE IV 2
2. Network Installation 8
3. Language Reference 9
4. Using the Menu System 11
5. Programming With dBASE IV 13
TechNotes 1.1 Release Edition
With the release of dBASE IV version 1.1, Ashton-Tate is
offering a new approach to providing its customers with even
more timely information about its products. During the final
stages of the software development process, the product docu-
mentation goes to print but we continue to get feedback from
our Beta sites and learn more about supporting the product.
We've combined a collection of this valuable Beta site
feedback together with our experience in providing timely
technical information through our TechNotes newsletters. The
TechNotes/dBASE IV version 1.1 Release Edition (enclosed with
your copy of dBASE IV version 1.1) is composed of three types
of information: feature articles, questions and answers, and
technical tips. Scan the table of contents for topics that
may fit your needs.
2
GETTING STARTED WITH dBASE IV
-----------------------------
Ashton-Tate continually improves dBASE IV in response to our
customers' comments. The following improvements and additions
were included in the product too late to be documented in the
manuals. Please update your Getting Started With dBASE IV
manual with the following information:
---------------------------
Chapter 1, "Installation," p. 1-2, Types of Installation:
The minimum disk space required for a dBASE IV installation
is currently 4.0M. A complete installation requires 5.4M for
dBASE IV, 8.2M for dBASE IV Developer's Edition.
---------------------------
Chapter 1, "Installation," p. 1-3, Installing Disk Caching: If
you have dBASE IV Developer's Edition, you can also install
caching for RunTime by using CACHERT.BAT.
If you later choose to use the "Copy RunTime" option of BUILD,
first use CACHERT to turn off caching on your local version of
RunTime before using BUILD. You can then use CACHERT to turn
caching back on after using BUILD. If you are using RunTime on
a network, see page 6 of this document for instructions on how
to turn caching on and off.
---------------------------
Chapter 1, "Installation," p. 1-3, Caching dBASE IV With Other
TSRs: If you use DBCINIT in either Autoexec.bat or Config.sys,
you should precede it by its full path name: C:\DBASE\DBCINIT in
Autoexec.bat, DEVICE=C:\DBASE\DBCINIT.EXE in Config.sys (use the
correct drive:\directory if different from C:\DBASE).
---------------------------
Chapter 1, "Installation," p. 1-4: If you encounter dif-
ficulties while installing dBASE IV, you may wish to remove
any memory-resident programs before retrying installation.
---------------------------
Chapter 1, "Installation," p. 1-4: If you manually delete the
contents of any of the dBASE IV subdirectories (such as
SQLHOME or DBNETCTL.300), you should also remove the directory
itself prior to reinstalling dBASE IV.
3
---------------------------
Chapter 1, "Installation," p. 1-5, Prompts During the Instal-
lation, bullet 3: You should not try to install dBASE IV to
the root directory (DOS only allows a certain number of files
in \). Install to a subdirectory, for example, \DBASE.
---------------------------
Chapter 2, "Configuration," p. 2-1, Installing Printer Drivers:
Users of the Hewlett-Packard LaserJet III should use the Laser-
Jet II printer driver.
---------------------------
Chapter 2, "Configuration," p. 2-8, Temporary File Directory
(DBTMP and TMP): dBASE IV must be able to open a 300K
temporary file on disk when it starts up. You can use the TMP
or DBTMP environment variables to control the location of the
temporary file, to assure that it is written in a readable and
writable drive and directory with sufficient space. If dBASE IV
cannot open this file successfully, you will receive the message
"Unable to write on temp file <drive:directory:tempfile>."
---------------------------
Chapter 3, "What's New," p. 3-3, dBASE Language Enhancements:
The following enhancements have been made to the language:
DEFINE PAD
In version 1.0, DEFINE PAD automatically added a blank space on
either side of the PROMPT message. This no longer happens in
dBASE IV version 1.1, thus allowing more direct user control of
menu PROMPTs and allowing more PROMPTs on horizontal menu bars.
This means that applications created under version 1.0 should
be regenerated through the Applications Generator; otherwise
you may see the first character of each PROMPT doubled. Spaces
can be added around the PROMPTs (inside the highlighted pad)
prior to regeneration, if desired.
---------------------------
Two new features have been added to Form.gen allowing the user
to define Help and to create pop-up validation of data.
User-Defined Help
The F1 Help key can now provide user-defined help information
for individual fields on the Edit screen. When you press F1 Help,
the information in the memo fields of a special database file
will display in a popup Help window. To take advantage of this
feature, you must create a special database file described below.
4
The name of the database file must begin with the first six
characters of the name of the format file, followed by "_H.DBF".
For example, if the format file is called ENTRY.FMT, then the
Help file must be called ENTRY_H.DBF.
The database file must have the following structure:
Field Field Name Type Width Dec Tag
----- ---------- --------- ----- ---- ---
1 FLD_NAME Character 10 Y
2 FLD_HEADNG Character 25 N
3 FLD_HELP Memo 10 N
----------------------------------------------
FLD_NAME is used to contain the names of the fields for which you
want help windows. These field names MUST be entered in uppercase
characters in this field. An index tag is required for FLD_NAME.
You do not need to include all the fields from the database in
the Help file, only the ones for which you want Help windows.
FLD_HEADNG is used to contain the character string you would like
to see at the top frame of the Help window.
FLD_HELP is a memo field that contains the Help text you want
displayed for each field. If there is more text than will fit
inside the help window, navigation instructions are displayed
inside the Help window.
---------------------------
Creating Pop-up Validation of Data (using CREATE/MODIFY SCREEN)
You can now use the screen designer to automatically create
a data validation routine that presents a popup of valid choices
if an invalid choice is entered. If a catalog is open, you can
have popups for only eight fields.
To take advantage of this feature, use the "Accept value when"
portion of a field's Edit Options table on the forms design
screen. You must enter the following syntax (including quotes):
"POPUP"="<database>-><fieldname> ORDER <fieldname> [REQ] [SHADOW]"
For example, to activate a required, shadowed popup for the
Vendor_id field in the Vendor file, insert the following popup
string in the "Accept value when" fill-in when highlighting
the field to be validated.
"POPUP" = "Vendor->Vendor_id ORDER Vendor_id REQ SHADOW"
The quotation marks must be included as shown.
5
The components of this popup string are:
POPUP Initiates popup processing for this
field during EDIT
Vendor->Vendor_id Shows which database field contains the
valid data entries
Vendor_id Specifies index tag that orders this field
REQ Shows that the user must enter something
into the field before moving on. If REQ
is left out, user can escape the popup and
leave the field BLANK or 0.
SHADOW Calls for shadowing effect on popups
A tag must have been created for the file referenced as the alias
name of the field in the popup string. REQ and SHADOW are optional.
You can use a field from the .dbf file you are currently working
with or a .dbf from another work area. Popups are usually displayed
below the currently highlighted field, unless the current field is
low on the form.
This feature is designed for EDIT and may not display as smoothly
in BROWSE. You cannot use this feature on a multiple choice field.
Any open procedure files will be closed by the EDIT and must be
reopened as needed. The first six characters of the names of the
fields with these popups must be unique.
---------------------------
ON SELECTION POPUP
A new optional keyword, BLANK, has been added. The new syntax
is as follows. Location of BLANK (if used) must be as shown:
. ON SELECTION POPUP <popup name>/ALL [BLANK] [<command>]
The BLANK keyword causes the popup to disappear after a sel-
ection is made, thus making for a cleaner-running application.
If a <command> is specified, the popup will redisplay after
the command or procedure terminates; if no <command> is
specified, the popup will remain on the screen.
---------------------------
Label Generator: a new DOS environment variable can be set
to allow you more control over top and bottom margins, how the
label page advances, and whether widow checking occurs. This is
useful for LaserJet, cut-sheet, or non-continuous form printers.
See the enclosed TechNotes 1.1 Release Edition for details.
6
---------------------------
BROWSE, EDIT, SET STATUS, SET SCOREBOARD, SET CLOCK, and
SET MESSAGE.
In dBASE IV version 1.1, the setting of STATUS is respected
in more places than it was in dBASE IV version 1.0, giving
you more control of your screen. The following section presents
an overview of how BROWSE, EDIT, and the word wrap editor work
with environment settings such as CLOCK, STATUS, and MESSAGE.
The menu bars for BROWSE, EDIT, and the word wrap editor are
hidden when STATUS is OFF. They can be displayed by pressing
F10 Menu or using Alt plus the first letter of the menu name.
If the scoreboard is displayed on the screen, the menu bar
is hidden. When the menu bar is activated, the score-
board is temporarily removed from the screen. This be-
havior lets these two elements of dBASE IV share line 0.
BROWSE, EDIT, and the word wrap editor respect the status of
CLOCK. If CLOCK is OFF, it will not be displayed. If
SET CLOCK TO has placed the clock somewhere other than the
upper-right corner, the clock will still appear in the upper
-right corner during BROWSE, EDIT, and in the word wrap editor.
It will be restored to its user-specified position after
completing the operation.
SET MESSAGE determines the contents of the message line dis-
played at the bottom of the screen regardless of its setting
to other coordinates. While the menu bar is active, menu messages
overwrite the message line (line 23), which is restored to the
SET MESSAGE string location when the menu operations terminate.
---------------------------
Chapter 3, p. 3-1, Performance Tuning Ability: The BAK environment
variable is no longer necessary. dBASE IV now assigns unique
extensions to each type of file backup. See Language Reference,
Chapter 2, p. 2-188, Modify Command/File.
---------------------------
Chapter 4, "Changes to Version 1.0 Documentation," p. 4-19
(p. 4-5 in Getting Started With dBASE IV Developer's Edition),
Using Disk Caching on a Network: In order to use the new DBCACHE
program in multi-user (network) operations, the following commands
must be performed:
7
1. ON THE SERVER:
ATTRIB -R DBASE*.*
DEL DBASE.EXE (If it exists)
REN DBASE.COM DBASE1.EXE
Now make DBASE*.* read-only and shareable as appropriate for
the particular network and do one of the following for each
local workstation:
2a. ON A LOCAL HARD DRIVE THAT HAS EXTENDED OR EXPANDED MEMORY:
Create a directory on the hard disk of each local workstation
(can be the same directory as in bullet 1, if you choose to
copy the files listed in bullet 2). Copy the three files
DBASE.CAC, EXT.OVL, and EXP.OVL to this directory on each local
hard drive. Type the following commands from the local directory:
REN DBASE.CAC DBASE.EXE
COPY EXT.OVL (or EXP.OVL, depending on memory type) DBCACHE.OVL
Add the path specification as discussed in Getting Started,
bullet 3. It's crucial that the local directory precede server!
To start dBASE IV: Type DBASE from the DOS prompt.
NOTE: Change the filenames back to their original names before
running ADDUSER4 to add or subtract users, then repeat the
above process when finished.
2b. ON A LOCAL HARD DRIVE THAT HAS NO EXTRA MEMORY:
No need to create a directory or copy any files from the server.
To start dBASE IV: Type DBASE1 from the DOS prompt.
* FOR RUNTIME USERS *
To use DBCACHE across a network using RunTime, first install
the RunTime files on the server. DO NOT DELETE RUNTIME.EXE!
REN RUNTIME.EXE RUNTIME1.EXE
Copy RUNTIME.CAC, EXT.OVL, and EXP.OVL to the local drives,
change path as above. At local drives with extra memory, type:
REN RUNTIME.CAC RUNTIME.EXE
COPY EXT.OVL (or EXP.OVL) RTCACHE.OVL
---------------------------
8
To estimate bytes of RAM accessible at the dot prompt (in
kilobytes), subtract 357K from the TOTAL AVAILABLE KILOBYTES,
multiply by the DBHEAP percentage, and add 38K. Total available
kilobytes is the number labeled "bytes free" when you run the DOS
CHKDSK command (before running dBASE IV), divided by 1,024:
dot prompt RAM =
[(total available kilobytes - 357) * DBHEAP/100] + 38
Less RAM may be available if the integrated dBASE IV cache
is turned on. The amount of RAM used by the cache depends on
the specific memory configuration of your computer.
NETWORK INSTALLATION
--------------------
dBASE IV version 1.1 supports specific versions of the following
local area networks:
* IBM PC LAN (including Token Ring)
* Novell NetWare 286 and 386
* 3 Com 3+
* Ungermann-Bass Net/One
We continually add new devices and networks to our supported
hardware list. Contact your authorized Ashton-Tate dealer for
the latest information. Or, in the United States, call the
Ashton-Tate Technical Information Line at (800) 545-9700.
Outside the United States, contact the nearest Ashton-Tate
office or refer to the International Support Guide.
NOTE: When dBASE IV is installed on Ungermann-Bass, Novell 386,
or PC LAN with Token Ring, you must install from a drive
designated A: or B: only.
---------------------------
If a user on Novell has a SHELL.CFG search level of 5 and is
mapped to another volume containing dBASE IV version 1.0, he
will be unable to install version 1.1, receiving the message
"File write error". If not MAPped to version 1.0, or search
level is 1 (the default), no error occurs.
---------------------------
If you use dBASE IV on a network with DOS 4.01, and want to
run BUILD, first install dBASE IV single-user on a local
directory. Then run BUILD from that directory.
9
LANGUAGE REFERENCE
------------------
The following changes should be made to your dBASE IV
version 1.1 Language Reference:
@ command: On page 2-14, note that the keyword REQUIRED must
immediately follow either RANGE or VALID, and only refers to
that keyword. To make REQUIRED refer to both RANGE and VALID,
use the keyword after RANGE and again after VALID.
Also on page 2-14, the second paragraph ends "...the check only
occurs when you change the record." This should read, "...the
check occurs only when you change the field; changing other
fields in the record will not cause the VALID clause and RANGE
parameters to be checked."
---------------------------
ACTIVATE SCREEN command, p. 2-27: Add the following note to
the end of the Usage section:
NOTE: If you are in a window and issue ACTIVATE SCREEN, any
text written to the screen will disappear when the window is
eventually deactivated.
To save full-screen text, DEACTIVATE all your windows before
writing text to the screen.
---------------------------
BEGIN/END TRANSACTION command, p. 2-41, Usage: For best results
when performing multi-user update operations in dBASE IV SQL,
we recommend you SET REPROCESS TO a value greater than 20 and
include the update operations within a TRANSACTION.
---------------------------
CONVERT command, p. 2-63: Once CONVERT has been used on a data-
base file, the _DBASELOCK field should be the last field in
the database structure, as shown on the MODIFY STRUCTURE screen.
Do not add fields below the _DBASELOCK field. If you need to
insert a field, move up one or more fields and press Ctrl-N.
---------------------------
COPY command, p. 2-65: Add the following note to the Usage
section relating to the WITH PRODUCTION keywords:
NOTE: When you use the COPY...WITH PRODUCTION command, be sure
to put the database in its Natural order by SET ORDER TO.
10
If you want the records in the new file to be copied in the
indexed order of the source file, you can use COPY...WITH
PRODUCTION, but be sure to REINDEX the new file before activating
an index tag for the file.
Reindexing is automatically performed if the new file is a
subset of the original (contains fewer fields or records).
---------------------------
CREATE/MODIFY STRUCTURE command, page 2-94, Tip section: The
extension of a backup file made from a .dbf database file has
been changed to .dbk. Other backup file extensions have also
been changed. See Language Reference, p. 2-188.
---------------------------
DEBUG command, page 2-102: The command option to temporarily
exit the debugger to the dot prompt is now U for sUspend (it
was X in version 1.0). To resume debugger operations, type
RESUME from the dot prompt; to cancel the debug session and
remain in the dot prompt, type CANCEL.
---------------------------
DEFINE POPUP command, p. 2-115: add the following note:
NOTE: When you use DEFINE POPUP with the PROMPT FILES or
PROMPT FIELDS options, dBASE IV reads the entire list of sub-
directories, files, or fields into memory and sorts them before
displaying the popup on the screen.
You may not be able to ACTIVATE the popup if there is inadequate
memory available to carry out the operation.
---------------------------
SET PRINTER command, p. 3-87: To clarify the discussion in
the manual, you cannot set the printer to "PRN", only to one
of the DOS devices listed: LPTn, COMn, or NUL, or to a file by
using the keyword FILE. PRN is normally equivalent to LPT1:.
Note that you CAN set the printer to FILE PRN; see comments
regarding Using the Menu System, Chapter 13, "Printing," later
in this file.
---------------------------
11
Error messages, Appendix A, p. A-7, "Database not indexed" error:
A better explanation of this message follows:
Before using this command, you must order the records with
an index. If no index exists, you need to create one.
USING THE MENU SYSTEM
---------------------
The following changes should be made to your dBASE IV
version 1.1 Using the Menu System manual:
Several of the sample files shown in the Control Center are
represented by design files only. You can create the gener-
ated code files by loading these files onto their design screens
and pressing Ctrl-End.
The files you may want to do this with are the reports ALLNAMES,
CARDREC, INVENTRY, and REGIONAL, as well as the labels INVITES
and NAMETAGS.
After generating the code files, you will notice improved perform-
ance each time you run these files.
---------------------------
Chapter 4, "Displaying, Adding, and Modifying Data," p. 4-8,
Automatic Record Locking on a Network: Delete the fourth
paragraph under step 2. BROWSE and EDIT behave exactly the
same with regard to locking.
---------------------------
Design surfaces, Chapters 9, 10, and 12: The double quote
(") may now be used on all design surfaces.
---------------------------
Chapter 10, "Creating Reports," p. 10-6, Designing the Custom
Report: If you embed page break characters within your text,
they will interact with the page settings in the Report Designer.
Best results are achieved by avoiding page breaks in your data,
instead using the Print menu settings.
---------------------------
12
Chapter 10, "Creating Reports," p. 10-8, Reports Design Screen:
To the end of this section, add the following note:
NOTE: When a band contains text or field templates, a blank
line at the bottom of the band cannot be deleted. To eliminate
this blank line, select the entire line above it using F6 Select
and F7 Move it down until it covers the last blank line.
---------------------------
Using Calculated Field Types, page 10-20: The order of
precedence of calculation of various fields shown on this
page is correct. Additional information is that if you find
that a calculated field is producing incorrect results,
try moving it, naming it if it is unnamed, or removing its
name if no other field depends upon it.
Summary fields are not always calculated with the lowest
level of precedence. The value produced by a dependent
calculated field or summary field changes according to its
relative position within the band. Fields are calculated
left to right, top to bottom.
For example, suppose a named calculated field multiplies a
summary field by a fixed amount (figuring tax on a line-item
total). If the calculated field is to the left or above the
summary field within the group summary band, it will give an
incorrect result since it multiplies the old summary field
value before the new value has been determined. Either move
the named calculated field to the right of or below the sum-
mary field, or remove the calculated field's name (unnamed
calculated fields are always calculated after all other fields).
---------------------------
Chapter 11, "Using Mailmerge," p. 11-4 Entering Text and Fields:
Append the following note after the third paragraph:
NOTE: A text file you read into the detail band cannot exceed
30K. Limit the text file size, and verify that the .frg file
has been created before attempting to run the report.
---------------------------
Chapter 13, "Printing": If a printer switch box or other
device intervenes between dBASE IV and the printer, under some
conditions dBASE IV may return the message "Printer not ready."
If this causes a problem, a good way to bypass it is to issue
the following SET command:
. SET PRINTER TO FILE PRN
13
This "tricks" DOS by sending the print output to a file which
happens to have the same name as the DOS device PRN. When
data is sent to the "file" PRN, DOS redirects it to the
printer attached to LPT1:. You can also set the dBASE IV
printer to the "files" LPTn:, COMn:, or CON (for CONsole, the
monitor). These are actually DOS devices, and will not produce
real files.
On some hardware configurations, after typing the above
command, you may receive the error message "File already
exists." If you do, first type SET SAFETY OFF, then
type the above command, and then type SET SAFETY ON.
PROGRAMMING WITH dBASE IV
-------------------------
The following changes should be made to your version 1.1
Programming With dBASE IV manual:
Specifying the Output Device, page 12-3, last paragraph: The
correct command to define an ASCII text file memory variable is
as follows: _pdriver = "ASCII.pr2" (note the quotation marks).
---------------------------
Debugger Commands, pages 15-4, 15-6, 15-7: The command to temp-
orarily quit from the debugger to the dot prompt is now U for
sUspend. Change all instances of command X to U. See earlier in
this Readme.doc file under "Language Reference" for more details.
---------------------------
Using DBLINK, page 16-5: The maximum number of procedures per
.dbo file is 963, not 953, as stated in the documentation.
---------------------------
Using BUILD, page 16-6: The last bulleted item on the page
says that you can have up to 32 active .dbo files. Add the
following statement: "A file is active if you can return to it
using the RETURN command."
Also note that all programs assembled using BUILD must have
the same extension, either .prg or .prs. You cannot mix them.
README.DOC FILE
---------------
To print a hard copy of this file, type the following at the
DOS prompt (assuming printer is attached to parallel port 1,
LPT1:).
C> COPY README.DOC LPT1:
If your printer is attached to a different port (LPT2:,
COM1:, and so forth), substitute that port for LPT1: above.
IMPORTANT INFORMATION ABOUT THE dBASE PROGRAMMER'S UTILITIES
CP, LS, RM, and SEARCH are very powerful and complex commands.
You may have to experiment to find out the correct way to supply
options, if you are using more than one option.
************ WARNING *************
Before you attempt to use RM (which can erase your entire disk),
try the syntax with LS first. The listing produced on the screen
with LS will show you which files and directories would be
removed with RM.
Always use the /query option with RM. This practice will allow
you to verify whether or not to remove the file or directory.
Pay particular attention to the /descend and /name options. Note
the following example:
WRONG: C> rm /descend *.* a:\
CORRECT: C> rm /query /descend /name *.* a:\
If you give file specifications (with ? and *) but omit the /name
option, RM will instead operate on the current drive and remove all
files from the current drive---not the specified target. In the
above example, the wrong syntax would have erased your entire C
drive.
You can protect yourself by always using the /query option and
calling RM from the drive from which you intend to remove files.
For example,
A> c:rm /query /descend /name *.* a:\
Remember, practice first with LS to become familiar with correct
syntax.
**********************************
The file called DO_NOT.USE on your distribution disk is the RM
utility. If you wish to use this utility, rename it RM.EXE.
IMPORTANT INFORMATION ABOUT THE dBASE PROGRAMMER'S UTILITIES
CP, LS, RM, and SEARCH are very powerful and complex commands.
You may have to experiment to find out the correct way to supply
options, if you are using more than one option.
************ WARNING *************
Before you attempt to use RM (which can erase your entire disk),
try the syntax with LS first. The listing produced on the screen
with LS will show you which files and directories would be
removed with RM.
Always use the /query option with RM. This practice will allow
you to verify whether or not to remove the file or directory.
Pay particular attention to the /descend and /name options. Note
the following example:
WRONG: C> rm /descend *.* a:\
CORRECT: C> rm /query /descend /name *.* a:\
If you give file specifications (with ? and *) but omit the /name
option, RM will instead operate on the current drive and remove all
files from the current drive---not the specified target. In the
above example, the wrong syntax would have erased your entire C
drive.
You can protect yourself by always using the /query option and
calling RM from the drive from which you intend to remove files.
For example,
A> c:rm /query /descend /name *.* a:\
Remember, practice first with LS to become familiar with correct
syntax.
**********************************
The file called DO_NOT.USE on your distribution disk is the RM
utility. If you wish to use this utility, rename it RM.EXE.
IMPORTANT INFORMATION
Before using your dBASE III PLUS Disks, please note the
following information before installing dBASE III PLUS:
For 256K dBASE III PLUS Operation:
dBASE III PLUS runs with DOS version 2.xx if you have 256K
installed memory in your computer. If you have a mimimum
of 384K of installed memory, dBASE III PLUS runs with DOS version
3.xx as well as version 2.xx.
For 256K operation, we provide two files, CONFI256.SYS and
CONFI256.DB, on System Disk #1. These two files set system
parameters for maximum overall performance of dBASE III PLUS in a
256K environment. Save the original CONFIG.SYS and CONFIG.DB
files (also on System Disk #1) to another disk, and then use the
DOS COPY command to copy CONFI256.SYS and CONFI256.DB to
CONFIG.SYS and CONFIG.DB respectively.
1
README.DOC 文件目录
======================= 1991.1.14
Ashton-Tate 推出 dBASE IV 1.1 版同时提供给顾客有关最新的技术信息。由于软
件开发的最后阶段, 产品的手册资料开始付印; 但我们仍不断地从我们的 Beta 测
试地点取得有关产品的反馈信息。该文件就是对未能在资料中印刷的一个修改说明。
下面是要作修改的手册:
手册名
1. 《开启 dBASE IV》
2. 《语言参考手册》
3. 《dBASE IV 菜单系统》
《开启 dBASE IV》
___________________
Ashton-Tate 根据用户的反应不断地改进 dBASE IV。下面一些就是在手册中未能
印出的产品中的改进和增加的内容。对《开启 dBASE IV》应作如下改动:
_______________________________________________________________________
第 1 章, "安装", "安装类型"一节: 安装 dBASE IV 的最小磁盘空间为 4.0 M.
全部安装则需要 5.4 M。
_______________________________________________________________________
第 1 章, "安装", "如何与其它内存常驻程序并存": 如在 Autoexec.bat 或
Config.sys 中使用 DBCINIT, 那么应该给出它的目录全称: 在 Autoexec.bat 中
用 C:\DBASE\DBCINIT, 在 Config.sys 中用 DEVICE=C:\DBASE\DBCINIT.EXE.(如
它不在 C:\DBASE 下则作相应改动。)
_______________________________________________________________________
第 1 章, "安装": 如在安装 dBASE IV 时遇到问题, 可以在重新安装之前清除内
存常驻程序。
_______________________________________________________________________
第 1 章, "安装": 如手动删除 dBASE IV 子目录下的文件, 在重新安装前也应删
除目录名。
_______________________________________________________________________
第 1 章, "安装", "安装提示"第三项: 不应把根目录指为安装 dBASE IV 的目录
(DOS 允许在根目录下存放有限个数的文件)。请安装在子目录下, 例如: \DBASE.
2
_______________________________________________________________________
第 2 章, "定制", "临时文件目录 (DBTMP 和 TMP)": dBASE IV 在启动时应能打
开一个 300 K 的临时文件, 可用 TMP 或 DBTMP 指定临时文件的存放地点, 并保
证所选的驱动器是可读写的并有足够的空间。如 dBASE IV 不能打开这个文件,则
将显示信息 "不能写数据到临时文件<驱动器:目录:临时文件>"。
_______________________________________________________________________
点提示符下估算可存取内存空间(RAM)的字节数(K)的方法为: 可用内存总数减去
357, 然后乘以 DBHEAP 的百分数, 再加上 38。可用内存总数为在进入 dBASE IV
前用 DOS 的 CHKDSK 命令看到的"bytes free"前面的数除以 1024。算式如下(单
位: 千字节):
. RAM = [(可用内存总数-357)*DBHEAP/100]+38
如安装了高速存储装置, 则可存取内存数变小。被高速存储装置占用的内存数取决
于内存的具体配置情况。
《语言参考手册》
__________________
@ 命令: REQUIRED 保留字必须跟在 RANGE 或者 VALID 之后, 且只对所跟的那个
有效。如要对 RANGE 和 VALID 均有效, 则应分别在 RANGE 和 VALID 后加该保留
字。
在第二段结尾处: "...只在修改记录时检查。" 改为 "只检查被修改的字段, 对记
录中的其它字段并不检查 VALID 子句和 RANGE 参数。"
_______________________________________________________________________
ACTIVATE SCREEN 命令: 将下列 "注" 加在 "用法" 一节最后:
注: 如在窗口中执行 ACTIVATE SCREEN 命令, 写进屏幕中的任何文本将随窗口的
关闭而消失。
为了保存全屏幕文本, 应在写文本到屏幕前关闭(DEACTIVATE)所有窗口。
_______________________________________________________________________
CONVERT 命令: 当对一数据库文件使用 CONVERT 命令后, _DBASELOCK 字段成为
该数据库的末字段, 这可通过 MODIFY STRUCTURE 看到。如要增加字段, 应该插入
(在字段间按 Ctrl-N), 而不该将其加在_DBASELOCK 字段之后。
_______________________________________________________________________
COPY 命令: "用途"一节有关 WITH PRODUCTION 保留字后加入:
注: 当使用 COPY...WITH PRODUCTION 命令时, 应将数据库用 SET ORDER TO 命令
置为自然顺序。如拷贝的文件仍需要沿用源文件的索引顺序, 则就在激活索引标识
之前对新文件重新索引 (REINDEX)。如新文件是源文件的一个子集时 (包含源文件
的一部分字段或记录), 则对新文件的重新索引自动实现。
3
_______________________________________________________________________
CREATE/MODIFY STRUCTURE 命令中 "提示" 一节: .dbf 文件的备份文件的扩展名
改为.dbk。其它备份文件的扩展名也有改动, 请查阅《语言参考手册》.
_______________________________________________________________________
DEFINE POPUP 命令, 在"用途"一节最后加入:
注: 当使用了 PROMPT FILES 或 PROMPT FIELD 选项后, dBASE IV 将一些子目录、
文件或字段读入内存, 并在显示外弹式菜单之前对它们排序。如果没有足够的内存,
就不能激活 (ACTIVATE) 外弹式菜单。
_______________________________________________________________________
ON SELECTION POPUP 命令: 加入可选保留字 BLANK, 该命令的语法为:
ON SELECTION POPUP <外弹式菜单名>/ALL [BLANK][<命令>]
BLANK 使得当某个选项被选择后本外弹式菜单从屏幕上消失, 以便留下一个相对清
晰的屏面运行命令或程序。如指定了<命令>, 该命令或过程结束后本菜单重新显示;
不然, 本菜单不消失。
_______________________________________________________________________
SET PRINTER 命令: 不能把打印机置为"PRN", 可用的 DOS 设备为 LPTn、COMn、
NUL 或一个文件 (使用保留字 FILE)。PRN 其实等同于 LPT1:。不过你可以把打印
机设为 FILE PRN。
《dBASE IV 菜单系统》
________________________
控制中心显示的样本文件只是设计文件而已, 要生成它们的代码文件就应把它们装
入设计屏然后按 Ctrl-End。
可能用到的样本文件有: ALLNAMES、CARDREC、INVENTRY 和 REGIONAL 等报表文件,
以及 INVITES、NAMETAGS 标签文件。
当生成了代码文件后, 你将发现这些文件性能上的改进。
_______________________________________________________________________
第 9、10、12 章的设计屏中可以使用双引号(")。
_______________________________________________________________________
第 9 章, "表格设计": 表格设计中增加了二个新的功能, 即定义帮助、建立数据
校验。
. 定义帮助
4
在编辑屏的数据库字段上按 F1 键可以显示帮助信息。按 F1 键后, 将在一个帮助
窗口中显示某特定数据库文件的备注字段内容, 该特定数据库必须按下面的格式建
立: 数据库文件名必须以表格文件名的前六个字符打头, 后跟"_H.DBF"。例如, 表
格文件名为 ENTRY.FMT, 那么帮助文件的名应为 ENTRY_H.DBF。该数据库文件的结
构如下:
字段号 字段名 类型 宽度 Dec 索引
______ ______ ____ ____ ___ ____
1 FLD_NAME 字符型 10 Y
2 FLD_HEADNG 字符型 25 N
3 FLD_HELP 备注型 10 N
__________________________________________________
FLD_NAME 字段用于存放帮助字段的名字。帮助字段的名字必须以大写字母输入。
FLD_NAME 是索引字段。
并不是数据库文件的所有字段都应放入帮助文件中, 只要放入需要帮助的那些字段
就行。
FLD_HEADNG 字段用于存放帮助窗口的顶行标题。
FLD_HELP 是备注字段, 用于存放帮助文本。如定义的帮助文本不能在帮助窗口中显
示完, 则将显示引导信息。
. 建立数据校验 (用 CREATE/MODIFY SCREEN)
现在可以用表格编写器自动建立数据校验列程, 以在输入非法的选择时出现一个含
合法选择的外弹式列表。在有数据目录打开情况下, 仅可对八个字段建立这样的外
弹式列表。
为了实现这一功能, 应在"E.编辑选项"的 "A.输入条件"中输入 (不要忘记双引号):
"POPUP" = "<数据库>-><字段名> ORDER <字段名>[REQ][SHADOW]"
例如, 要对 Vendor 数据库的 Vendor_id 字段设置一个外弹式列表, 就输入:
"POPUP" = "Vendor->Vendor_id ORDER Vendor_id REQ SHADOW"
该串的组成如下:
POPUP 对指定字段开始处理
Vendor->Vendor_id 指定含有合法数据的数据库字段
Vendor_id 指定对字段排序的索引标识
REQ 指明用户把光标移出本字段前必须输入某些内容。如没有
REQ, 用户可以跳过校正处理, 让字段值为空或 0。
SHADOW 实现阴影效果
其中, 索引标识是必需的, 必须预先建立好。REQ 和 SHADOW 是任选的。
所用的数据库字段可以是当前工作区中的, 也可以是另外工作区中的。外弹式列表
通常显示于所选字段的下方, 字段位置太低时例外。
本功能为 EDIT 命令而设计, 不针对 BROWSE 命令。同时也不能用于含多项选择的
字段。
5
任何打开着的过程文件将被 EDIT 关闭, 需要时重新打开。字段名的前六个字符必
须是唯一的。
_______________________________________________________________________
第 10 章, "报表设计", "设计用户报表": 如果在文本中加入换页符, 它们将与报
表编写器的页设置混淆。最好的方法是不在文本中自己加进换页符, 而通过"打印"
菜单中的选项实现。
_______________________________________________________________________
第 10 章, "报表设计", "报表设计屏幕": 这一节最后加入:
注: 当报表区中包含文本或字段样型后, 该区底部的空行不能删除。为了删除这一
空行, 可用 F6 键选择它上面的那一行, 用 F7 键下移到空行所在位置。
_______________________________________________________________________
"使用计算字段": 不同字段在计算中的优先顺序不变。要增加的说明是:
如计算字段的结果不正确, 则应该移动它的位置、对它取名 (如还没有名字) 或删
除它的名字 (如没有其它字段依赖于它)。
合计字段的优先级最低, 不常被计算。依赖字段或合计字段的值取决于它们在报表
区中的位置。各字段按从左到右、从上到下的顺序计算。
例如, 假定一有名字的计算字段由一合计字段和一固定数相乘所得。如该计算字段
在分组合计区内位于合计字段的左上方, 那么该计算字段将得到一个不正确的结果,
因为合计字段的值还没有确定。所以要么将该计算字段移到合计字段的右下方, 要
么去掉该计算字段的名字 (没有名字的计算字段在所有其它字段之后被计算)。
_______________________________________________________________________
第 11 章, "信函合并", "输入文字和字段", 第三段后加入:
注: 读入细目区的文本文件大小不得超过 30 K。应限制文本文件的大小; 运行报表
前应确认.frg 文件已生成。
_______________________________________________________________________
第 12 章, "标签设计": 增加了一个 DOS 变量, 以便于设置上边界、下边界、走
纸方式、截断检查等, 这对于用激光打印机或不连续的打印纸打印标签时比较有用。
可在 Autoexec.bat 文件或其它批处理文件中加入:
SET DTL_LBLOPT=ON
6
这样设置之后, 保存一个标签时将出现一个菜单:
┏━━━━━━━━━━━━━━━┓
┃ ┃
┃ 上边界 {} ┃
┃ 下边界 {} ┃
┃ 走纸方式 默认值 ┃
┃ 截断检查 是 ┃
┃ ┃
┃ <同意> ┃
┗━━━━━━━━━━━━━━━┛
上边界 确定页头的空行数, 空行下面开始打印标签
下边界 确定页尾的空行数, 即页内最后一个标签距页底行数
走纸方式 有三个选择: 默认值、格式走纸和行走纸。此选项的值覆盖
"打印" 菜单的"打印机控制"中的相应设置和系统内存变量
_padvance 的值。
截断检查 该选项设置后决定上下边界间打印标签的个数, 使该选项起作用
的前提是"上边界"、"下边界"已经设置。
如一页可以打印 60 行, 上、下边界均设为 3, 那么可打印行数
为 54, 如一个标签为 5 行, 标签之间间隔 1 行, 那么正好可
打印九个标签 (54/6=9)。这种情况下不需设置"截断检查"选项。
如果一个标签为 6 行, 标签之间间隔 1 行, 那么就应该设置
"截断检查"选项, 不然最后一个标签不能全部打下, 将被截断打
印。
_______________________________________________________________________
第 13 章, "打印": 如在 dBASE IV 和打印机之间增加了打印机设置, 有时 dBASE
IV 会返回信息 "打印机未准备好"。如不能打印, 可用下面的 SET 命令解决:
. SET PRINTER TO FILE PRN
这样就 "诱使" DOS 将打印输出到文件, 其实就是 DOS 设备 PRN。当数据被送入
"文件" PRN 时, 就是送到打印机 LPT1:。同理, 可以把 dBASE IV 的打印机设为
"文件" LPTn:、COMn: 和 CON (即监视器)。这些是真实的 DOS 设备, 所以不会打
印出实际的文件。
在某些硬件设置情况下, 输入上面的 SET 命令后可能会得到 "文件已存在" 的错
误信息。如这样, 可以输入 SET SAFETY OFF, 再输入上面这个命令, 然后再输入
SET SAFETY ON。
样本程序
____________
要运行样本程序可以在 dBASE 点符下输入 DO BUSINESS 或在 dbsample.bat 文
件中的 dbase 语句后加上 business, 然后在 DOS 提示符下运行该文件即可.
README.DOC 文件
___________________
为了得到本文件的一个硬拷贝, 可以在 DOS 提示符下输入: (假定打印机联在计算
机的并行 1 号口上。)
C> COPY README.DOC LPT1:
如打印机联在其它端口上 (如 LPT2:, COM1: 等等), 则用相应的端口名称替换
LPT1: 即可。
Welcome to Cayenne
------------------
This README file contains installation instructions, who to contact at
Borland, and important, last-minute information about Cayenne.
This is alpha software. You have been selected as a test site because
YOUR INPUT IS IMPORTANT! Your opinions regarding features and
implementation will help us make dBASE the best Windows database
development system. Let us know what you think.
With this release we are particularly interested in your feedback on
syntax and the object oriented extensions outlined in "Introduction to
dBASE for Windows Objects". This feedback will be used for a final
syntax review prior to beta. The CompuServe forum has proven to be a
valuable place to communicate with us and discuss Cayenne with other
testers.
****************************************************************
Please remember that this material is provided in STRICT
CONFIDENCE. Fundamental to your confidential relationship with
Borland is your duty not to disclose any information about this
product, including any description of its features or
functionality or the results of your findings to anyone other than
Borland employees. Your conscientious cooperation in this regard
is vital to our business.
During the first alpha cycle, there were several articles in the
trade press about Cayenne that quoted test sites. Please consider
your status as a test site confidential information and respect
our trust in you by responding to inquiries regarding product
status and functionality with a simple statement that it would be
a violation of your non-disclosure agreement.
****************************************************************
CONTENTS
--------
I. Overview
II. Installation
III. New In This Release and Important Notes
IV. Known Problems and Incomplete Areas
V. Using Cayenne
VI. Using Online help
VII. How to Get Help
VIII. Reporting Bugs and giving us your feedback
I. Overview
--------------
CAYENNE contains the following software components:
DBW - The dBASE command line interface where you may run
programs, test algorithms, and interactively work with tables.
IDE - The Integrated Development Environment which includes
the multi-file editor, compiler, and make and link utilities.
DBWDEBUG - The debugger has separate windows for dynamically
watching expressions, tracing code execution, examining the
program stack, and setting break points. It also provides
inspectors for data and memory variables.
WORKSHOP - Resource Workshop gives you the ability to create
dialogs, icons, system menus, and manipulate Windows resources
for use in your applications.
Source Code for the IDE is in the \DBW\EXAMPLES\IDE directory.
Object examples are in the \DBW\EXAMPLES\OOP directory.
A complete list of all files is provided in the FILELIST.DOC file in
the \DBW\DOC directory.
Cayenne is intended to run on 386 class machines or higher and requires
Windows 3.1.
The documentation provided includes:
- This README.TXT file
- SYNTAX.TXT in the \DBW\DOC directory (current language syntax)
- Printed Language Reference
- Online Help
- Introduction to dBASE for Windows Objects
When you have a question about syntax, refer to the documentation in
the following order:
- SYNTAX.TXT
- Online Help
- Language Reference
SYNTAX.TXT contains the current syntax, and the Language Reference
describes Cayenne by area of functionality. The Language Reference and
Help System contain valuable information. Your feedback on
documentation and Help is as valuable as your feedback on the software.
(Help is more complete for the Language Reference.)
II. Installation
------------------
*** IMPORTANT ***
DO NOT USE THIS PRODUCT ON A NETWORK DRIVE!!!! ( Unless you have
specifically installed Windows for network operation )
If you are using Quattro Pro for Windows or Paradox for Windows,
Cayenne's installation no longer puts the ODAPI DLLs (Borland Interbase
Engine) in your \WINDOWS\SYSTEM directory. If you are not using these
products you can delete the previous files ODAPI*.*, LD.DLL,
W3DBLIB.DLL, CONF.DLL, and *.LD from your \WINDOWS\SYSTEM directory.
To install Cayenne:
1. Backup your hard drive. We recommend this step before installing
any pre-release software that is being tested.
2. Cayenne requires about 20 megabytes of disk space during
install. Please note that if you do not have a permanent swap file
for Windows, you may have to free up more space.
3. Insert the installation disk (disk #1) into a floppy drive. (The
rest of these instructions assume you are using drive A.
Substitute the appropriate drive letter for your system).
4. Install Cayenne with the Windows executable Install.exe.
If you are installing Cayenne from DOS, make sure Windows is on
your DOS path and run Install with the following command:
C:\> a:\install
If you are installing Cayenne from Windows, choose File|Run in
the Windows Program Manager. Type A:\INSTALL, and choose OK.
5. Follow the install instructions and set options in the dialog
boxes as they appear. You will be asked to accept the default
directory structure based on C:\DBW.
Installation will proceed; insert floppy disks as prompted.
6. If you changed the default directory for ODAPI files during
install, configure the ODAPI system as follows:
A. Run the 'Configuration Utility' from the 'dBASE for
Windows' program group.
B. Push the "Advanced" button
C. Select Category "SYSTEM"
D. Select Group "INIT"
E. Select Item "LANGDRVDIR"
F. Enter the installation path for ODAPI in the Value edit
box
G. Select OK to exit the Advanced dialog box
H. Select OK to save changes
7. IMPORTANT: When the installation/configuration is complete, set the
DB and PATH environment variables. Add the following two lines to
your AUTOEXEC.BAT (change the C:\DBW directory if named differently
while installing):
SET DB=C:\DBW
PATH=C:\DBW\BIN;%PATH%
Load SHARE if you intend to share files between ODAPI and non-ODAPI
clients (like dBASE IV) at the same time.
8. Exit Windows and reboot your computer for the AUTOEXEC.BAT changes
to take effect.
III. New In This Release and Important Notes
---------------------------------------------
*** ScratchPad(tm) window ***
The command window has been replaced with the ScratchPad interactive
command window. Enter a command and press return or push the
lightning SpeedBar button to execute the current line. You can also
select multiple lines with the mouse and execute them as a block by
pressing return or pushing the lightning button.
In the future, you will be able to press Shift+Enter to move to the next
line without executing the current line. This will allow you to type
multiple lines and execute them as a selected block.
*** Form Tool ***
The current implementation of the form tool has been included to get
your feedback on usability and the user interface. Start the form tool
from the IDE tools menu or by entering "DO runform" in the scratch pad
window. Select objects to place on your form from the Object menu or
the SpeedBar. Right-click on an object to change its properties. Push
the ligtening SpeedBar button to test the form.
Sluggish performance of the form tool is known. However, your feedback
at this stage of development is very important.
*** Sample Programs ***
We are providing two sample programs. They are OO_PAINT.PRG and
SHOWOBJ.PRG. OO_PAINT is a simple paint program that demonstrates
mouse events as well as creating your own window class.
SHOWOBJ creates a DBF of some basic object properties for all
defined objects (OBJTEMP.DBF) and BROWSEs the DBF. You can easily
expand the structure of the browse table to display whatever
properties you wish. Both programs show good examples of how to
use the new OO syntax.
*** Syntax Changes ***
1. All @...GET <memvar> <object> commands have been changed to
@...<object> <memvar>. For example:
@ <row>,<col> GET <memvar> LISTBOX ...
is now
@ <row>,<col> LISTBOX <memvar> ...
Although both forms are currently allowed, this will not be true in
the final release.
2. In the future the @...TEXT commmand will be implemented as a multi-
line edit object and will be replaced by added functionality for
@...SAY.
The following dBASE IV commands are not supported.
RECOGNIZED BUT NOT SUPPORTED RECOGNIZED & IGNORED (NO-OPS)
(generate a syntax error) (compile without error)
---------------------------- -----------------------------
ASSIST ???
CALL RELEASE MODULE
CALL() SET CATALOG
LOAD SET CATALOG TO
COMPLETED() SET CLOCK
CREATE/MODIFY APPLICATION SET CLOCK TO
CREATE/MODIFY LABEL SET DBTRAP
CREATE/MODIFY QUERY SET DESIGN
CREATE/MODIFY REPORT SET DISPLAY TO
CREATE/MODIFY SCREEN SET DOHISTORY
CREATE/MODIFY VIEW SET ENCRYPTION
DGEN() SET INSTRUCTION
DEXPORT SET MENU
ISMARKED() SET PAUSE
LOGOUT SET PRECISION TO
PLAY MACRO SET SCOREBOARD
RESET SET SQL
RESTORE MACROS FROM SET TITLE
RESTORE WINDOWS
ROLLBACK()
SAVE MACROS
SAVE WINDOWS
SET
SET BLINK
SET COLOR
The dBASE IV syntax for SET KEY TO is not yet supported (Cayenne
currently supports an extended syntax)
IV. Known Problems and Incomplete Areas
-----------------------------------------
Table support:
- Accessing SQL tables
- IMPORT/EXPORT is currently limited to SDF ( fixed length field
text files ) and DELIMITED text files
- Modification of Paradox extended structures is not yet implemented
- CREATE/MODIFY STRUCTURE
does not check for duplicate fieldnames
3+/4 option not available
*** DO NOT MODIFY TABLES THAT HAVE NOT BEEN BACKED UP ***
- JOIN command
- BROWSE "search" menus
- BROWSE with an .NDX open
- Fullscreen INSERT
- Some QBE scripts may have problems
- Indexing on a UDF does not work without SET PROCEDURE TO the file
containing the UDF, even if it is in the same file
- Index operations involving RECNO() or DELETED()
International collation and language drivers:
- Only the US language driver is supported (codepage 437)
Debugger
- Inspector window support for objects and locals/statics
Windows enabling
- DDE server class not completed
- HSCROLL/VSCROLL options for commands that create graphic objects.
- Non-MDI windows without a READ object cannot have focus set to
them.
Memory Variables:
- PRIVATE for system memvars is not yet supported
- Locals/statics cannot be created at the dot prompt
Printing:
- dBASE DOS printer drivers cannot be used under Windows
- You must use the CLOSE PRINTER command to end your print job and
cause it to be spooled by Windows
IDE:
- Keyword Lookup when editing code in the Text Editor window is
not yet complete
Other areas not well tested include:
- OLE
- DDE client class (Not implemented)
V. Using Cayenne
-------------------
Program files (.PRG) are automatically compiled into object files
(.DBL) and you can run them from the Dot Prompt or compile them as
stand-alone Windows .EXE files. There are three ways to compile a
program:
1. COMPILE <filename> && from dot prompt
2. IDE Compile Menu
3. DBCW.BAT from DOS
You can then run the .EXE from Windows by adding it to the Program
Manager and clicking its icon or selecting File|Run.
The syntax for DBCW.BAT is:
DBCW [options] .prg_file [.res_file]
Options:
-c compatibility toggle
-m full macro support
-s make small .exe (that calls DBW00.DLL)
-d make DLL
-p use expanded memory (EMS) during link.
(uses extended by default)
-l path specify library search path for tlink.
-h, -?, ? this help screen
prg_file main prg file name
res_file resource to bind to executable
Note: If you use DBCW.BAT, the process creates DOS environment
variables. You may have to increase your DOS environment space. An
error is displayed and the compile stops if this is necessary. The
following example will increase the environment to 1024 bytes when
placed in your CONFIG.SYS file:
shell=c:\command.com c:\ /p /e:1024
The Integrated Development Environment (IDE) is designed to efficiently
help you edit and build Cayenne programs with its multi-file text
editor, integrated compiler/linker, and Help system. It is completely
written in dBASE. The source code is provided in the
\DBW\EXAMPLES\IDE directory.
Cayenne fully supports macro expansion. You can use full or partial
macro support. Full macros support all macro expansion but processing
is slower than partial (the default). At the Dot Prompt, -m toggles
full macros. You may also place the -m option on the
Preferences/Command line from the Program Manager.
Compatibility mode determines when you can use long variable names
(up to 30 characters) or short variable names (up to 10 characters).
When compatibility is ON, only the first 10 characters of names are
recognized. Issue a -c at the command line to toggle compatibility
mode. The default is OFF.
By default, the main window in Cayenne uses the default Windows
character set (ANSI) for output directed to the character plane. This
character set will NOT output the IBM extended ASCII (OEM) characters.
To use the OEM character set, use the -wo option on the command line
(File|Properties in the program manager.)
The complete set of switches that may be placed on the DBW.EXE
command line (File|Properties in the program manager) include:
/c compile to .lib
/p compile to .dbl
-d<token> [=value] define symbol
-i<pathlist> include file path list
-l<name> identify the language driver
-p<pathlist> include source .prg path list
-s<name> set name of startup file
-wa<number> set max # of work areas needed for dot or .exe
-wc<number> set # of columns in main window
-wm run windows maximized
-wo set screen font to windows oem font
-wr<number> set # of rows in main window
-ws put command prompt in the screen window
-t skip the splash screen
Switches that may be placed on the DBW.EXE command line (File|Properties
in the program manager) OR the Dot Prompt are:
-c toggle compatibility on/off
-f force compile even if not needed
-em<number> set maximum number of errors for compile
-m toggle macros to full
-v verbose mode
For example, to enable full macro expansion and skip the splash screen,
place the following command line in the File|Properties dialog for the
Dot Prompt.
\DBW\BIN\DBW.EXE -m -t
Switches that can be in a program are:
#option optimize +/-
#option workareas <constant>
#option compatible +/-
#option fullmacros +/-
#option maximize +/-
VI. Using Online help
-----------------------
Cayenne uses the Windows online help system. Press F1 for context
sensitive help, use the Help Menu from the system menu bar, select a
Help button in dialog boxes, or issue a HELP command from the
ScratchPad. For example, you can enter HELP BROWSE.
You can also choose the ? SpeedBar button for online Help.
If help does not find some topics, use the syntax:
HELP TOPIC <keyword expC>.
For example:
HELP TOPIC "USE"
You can also find any language help topic by opening the Help window
then using the Search button or navigating through the Language
section.
VII. How to Get Help
--------------------
If you have any problems with Cayenne, please review this file and the
cover letter. If you still have problems, you may contact us via
telephone, CompuServe, phone, fax, MCI, or regular mail.
Telephone Support:
Inside CA 1-800-231-2167
Outside CA 1-800-742-4045
Support engineers will be available from 1pm to 5pm, Monday
through Friday, Pacific Standard Time.
You may leave a message requesting assistance from 7am to 1pm
or 5pm to 6pm, Monday through Friday, Pacific Standard Time.
CompuServe:
We have a private forum for Cayenne test sites on CompuServe.
PLEASE DO NOT DISCUSS CAYENNE ON ANY OTHER ONLINE FORUM OR SERVICE.
Online support will be available in the PCS-24 forum, section 7.
To access the forum from any CIS prompt, type GO PCS-24. If you
do not have access to this forum, contact Dita Parrish using a
Borland toll-free number. You will not be billed for time spent in
this forum.
Besides the Sysops in this forum, you may send E-mail directly
to:
Art Stalk 76376,3275 Quality Assurance Manager
Ray Love 74666,565 Product Manager
MCI:
Art Stalk /Borland
Ray Love /Borland
Roger Bowman/Borland
Fax:
(408) 439-8028
Attention: Art Stalk, Cayenne QA
Mail:
Borland International, Inc.
dBASE Quality Assurance Department
P.O. Box 660001
1800 Green Hills Road
Scotts Valley, CA 95067
Attention: Art Stalk
VIII. Reporting Bugs and giving us your feedback
------------------------------------------------
You may report bugs by contacting a support engineer or posting a
message in the support forum on CompuServe. Bugs reported by facsimile
should be sent directly to the Quality Assurance department. The
Quality Assurance Fax number is (408) 439-8028.
PLEASE follow these steps when reporting a bug:
1. Narrow the bug down to the smallest section of code possible and
make note of the steps to reproduce the problem on the bug report forms
provided with your package.
2. When reporting bugs electronically, please follow the guidelines in
the Borland Beta Test Guide that accompanied the cover letter for this
product.
3. You may send us the bug information and any source code on disk(s);
please do not send us printouts of source code. Indicate whether you'd
like your disk returned.
4. If the bug is easily described over the phone, you may call to
report the bug. However, we may also ask you to send a written copy of
the bug report.
Thanks you for your participation,
- The Cayenne team
---------------------- EOF README.TXT ----------------------------
UNFOX (V2.00)
简 介
UNFOX是FOXBASE+(V2.10及
以下版本)应用程序的反编译软件,它可以直接从
.FOX, .FMX(包括加密的)文件生成扩展名
为 .PRG, .FMT的源程序。可用于: 重新生成
丢失的源代码; 维护无源代码程序; 从最终运行程序
生成统一格式的源代码, 利于存档。
UNFOX是FOXBASE+用户的必备工具。
使用方法
UNFOX 文件名 .FOX(或 .FMX) ...
说明: 1. 必须给出扩展名 .FOX或 .FMX。
2. 输出为同名文件, 扩展名为 .PRG
或 .FMT。
3. 支持通配符*,?。
希鼗� .FMX。
2. 输出为同名文件, 扩展名为 .PRG
或 .FMT。
3. 支持通配符*,?。
UNFOX (V2.5 0)
简 介
UNFOX是FOXBASE+(V2.5 0及
以下版本)应用程序的反编译软件,它可以直接从
.FOX, .FMX(包括加密的)文件生成扩展名
为 .PRG, .FMT的源程序。可用于: 重新生成
丢失的源代码; 维护无源代码程序; 从最终运行程序
生成统一格式的源代码, 利于存档。
UNFOX是FOXBASE+用户的必备工具。
使用方法
UNFOX 文件名.FOX (或.FMX) ...
说明: 1. 必须给出扩展名 .FOX或 .FMX。
2. 输出为同名文件, 扩展名为 .PRG
或 .FMT。
3. 支持通配符*,?。
******************************************************************************
******************************** FoxGraph ***********************************
******************************************************************************
Before you begin, here are a few things worth knowing about the FoxGraph
3D Graphics program (more detailed explanations are available in the manual):
NOTE:
If you are running on a COMPAQ portable with a plasma panel
screen, you must first place the machine in color graphics mode
before using FoxGraph. To do this, type at the DOS prompt,
MODE SELECT CGA.
1) There are a number of sample graphs included with the program. They
can be loaded from the LOAD GRAPH section of the program. They are useful
as examples for novice users and as templates for future work. (In
addition, the interface programs use these sample graphs as templates for
graph style which can be specified during graph Setup.)
2) If at any time you need help while running the program, pressing '?' will
call up a general help screen. You may also use F8 (Vertical Function Keys)
or F9 (Horizontal Function Keys) to provide context sensitive help from
anywhere in the program.
3) While running the program, you may change the entire color scheme of any
graph type by simply pressing the right or left arrow keys. You can also
change a smaller subset of the graph colors by pressing the up and down
arrow keys.
4) To move the Function Key icon around the screen, use the corner keys of
the cursor pad. To remove the Function Key icon altogether, use the space
bar.
5) To force the program to redraw any or all parts of a graph use the
following funcion keys:
F6(Horizontal),F2(Vertical) - Redraw the entire graph
F7(Horizontal),F4(Vertical) - Redraw just the cube and risers
F8(Horizontal),F6(Vertical) - Redraw just the text
6) For an example of the uses of the key-macro function, and for a
general overview of the program, type DEMO3D.
7) If you wish to graph data from your .dbf databases, see chapter 4 of
your manual on the FoxGraph Interface. Also, please note the following:
Make sure you have modified your PATH appropriately if you have not
installed FoxGraph in the same directory as your database
system.
An ASCII file is created from your data by the interface program based
on the graph definition you create during Setup. This ASCII
file is then read by FoxGraph; however, FoxGraph cannot read
an ASCII file with more than 256 lines of information. If
this condition occurs, you may choose to abort the Draw
procedure or continue creating a graph from a subset of your
data.
When saving graph definitions that you create with the interface, the
current macro recording mode is also saved.
8) Additional hints on recording macros:
Use Control-D to insert a half-second delay in the macro. You can put
as many Control-D's in a row as you need to produce the effect
you want to achieve.
Use Control-Q to stop writing to the macro file during a recording
session. This enables you to create a macro that does a
number of things automatically and then returns control to
the user.
******************************************************************************
******************************** FoxGraph ***********************************
******************************************************************************
Before you begin, here are a few things worth knowing about the FoxGraph
3D Graphics program (more detailed explanations are available in the manual):
NOTE:
If you are running on a COMPAQ portable with a plasma panel
screen, you must first place the machine in color graphics mode
before using FoxGraph. To do this, type at the DOS prompt,
MODE SELECT CGA.
1) There are a number of sample graphs included with the program. They
can be loaded from the LOAD GRAPH section of the program. They are useful
as examples for novice users and as templates for future work. (In
addition, the interface programs use these sample graphs as templates for
graph style which can be specified during graph Setup.)
2) If at any time you need help while running the program, pressing '?' will
call up a general help screen. You may also use F8 (Vertical Function Keys)
or F9 (Horizontal Function Keys) to provide context sensitive help from
anywhere in the program.
3) While running the program, you may change the entire color scheme of any
graph type by simply pressing the right or left arrow keys. You can also
change a smaller subset of the graph colors by pressing the up and down
arrow keys.
4) To move the Function Key icon around the screen, use the corner keys of
the cursor pad. To remove the Function Key icon altogether, use the space
bar.
5) To force the program to redraw any or all parts of a graph use the
following funcion keys:
F6(Horizontal),F2(Vertical) - Redraw the entire graph
F7(Horizontal),F4(Vertical) - Redraw just the cube and risers
F8(Horizontal),F6(Vertical) - Redraw just the text
6) For an example of the uses of the key-macro function, and for a
general overview of the program, type DEMO3D.
7) If you wish to graph data from your .dbf databases, see chapter 4 of
your manual on the FoxGraph Interface. Also, please note the following:
Make sure you have modified your PATH appropriately if you have not
installed FoxGraph in the same directory as your database
system.
An ASCII file is created from your data by the interface program based
on the graph definition you create during Setup. This ASCII
file is then read by FoxGraph; however, FoxGraph cannot read
an ASCII file with more than 256 lines of information. If
this condition occurs, you may choose to abort the Draw
procedure or continue creating a graph from a subset of your
data.
When saving graph definitions that you create with the interface, the
current macro recording mode is also saved.
8) Additional hints on recording macros:
Use Control-D to insert a half-second delay in the macro. You can put
as many Control-D's in a row as you need to produce the effect
you want to achieve.
Use Control-Q to stop writing to the macro file during a recording
session. This enables you to create a macro that does a
number of things automatically and then returns control to
the user.