Clarion Professional Developer V2.0 (Batch 2010 - 10/16/89)
----------------------------------------------------------
READ.ME - Important information too recent to be
	  included in the documentation.

Batch history 2010  - 10/25/89
	      2009  - 9/11/89
	      2008  - 5/26/89
	      2007B - 2/8/89
	      2007  - 1/31/89
	      2006  - 10/7/88
	      2005  - 9/23/88 (First Personal Developer release,
			       not released for Professional Developer)
	      2004  - 8/26/88
	      2003  - 6/30/88
	      2002  - 5/18/88
	      2001  - 4/29/88
	      2000  - 4/28/88
------------------------------------------------
Clarion BBS - 24 hours a day - 7 days a week

(305) 785-9172	   300 / 1200 / 2400 8N1

    New User Access
    ---------------

    The Clarion Bulletin Board System (BBS) is available for communicating
    with Clarion Software and with other Clarion users.	 Access to the BBS
    is restricted to -registered- users of Clarion Software products.  The
    first time that you dial into the Clarion Bulletin Board, access to
    the various features and menu options of the board will be restricted.
    You will have fifteen minutes of access time from when you first log on.

    When you call the board, you will be asked for your first name, last
    name, and where you are calling from.  You will also be asked to enter
    a password, and to provide certain option settings for each time you
    log on.  REMEMBER HOW YOU SPELL YOUR NAME AND PASSWORD - the BBS will
    expect them to be spelled the same each time.  If you initially log on
    as Robert, it will not recognize the name Bob in a future log on.
    Also, the password is case-sensitive.

    To register on the board, select the <N>ew Users section by pressing
    N. You will then be presented with a menu allowing you to <1> read
    instructions, and <2> Register on the board.  To have your privileges
    raised, you MUST answer the questions asked in the online registation
    process. If there is any additional info that you wish to pass on to
    the Sysop, feel free to use the <M>essage area to leave a Message to
    Sysop. The sysop will review your registration, and if in order will
    raise your privileges on the board, usually within one working day.

    The registration form will request that you enter your own name, the
    name of your company if Clarion was purchased by a company, and
    whether you are registering as a user of the Clarion Professional
    Developer, the Clarion Personal Developer, or both. You will also
    be asked for your registration number which can be found on your
    warranty and registration cards (this applies to Professional Developer
    users only), and where you purchased your package. Again, you must
    answer the questions presented, or your access privileges cannot be
    raised.

    **** IMPORTANT ****

      WE MUST HAVE YOUR REGISTRATION CARD ON FILE
       BEFORE FULL ACCESS WILL BE GRANTED!!!!

    (you can FAX us your registration at 1(305)946-1650)
------------------------------------------------

1. INSTALL process - Unsuccessful Installation
----------------------------------------------
    (Added to READ.ME - Batch 2004)
    (Modified - Batch 2007)

    The Install Process, covered on pages 1-4 and 1-5 of
    "Getting Started" should include the following:

    If memory or disk space on the target machine is exhausted,
    the INSTALL program will abort.  This problem can only be
    solved by freeing the necessary disk space or increasing
    the amount of available memory.

    In some rare cases, the INSTALL program may not be able to
    complete successfully or may not be able to install one or
    more files.	 This may be due to a defective distribution
    media, or a protected file of the same name that already
    exists in the target directory.

    Some memory resident programs affect the speed of the
    floppy drive.  Some of these programs may prevent any files
    from being installed.  In this case, run INSTALL with the
    /S option as shown:

	 A:INSTALL /S

    If INSTALL is unable to install a file, a menu will be
    displayed.	The menu appears as follows:

	 +---------------------------------------+
	 |    Archive error: Invalid crc	 |
	 |					 |
	 |  [Skip this file]   [Exit Installer]	 |
	 +---------------------------------------+

    At the end of the Install Process, skipped files will be
    displayed and a message indicating whether the installation
    was successful.


2.  BUFFER statement
--------------------
    (Added to READ.ME - Batch 2000)

    In the "Language Reference Manual", Chapter 11, Page 11-31, in the
    second paragraph concerning the BUFFER statement, the sentence:

	"If the memory parameter is a value of 1 to 999, it specifies
	 the percent of total available free memory to allocate ...

    Should instead read:

	"If the memory parameter is a value greater than 0.0 and less
	 than or equal to 1.0, it specifies the percent of total
	 available free memory to allocate ..."

    The next sentence:

	"If the memory parameter is greater than or equal to 1 and less
	 than 1000, it specifies the number of records to be buffered."

    Should instead read:

	"If the memory parameter is greater than or equal to 2 and less
	 than 1000, it specifies the number of records to be buffered."


3.  REVERSE statement
---------------------
    (Added to READ.ME - Batch 2000)

    In the "Language Reference Manual", Chapter 7, Page 7-10, the
    section on the REVERSE statement, in the first paragraph, the
    sentence:

       "The blink and enhance bits are unchanged."

    Should read:

	"The blink bit is unchanged.  The enhance bit is turned off."

    The second paragraph should read:

	"Because the blink bit is not affected and the enhance bit is
	 turned off, and because there are 16 foreground colors but only
	 8 background colors, REVERSE does not necessarily exchange the
	 foreground and background colors that are displayed.  For example,
	 reversing yellow on blue produces blue on brown, not light blue
	 on brown.  (Yellow is enhanced brown, and light blue is enhanced
	 blue.)	 A subsequent REVERSE statement will produce brown on blue."


4.  REV (Reverse) Attribute
---------------------------
    (Added to READ.ME - Batch 2000)

    In the "Language Reference Manual", Chapter 8, Page 8-22, the
    section on the REV attribute, the second paragraph should read:

	"The foreground and background color bits are reversed.	 The blink
	 bit is unchanged.  The enhance bit is turned off.  Not all colors
	 can be reversed since there are 16 foreground colors and only 8
	 background colors.  For example, reversing yellow on blue produces
	 blue on brown.	 (Yellow is enhanced brown.)"


5.  Object Module CLARION0.OBJ
------------------------------
    (Added to READ.ME - Batch 2000)

    The Clarion Run-time library consists of four files:

	CLARION.OBJ, CLARION0.OBJ, CLARION1.LIB, CLARION2.LIB

    Chapter 14 in the "Utilities Guide," the chapter on the Translator
    utility, does not mention CLARION0.OBJ.  Any reference to CLARION.OBJ
    should be considered to be a reference to CLARION.OBJ and CLARION0.OBJ.

    CLARION.OBJ must always be the first module specified in the link and
    CLARION0.OBJ must always be the second module specified in the link.
    Translator creates .ARF files that include CLARION.OBJ and CLARION0.OBJ.

    Neither module can be overlaid.


6.  Plink86plus Version 2.00 to 2.23
------------------------------------
    (Added to READ.ME - Batch 2000)

    Some versions of Plink86plus (Version 2.00 through 2.23) default to
    mixed case on symbol names.	 All other versions default to UPPERCASE
    on symbol names.  To use Plink86plus Versions 2.00 through 2.23 with
    Translator, the UPPERCASE switch must be specified at the "ARF Switches:"
    field.  For example:

    +------------------------------------------------------+
    |							   |
    |	Program	    :TEST.PRO				   |
    |							   |
    |	Create ARF  :Plink86	     Link  Plink86  No	   |
    |	ARF Filename:TEST.ARF				   |
    |	ARF Switches:UPPERCASE			<==========|===== Specify
    |							   |	  UPPERCASE
    |	Run Linker  :Yes	     Yes   No		   |	  here
    |	Linker Name :Plink86				   |
    |							   |
    |	Line Numbers:No		     Yes   No		   |
    |							   |
    +------------------------------------------------------+

    While not required, this switch should also work with any version
    of Plink86plus, but the switch is not valid with Plink86.  Plink86
    will not recognize the UPPERCASE switch and will report an error.


7.  DOS Link Version 3.64
-------------------------
    (Added to READ.ME - Batch 2000)

    The version of Link supplied with MASM 5.1, DOS Link version 3.64,
    uses a method of library searching that is incompatible with all
    prior versions of Link.  To use Link 3.64 with Translator, specify
    the /NOE (No Extended Dictionary Search) switch.  For example:

    +------------------------------------------------------+
    |							   |
    |	Program	    :TEST.PRO				   |
    |							   |
    |	Create ARF  :Link	     Link  Plink86  No	   |
    |	ARF Filename:TEST.ARF				   |
    |	ARF Switches:/NOE			<==========|===== Specify
    |							   |	  /NOE switch
    |	Run Linker  :Yes	     Yes   No		   |
    |	Linker Name :Link				   |
    |							   |
    |	Line Numbers:No		     Yes   No		   |
    |							   |
    +------------------------------------------------------+

8.  Director
------------
    (Added to READ.ME - Batch 2002)

    The following are corrections to Chapter 6 of the "Utilities Guide."

    On page 6-4, the last paragraph on the page should read:

	"Gray Minus(-)	This key places the name of the file currently
	 indicated by the selector bar onto the DOS Command line.  If a
	 file has been flagged for a multiple file operation, the
	 Clarion name wildcard %N is entered on the DOS Command line."

    On page 6-8, the section "Copy a Single File" should state that
    the filename must be different when copying to the same directory.

    On page 6-13, in the section "Ctrl-R Rename a File", it should be
    emphasized that if the same name is specified with a different path,
    the Rename operation will move the file to the specified directory.

    On page 6-15, in the section "Ctrl-S Select a New Active File", the
    the third sentence of the third paragraph should read:

	"If the selected file's extension is .CLA, or if the selected
	 file is not a DOS or Clarion executable or binary file, the
	 message "Clarion source file selected" is displayed below the
	 window title."

	 and, the first sentence of the fifth paragraph should read:

	"If the selected file's extension is .PRO, "Clarion Processor
	 file selected" is displayed below the window title.  If the
	 selected file's extension is .DAT, "Clarion data file selected"
	 is displayed below the window title."

    On page 6-15, the last sentence on the page should read:

	"To return to the Director's Base window, press Esc."

9.  TEXT fields in a SCREEN structure
-------------------------------------
    (Added to READ.ME - Batch 2002)

    In the "Language Reference Manual", Chapter 8, Page 8-13, the
    section on the TEXT Statement should include the following:

	 In a TEXT field, the Enter key sets the position of the
	 cursor to the first column of the next row.  The Enter
	 key is therefore equivalent to a Cursor Down key
	 followed by a Home key.

	 If the USE variable contains more rows than the TEXT field
	 declares, and the cursor is positioned on the last row of
	 the TEXT field, the Enter key will scroll the rows up one
	 line at a time.

	 Pressing Enter from the last line of the USE variable will
	 complete the TEXT field.

	 The ALERT statement can be used to designate a "done" key
	 to be used to complete the field before all lines have
	 been entered.	Fields completed by alerted keys do not,
	 however, update their USE variables.  The UPDATE statement
	 should be used in conjunction with an alerted "done" key
	 to ensure the USE variable is updated from the TEXT field.

10. The 87 Environment Variable
-------------------------------
    (Added to READ.ME - Batch 2002)

    All Clarion utility programs and translated Clarion programs
    search the environment for the variable "87".  This environment
    variable can be used to disable the use of any 80x87 floating
    point co-processor in floating point arithmetic.  The following
    DOS command, run PRIOR to any Clarion utility or program, will
    disable the use of the co-processor:

	 SET 87=N

    Similarly, use of the co-processor can be re-enabled via the
    command:

	 SET 87=Y

    The above command enabling the use of the co-processor MUST NOT
    BE USED when a co-processor is NOT present; the result would be
    incorrect operation by all Clarion utilities and programs.

    To check an environment for the existence of the 87 environment
    variable, use the DOS command SET with no parameters.

    The 87 variable can be removed from the environment with the
    following command:

	 SET 87=

    The 87 environment variable is an OPTIONAL way to override the
    automatic detection of a co-processor.  All Clarion utilities and
    programs detect the presence of a co-processor and use it
    automatically in floating point arithmetic.


11. RUNCODE() function
----------------------
    (Added to READ.ME - Batch 2003)

    In the "Language Reference Manual", Chapter 13, Page 13-22, in the
    second paragraph concerning the RUNCODE() function, the following
    sentence should be added:

	"A return value of -4 indicates that the RUN statement was
	 unable to create or write to the memory image .TMP file."


12. Designer Enhancements
-------------------------
    Several important enhancements to Designer are part of the
    version of Clarion and are not reflected in the documentation.

    A.	 Recovering an .APP file from a .BAP file
    ---------------------------------------------
    (Added to READ.ME - Batch 2002)

    In the "Utilities Guide," Chapter 5, the following information
    concerning the Designer Utility should be included:

	 Designer reads and updates a file with an extension of
	 .APP.	During a design session, the first time that
	 Designer determines that the .APP file must be updated,
	 a copy of the .APP file is made with the extension of
	 .BAP (for backup application file.)  Any previous existing
	 .BAP file is deleted.

	 During the design session, the .APP file is continuously
	 updated with application design changes.  If the design
	 session is aborted normally (via Ctrl-Esc from the Summary
	 Screen) the .APP file is deleted and the .BAP file is
	 renamed with the extension of .APP.  This has the effect
	 of "undoing" any changes to the .APP file on disk.

	 If a design session is terminated normally (via Ctrl-Enter
	 from the Summary Screen) the .APP file on disk is closed
	 and contains information current with the completed design
	 session.  The .BAP file contains a prior version of the
	 application information.

	 If an application file becomes corrupt (due to a power outage
	 or an inadvertent re-boot) the .APP file may be recovered
	 and the prior version restored by copying the .BAP file to
	 a file with the extension .APP.  For example:

		   COPY VIDEO.BAP VIDEO.APP

	 This method can also be used to "back off" to a prior version
	 of an application, eliminating unwanted changes.

    B.	 Free-form Source Procedure Lines
    -------------------------------------
    (Added to READ.ME - Batch 2003)
    (Modified in - Batch 2007)

    Many of the Procedure Lines on windows in Designer actually permit
    up to 255 characters of Clarion executable source.	The source may
    be any valid executable statement or several statements separated
    by semicolons.  Source entered on these lines is inserted as-is
    into the source code.

    If the source line only contains a procedure name, that procedure
    will appear in the program tree diagram on the Application Summary
    Window.  If the source line contains any source other than a single
    procedure name, the line will not be reflected in the Application
    Summary Window.

    The following Procedure Lines support 255 characters of source:

	 Setup Procedure - Menu Window - Figure 5-22 and Page 5-33.
	 Setup Procedure - Table Window - Figure 5-23 and Page 5-35.
	 Update Procedure - Table Window - Figure 5-23 and Page 5-36.
	 Setup Procedure - Form Window - Figure 5-24 and Page 5-38.
	 Next Procedure - Form Window - Figure 5-24 and Page 5-38.
	 Setup Procedure - Report Window - Figure 5-25 and Page 5-40.
	 Edit Procedure - Menu Entry Field Window - Figure 5-34 and Page 5-52.
	 Edit Procedure - Table Entry Field Window - Figure 5-44 and Page 5-65.
	 Edit Procedure - Form Entry Field Window - Figure 5-58 and Page 5-81.

	 (Note: The Pause Field Edit does not support this feature.
		The READ.ME from batches 2003 - 2006 mistakenly
		included the Pause field in the above list.)

    C.	"Required" attribute for MEMO fields
    ----------------------------------------
    (Added to READ.ME - Batch 2003)

    Figure 5-17 on page 5-22 in the "Utilities Guide" should show an "X"
    in the Required row in the MEMO column.

    On page 5-24, the first sentence in the section titled "Required Line"
    should include MEMO as a type of field that allows the Required
    parameter.

    D.	 Procedure definition
    -------------------------
    (Added to READ.ME - Batch 2003)

    Most of the following corrections apply to Menu, Table, Form, and
    Report procedures.	The "Form" screen below is provided for reference.

    +----------------------------------------------------------+
    |				Form			       |
    |							       |
    |  Procedure Name :					       |
    |  Procedure Title:					       |
    |  Setup Procedure:					       |
    |  Next Procedure :					       |
    |  Filename	      :					       |
    |  Secondary File :	  <===================================== (See "a" below)
    |  Help ID	      :					       |
    |  Hot Procedure  :	  <===================================== (See "b" below)
    |	 Hot Key      :					       |
    |  Position	      :		 Float	Fix  <================== (See "c" below)
    |  Combine With   :	  <===================================== (See "d" below)
    |  Model Procedure:	  <===================================== (See "e" below)
    |							       |
    +----------------------------------------------------------+

	 a.   Secondary Files for Form Procedures
	 ----------------------------------------
	 Figure 5-24 on page 5-37 should show a Secondary File Line between
	 the Filename and Help ID lines, and the following should be added
	 to the section describing Form Procedures:

	      Secondary File Line
	      -------------------
	      Three Secondary Filenames may be entered. Secondary Files
	      are additional files that may be specified to be used by a
	      Form Procedure. Records in Secondary Files accessed by Form
	      Procedures may be changed (PUT back) but not added or deleted.

	 b.   Hot Procedures / Hot keys
	 ------------------------------
	 The "Hot Procedure Line" and "Hot Key Line" are described on pages
	 5-34, 5-36, 5-37, and 5-39.  Each description should also mention
	 that three sets of Hot Procedures/Hot Keys are supported.

	 c.   Position - Fix / Float
	 ---------------------------
	 Menu, Table, and Form Procedure windows can be designated as
	 Fixed or Floating.  Fixed windows will always appear in the
	 same location.	 Floating windows will attempt to appear in a
	 location that will not hide the current field on the screen.

	 Fixed windows can be positioned using the "Moving a Window"
	 feature described in Section 12 below.

	 d. Combine with Line default
	 ------------------------------
	 The "Combine with Line" is described on pages 5-34, 5-37, 5-39,
	 and 5-41. Each description should read:

	      The "Combine with Line" provides a way of indicating that
	      the source code for a procedure is to be combined in the
	      same source module as a specified procedure.

	      When a new procedure is created and the "Combine with Line"
	      is entered for the first time, the "Combine with Line" will
	      default to the name of the application (which is also the
	      name of the program.) This default places the source code
	      for the procedure into the same source module as the
	      program.

	      For a procedure to be placed into its own source module,
	      the "Combine with Line" must be blanked out.

	 e.   "Model Name" vs "Model Procedure" prompt
	 ---------------------------------------------
	 The follow locations referring to "Model Name" should instead
	 refer to "Model Procedure":

	      - Figure 5-22 on page 5-33.
	      - Model Name Line for Menus on page 5-34.
	      - Figure 5-23 on page 5-35.
	      - Model Name Line for Tables on page 5-37.
	      - Figure 5-24 on page 5-37.
	      - Model Name Line for Forms on page 5-39.
	      - Figure 5-25 on page 5-40.
	      - Model Name Line for Reports on page 5-41.

    E.	 Other Procedures
    ---------------------
    (Added to READ.ME - Batch 2003)

    Figure 5-26 should appear as shown below:

    +-------------------------------------------------+
    |			   Other		      |
    |						      |
    |  Procedure Name :				      |
    |  Description    :	     <========================= (See "a" below)
    |  Module Name    :				      |
    |	 Binary	      :		 Yes   No	      |
    |  Return Value   :		 Yes   No	      |
    |	 Data Type    :		 Long  Real  String   |
    |  Procedure Calls:	     <========================= (See "b" below)
    |						      |
    |						      |
    |						      |
    +-------------------------------------------------+

    The description of "Other Procedures" on page 5-42 should
    include the following sections:

	 a.   Description Line
	 ---------------------
	 Type in a description for this procedure.  This description
	 will appear next to the procedure name on the Application
	 Summary Window.

	 b.   Procedure Calls Line
	 -------------------------
	 Enter up to six procedures that are called from this procedure.
	 The procedures named will be listed in the application schematic
	 on the Application Summary Window.

    F.	 Selector Fields
    --------------------
    (Added to READ.ME - Batch 2003)
    (Corrected in Batch 2007 - added Report Window)

    The method of declaring a "Selector Field" differs greatly from
    that which is described in the documentation.

    The Table worksheet's Select Field Type window, show in Figure 5-43
    on page 5-64 should appear as follows:

    +------------------------------------------+
    |		  Select Field Type	       |
    |					       |
    |------------| Fixed Portion |-------------|
    |					       |
    |  For Entry  :  Field  Locator   <========== Note elimination of
    |					       |      "Selector"
    |  For Display:  Field  Computed  Lookup   |
    |					       |
    |----------| Scrolling Portion |-----------|
    |					       |
    |  For Display:  Field  Computed  Lookup   |
    |					       |
    +------------------------------------------+

    Note the elimination of "Selector" as a choice next to "For Entry."
    Likewise, the Selector Field Window shown in Figure 5-48 on page
    5-70 has been removed from the current version of Designer.

    The Table Window, shown in Figure 5-23 on page 5-35 now appears
    as follows:

    +----------------------------------------------------------+
    |				Table			       |
    |							       |
    |  Procedure Name  :				       |
    |  Procedure Title :				       |
    |  Setup Procedure :				       |
    |  Update Procedure:				       |
    |  Access Key      :				       |
    |  Help ID	       :				       |   Designate
    |  Record Selector :	  <==============================  Selector
    |  Record Filter   :				       |   Field
    |  Hot Procedure   :				       |
    |	 Hot Key       :				       |
    |  Position	       :	  Float	 Fix		       |
    |  Combine With    :				       |
    |  Model Procedure :				       |
    |							       |
    +----------------------------------------------------------+

    The Report Window, shown in Figure 5-25 on page 5-40 now appears
    as follows:

    +--------------------------------------------------+
    |			   Report		       |
    |						       |
    |  Procedure Name :				       |
    |  Procedure Title:				       |
    |  Setup Procedure:				       |
    |  Access Key     :				       |       Designate
    |  Record Selector:		  <==========================  Selector
    |  Record Filter  :				       |       Field
    |  Page Length    :				       |
    |  Combine With   :				       |
    |  Model Procedure:				       |
    |						       |
    +--------------------------------------------------+

    The Record Selector Line is used to designate a component of the
    Access Key to be used as a Record Selector.

    Selector fields can also be a field on the screen created with
    the Entry Field Window shown in Figure 5-44 on page 5-65.

    G.	 Locator Fields
    -------------------
    (Added to READ.ME - Batch 2003)

    The method of declaring a "Locator Field" differs greatly from
    that which is described in the documentation.

    The Locator Field Window, as shown in Figure 5-49 on page
    5-70 now appears as follows:

    +------------------------------------------+
    |		       Locator		       |
    |					       |
    |  Field Name:			       |
    |  Attribute :			       |
    |					       |
    +------------------------------------------+

    Locators originally required an entire field to be entered
    before "locating" a matching record.  In the current version
    of Designer, a Locator will attempt an "incremental" locate
    as each character is entered.  For example, if an "S" is
    entered, the first key entry beginning with "S" is located;
    then if an "O" is typed, the first key entry beginning with
    "SO" is located; and so on.

    Incremental search Locators work best with string fields.
    Numeric fields, including date fields, should be implemented
    using the original Locator method.	  To implement the
    original Locator method, declare an Entry Field and enter
    the following on the Edit Procedure Line:

	      DO FIND_RECORD

    H.	 Lookup Tables
    ------------------
    (Added to READ.ME - Batch 2003)

    In the description of the Hot Key Line on page 5-69, the
    third paragraph should read:

    "If you select ENTER_KEY and you have designated the entry
    field as required, the table procedure will pop up if your
    end-user leaves the entry field blank or types invalid data.
    If you select ENTER_KEY and the field is not required, the
    table procedure will pop up only if invalid data is typed.
    If you select any other key, the table procedure will pop up
    only when the Hot Key is pressed.  When an end-user makes a
    selection from the table, his choice is automatically placed
    in the entry field (overwriting any invalid data)."

    I.	 Total Fields in Reports
    ----------------------------
    (Added to READ.ME - Batch 2004)

    The description of the Report Total Field  on pages 5-115
    and 5-116 should include mention of the New Field Name
    line.  Figure 5-86 should appear as follows:

    +------------------------------------------------------+
    |			Total Field			   |
    |							   |
    |  Total Type    :Sum	  Sum	Count	Average	   |	Enter report
    |  Field to Total:					   |	variable
    |  New Field Name:RPT:     <==============================	name
    |  Picture	     :					   |
    |							   |
    +------------------------------------------------------+

	 New Field Name Line
	 -------------------
	 Type the name that you want to assign to this report field
	 and then press Enter.	(The name you type must conform to
	 the Clarion language label rules described in Chapter 2 of
	 the "Language Reference Manual.") In order to make this name
	 unique, Designer automatically supplies the prefix RPT.
	 Designer forces you to give this computation a unique
	 name so that you can identify it later, should you decide
	 to use it in another computation.

    J.	 Get a File
    ---------------
    (Added to READ.ME - Batch 2004)

    The description of the Getting a file definition on page 5-30
    should include mention of the Get From Line.  Figure 5-20 should
    appear as follows:

    +------------------------------------------------------+
    |		   Get File Description			   |	  Select
    |							   |	  from .APP
    |  Get From	   :Application	   Application	Data File  | <=== or from
    |  Application :					   |	  .DAT file.
    |  Filename	   :					   |
    |  New Filename:					   |
    |  New Prefix  :					   |
    |							   |
    +------------------------------------------------------+

	 Get From Line
	 -------------
	 Select Application if you want to copy a file definition
	 from another (or same) designer application.  Select
	 Data File if you want to copy the file definition from
	 an existing Clarion 2.0 data file.  If you select Data File,
	 enter the filename of the data file on the Filename Line.

	 Not all Clarion data file features are supported by Designer.
	 After getting a file definition from an existing data file,
	 use Designer to review the file definition, making revisions
	 as needed.

	 Display pictures codes will be defaulted for the data file
	 fields as follows:

	     BYTE	   ->	  @n3

	     SHORT	   ->	  @n-7

	     LONG	   ->	  @n-14

	     REAL	   ->	  @n-14.2

	     STRING(30)	   ->	  @s30	    (Strings longer than 60 will
					     receive a default display
					     picture of @s60)

	     DECIMAL(9,2)  ->	  @n-_11.2  (Display width is total places
					     plus two, accommodating the
					     minus sign and the decimal
					     point.  Leading spaces are
					     used.)

	 Use Designer to modify any of the defaulted display pictures
	 as needed.  After creating source for your application, run
	 Filer (CFIL.EXE) to ensure that the existing data file format
	 matches the definition produced by Designer.

    K.	 Auto-number Key Field
    --------------------------
    (Added to READ.ME - Batch 2008)

    A method is now available to automatically increment a field when
    adding a new to a file.  The field to be incremented must
    be declared as a component of a key.  Only one auto-incrementing
    field may be declared for a file.

    Two methods are available for incrementing the key field.  The first
    method allows a field to be incremented throughout a file.	This means
    that a single numbering sequence will be used for every record that is
    added to the file.	Each time a new record is added, the highest value
    in the file for this field will be incremented by one and assigned to
    the new record.  The second method allows for "subsets" of a file to be
    numbered.  In this approach, numbers are incremented and assigned to new
    records within a given range of a file.  Each technique will be
    discussed in detail below.

    To designate a field to implement, define a Key for the file which
    uses the field.  The Key Definition window (see below) has a new
    question called Auto-number immediately following the Unique Key
    question.  The Key must be defined as Unique.  If the Unique Key
    question is answered YES, the Auto-number question is then highlighted
    and the user may select Yes or No if he wishes the field to be
    automatically incremented.	If the Unique Key question is answered NO,
    the Auto-number question is set to NO and the line is skipped.

    +---------------------------------------+
    |		       Key		    |
    |					    |
    |  Key/Index Name:CUST_KEY		    |
    |  Key/Index Type:Key	Key  Index  |
    |  Unique Key    :Yes	Yes  No	    |
    |	 Auto-number :Yes	Yes  No	 <==========  Automatic number
    |  Case Sensitive:No	Yes  No	    |	      option
    |  Exclude Nulls :No	Yes  No	    |
    |					    |
    +---------------------------------------+

    Only a single key in a file may be defined as Auto-number.	Once a key
    is defined as Auto-number, the Auto-number question will be skipped when
    defining other keys, even if the key has a Yes answer to Unique key.  If
    you wish to change the Auto-number assignment from one key to another,
    you must turn the Auto-number off for the first key by answering No, and
    then go to the other key and answer Yes.

    If you are using the first method of numbering a field throughout a
    file, the Key must be defined with only the single field as it's
    component.	The field should be a Numeric type.  If multiple fields are
    defined, the second method is assumed.  When the Update procedure form
    is called from a table by hitting Ins, the highest existing value for
    the field in the file will be determined and incremented by one.  The
    field will then be assigned this new value before the form begins to
    execute.  Therefore, the new value will be available in the form either
    for display or for use in an entry field.  If used in an entry field,
    the value may be overridden by the user.  This allows a new beginning
    value to be entered into the program.  However, if the value is changed
    by the user, it must be changed to a new unique value, due to the fact
    that the key is defined as unique.	If the value is changed to match a
    value that already exists in another record, the program will beep,
    display an error message (creates duplicate key), and remain on the
    field.

    If the key is defined to contain more than one field, the second method
    of auto-numbering is used.	This method allows for the sequential number
    assignment of records comprising a particular subset of the file.  The
    field to be incremented will always be the last field defined for the
    key.  The "subset" is determined by the field values in the key fields
    prior to the last component of the key.  This method will only work to
    increment the field if the Table procedure being used is a Selector.
    The Selector field in the Table procedure must be defined as the next to
    last field in the key.  The records that are displayed and scrolled by
    the Table form the subset.	When a new record is added by pressing Ins,
    the highest value of the last field in the key, as determined by the
    records selected and displayed in the scrolling table, will be
    determined and incremented.	 The form will appear with the key
    elements, as determined by the selector and the automatic number
    assignment process, already available to the form.

    For a multi-component key to be unique, the last field named in the key
    definition will be what determines the uniqueness of the key.  Fields
    defined in the key before the last field can always have duplicate
    values in other records in this file.  If a field before the last field
    is indeed a unique value, then fields in the key following the unique
    field will have no affect on the uniqueness of the key:  only one record
    will be able to exist in the file for the particular value of the unique
    field, regardless of values in any fields defined in the key following
    this one unique field.  Therefore, when defining a unique key, it is
    only meaningful to place the single field that defines the uniqueness of
    the key last in the key definition.

    For example, an invoicing file key might be comprised of two fields,
    invoice number (INV:INV_NO) and line item number (INV:LINE_NO).  In this
    file, multiple records will exist for each invoice, but each record must
    have a unique invoice number/line item number.  The uniqueness of each
    record is determined by the last field in the key.	This is so because
    there may be many records in the file for a particular invoice, but
    there can only be a single record in the file for this invoice that has
    a particular line item number.  (E.G. invoice number 2503 may have 10
    line item records, but only one of the records can be line number 2).

    To auto-assign the line item field for the invoice example above, the
    selector would specify INV:INV_NO to pull up only the line items
    associated to the particular invoice.  An Entry field would be placed at
    the top of the Table so that the desired invoice number would be
    entered.  When Ins is pressed to add a new line item to the invoice, the
    line item field would be assigned the next available number available
    for this invoice.  If three line items already exist, with line item
    field values of 1, 2, and 3, the next value assigned would be 4.  An
    example of a different subset in the same file would be another invoice
    with line items 1 and 2.

    L.	 Conditional Fields
    -----------------------
    (Added to READ.ME - Batch 2008)

    The new Conditional Field type allows for information to be placed on
    the screen based upon a condition, or "IF" statement.  Conditional
    Fields are similar to the existing Computed Field type, except for
    the ability to check a particular condition and then display
    different data depending on whether the condition is true or false.

    +--------------------------------------------+
    |		   Conditional Field		 |
    |						 |
    |  Name	   :SCR:DESCRIPT		 |
    |  Picture	   :@S20			 |
    |  Condition   :FIL:AGE > 30		 |
    |	 If True   :'SENIOR DIVISION'		 |
    |	 If False  :'JUNIOR DIVISION'		 |
    |  Result Field:				 |
    |  Attribute   :Normal			 |
    +--------------------------------------------+

    In the above example, the FIL:AGE variable is checked to see if
    it is greater or less than 30.  The appropriate text is then placed
    into the SCR:DESCRIPT field on the screen.

    Conditional Fields may be created in all procedure types (MENU,
    TABLE, FORM, or REPORT).  To create a Conditional Field in a
    procedure, position the cursor at the desired location for the field
    and press Ctrl-F (Field).  From the Select Field Type window,
    position the cursor on Conditional and press Enter.	 (Note that Table
    procedures have two Conditional fields - one for scrolling and one
    for non-scrolling).

    +-----------------------------------------+
    |		 Select Field Type	      |
    |					      |
    |  For Entry  :  Field     Pause	      |
    |					      |
    |  For Display:  Field     Computed	      |
    |		     Lookup    Conditional <========  Conditional Field
    |					      |
    +-----------------------------------------+

    In the Condition line, place the Clarion statement that you wish to
    evaluate.  Note that the If statement should not be included in the
    line.  Compound expressions can be created by combining multiple
    statements using AND and OR.  Parenthesis may be used where necessary
    to group different portions of the compound statements.  A total of
    255 characters may be entered on the Condition line.

    The If True line should contain an expression that will specify what
    is to be displayed if the Condition for the current record in memory
    is true.  (This statement is the same as for the Expression line of
    Computed fields).

    The If False line will contain an expression to be displayed if the
    condition evaluates as false.  This line is optional, and if left
    blank, no action will be taken if the condition if false.

    The NAME, PICTURE, RESULT FIELD, and ATTRIBUTE lines of Conditional
    fields are the same as for Computed fields.

    M.	 Device Attribute on Reports
    --------------------------------
    (Added to READ.ME - Batch 2008)

    A Device attribute can now be specified in Designer to send a report to a
    device other than the printer.  On the options page (Ctrl-O) of report
    procedures is a new question for specifying whether a device attribute
    should be generated for the report.

    +--------------------------------------------------+
    |			   Report		       |
    |						       |
    |  Procedure Name :INVOICE			       |
    |  Procedure Title:				       |
    |  Setup Procedure:				       |
    |  Access Key     :ORD:ORDER_KEY		       |
    |  Record Selector:ORD:ORDER		       |
    |  Record Filter  :				       |
    |  Page Length    :	 60			       |
    |  Report Device  :No	 Yes  No     <===============  Report Device
    |  Combine With   :ORDER			       |
    |  Model Procedure:				       |
    |						       |
    +--------------------------------------------------+

    If the response is Yes, the report structure will be generated with a
    DEVICE(MEM:DEVICE) attribute (for more information on the DEVICE
    attribute, refer to chapter nine of the language reference manual).
    The MEM:DEVICE parameter should be defined as a variable in the
    MEMORY file, with the VALUE line completed with the name of the
    device to redirect the report to.

    For example, if you wish a report to be sent to a disk file named
    DISK.RPT, answer yes to the Report Device question on the options
    page, and then fill in the value line of the MEM:DEVICE variable with
    DISK.RPT.

    The MEM:DEVICE variable will automatically be added to the MEMORY
    file for new applications.	For existing applications it will need to
    be added to MEMORY.	 The length of this variable should be long
    enough to hold the device name, including any drive and path specifiers.

    N.	 Total Fields on Tables
    ---------------------------
    (Added to READ.ME - Batch 2009)

    The field window (Ctrl-F) for Table procedures has been expanded to
    include an option to Total fields.	The table total field is similar
    to total fields available in Report procedures.  The total displayed
    will be for all records included in the table, not just for those
    displayed on the screen at any given time.

    In order to calculate the total, the records in the file are read
    and all calculations performed BEFORE any records are displayed on the
    screen.  Therefore, for large files a noticeable delay can be expected
    whenever the table is first called.

    O.	 Multiple Group Breaks in Reports
    -------------------------------------
    (Added to READ.ME - Batch 2009)

    Multiple break sections are now available for report procedures.
    The Break Field available in the field window (Ctrl-F) has been
    replaced with grid fields on the report worksheet for each component
    of the access key for the report.

    To specify any of these fields as break fields, "open" either the
    group header or group footer section for the desired field by
    positioning the cursor on the desired grid line and pressing Enter.
    The logic for breaking the report will be generated for any key field
    that has a header or footer containing one or more lines.

    P.	 Formfeeds and Group Break data in Group Footers
    ----------------------------------------------------
    (Added to READ.ME - Batch 2009)

    If a page eject (formfeed after) is placed on the LAST line of
    either a body section or a group footer, the report will now issue
    a print for the page footer and page header, allowing for sections
    of a report to be printed one per page.

    Previously, when a group break occured the next record was in
    memory, preventing information from the previous group to be
    properly printed in it's group footer.  Starting in batch 2009,
    a record from the last group is placed into the record structure,
    allowing information for the group to be printed in it's footer.

    Q.	 Specify DOS programs to be RUN from menu items
    ---------------------------------------------------
    (Added to READ.ME - Batch 2009)

    If the procedure line of a menu item definition contains a DOS
    extension of .EXE, .COM, or .BAT, a RUN statement will be used
    to execute the named program.

    R.	 Global openfile procedure
    ------------------------------
    (Added to READ.ME - Batch 2009)

    A new procedure, G_OPENFILES, is now called to open all files
    used in the application.  This procedure may be called to re-open
    files that have been closed by a RUN statement in the program.

    S.	 Aborting of report printing
    --------------------------------
    (Added to READ.ME - Batch 2009)

    The printing of a report can now be aborted by pressing Ctrl-Esc
    (REJECT_KEY) while the report is printing.

13. Moving a Window
-------------------
    (Added to READ.ME - Batch 2003)

    In Designer, Helper, and the Screen Formatter in the Editor,
    a window may be moved as follows:

	 Use Ctrl-M to invoke "Move Mode."  Then press Ctrl-M
	 again to signify the entire window.  The cursor control
	 keys may then be used to position the window.	Press
	 Enter when the window has been positioned.  If the entire
	 window is marked for moving, this will also signify
	 "Move Window Mode."

14. POINT field completion keys
-------------------------------
    (Added to READ.ME - Batch 2003)

    On page 8-42 in the "Language Reference Manual," the third
    paragraph contains a list of keys that complete a POINT field.
    The Back-Space key should be included in that list.

15. Disabling Control-Break
---------------------------
    (Added to READ.ME - Batch 2003)

    On page 10-14 in the "Utilities Guide," in the discussion of
    command line options for CRUN, and on page 14-21 in the
    discussion of command line options for a translated program,
    the /C switch should be added:

	 The C Option	     The C or "Control-Break" option
			     disables the use of Control-Break.

16. Example Applications
------------------------
    (Added to READ.ME - Batch 2003)

    Several example .APP files have been included to help
    demonstrate the use of Designer in producing applications:

	 COOKBOOK.APP
	 ORDER.APP
	 TEACHER.APP
	 INV.APP
	 CHECKS.APP

17. CACHEing Keys
-----------------
    (Added to READ.ME - Batch 2003)

    The following corrects the information concerning caching keys on
    page 11-29 in the "Language Reference Manual."  For statements of the
    form:

	      CACHE(key,memory)

    the memory parameter specifies either the percent of memory or the
    number of key levels to be allocated to the cache. If the memory
    parameter is greater than 0.0 and less than or equal to 1, it
    specifies the percent of total available free memory to allocate.
    (0.25 means use one-quarter of available memory. 1.0 means use all
    of available memory.)   If the memory parameter is between 2 and 999,
    it specifies the number of key levels to be cached.	 If the memory
    parameter is 1000 or more, it specifies the amount of memory (in
    bytes) to allocate.	 If the memory parameter is omitted, it is
    assumed to be 1.

Level
Number
---------------
			    First Key Level
  1			       +-------+    (always in memory)
			       |       |
			       +---+---+
---------------			   |
		     +-------------+---------------+
		     |				   |
  2		 +---+---+		       +---+---+
		 |	 |		       |       |
		 +---+---+		       +---+---+
---------------	     |				   |
	    +--------+--------+		  +--------+--------+
	    |		      |		  |		    |
	+---+---+	  +---+---+   +---+---+		+---+---+
  3	|	|	  |	  |   |	      |		|	|    Last
	+-------+	  +-------+   +-------+		+-------+  Key Level

---------------

	+---+---+---+---+---+---+---+---+---+---+---+---+
	|	|	|	|	|	|	| Data File Records
	+-------+-------+-------+-------+-------+-------+

	The number of levels in a key file depends on the size of a key
	(which affects the number of key entries per key level entry),
	the number of records in the file (which affects the number of
	key entries in the last key level), and the volatility
	of the file (which affects the number of open slots).

	The first key level (Level 1) always exists and is always in
	memory.	 Each additional key level requires a disk access.
	The statement:

		   CACHE(key,2)

	specifies that one additional level is to be cached (key level
	1 is in memory, saving one disk access.	 The statement:

		   CACHE(key,3)

	specifies that two additional levels are to be cached (key level
	1 is in memory, key levels 2 and 3 are cached), saving two
	disk accesses, etc.  The statement:

		   CACHE(key,1)

	caches all of the key levels.  In all cases, CACHE will only
	cache up to the amount of available free memory.


18. Debugger Ctrl-U Window
--------------------------
    (Added to READ.ME - Batch 2004)

    The Debugger in the Processor also includes a "Processor Values
    Window" which is not mentioned in the "Utilities Guide."  The
    Values Window is invoked from the Debugger Window via Ctrl-U.
    The values shown on the window can be useful in debugging and may
    provide important information needed by Customer Support if you
    must call for assistance.

  +-------------------------------------------------------------------------+
  |				Processor Values			    |
  |							    CPU:80286	    |
  |   ERROR()=0						  80x87:None	    |
  | RUNCODE()=-1					   BIOS:01/10/84    |
  | DOS ERROR=0						   Type:PC-AT	    |
  |									    |
  |				      Memory Total:106392		    |
  |				     Largest Block:106223		    |
  |  Active SCREEN:Yes							    |
  |	  CHOICE()=1		     Active SETHUE:0			    |
  |	   FIELD()=0			   Current:00			    |
  |	   REFER()=0			    Normal:00			    |
  |	     ROW()=8							    |
  |	     COL()=15			   Help ID:RENT_HLP		    |
  |	    ROWS()=1							    |
  |	    COLS()=6		    Standard Files:5			    |
  |	  FIELDS()=3		    Debugger Files:3			    |
  |	 KEYCODE()=0			Open Files:10			    |
  |					     Total:18			    |
  |   Current Path:C:\CLARION\EXAMPLE					    |
  |									    |
  |		     Press Ctrl-F for files, any other to Debug		    |
  +-------------------------------------------------------------------------+

    The following show the current values that will be returned by the
    corresponding Clarion function:

	 ERROR()=, RUNCODE()=, CHOICE()=, FIELD()=,  REFER()=,	 ROW()=,
	 COL()=,   ROWS()=,    COLS()=,	  FIELDS()=, KEYCODE()=.

    DOS ERROR= is the number of the error code returned by DOS (if any).
    ----------

    Active SCREEN: indicates a SCREEN structure is open (or not).
    --------------

    CPU: indicates the processor type of the computer (8088, 80286, etc.).
    ----

    80x87: indicates the presence (or not) of a numerical coprocessor.
    ------

    BIOS: the date of your computer's BIOS.
    -----

    Type: the type of your computer's BIOS.
    -----

    Memory Total: the total number of bytes of free memory (as would
    -------------	be returned by the MEMORY() function).

    Largest Block: the number of bytes in the largest block of free
    --------------	memory.

    Active SETHUE: a zero (FALSE) indicates that attribute override mode
    --------------	is not active.	A one (TRUE) indicates that a
			SETHUE statement has set an active attribute
			and enabled override mode.

    Current: the current active attribute - set by SETHUE, and possibly
    --------		modified by REVERSE, ENHANCE, and BLINK.

    Normal: an original copy of the Current attribute - will be copied to
    -------		Current when a NORMAL is executed.

    Help ID: the current on-line help window identifier.
    --------

    Standard Files: open standard DOS files -- STDIN, STDOUT, STDERR,
    ---------------	STDPRT, STDAUX.

    Debugger Files: open files used by the Debugger -- .SYM symbol
    ---------------	table files and (possibly) a trace dump file.

    Open Files: files opened by Clarion statements, including: DOS
    -----------		files, reports with DEVICE attributes,
			Clarion Data (.DAT) files, Clarion Key (.K??)
			files, and Clarion Index (.I??) files.

    Total: the total number of active file handles, including
    ------		Standard Files, Debugger Files, and Open Files.

    Current Path: the fullpath name of the current directory.
    -------------

    Press Ctrl-F for files, any other to Debug
    ------------------------------------------
	 From the Processor Values Window, Ctrl-F will invoke the
	 Open Files Window.  This window displays the files
	 described in the "Open Files:" paragraph above.  The window
	 can be scrolled to display additional entries.

	       +------------------------------------------------+
	       |						|
	       |     1| 06 FILE S C:\CLARION\EXAMPLE\VID_CTL.	|
	       |     2| 07 FILE S C:\CLARION\EXAMPLE\MEMBERS.	|
	       |     3| 08  KEY	  C:\CLARION\EXAMPLE\MEMBERS.	|
	       |     4| 09  KEY	  C:\CLARION\EXAMPLE\MEMBERS.	|
	       |     5| 0A FILE S C:\CLARION\EXAMPLE\MOVIES.D	|
	       |     6| 0B  KEY	  C:\CLARION\EXAMPLE\MOVIES.K	|
	       |						|
	       +----|-|---|----|-|---------------------------|--+
		    |A| B |  C |D|	       E	     |
		    | |	  |    | |			     |

	 Column A - entry number
	 Column B - handle (in Hex)
	 Column C - type - FILE, KEY, INDEX, DOS, or REPORT
	 Column D - mode of a FILE - 'S' for Shared, 'O' for Open
	 Column E - fullpath filename (Right arrow to scroll to see
			     full name)


19. Helper features in the Processor
------------------------------------
    (Added to READ.ME - Batch 2004)

    The ability to add or change on-line help windows while executing
    a Clarion program has been added to the Processor.	The HELP statement
    names the current Help File, and HLP attributes specify help window
    identifiers.  While running the program, press F1.	A help window will
    be displayed, or the message "No Help Available" will appear.  Then,
    to edit an existing help window, or create a declared help window, press
    Shift-F1 to enter Helper mode.

    Helper mode in the Processor is like using Helper with the current screen
    underlying the help window.	  Ctrl-O calls the Helper Options Window.

    This feature will ease the creation and maintenance of on-line help,
    and particularly facilitate the new "transparent" feature.

20. Arrays in COMMA delimited DOS files
---------------------------------------
    (Added to READ.ME - Batch 2004)

    The following information applied to the COMMA attribute of
    DOS files, described on page 10-4 of the "Language Reference
    Manual":

	 Although the language permits the declaration of arrays in
	 the RECORD of a DOS file with the COMMA attribute, this usage
	 is not currently supported. For example, a record definition
	 such as the following should be avoided:

	      DOSFILE	DOS,COMMA
	      REC	  RECORD
	      FIELD1	    STRING(10)
	      ARRAY	    REAL,DIM(6)
			. .

	 Instead, the above should be coded as follows:

	      DOSFILE	DOS,COMMA
	      REC	  RECORD
			    STRING(10)
			    REAL
			    REAL
			    REAL
			    REAL
			    REAL
			    REAL
			. .

	      GRP	GROUP,OVER(REC)
	      FIELD1	  STRING(10)
	      ARRAY	  REAL,DIM(6)
			.

	 The record in the second example will be correctly filled
	 out at run-time and may then be accessed by the variables
	 declared in GRP. The record in the first example will not
	 be filled out correctly and that usage should be avoided.


21. SCROLL Statement blank line attribute
-----------------------------------------
    (Added to READ.ME - Batch 2004)

    The SCROLL statement is described on page 7-4 of the "Language
    Reference Manual".	The last paragraph should now read:

	 The SCROLL statement scrolls only data; screen attributes
	 are preserved.	 If there is an active SETHUE, blanked areas
	 received the current SETHUE attribute.


22. PCMOS/386
-------------
    (Added to READ.ME - Batch 2004)
    (Modified - Batch 2007)

    Clarion batches greater than 2004 will now work with a corrected
    version of PCMOS/386 (version 2.31 or higher.)

    Contact your PCMOS dealer for information on version 2.31 or
    higher.


23. Model Documentation
-----------------------
    (Added to READ.ME - Batch 2004)

    Designer model file documentation (MODEL.DOC) has been included
    with the product.


24. Changes to License Agreement
--------------------------------
    (Added to READ.ME - Batch 2004)

    The Filer (CFIL), Converter (CCVT) and Sorter (CSRT) utilities may now be
    distributed with your applications on a royalty-free basis.	 The previous
    royalty-free utility, CSORT, has been removed from Professional Developer.
    You can run these utilities with a /V (Video off) switch to prevent the
    display of the base page.


25. Fast video switch for Runtime
---------------------------------
    (Added to READ.ME - Batch 2006)

    On page 10-14 in the "Utilities Guide," in the discussion of command
    line options for CRUN, and on page 14-21 in the discussion of
    command line options for a translated program, the /F switch should
    be included.

	 The F option	     The F or "Fast video" option disables
			     waiting for video retrace prior to
			     writes to display memory.	Using the F
			     switch may cause "snow" with some monitors.

    (Note:
	 To eliminate "snow" on some CGA's, Clarion internal video code
	 waits for the video retrace before writing a character and
	 attribute to display memory.  While eliminating snow, this
	 may result in slower screen handling.	Some newer CGA's are
	 not sensitive to this problem and do not need to wait for
	 video retrace to avoid snow.	With these monitors in mind,
	 the /F switch (fast video) has been added for use with CPRO.EXE,
	 CRUN.EXE, and translated programs.   This may currently be
	 invoked from the command line only, but will probably be added
	 as a Tailor option in a future version.)

26. Path searching for .PRO, .SYM, and .BIN modules
---------------------------------------------------
    (Added to READ.ME - Batch 2006)

    When the processor (CPRO.EXE) or runtime system (CRUN.EXE) loads a
    program, it is assumed that all of the .PRO or .BIN modules named
    in the MAP structure (and corresponding .SYM modules) can be found
    in the directory where the program resides.	 If a module is not
    found in that directory, the current version of CPRO and CRUN will
    search the path to attempt to locate the module.

27. Ctrl-P (Print) Option for displayed text files
--------------------------------------------------
    (Added to READ.ME - Batch 2006)

    In Director with the Ctrl-T (type file) option, and in the
    Processor's debugger with the Ctrl-S (display source) option, and
    in Installer with the automatic READ.ME display feature, the
    displayed text file may be printed by pressing Ctrl-P.

28. COPY, REMOVE, RENAME statements - files must be closed
----------------------------------------------------------
    (Added to READ.ME - Batch 2006)

    In the "Language Reference Manual," on the following pages for the
    noted sections:

	 10-5  COPY   statement for DOS files
	 10-6  RENAME statement for DOS files
	 10-6  REMOVE statement for DOS files
	 11-13 COPY   statement for Clarion files
	 11-13 RENAME statement for Clarion files
	 11-14 REMOVE statement for Clarion files

    the following paragraph should be included:

	      The "file" parameter (specifying the file to be
	 copied/removed/renamed must be closed prior to using the
	 COPY/RENAME/REMOVE statement. If the file is open, the
	 "File already open" error will be posted.

29. Scanner command line switches
---------------------------------
    (Added to READ.ME - Batch 2006)

    Chapter 11 of the "Utilities Guide" should include the following
    information about command line switches for Scanner:

    I	 - used to specify input file

    D	 - used to force "DOS mode" with a structured file

    P	 - used to specify the input file's Owner ID (password)
	   and bypass the Owner ID window.

    Example:  CSCN I=MYFILE /D P=SWORDFISH


30. Runtime halt log
--------------------
    (Added to READ.ME - Batch 2006)

    After a run-time halt, a disk file is created containing information
    regarding the reason for the halt.	If the halt log file already
    exists, the new halt information is appended to the end of the file.
    The disk file is created in the current directory and is named
    as follows:

	 Program		  Halt log file
	 --------------------	  --------------------
	 Processor (CPRO.EXE)	  CPRO.DMP
	 Run-time  (CRUN.EXE)	  CRUN.DMP
	 Translated program	  CLARION.DMP

    The halt log file (.DMP) is a standard ASCII text file which may
    be printed, typed, or edited.  The information in the text file
    is the halt window information documented on page 10-4 of the
    "Utilities Guide," and the Open Files window explained in section 18
    of this document.

31. Environment variable for RUN swapfile
-----------------------------------------
    (Added to READ.ME - Batch 2006)

    The RUN statement is described on page 6-17 of the "Language
    Reference Manual".	The following information should be included:

	 The directory drive and path used for writing the $Tx.tmp
	 memory image file can be set with a 'CLATMP=' environment
	 variable.  In this way, a directory or drive other than
	 the current one can specified.	 This helps in two areas:

	      1.   Using RUN on a network.

	      2.   Faster save and restore during RUN.

	 A ram disk can be used if it is large enough to hold the
	 $Tx.tmp file.

	 For example, suppose an end user machine uses a large ramdisk
	 (512k or more recommended) as drive D:.  The following DOS
	 command (typically placed in AUTOEXEC.BAT) could be issued:

	      SET CLATMP=D:\

	 Subsequent Clarion programs will search the environment,
	 find the 'CLATMP=' variable, and use 'D:\' as the directory
	 and drive for the $Tx.tmp memory image file.

	 The CALL statement internally invokes a RUN statement,
	 therefore, the CLATMP environment variable will also be
	 used by CALL.

32. Clearing ALIASed keys
-------------------------
    (Added to READ.ME - Batch 2006)
    (Modified - Batch 2007)

    The ALIAS statement is described on page 7-6 of the "Language
    Reference Manual."	The following information should be included:

	 The ALIAS statement with no parameters clears all
	 aliased keycodes.

    (Note: a compiler change to support this new feature was
	   omitted from Batch 2006, but included in Batch 2007.)

33. Pre-image log files
-----------------------
    (Added to READ.ME - Batch 2007)

    In the section explaining "transaction log files" on page 11-38
    of the "Language Reference Manual,"	 the second paragraph incorrectly
    states that the extension of a pre-image file is ".PRE".  The correct
    extension of a pre-image file is ".LOG".

34. Hercules "InColor" Card
---------------------------
    (Added to READ.ME - Batch 2007)

    All Clarion utilties and translated programs now support the
    Hercules "InColor" card (Model GB222).  All of the colors specified
    for the CGA or EGA are supported, except that the "InColor" card
    does not support blinking colors.  The bit in an attribute byte
    that is normally used to control foreground blink is used by the
    "InColor" card to specify high intensity background.   Specifying
    a "blink" attribute for a screen color will result in a "bright"
    version of the background color.

    In the CGA and EGA, the cursor assumes the color of the foreground
    color at the cursor position.  The "InColor" card has a constant
    cursor color that does not vary according to the attribute at the
    cursor position.  We have selected high-intensity or "bright" white
    as a cursor color with the "InColor" card in the hopes that most
    users will not elect to specify a high intensity or "bright" white
    background.	 If a bright white background is selected (by specifying
    a blinking color on white) the cursor will not be visible.

35. Unknown Field Equate Label error
------------------------------------
    (Added to READ.ME - Batch 2007)

    The list of compiler error messages, on page 2-49 in the
    "Utilities Guide," should include the following new error message:

	 Error number: 209   ? IS AN UNKNOWN FIELD EQUATE LABEL

	 A statement is referencing a field equate which has not been
	 defined.  The equate label is either misspelled, or the
	 SCREEN structure does not have a field with a USE attribute
	 specifying the denoted variable, or naming this equate.

36. INCLUDE statements on the same source line
----------------------------------------------
    (Added to READ.ME - Batch 2007)

    The compiler processes source lines one at a time.	A source line
    may contain more than one statement (or multiple lines of source
    may constitute one statement.)  The entire source line is processed
    before the next source line is extracted.

    The INCLUDE statement tells the compiler to "freeze" the current
    source file and open a new source file.  The currently extracted
    line of source (the one that contains the INCLUDE statement) is
    completely processed, compiling all of the statements on that line,
    before the next source line is extracted.  The next line to be
    extracted will come from the active source file (which may have
    been changed by the INCLUDE statement.)

    If multiple INCLUDE statements are on the same line of source,
    for example:

	 INCLUDE('A');INCLUDE('B');INCLUDE('C')

    the following happens:

	 1. The current source file is frozen and A.CLA is opened.
	 2. A.CLA is frozen and B.CLA is opened.
	 3. B.CLA is frozen and C.CLA is opened.
	 4. C.CLA is compiled, then closed.
	 5. B.CLA is compiled, then closed.
	 6. A.CLA is compiled, then closed.
	 7. Compiling continues in the original source file.

    Consequently, when multiple INCLUDE statements appear on the same
    line of source, they are compiled in reverse order.	 To compile the
    statements in the desired order, code each include on a separate
    line, for example:

	 INCLUDE('A')
	 INCLUDE('B')
	 INCLUDE('C')

37. POINT fields as dummy fields
--------------------------------
    (Added to READ.ME - Batch 2007)

    When all screen areas covered by a POINT field are blank, the
    POINT field immediately completes the ACCEPT statement as if it
    were a "dummy" field.

    The last sentence of the sixth paragraph on page 8-25 of the
    reference manual should say:

	 "In this case, the repeat index is unchanged, and the
	      CHOICE() and REFER() functions will return zero."

38. IDLE intervals of zero
--------------------------
    (Added to READ.ME - Batch 2007)

    The section on the IDLE statement on page 7-7 of the "Language
    Reference Manual" states in the second sentence of the second
    paragraph that the "separation" parameter must be greater than or
    equal to one.  This has been changed.

    The IDLE statement now supports an interval of zero, or immediate
    execution between keystrokes.

    In this case, for best performance, the named IDLE procedure
    should be coded as follows:

	 LABEL	   PROCEDURE
			:
	      ... any declared data ...
			:
	   CODE
	      LOOP UNTIL KEYBOARD()
			:
	     ... statements to be executed while waiting
		   for a keystroke ...
			:
	      . !END OF LOOP AND RETURN FROM IDLE PROCEDURE

39. Environment variable for fast video
---------------------------------------
    (Added to READ.ME - Batch 2007)

    The fast video switch, described above in READ.ME section 25,
    applies to CPRO, CRUN, and translated programs.  To make use of
    the fast video feature in all Clarion utilities, use the
    CLAVID environment variable, for example, execute the following:

	 SET CLAVID=Y

    before executing Clarion.

    To disable fast video for all utilities, execute the following:

	 SET CLAVID=N

    or

	 SET CLAVID=

    before executing Clarion.

40. Clarion used with Desqview
------------------------------
    (Added to READ.ME - Batch 2007)

    All Clarion utilities and translated programs now automatically
    detect and support the Desqview environment.  The "video time-out"
    and "beep" features of Clarion are disabled automatically. This allows
    the CLARION utilities to run in a "small window" and in the background.

41. Clarion Standard Time
-------------------------
    (Added to READ.ME - Batch 2007)

    The following information should be included in the "Language Reference
    Manual" on page 13-16:

	 A "standard time" is the number of 100ths of a second that have
	 elapsed since midnight.  A standard time of zero is undefined
	 and represents no valid time of day.  A standard time of one
	 is exactly equal to midnight.

	 If two standard times in the same day are subtracted and the
	 difference is used as a duration, add one to the difference
	 before formatting with a time picture.	 For example:

	 VAR1	   STRING(@T4)
	 TIME1	   LONG
			:
	      VAR1 = (CLOCK() - TIME1) + 1

42. RECOVER statement
---------------------
    (Added to READ.ME - Batch 2007)

    The following information on the RECOVER statement should replace
    page 11-41 in the "Language Reference Manual:"

    RECOVER Statement

    Form 1:   label	RECOVER ( seconds )

    Form 2:   label	RECOVER ( )

    The RECOVER statement arms a recovery process that unlocks files
    or records that may have left in a locked state by system failure.

    In Form 1 of the RECOVER statement, the "seconds" parameter is a
    numeric constant or variable that specifies the recovery wait period
    in seconds.	 The recovery wait period is the time in seconds after
    which a file or record is considered to be locked due to system
    failure, and the recovery process is invoked.  If the value of the
    seconds parameter is zero, RECOVER begins immediately.  If the
    value of the seconds parameter is less than zero, RECOVER is ignored.

    Form 2 of RECOVER disarms the recovery process.

    For programs that use shared files, the recovery wait period should
    be set greater than the longest duration of exclusive control -- the
    longest time it takes any user to update a record, or log a transaction,
    or the longest time a file can be locked, or a record can be held.

    It is possible to wait longer than the recovery period if a file is
    locked.  Each time activity is detected on the locked file, the
    recovery wait period is started again.

    If the recovery process is invoked to unlock a locked file, and
    if transaction logging is not in progress, and if a pre-image log
    file exists for that file, then pre-image data will be rolled
    back for that file.	 Other files may also be rolled back if the
    pre-image log file points to a transaction logout file that lists
    other files.

    The RECOVER statement can be issued any number of times, arming or
    disarming the recovery process, or changing the recovery wait
    period.  RECOVER does not post any error messages.

    Here are some examples of RECOVER statements:

	 RECOVER(300)	     !Wait 5 minutes
	 RECOVER(0)	     !Recover immediately
	 RECOVER	     !Disable the recovery process

43. Sharing Clarion Files
-------------------------
    (Added to READ.ME - Batch 2007)

    In the "Language Reference Manual," Chapter 11, Page 11-33, in the
    second paragraph concerning sharing Clarion files, the manual states:

	 "A Clarion file must be shared if, and only if, any other user
	  is permitted to change it."

    Prior to Batch 2007, this condition was strictly the responsibility
    of the programmer to control.  It was assumed that a valid situation
    existed in which only one user had the ability to change a file
    (that user's program could open the file with OPEN,) but other users
    would want to view the file (they had to open the file with SHARE.)

    The manual should now read:

	 "If a Clarion file is shared by one user, it must be shared by
	  all users.  If the first user to open a file does not share
	  control of the file, other users cannot access the file."

    Many programs did not properly control this situation and the result
    was corrupt key files caused by a bug that was difficult to find.  As
    of Batch 2007, the Clarion file system will enforce compliance with
    this rule.	If the first program to open a file opens it with OPEN,
    that user's program will have exclusive control over that file and no
    other user's program may open it.  If the first program to open a file
    opens it with SHARE, other user's programs may also open that file,
    but only by using the SHARE statement.

    The manner in which this situation is enforced is network dependent.
    If the network disallows the open, OPEN or SHARE will set error.
    The ERRORCODE() function will return "5" and the ERROR() function will
    return "ACCESS DENIED."   Some networks may not report this error
    at the time of the open.  If the error is detected in a file processing
    statement, either due to an update attempt or an implicit open, the
    program will be halted with a "SHARING VIOLATION" error message.

44. Foreign keyboard support
----------------------------
    (Added to READ.ME - Batch 2007)

    Some foreign keyboard drivers (e.g. KEYBFR.COM, KEYBUK.COM, etc.)
    use keyboard scan codes that are different than the standard IBM
    keyboard scan codes for some keys.	 For example, the French
    keyboard driver uses a different scan code for Ctrl-W.

    All Clarion utilities and translated programs now automatically
    support foreign keyboard drivers, however, when "typed ahead"
    non-standard keys will lose their shift-state (Ctrl, Alt, Shift).
    For example, if Ctrl-W is "typed ahead" under a French keyboard
    driver, the Ctrl state is lost, and the key will be not be
    interpreted correctly.

45. dBaseIII date fields
-------------------------
    (Added to READ.ME - Batch 2008)

    In the "Utilities Guide," Chapter 3, Page 3-5, in the last
    paragraph concerning converting dBaseIII to Clarion, the
    manual states:

	 "dBaseIII date fields are converted to Clarion STRING fields."

    This should read:

	 "dBaseIII date fields are converted to Clarion LONG fields."

46. YEAR() function
-------------------
    (Added to READ.ME - Batch 2008)

    In the "Language Reference Manual," Chapter 13, Page 13-18, the
    examples shown for year values returned by the YEAR() function
    are incorrect.  The YEAR() function returns a LONG value
    representing a year between 1801 and 2099.	The examples should be:

	      YEAR(67789)    returns   1986
	      YEAR(67995)    returns   1987
	      YEAR(68669)    returns   1988

47. CHAIN.COM license agreement
-------------------------------
    (Added to READ.ME - Batch 2008)

    Translated programs require the utility CHAIN.COM to be loaded
    in order to chain to other translated programs.  CHAIN.COM is
    documented on page 6-16 of the "Language Reference Manual," and
    on pages 14-20 and 14-21 of the "Utilities Guide."

    Although it is not mentioned in your license agreement, you are
    permitted to distribute CHAIN.COM with your translated applications
    on a royalty-free basis.

48. Spacebar keyboard codes
---------------------------
    (Added to READ.ME - Batch 2008)

    Pages B-1 and B-2 in Appendix B of the "Language Reference Manual"
    includes a chart listing Clarion keycode values.  The following
    entry should be added to the chart:

    +--------------+--------+--------+--------+--------+
    | Key	   |  Code  | Shift  | Ctrl   | Alt    |
    +--------------+--------+--------+--------+--------+
    | Space	   |   32   |  289   |	290   |	       |

49. FORMAT() function
---------------------
    (Added to READ.ME - Batch 2008)

    In the "Language Reference Manual," Chapter 13, Page 13-10, the
    last FORMAT() example shown uses an invalid picture token.	The
    last example should be:

	      FORMAT(67350,@D5.)       returns '22.05.85'

50. BASIC File Delimiters
---------------------
    (Added to READ.ME - Batch 2008)

    Two new fields have been added to the Converter Utility's base page.
    These fields allow the user to override the standard (default)
    delimiters used in a BASIC file to:

    (1) enclose STRING fields

    (2) separate fields

    STRING fields in a BASIC file are typically enclosed in double quote
    marks.  All fields in each record are typically separated from each
    other by a comma.

    +---------------------------------------------------------+
    |			  The CLARION Converter		      |
    |							      |
    | Input Type      :BASIC	  Clarion  dBase  DIF  BASIC  |
    | Input File      :					      |
    | String Delimiter:"				<=======  BASIC File
    | Field Separator :,				<=======   Delimiter
    | Output Type     :Clarion	  Clarion		      |	   Fields
    | Output File     :					      |
    |							      |
    | Source File     :					      |
    |							      |
    |							      |
    +---------------------------------------------------------+

    When BASIC is chosen as the Input Type, two additional fields are
    immediately displayed (see above).	These fields, STRING DELIMITER
    and FIELD SEPARATOR will originally display the default values
    (double quote and comma).  If the user wishes to accept these
    values, pressing Enter on each field will suffice.	If the user has a
    BASIC input file that uses other delimiters, the user may type in the
    new delimiter for each field.

51. Numeric Fields
---------------------
    (Added to READ.ME - Batch 2009)

    On page 8-41 of the Language Refernce Manual (Chapter 8, "Processing
    Screens"), fourth paragraph under the section "Numeric Fields", the
    sentence:

	"The Enter and Plus keys enter positive numbers; ..."

    should read:

	"The Enter key leaves the sign alone; the Plus key enters a
	 positive number; ..."


52. Memory Table Errors
---------------------
    (Added to READ.ME - Batch 2009)

    On page 12-8 of the Language Reference Manual, the table listed under
    "Memory Table Errors" is incorrect.	 The correct table follows:

    Code	       Message				Posted by

    8		       INSUFFICIENT MEMORY		ADD, PUT
    30		       ENTRY NOT FOUND			GET
    31		       ENTRY NOT AVAILABLE		PUT, DELETE, GET

53. Network Critical Errors during OPEN or SHARE
---------------------
    (Added to READ.ME - Batch 2009)

    A change added in Batch 2008 was causing a problem for some users when they
    were attempting to SHARE a file that had already been opened using OPEN.
    Under batches prior to 2008, opening a file with SHARE after someone else
    had already OPENed it caused an 'ACCESS DENIED' error; in 2008, the system
    was changed in such a way that this instead caused a critical error on the
    network.  This problem has been corrected.	Here is what happens now:

    If a file is opened with SHARE and is then OPENed by someone else, the
    person attempting to OPEN it will receive an 'ACCESS DENIED' error.	 This
    is consistent with batches prior to 2008.

    If a file is OPENed and is then opened with SHARE by someone else, the
    file will be opened, but the person using SHARE will receive a 'FILE OPENED
    READ-ONLY' error.  This is not an error, but a warning and has been assigned
    error code 67.  This just means that Professional could not open the file
    for SHAREing due to someone else having it opened for exclusive use.

54. New switches available for Processor, Translator, and Translated Programs
---------------------
    (Added to READ.ME - Batch 2009)

    Two new switches are now recognized by the Processor (CPRO.EXE), the
    Translator (CTRN.EXE) and Translated Programs.  These switches, L and B,
    are for programs running under Desqview.  Using the switch L=YES will
    force keyboard locks.  Using the switch B=YES will force beeps.   These
    switches simply enhance Clarion programs running under Desqview.

55. New ERROR() returned by BUILD()
---------------------
    (Added to READ.ME - Batch 2010)

    BUILD now sets ERROR() and ERRORCODE() to "CREATES DUPLICATE KEY" and
    40, respectively, when a KEY or INDEX is built that does not allow
    duplicate key values, and duplicates were found during the build. When
    this error occurs, the KEY or INDEX file is build correctly and contains
    the duplicates. This allows the programmer to handle this condition.

    The sixth line of the table on page 11-43 of the Reference Manual is:

	  40   CREATES DUPLICATE KEY  PUT, ADD

    It should read:

	  40   CREATES DUPLICATE KEY  PUT, ADD, BUILD

