Goto: 4C Home | 4C Docs 4C Client/Server Change Log

4C Client/Server Change Log

11 June 2022

Versions 6.7.5-01 and later

12 April 2022

Versions 6.7.4-01 and later

24 February 2022

Versions 6.4.9-08 and later and versions 6.7.3-06 and later

01 February 2022

Versions 6.7.3-04 and later

07 December 2021

Versions 6.7.3-01 and later

20 October 2021

Versions 6.7.3-01 and later

18 October 2021

Versions 6.7.3-01 and later and version 6.4.9-06 and later

09 August 2021

Versions 6.7.3-01 and later

27 April 2021

Versions 6.7.2-01 and later

21 April 2021

Versions 6.7.2-01 and later
Versions 6.4.9-02 and later

20 April 2021

Versions 6.7.2-01 and later

11 March 2021

Versions 6.7.2-01 and later

03 December 2020

Versions 6.4.8-01 and later

19 October 2020

Versions 6.4.7-05 and later

08 August 2020

Versions 6.4.5-01 and later

14 July 2020

Versions 6.4.4-01 and later

02 June 2020

Versions 6.4.3-05 and later

18 May 2020

Versions 6.4.2-05 and later

05 February 2020

Versions 6.4.1-08 and later

05 February 2020

Versions 6.4.1-02 and later

22 December 2019

Versions 6.4.0-05 and later

22 December 2019

Versions 6.2.7-02 and later

08 April 2019

Versions 6.2.2-07 and later

11 March 2019

Versions 6.2.2-05 and later

28 February 2019

Versions 6.0.9-01 and later

08 January 2019

Versions 6.2.2-02 and later

12 December 2018

Versions 6.0.8-03 and later

12 Dec 2018

Versions 5.8.9-01 and later

15 May 2018

Versions 6.0.7-01 and later

03 May 2018

Versions 6.0.5-02 and later

05 March 2018

Versions 5.8.8-02 and later

12 February 2018

Versions 5.8.8-01 & 6.0.4-01 and later

04 January 2018

Version 5.8.7-14 and later

28 December 2017

Version 5.8.7-12 and later

29 November 2017

Version 5.8.7-08 and later

29 November 2017

Version 5.8.7-08 and later

18 September 2017

Version 5.8.7-04 and later

18 September 2017

Version 5.8.7-01 and later

10 July 2017

Version 5.8.5-06 and later Version 5.8.5-05 and later

12 June 2017

Version 5.8.5-05 and later

30 December 2016

Version 5.8.4-01 and later

22 November 2016

Version 5.8.3-01 and later

07 November 2016

Version 5.8.2-01 and later

05 August 2016

Version 5.6.8-09 and later

25 July 2016

Version 5.6.8-07 and later

06 July 2016

Version 5.6.8-02 and later

21 June 2016

Version 5.6.7-08 and later

13 June 2016

Version 5.6.7-07 and later

29 January 2016

Version 5.6.5-01 and later

29 January 2016

Version 5.6.3-04 and later

18 September 2015

20 November 2014

4CServer Version 5.2.9-01 and later

27 January 2014

4CServer Version 5.2.8-03 and later

27 November 2012

4CServer Version 5.0.9-07 and later / 5.2.4-01 and later

01 November 2012

4CServer Version 5.2.3-09 and later 4CClient Version 5.2.3-10 and later 4CExtDB Libraries Version 5.2.3-10 and later along with 4csrvr version 5.2.3-09 and later.

10 September 2012

08 August 2012

06 August 2012

Version 5.2.3-03 and later

05 March 2012

Version 5.2.0-00 and later

15 February 2012

Client Version 5.2.3-00 and later

29 December 2011

Version 5.2.0-00 and later Version 5.0.7-06 and later

29 December 2011

Version 5.0.7-05 and later

30 December 2011

Version 5.0.7-04 and later

23 October 2011

Version 5.0.6-05 and later

11 April 2011

Version 5.0.4-01 and later

01 December 2010

Version 4.8.2-05 and later

13 September 2010

Version 4.8.2 and later

07 July 2010

Version 4.8.1 and later

07 July 2010

Version 4.6.9-5 and later A memory leak in the 4C Crypto library has been fixed. This has minimal impact on most applications, however, once that make continuous remote connection calls are affected and will probably see memory usage in these processes increase over time. The most affected are 4csrvr processes that open and close a remote log file every minute for replication.

10 August 2009

Version 4.6.7 and later

26 June 2009

Version 4.6.5 and later

13 March 2009

Version 4.6.4 and later

01 March 2009

Version 4.6.3 and later

02 January 2009

Version 4.6.2 and later

01 November 2008

Version 4.6.1 and later
  • Security Fix - Avoid using the same IV more than once
  • There are two new JIsam utilities, either of which can be used to enable doing a backup without shutting down 4C.
  • The SysAddr entry in XLCONFIG allows you to specify addresses for each segment instead of just the first.
  • There have been some bootstrap changes. Some of them are documented here.
  • There are many more options for defining screen layouts.
  • The LogFile specified in _4CSRVRCONFIG will not grow larger than 1meg before saving itself and resetting size to 0. This is important for users that never shutdown 4c.
  • You can prevent columns in ListView panels from being resized. This is controlled by the sys.pnh_lockcolf field in sys.pnl_hdr. Both client and server need to be at version 4.6 or later for this to work.
  • You can prevent ListView panels from allowing horizontal scrolling. This is controlled by the sys.pnh_noscrf field in sys.pnl_hdr. When horizontal scrolling is disabled, the ListView will also prevent columns from being resized. Both client and server need to be at version 4.6 or later for this to work.
  • Center Justify will work better with variable width fonts when both client and server are at version 4.6 or later
  • Shared mem is freed immediately for recompiled files and programs that are no longer in use. This should lessen the chance of running out of SysMem on live systems that are also used for development.
  • When compiling, 4C verifies that the max number of file variables does not exceed 32,765.
  • You can write your own external libraries and call functions from them in 4C. See the readme.txt file in HOME_4C/libtestcalc1.d. Additional documentation will be provided if necessary.
  • 10 October 2008

    Version 4.4.9 and later

    14 July 2008

    Version 4.4.8 and later

    04 June 2008

    Version 4.4.8 and later

    24 April 2008

    Version 4.4.7 and later

    02 January 2008

    Version 4.4.6-3 and later

    01 November 2007

    Version 4.4.6 and later

    20 August 2007

    Version 4.4.5 and later

    28 June 2007

    Version 4.4.4 and later

    01 May 2007

    Version 4.4.4 and later

    29 March 2007

    Version 4.4.4 and later

    05 March 2007

    Version 4.4.2 and later

    18 December 2006

    Version 4.4.1 and later

    01 November 2006

    Version 4.4.1 and later

    16 Sept 2006

    Version 4.4.1 and later

    16 Aug 2006

    Version 4.4.0 and later

    28 May 2006

    Version 4.4.0 and later
    1. There have been changes made to Panels. See: 4C Panel Changes
    2. There have been some minor bootstrap changes. See: Bootstrap Changes
    3. There have been some minor bug fixes. See: FixedBugs
    4. sys.show_panel() will hide and show the tab labels when you hide and show TabFolder children.
    5. sys.show_panel() will disable and enable the tab labels when you disable and enable TabFolder children.
    6. sys.set_pnltitle() will update TabFolder labels when you modify the titles on TabFolder children.
    7. wpcled allows you to indent or unindent multiple lines at once.
    8. isdump will not let you specify a dump file that already exists. This will help prevent losing data when you type:

      isdump *.xl

    07 April 2006

    Version 4.4.0 and later
    1. The w4ccl and wpnlsp client programs allow you to quickly switch tabs using fkeys (Shift+F1 thru Shift+F12). The focus will remain on the TabFolder rather than return to main edit area. This allows you to use the arrow keys to move between the tabs as well. When the focus is on the TabFolder, you can set the focus to the main edit window by pressing Tab or Ctrl+Tab or by clicking the mouse in the main edit area. When the focus is in the main edit window, you can set the focus to the TabFolder itself by pressing Ctrl+Tab or by clicking the mouse on one of the Tabs.
    2. The wpcled client program allows you to indent sections of text from the edit menu and the context menu. The are also accelerator keys for indenting more and for indenting less.
    3. Specifying a title, frame, and margins for a TabFolder panel will work.
    4. Specifying a grabw or grabh value < 0 for a subpanel will prevent that subpanel from getting any of the extra available width and height.
    5. There is a traceback button on the Ctrl+F8 client dialog.

    28 February 2006

    Version 4.2.5 and later
    1. The source code control bootstrap programs will not allow reedit of an installed program/file/layout on the same mod.

    01 February 2006

    Version 4.4.0 and later
    1. sys.hide_panel() is obsolete and sys.show_panel() has more functionality.
    2. sys.show_dfield() is a new SysPCL that allows you to hide, show, enable, and disable display fields.
    3. sys.show_fkey() is a new SysPCL used to show, hide, enable, or disable items associated with a function key.
    4. There are 2 new fkeys used by 4C. They are <repeat> and <repeatall>. Ctrl+R is the default accelerator for <repeat>.
    5. Ctrl+A is now the default accelerator for <selectall>.
    6. The <repeat> fkey can be used to repeat the last input on the current display field.
    7. The <repeatall> fkey can be used to repeat the last input on selected records for the current display field. This is most useful when it is necessary to change one field in many selected records to the same value. This comes up quite often when modifying display fields.
    8. The 4ccl client program allows specifying output file with "-o <outfilename>" option.

    31 October 2005

    Version 4.2.2 and later
    1. Display fields with an sdftype of title in a non Title panel will generate an error during compile.
    2. Interrupting xlbuild will cause the 4cbuild process to exit as well.
    3. The 4cbuild process will use the same credentials as the xlbuild process that starts it instead of the default user defined in _4CSRVRCONFIG.

    13 October 2005

    Version 4.2.2 and later
    1. 4C will maintain usernames up to 20 characters instead of just 8. The sys.user_name in $system still only holds 8 char usernames, but there is a new field, sys.l_username that holds the longer one. xlview will display the longer name, but most other areas of the bootstrap that store user names in files are only storing the 8 character username.
    2. The bootstraps will allow you to reference files and fields defined in different 4c program directories as long as the file is defined in one of the directories along the XLPROG path. This change has the following important implications:
    3. There is a program that you can find under the Cleanup submenu of sys.menu.tv to help find and clean your spec directory of unneeded file definitions. This program, sys.fhdup.1, displays a list of files that are defined in the App directory and at least one other directory in the app prog_lst. Select the files you want deleted and then press delete. This will delete the file definition as well as any SC text files related to the file. It does not delete sys.data_dict or sys.data_type rcds.
    4. You can change a display field's label dynamically with sys.set_dflabel()

    09 October 2005

    Version 4.2.2 and later
    1. You can show and hide panels dynamically with the new system pcls: sys.show_panel() and sys.hide_panel()
    2. You can specify a screen panel to be initially hidden.
    3. You can use 'G' to to goto specific line numbers in scrolling screens. This will pop up a window where you can enter the line number.
    4. Screen layouts are now part of 4C source code control. See: Version Control Changes for details.
    5. For applications with source code control enabled, xlimport will not allow import into a read only program, file, or screen layout.
    6. You can select non scrolling fields in scrolling screens to modify the same way you can scrolling fields.
    7. The word4c program should be able to find the winword.exe no matter which version of Microsoft Office is installed.
    8. There is a new field in the local system file, sys.cmd_field. It holds the display field number of the display field running a cmd pcl. The number in sys.cmd_field will be the same as the <dflabel> for that display field.
    9. There is a new system pcl that may be useful along with sys.cmd_field in certain global pcls. sys.get_dffileno()
    10. The crt print window will use the lines per page setting from the sys.dev_option file if one is specified instead of hardcoding to 60 lines per page. If not set, the default will still be 60 lines per page.
    11. The 4C client will store images in the APPDATA directory instead of in the 4c install directory.
    12. The previously undocumented system pcl: sys.set_dfimage() is now documented.

    12 September 2005

    Version 4.2.2 and later
    1. xlimport is better at being able to tell if a data dictionary item or datatype changed. You should see less of these messages now.
    2. There are new blocking options for VarSeq files. They are VStrip and VNoStrip. VStrip will strip all trailing nulls including numerics. VNoStrip will not strip any nulls. Previously using VarSeq as a blocking method resulted in nulls getting stripped from VarSeq files without a fld separator, but not from files with a fld separator.
    3. There is a new cmd line utility program, 4cenv , that allows you to easily set your environment and run programs in the context of a specific 4c application.
    4. You can move installed and approved SC Mods between systems more easily now.
      See 4C Remode Mod Imports
    5. Checking for and displaying program and file differences in the SC programs is improved. It may be necessary to create and install a mod with all programs and files on it in order to get the full value of this improvement.
    6. The <Copy> key will now create a default DIF clipboard entry for pasting into spreadsheets.
    7. sys.upd_file(<asfile>,F_ADD|F_FORCE) will work on remote binary and remote FixSeq files.

    05 July 2005

    1. You can specify the minimum client version allowed in the application section of the _4CSRVRCONFIG file. Use a line like:
      MinClientVersion=v.r.l

    08 June 2005

    Version 4.2 and later
    1. For some client file processing, you can now use: sys.cl_open() instead of lsh(). This is useful when different client machines will have different programs that process the file, such as different browsers for processing an html file. It also makes it unnecessary for the application to know or try to determine the exact path needed to open a file on a client machine.
    2. Dynamic files are supported. A dynamic file is a file that you can open and access at run time without having the file defined in the PrFiles section of a 4C program. The following SysPCLs are used with dynamic files:
    3. There is a new flag in the data dictionary that allows you to specify whether 4C null values should be mapped to database null values. If the field defined in the database does not allow nulls, then 4C will not map a null value to null. This is most useful for dates, where the 4C null date of "1799-12-31" usually means nothing to an external database.
    4. JISAM will allow file sizes up to 4gig on Linux.
    5. You can set an option to have the 4C client display connection info in the title of any main 4c window. This may be useful to developers that may be connected to multiple machines at the same time. The option to set is on the preferences menu of the main 4cclient connect window. It is saved between sessions in the clseqf.sxl file.
    6. 4C Client will look first for a clseqf.sxl file in the current users APPDATA directory. If not found there, then it will use the ALLUSERS APPDATA directory to either open an existing clseqf.sxl file. The install will remove any previous clseqf.sxl file in the 4C etc dir. This change was necessary because most users by default dont have write access to any files in the 4C etc dir.
    7. 4C Fonts are loaded from 2 different files. The first file loaded is local to a single user and will be one the following:
      File specified by Env Var XLFONTFILE
      Current User APPDATA/4C/4csfont.def
      


      Only one of the above 2 files is read.

      After loading the user specific font file, 4C will also load font definitions from one of the following:
      All Users APPDATA/4C/4csfont.def
      HOME_4C/etc/4csfont.def
      HOME_4C/lib/4csfont.def
      


      Only one of the above global font files will be loaded. Fonts defined in the local user font def file take precedence over fonts defined in the global font def file.
    8. The function key definitions will be loaded from multiple 4cfkey.def files in the following order.
      HOME_4C/lib/4cfkey.def - always loaded
      one of AllUsers APPDATA/4C/4cfkey.def or HOME_4C/etc/4cfkey.def
      one of Current User APPDATA/4C/4cfkey.def or env var XLFKEYFILE
      


      Keys defined in files read later override the keys defined in previously read files.

    09 November 2004

    Version 4.2.0 and later
    1. for (; ;) will compile and is equivalent to while(1)

    21 October 2004

    Version 4.0.6 and later
    1. For alpha variables you can use a "*" in the display format. On input, it is equivalent to "x". On output it displays as a "*".
    2. sys.set_dfformat() will now work as documented.
    3. The _4CSRVRCONFIG file has a new option, DataEncryption which currently can be 4C or None.
    4. Local connections made by 4ccl will use the same security as the logged in user unless the -I option is used. Root will not be able to run 4ccl without specifying either -I or -u <username>. Root does not need to supply a passwd in order to run under the security of another user.

      This may require modifying shellscripts that call 4ccl with a username and passwd.

      4ccl will continue to work as before for non local connections.
    5. Local connections made by xlbuild will always use the same security as the logged in user. It will be unnecessary to log in again. Root will be unable to run xlbuild.

      If you have DefaultLogon specified in the _4CSRVCONFIG file only for xlbuild, you should remove it.
    6. wpcled handles keyboard input correctly in the find dialog.
    7. wpcled highlights parenthesis and braces while you type. A brace or parenthesis without a match is displayed in red. When the caret is to the right of a brace or a parenthesis with a match, both are displayed in green. You can quickly locate a matching parenthesis or brace by moving the caret to the right of the one you want to match and then selecting show match from the context menu.
    8. specifying NumCols on sellist and inplist display fields will shrink the combobox width but allow a wide dropdown list. One method of using this effectively is;

    18 August 2004

    1. xlimport will now preserve sys.pr_schnum and sys.fh_schnum for imported progs and files. This is important for correct operation of 4C Version Control.
    2. There is a new 4c fkey, <info>, the default accelerator for it is Ctrl+G. Pressing the info key will display a msg box with program name and scrolling program info.
    3. You can get scrolling program info by pressing the <help> key or the <info> key.

    09 July 2004

    1. You can specify a database name with the ODBC external file interface. If no database name is specified, then the default database will be used.

    01 July 2004

    1. 4C can log any file modifications made by any 4c application or 4c utility program. See
    2. The 4csrvrd daemon has a new option,

      -m <maintuser>

      This allows only the <maintuser> to log on, presumably for maintenance purposes. The <maintuser> will still need to provide a correct password when logging on. When the 4csrvrd daemon is started in maint mode, then no ExecProg programs are run.
    3. The sys.get_keyno() system pcl accepts a file var CDefine as well as just the file var. This is meant to make it consistent with other system pcls.
    4. sys.expand() is a new system PCL.

    22 June 2004

    1. You can specify how often a 4c client should send a ping message to a 4c server. The default is every 5 minutes (300 seconds). With some firewalls, this is not often enough and connections can still get terminated due to lack of activity.

      Specify the PingTime in seconds.

      Specifiying a value of 0 is the same as specifying the deault of 300.

      Specifying a value < 0 means the client will never send a ping to the server.
    2. The connection string specified with most 4c client programs can now have an additional parameter to specify "App=<application>". You can use this instead of -a <application>. If the application is specified as part of the connection string and as a "-a <application>" option, the "-a <application>" takes precedence.

    03 May 2004

    1. There are two additional options in 4cconfig for setting environment variables for all 4C processes. They are:

    27 April 2004

    Version 4.0.0 and later
    1. You can exit the wpcled program by pressing <cancel> or <accept> when no pcls are open.
    2. You can exit the wpnlsp program by pressing <cancel> or <accept> when no programs are open.

    08 March 2004

    Version 3.8.1 and later
    1. The w4cpwd program can be called from the SessionControl dialog (<Ctl>+<Alt>+<F8>). Keep in mind that changing passwds is not supported on all server versions of 4C. You must be connected to a 4csrvr for this to work. This feature can be disabled from the server by specifying "-ChangePassword" in the SessionControl area of _4CSRVRCONFIG.

    07 March 2004

    Version 3.8.0 and later
    1. The screen display field type, sdftype, now has a default value stored in the Data Dictionary. It works a little different than most Data Dictionary attributes in that you can change the data dictionary default value without affecting any current programs.
    2. You can specify "None" for overflow formats and for null formats. The null format and overflow format fields are specified in sys.data_type, sys.data_dict, sys.file_det, and sys.dpy_field. Specifying "None" will have the same effect as blanks in these fields, but may be easier to set in some cases.
    Version 3.7.7 and later

    09 December 2003

    1. Input filters have been implemented.
    2. 4C will catch invalid default driver files at build time.
    <!-- You can "Hide" an application from the clients application menu by specifying "Hide=True" in the application area. This will have implications in the future... --> Version 3.7.6 and later

    18 November 2003

    1. There is a new SysPCL, sys.get_usrinfo(), for retrieving data about current 4c users. See the 4cSys program sys.ui.display for an example.
    Version 3.6.7 or 3.7.6 and later

    10 November 2003

    1. You can use the standard shell syntax ${VARNAME} in setting environment variables through config files and through the sys.set_env() SysPCL.
    2. You can use "Groups=..." in _4CSRVRCONFIG. Use it like "Users=..." The group names are the security groups of the OS that a user belongs to.
    3. The cmd buttons on the SessionControl dialog (Ctl+Alt+F8) can be disabled or enabled by the server using options in the _4CSRVRCONFIG file.
    4. An option in _4CSRVRCONFIG, AllowPasswordSave, allows the server to control whether clients are allowed to save passwords.
    Version 3.7 and Higher

    03 November 2003

    1. There is a flag in the data dictionary that allows you to specify using the max font width when a variable width font is used in screen programs. You do not need to specify this for numeric, date, or time fields since they can already accurately calculate sizes.
    2. The default font file on the client, lib/4csfont.def has more entries in it. It also makes greater use of variable width fonts than before.

    03 October 2003

    1. The serialization program, sp, has two new options:

    29 September 2003

    1. Screen programs can now be subdivided into panels. See for more details.
    2. Pasting text into a display field will check each character against the format and convert it as necessary.
    3. Using ^X (cut) ^C (copy) and ^V (paste) will work as expected on text fields when the application does not try to process the <cut>, <copy> and <paste> keys.
    4. When compiling files/layouts/programs, 4cbuild will error exit if it has to wait longer than 10 seconds in aquiring a record lock. This should eliminate the compiling deadlocks.
    5. HSplitPane and VSplitPane are new panel types.
    6. The sys.link_prog() PCL accepts an optional <flags> argument that can be either LP_DEFAULT or LP_FROMANCESTOR. Specifying LP_FROMANCESTOR links from a program higher up in the heirarchy of currently pushed programs. This makes it easier to use function keys to link to another tab in a tab folder.

    21 September 2003

    1. The windows pcl editor, wpcled, is now the default. You can still get the old one from the pcl list context menu or by setting a client env var, _4CPCLED, to "xled"

    07 August 2003

    1. Programs specified as driver programs but without any display fields will give a compile error.

    03 April 2003

    1. ListView is implemented. Details of ListView must be specified as lvitem. You will need to modify the s_dftype definitions in your application to have an lvitem. You can run the sdft.fm 4C program to do this, or you can just xlcopy the system s_dftype file to your own application.
    2. A new system PCL sys.set_sortdf() can be used with listviews to display an sort increasing or decreasing image on the column header.
    3. A new system PCL sys.set_pnltitle() can be used to change the title on a screen panel.
    4. Top and Side labels can be defined in the data dictionary and used in display fields.
    5. Screen programs can now be defined as class Panel, and the application can arrange the display similar to Screen Layouts.


    Version 3.6 and later

    21 June 2003

    1. The 3.6.5 ntsrvr and rs6000 server can handle expired passwds. If you have the 3.6.5 client installed and the server notices that the passwd is expired then you will be prompted to enter a new passwd. For this to work, the 4csrvrd daemon needs correct permissions.

    17 April 2003

    1. Using the local printer will work consistently.

    03 April 2003

    1. Using +/-<n>m works correctly in dates. There was a problem when adding any number of months to the 31st day of a month.
    2. Trying to modify an empty scrolling program will not hang anymore.
    3. Several improvements have been made to the 4cShell window. These include:
    4. Reading a client text file (VarSeq or FixSeq) sequentially is faster. 4C will read up to 500 rcds at a time without requiring synchronous network reads/writes.
    5. Type ahead is allowed on the 4cclient. In the past, the 4cclient always waited for the 4csrvr to request input from a field before allowing input. Now, you can type away.

    23 September 2002

    1. Scrolling is much smoother now.
    2. There is a new system PCL, sys.sl_settab(), that allows you to dynamically hide,show,disable,enable, and change the label for the tabs on a TabFolder.
    3. There is a flag in sys.dpy_field to specify that the field is a tabstop.

    12 September 2002

    1. A new client program, wpcled, can be used instead of xled for editing PCLs. You can run wpcled standalone, or it can be started automatically by the bootstraps when you choose to edit a PCL. It is fairly easy to use and you should be able to adapt to it just by running it a few times and checking out the different menu options on the menubar and on the context menus.

      In order for it to start automatically, both 4C client and 4C server must be at least version 3.6.2. In addition, you need to set the _4CPCLED environment variable on the client to "wpcled"

      This editor as well as this version of 4csrvr allow longer PCL stmts than previous versions. If you use longer stmts and export to earlier versions of 4C, you may find some of your stmts are being truncated.

      If you have problems running wpcled, make sure you have a 4csfont.def file in the 4c etc directory and that there is an entry for "pcltext" If there is no entry for "pcltext", then the "list" entry is used. You should use a fixed width font for the pcltext entry.
    2. Container layouts can now be tabbed. Specify TabContainer as slh_type when defining your layout.
    3. A new system PCL, sys.set_winlabel(), allows you to dynamically change the text on the Window menu or the text on a TabContainer tab.
    4. You can determine if remote file open errors are caused by some type of connection error by comparing sys.errno to ERR_REMCONN.
    5. F_READONLY will work with sys.open_file() on remote VarSeq and FixSeq files.
    6. xlcopy will work on integer fields that have commas in their format.

    04 May 2002

    1. The 4C Print Window has been enhanced quite a bit. Some of the enhancements are:
    2. There is a new 4c utility program, xltosql, that can be used to generate an sql script for creating database files.

    22 April 2002

    1. There is a system var for the application name, sys.app_name.
    2. Printing of a Screen program is supported. The full layout of the program initiating the print will be printed as a bitmap.
    3. Scrolling programs will allow the user to search through the scrolling list and find one of next, prev, first, last, or all strings that match some user input.
    4. sys.set_dfattr() will work for Report programs.
    5. A new field in $syslocalf, sys_ret, can be used to check return codes from SysPCLs that do not return integers. Currently, sys.get_answer() will set sys_ret to either GA_CANCEL or GA_OK. Other SysPCLs will set this field in the future.
    6. Cutting and pasting between 4C applications as well as between 4C and other applications is supported. This is documented separately in Cut/Copy/Paste Overview
    7. Some of the bootstrap programs allow copying program specs to the clipboard and pasting program specs from the clipboard. In particular:

      You really will have to try this out to see how powerful it is.
    8. There are a several new SysPCLs to give the application program control over copying to the clipboard and pasting from the clipboard. They are:
    9. There are a few new SysPCLs in addition to the ones specific to cut/copy and paste operations. They are:
    10. You can specify TSV for a blocking type for a VarSeq file.
    11. Default driver options can be specified in the driver specification. These can be overridden by the sys.set_droption() SysPCL.
    12. A TabFolder that uses LinkProg between tabs can override this for any single tab and have that tab exec progs instead of linking.
    13. sys.kill_prog() allows more options now.
    14. There are several new function keys. Some are processed only by the client but are defined so that they can be used in menus and action areas. Others may allow application processing as well. The keys and their default processing are listed below.

    20 February 2002

    1. Client connection info can be saved as private or local to the machine.
    2. You can use SQL stmts and call stored procedures from 4C. See the 4CSQL document for details and examples.
    3. You can add vertical separators after scrolling detail fields by setting the sepafter flag in the display field definition. You can set a default for this flag in the display field type definition.
    4. You can add the vertical separator after all fields in a scrolling program by setting the framecols field in the layout detail definition.
    5. You can use multiline text fields. Specify max items/lines as well as ncols in the display field detail. You probably will want to set vertical and horizontal stretch as well so the field resizes nicely.
    6. You can use a display field type of vsep or hsep to draw separators and boxes. Use a one char literal and a format equal to the length you want drawn. In order to draw a box you will need to use 2 vsep fiels and 2 hsep fields.
    7. You can use and environment variable for the ExtType in a file definition. In fact, it is strongly recommended to use XLEXTTYPE for the ExtType and make sure that XLEXTTYPE is set for each application that needs it. Using SQL in 4C is dependant on the XLEXTTYPE env var being set.
    8. The 4C serialization method has changed. Instead of depending on inode and last modified date of some file, it will now depend on the IP address of the host machine. The IP address corresponding to the name returned by the hostname command is the IP address of the machine. This cannot be the loopback address of 127.0.0.1. Any current serialized version of 4C will need to be reserialized. You will be able to dump the serial directory and restore it if necessary. If you change the IP address of the host machine, you will need to reserialize. If you cannot get 4C reserialized and you need to run in demo mode, then remove the Serialize and Security files from the serial directory. You will be able to run 2 4csrvr processes and any other processes necessary.
    9. You can set the initial width of a treeview that is part of a HRowCol or HSplitPane by setting the relative width in the layout detail. It is not necessary to set relative widths of all items and for the most part, you should avoid setting a relative width for any container item that is part of a HRowCol or HSplitPane.
    10. The 4C client will allow nulling of sellist and inplist data fields as long as they are not mandatory input fields.

    15 January 2002

    There are a number of new math functions callable as system PCLs. These are documented along with some previously undocumented math functions in math functions

    23 October 2001

    1. The context menu layouts are cleaned up a bit to make it easier to copy global function keys to context menu items.
    2. You can specify DR_DUPOK and DR_NODUPOK as a flag to sys.set_droption().

    11 October 2001

    1. This is now OBSOLETE - You should use client preferences for specifying how to configure and limit multiple instances of w4ccl See w4ccl and 4C Client Preferences for details.

      Clients that are using shared memory will be able run multiple copies of w4ccl using the same clseqf.sxl file. By default, client only installs do not use shared memory, but server installs do. In order to enable using shared memory on a client only install, you need to create a 4c.cnf file on the client. It needs one or two lines only

      Be aware that if you use shared memory on a client system, then you must use the same client seq file. If you try using multiple client seq files and shared memory at the same time you will have problems.

      4cclients version 4.2.7 and later will not allow you to use multiple client seqf files and shared memory at the same time.

      SysMemory 4096
      


      On an NT or Windows2K system, it will also need to specify SysAddr.

      SysAddr 200
      


    2. The 4C data dictionary has new fields that can be used in file definitions. The fields are sys.dt_setval, sys.dt_updval, sys.dd_setval, sys.dd_updval, sys.fd_setval, and sys.fd_updval. These fields can be set to either an environment variable, or a field in a usr scratch file, sys scratch file, or the system file.

      When 4C allocates the field buffers for a file, it sets the value of all fields that have a setval. This value will stay set unless the application changes it. This can be used to implement company codes that need to stay the same while an application is running, but may need to be different for different users. Fields that utilize a setval will most likely be key fields.

      When 4C updates a rcd, it will set all updvals in the file to the value specified in the updval. This can be used to timestamp changed rcds and to keep track of who made the changes. Of course this has no affect on deleted rcds.
    3. You can specify the application in the external file name of a file that is on a remote machine. Just add the App=AppName to the external name. Heres an example of an external file name:
      "Machine=linuxmain4c,Port=1414,App=4cSys!"
      


      This will work with the -n option of the 4c utility programs as well as sys.set_extfname().
    4. You can specify environment variables in the _4CSRVRCONFIG file specific to an application rather than an entire 4c session. In the application area use a separate line, indented with a tab and of the form

      ENVAR=envval

      I realize this format is different than the session level environment variables, but it is the best format to use. When an application starts, all environment variables that the application specifies will be set. When an application ends, these variables do not get reset. They will only be set to another value if the next application that starts specifies those variables as well.
    5. There is a new field in the sys.ext_type file for setting the default isolation level of database transactions. You should use this field rather than the InitStrings for setting the default isolation level.
    6. There are 2 new System PCLs for setting and getting the ext type of an External database file. The type is the key to the sys.ext_type file. The 2 System PCLs are sys.set_exttype() and sys.get_exttype()

      You may want to use these if you are copying data between different databases.
    7. Most of the 4C utilities will allow you to specify a

      "-e <exttype>"
      


      option. This will work similar to the above sys.set_exttype() System PCL. Using "-d" and "-e" for the same command will not work in most cases. Instead, set the XLPROG environment variable and use "-e" without "-d".
    8. 4C will allow you to define Context Menus for Screen Programs. Two new bootstrap files are used to to this. They are sys.cm_hdr and sys.cm_item. You will need to create these files in your application directory. To get an idea of how you might use context menus, try pressing the right mouse button with the cursor somewhere in a layout other than on a text field in any of the bootstrap development programs. You will of course need to be using a version 3.4.5 or later client as well as a version 3.4.5 or later server.

      You can get to the ContextMenu definition screens from the options menu, or from the context menu, of the program characteristics screen.
    9. There are two new system PCLs for manipulating Context Menus. They are sys.set_cmenu() and sys.set_cmitem()
    10. The sys.begin() call allows more flags for specifying whether or not to use 4C rcd locking and to specify the transaction isolation level.
    11. Using F_FORCE when adding rcds to a client FixSeq file will work correctly.

    20 September 2001

    1. The sys.device and sys.dev_option files will be treated as normal data files that dont have to be in the XLSYSTEM directory.

    18 September 2001

    There is better documentation available on using external databases. See External Database Files

    01 July 2001

    1. Switch statements can be used in PCLs. The syntax is exactly the same as the C switch statement with the following exceptions:
    2. You can use pre/post increments/decrements on numeric variables. (i.e. count++,count--,++count,--count)
    3. You can specify ActionAreas to hide the unused buttons and to dynamically reposition the buttons as buttons are hidden and unhidden.
    4. You might consider using the bootstrap program sys.menu.tv instead of sys.main as your startup development program. Tryit and let me know what you think.

    14 May 2001

    1. Starting with the 3.3.2 release of 4C, the client install will not be included with the server install. If you want your clients to automatically update when connection to your server, you will need to put the client install executable in the lib/clients directory and make sure the correct startup application is enabled.

      Please note that it is not necessary to install the windows client on an NT 4csrvr system since the client programs are installed with the NT 4csrvr install.
    2. An install file for the HP9000 is downloadable.
    3. The 4C network messaging protocol can recover from network errors that are not caught at the TCP layer. You should still strive to have a reliable network, but this will be a help in the cases where the network is not totally reliable.
    4. It should not be necessary to create a symbolic link to /usr/lib/lib4codbc.so anymore. This library is no longer used and can be removed if it is still on your system.
    5. HSplitPanes and VSplitPanes are new screen layout types. The programs demo.sp.pr and sys.menu.tv in the 4c system directory can be used to see how they work.
    6. Vertical or horizontal scrolling can be enabled for a main layout or for any sub layout or program detail for the layout.

    02 February 2001

    1. The word4c program will allow you to insert multiple lines in place of a bookmark by using the following syntax in the word4c template file.

      BookMark        Name=<name>,Goto
      Insert
              Line1
              Line2
              etc
      


      The lines to be inserted must start with a tab or a space. The first line not starting with a tab or a space marks the end of the insert. Lines can have special characters like Tabs, Carriage Returns, and Newlines embedded by using the standard C conventions for these characters.

    19 January 2001

    1. Using TCP ports other than the default of 1412 will work for all server programs. In order to do so you need to specify the port in both the _4CSRVRCONFIG file and the XLCONFIG file. In the _4CSRVRCONFIG file you need a line simlar to:

      Connect         Type=Socket,Port=1414
      


      In the XLCONFIG file you need a line similar to:

      FCPort  1414
      


      If the FCPort line does not exist in the XLCONFIG file, then compiling programs and running reports will fail.
    2. You can have default titles per application for the sys.get_answer() DialogBox, the Error message MessageBox, and the Info message MessageBox. Add lines to the _4CSRVRCONFIG file in the application area similar to the following:

              ErrorWinTitle="4C Error"
              InfoWinTitle="4C Info"
              GetAnswerWinTitle="4C Input"
      


    3. There is a new system PCL, sys.message() that is meant to replace both sys.msg() and sys.err_msg().
    4. 4c will not allow you to press a cmdbtn unless the 4csrvr is ready for input. Too many users are double clicking on buttons and causing problems in the application. This was especially a problem where the command button executed a shell command and could cause core dumps.
    5. Native database support is available for some databases on some systems.
    6. The 4c windows client will popup a dialog box when the user presses <CTL><ALT><F8>. This dialog box will allow you to see some current connection information and it will allow you to enter the 4c debugger, exit the current 4c program, end the 4c session and to change the NoErrWait option.
    7. There is a new 4c srvr program called 4cchecksum. It can be used with a client program xlcsum to help verify if a network connection is accurate or not. The easiest way to run it is as follows:

      xlcsum -c <connect string>
      

      where <connect string> is a normal 4c connection string similar to the following:

      192.168.4.22

      or

      Machine=192.168.4.22,Type=TCP,Port=1414



      Just typing in xlcsum will give you a list of options. This program can be used to help indicate if problems exist on the network but it wont be able to tell you what to do to fix them.
    8. There have been several bugs fixed that caused the 4csrvr to hang when sys.get_answer() was called and the user switched to another program without answering.
    9. 4C can be configured to force sys.get_answer() to use a DialogBox or to use a Text line at the bottom of the layout. This is done by adding one of the following lines to the _4CSRVRCONFIG file.

      GetAnswerType   Dialog
      GetAnswerType   Text
      


      These can be overriden per application by one of the following lines in the application section.

       GetAnswerType=Dialog
       GetAnswerType=Text
      


      Each client can also override this with their preferences menu. Experiment with it and you will see how it works.
    10. One last sys.get_answer() item. sys.get_answer() will let you force either Text or Dialog box no matter what the server or client settings are by specifying GA_TEXT or GA_DIALOG as one of the flags.
    11. MD5 passwords will work as long as PAM is configured for 4csrvrd and the _4CSRVRCONFIG file has a line like:

      LogonSecurity PAM
      


      See Unix Install Notes for details.

    07 September 2000

    1. A skeleton set of bootstrap files is now shipped with all server installs. They are stored in isdumped format in the lib directory. The isdumped file name is skel.df. To create a new application directory, just create the directory, cd to it, and then isrestor the skel.df file.
    2. Using F_DEFAULT when reading files will not cause problems anymore if 4C is not currently processing a display field. However, you really should not use F_DEFAULT except when reading files during field processing on input screens.
    3. Sending report output to a client file will work consistently. Previously it failed if used more than once with different starter screens.

    07 August 2000

    1. It is possible to embed layouts within another layout. A layout that can contain other layouts must have a layout type of Container. The Container layout will display scrollbars as necessary. Containers can be used to make the display less cluttered when there are many parts of an application active at a time. By combining TreeView programs and Container Layouts, it is fairly easy to implement a Windows Explorer type user interface. A good example of a program that does this is sys.menu.tv.

      The layouts that a Container layout can contain is controlled by the application in the following ways.

      There are several features still missing that will soon be added to make this look and feel more robust. In particular the following features will be available soon.
    2. Passwords and usernames can be encoded when stored in config files and when passed on the command line.

      To find out the encrypted form of a passwd use the encode4c program.
    3. When the 4cclient connects to a WindowsNT system and the users password has expired, the user will be prompted to change their password.
    4. ActionArea definitions can now specify how the extra space available is used. You can specify a percentage of it to be used in margins. Any extra space after that is used as extra spacing between the buttons.

    04 June 2000

    1. Multi Column reports that print in "RC" order will work correctly.

    31 May 2000

    1. Several new Program classes have been added in addition to the current None and ScreenProg classes. They are:

      See 4C Program Classes for details.
    2. cmdbtns and label fields can specify an image to be used instead of the default text. Images should be either bitmap or icon. They need to reside on the server in an application defined subdirectory of the 4c images directory. When needed, they will be copied to the client and a copy will remain on the client for all future references. When specifying an imaging you aso need t specify the width and height in pixels. The normal width and height of a button you may use on a toolbar should be 16 by 16 or 32 by 32.
    3. Tooltips can be defined for cmdbtns on 4c screens.
    4. Tooltips can be defined for PushButtons in ActionAreas. ActionArea tooltips are sent to the client when a program is first displayed. You should only define a tooltip if the default tip of sys.spca_smsg is not enough.
    5. You can specify a layout description in the layout definition screen.
    6. Some new flags can be passed to sys.set_busy. They are SB_OK, SB_NOOK, SB_FOCUS and SB_NOFOCUS. If SB_OK is specified then an OK button is displayed instead of the default CANCEL button. If SB_FOCUS is specified, then the OK or CANCEL button will have the focus when the progress bar is displayed. This will make it easy for the user to cancel out of the progress bar with the keyboard instead of having to use the mouse.
    7. There is a new system PCL, sys.input_ok() that can be used to determine if the current field will allow user input.
    8. There is a new program state, OpenState, where the application can execute a PCL. This PCL is executed after any output device is opened or any screen layout is displayed. It is not executed for Update programs since they dont have an OpenState. It is executed only once and can be used to do one time initializations such as adding items to a TreeView program or adding items to a sellist field.
    9. There are two new system pcls for use with TreeView programs. They are: sys.tv_add() which is used to add items to a TreeView program and sys.tv_getsel() which is used to get the index of the currently selected TreeView item.

    26 February 2000

    1. JISAM has been changed to get rid of certain JISCONFIG size limits. These size limits made it difficult to have many users. The limits do not affect the 2G limit on a JISAM file. You cannot use newer JISAM programs with older JISAM programs.
    2. The Win95 client program, w4ccl.exe, will send a message to the 4csrvr at least once every 5 minutes. This should eliminate the problem with some systems that the conection is closed after a certain timelimit with no activity.
    3. You can specify that buttons should be activated by the return key in addition to the normal space bar. This is set through the preferences menu on the main 4cclient screen. It is saved in the clseqf.sxl file so it is remembered between sessions. An alternate way of specifying this is using the XLBTNRETURN env var. If set to "Activate", the return key will activate a button when it has the input focus.
    4. Error messages from the server will now be displayed in a dialog box. There is an input area that can be used to enter some commands. Currently, the command that are allowed are:
      exit4c or quit4c - Exit the 4c client
      exitprog or quitprog - Exit the current 4c program.
      



      This makes it possible to exit a program that is caught in an error loop without having to run the debugger.

      THIS IS NOW OBSOLETE
    5. The up and down arrow keys can be used on command btns to move to the next or previous field.
    6. sys.get_answer() will work with INP_QUICK and INP_UC.
    7. When a window is minimized or restored, all windows in the layout will be minimized or restored.
    8. There is a new function key, exitlayout, that can be used to prevent users from X ing out of a layout. If this key is not processed by the application, then the default action is to exit all programs in the layout. This function key is sent to the current program when the user presses the X button. It is not sent to all programs in the layout.
    9. When a user tries to exit a layout by X ing out, the application is notified that the "exitlayout" key was pressed. If the application catches this key, then the programs in the layout are not automatically exited. If the application does not catch this key, then all programs in the layout are exited with a code of -3.
    10. The 4csrvrd daemon can be stopped and started without having to stop all 4c processes. This means that systems that dont free up the tcp port until after a certain timeout period can also have the 4csrvrd daemon process restarted without a problem.
    11. You can specify print quality and orientation for printers on an NT system. This is done in the device options for the printer.
    12. The title on the 4C Print Window can be specified by the application. Just set sys.prtw_title anytime. A default for the entire application an be set in the application area of _4CSRVRCONFIG by specifying PrtWinTitle=<title>.
    13. The title on the 4C Shell Window can be specified by the application. Just set sys.shw_title anytime. A default for the entire application an be set in the application area of _4CSRVRCONFIG by specifying ShellWinTitle=<title>.
    14. The 4c client logon dialog will timeout and exit if no logon is attempted within 2 minutes.
    15. Multiple startup apps can be specified in _4CSRVRCONFIG. Just specify Startup=True as part of the application area. Startup apps are run whenever a connection is made to the 4csrvr in the order they are encountered in _4CSRVRCONFIG. The are all run before any user specified application. The main purpose of startup apps is to allow automatic updating of client files. It should not be too hard to find more uses.
    16. You can safely set break points in the FocusPCL of a program and it will not go into a loop.
    17. Fields modified on scrolling screens will display immediately without the user having to click on the item.
    18. There is a new system PCL, sys.exit_layout() , that can be used to exit all programs in the current layout.
    19. A new flag, F_FORCE can be passed to sys.upd_file(). When used this prevents 4c from reading a file that has not yet been read in the requested update mode. This is most useful when adding records that you know cannot exist. You can skip the sys.read_file() call and then do an update using F_ADD|F_FORCE. This significantly improves the speed of adding records to files across a network. This flag should not be used when rcd locks are needed.
    20. A bug in xled that allowed it to be out of sync with 4csrvr has been fixed.
    21. The 4C Client will notice when a display fields options change. If the option set is "ignore", the display field will be hidden and will not be processed by the 4csrvr. Display fields can be hidden and then made visible using sys.set_dfoption(...,"ignore) and sys.set_dfoption(...,"no ignore").
    22. No Echo should work correctly for any display field.

    08 September 99

    1. A very serious bug that can cause programs to core dump unexpectedly has been fixed. This bug only manifests itself when a "Startup" application is run, and then another application. If you want to continue running an older version of 4C, disable the Startup application in _4CSRVRCONFIG and reenable it only after this Server is installed.
    2. Compiling multiple programs/files/layouts is much faster.
    3. The file definition changed for some system files, so please export/import them into your application. Some of the changed files include:

      $system
      sys.program
      
    4. The placement of the window where adding takes place can be controlled in the layout definition detail for each scrolling program. The default is to use the clients preference, which can be set to Top/Bottom/Relative. The default for the clients preference is Relative.
    5. A bug in sys.dr_restart() that kept space in the 4C Utility Sequential File from being correctly freed has been fixed.
    6. There is a new system PCL, sys.get_dotaddr(), that returns the network address of a particular 4cclient in dotaddr notation. The client is identified by its 0 based index in the 4c user table.
    7. The way that cmdbtns work is a little different than before. Previously, a cmdbtn in a ScreenProg with all DiplayOnly fields would wait for input on that field even if it was DisplayOnly. Now, for a cmdbtn to be able to receive the focus and wait for input depends on whether or not it is a DisplayOnly field. A literal used as a cmdbtn must be explicitly set to NoDisplayOnly in order for that field to wait for input. This change could possibly cause problems with a select few programs. Look for programs with all display only fields and cmdbtns that are either explicitly set to DO, or literal cmd btns that are not explicitly set to NoDisplayOnly. For cmdbtns to work properly, programs will need to be recompiled.
    8. 4C will allow you to save up to 100 different connections on the connection menu. On WindowsXXX, these connections are maintained in the registry and you can safely delete unneeded connections with the registry editor. The key to use is:

      HKEY_CURRENT_USER/Software/4C Software/4C Client/CurrentVersion
      
    9. Scrolling programs will allow sys.stack_input() for add/modify/delete function keys.
    10. The 4cclient program, w4ccl.exe accepts an "-f <filename>" option for specifying an alternate clseqf.sxl file. This makes it possible to run multiple 4cclients on the same client machine without interfering with each other. I suggest maintaining the ".sxl" extension and keeping all ".sxl" files in the same directory.

      Be aware that you cannot use multiple client seq files if the clients are using the same shared memory area. Either setup separate shared memory segments for each client or do not use shared memory at all. By default, the client will not use shared memory unless you installed a 4csrvr on the same machine as the client or if you modified the 4c.cnf file.
    11. There are 2 new utility programs, 4cmsg and 4cshutdown.
    12. There are Html documents available for the 4cutilities and for the 4c client programs

    28 July 99

    1. A serious shared memory bug has been fixed. When 4c would allocate a program in user memory instead of in sys memory it would lose use of that program slot. If this happened enough, then the system would seem to slow down and possibly cause other problems as well. It is probably a good idea to use xlview -V to see if the shared memory is tuned correctly, especially on systems that remain running for many days at a time.
    2. Trying to access an ODBC file using an illegal keynumber will produce an error message rather than reading the file by primary key.
    3. sys.cmp_file() and sys.cmp_data() will work correctly on integer,date, and time fields now.
    4. xlview with the -V option will produce a lot more information. This can be helpful in tuning the amount of shared memory to use and setting program and file slots.
    5. Only one Win95 4cclient can access the clseqf.sxl file at a time. For now that means only one Win95 client can run at a time on a single pc, but in the future there will be a way around this to make testing easier.
    6. Setting item colors in scrolling programs will work correctly even if the driver is sorted.
    7. Scrolling program driver rcds will be updated on the screen correctly.
    8. The word4c program will work correctly without hanging or causing winword to hang.

    21 April 99

    1. QuickInput will work on input fields.
    2. The clseqf.sxl file should be stable now. If the 4C client detects that it was not completely updated then it will recreate it.
    3. You can specify a "startup" application to be run everytime a client connects to a 4csrvr. Do this by specifying "Startup" for the application name.
    4. You can specify an icon to use for your application by putting the line "Icon=<appdir>/<iconfile>" in the _4CSRVRCONFIG file under the appropriate application. If the file "HOME_4C/images/<appdir>/<iconfile>" exists on the client, then that icon file is used. Otherwise, if the file "HOME_4C/images/<appdir>/<iconfile> exists on the server exists it is used for the icon. If neither exist, then a default windows icon will be used. You should store your icons in your own subirectory of the images directory.
    5. The client will only create one entry on the taskbar for each 4C group, instead of one for every layout.
    6. There are several new fields in $system. They are:
    7. Scrolling Programs can now specify an alternate fg/bg color to increase readability of busy screens. When used, alternating scrolling items will use the alt colors. This is specifiable in the layout detail definition.
    8. Scrolling programs can frame items to increase readability of busy screens. This is specifiable in the layout detail definition.
    9. Scrolling programs can specify only a single item can be selected at a time. This can be set globally for all layouts using this program, by specifying it in the program characteristics. It can also be specified in the layout details for a single layout. The most likely place to specify it is in the program characteristics.
    10. Any program can have its own caption area, in addition to the caption of the layout. When the program is active, this caption will be highlighted. This can be used to make it easier for a user to see which 4C program is the active one. This probably will be used only when several linked programs are visible on the display at once.

    27 March 99

    1. There is a new place PCLs can be called from. It is called the focus PCL and is executed every time a ScreenProgram gets 4C Control. This will happen after the init PCL for all Screen Programs and it will also happen every time control goes to another 4C program and returns. If the 4C program is still running but is no longer in an open state, it will not run. A 4C program is considered open only after the InitPCL has executed and up until the EndPCL executes. This is especially useful in TabLayouts that automatically link between windows. This PCL can be run to see if certain important application data has changed so the current program can respond to these changes.
    2. The system pcl lsh() will accept a second argument now. The argument is an integer set of flags that can be one of LSH_WAIT, LSH_NOWAIT, LSH_DEFAULT. If this argument is not present, then LSH_DEFAULT is assumed. Neither LSH_DEFAULT or LSH_NOWAIT will wait for the program to finish executing before returning control to the application. This is the way that xled is called from the pcl maintenance program. You should use LSH_WAIT if you need to wait for the program to finish before continuing in the application.
    3. Files can be opened in binary mode using sys.open_file (<file>,F_BINARY...). Files opened this way can only be read in sequential mode with or without a driver, or in ADD mode with data added to the end of the file. When copying data between files in binary mode, you need to use sys.copy_file() or sys.copy_data(). See the system program sys.file.xfer for a useful example of using binary files.
    4. Files can now be local to the client. Only VarSeq, FixSeq, and any file opened with F_BINARY can be used this way. This is mostly useful when a local file is needed by a program started by the lsh() system PCL. A client file is specified by using "%client!" as the first part of the external file name. The sys.file.xfer program is a useful example of using a client local file.
    5. Timeouts and alarms now work.
    6. xlview will display the network dot address of the client instead of ttyname.
    7. The help key will run the sys.help program if the the help key is not caught. It will always run sys.help in the directory of the currently running program. Right now, sys.help is not much better than the character version but it will soon be integrated with MS WinHelp. Rather than catch the help key and run a pcl, your application should provide its own version of sys.help in the application directory.
    8. The sys.copy_data() and sys.copy_file() system pcls will return the number of bytes copied if used on binary files. Otherwise, the return is still always 0.
    9. sys.open_ldata() can specify LD_NOWAIT now. This is useful if many connections are opened.
    10. A new option in the _4CSRVRCONFIG file can be specified. ExecProg can be used to have the 4csrvrd start up processes when it starts. The single argument is the process name and process args separated by commas. This should have many uses, including removing temp files and starting background processes.

    27 March 99

    1. A bug in TabFolders that caused problems in some scrolling screens has been fixed.
    2. Several minor bugs have been fixed.

    14 Dec 98 - Documentation

    1. There is a proposal for a new style of 4C reports that can be read and commented on. See: New Report Style Proposal

    08 Dec 98

    1. This client (including xled) should work with previous versions of 4csrvr.
    2. There is a new feature in 4C that allows linking of data between 4C applications on different servers and between 4C applications and external applications that have a DDE interface. See Sharing Data With External Apps
    3. The w4ccl program will accept options to specify connection, application, program, and startup options. They are:
    4. System Scratch Files will be preloaded into SysMem if the SysScratch option is used in XLCONFIG.

    08 Dec 98

    1. Non Scrolling progs can use Display Relative.
    2. The <cancel> key will work in sys.get_answer().

    15 Sept 98

    1. On NT, you can use different user names now.
    2. sys.tty_name can now be used to uniquely identify a client that is currently logged in. It will be an 8 digit LFZ number like "00000000" or "00000081". It is not guaranteed to stay the same each time the user logs in, but it can be used as a key to a file. The purpose of this is to make porting old 4c programs easier.
    3. You can specify how often you want the clients display updated. Do this by setting ClUpdAlarm NSEC in your 4CSRVRCONFIG file. The default value is 60. The server checks this value every time it checks for msgs from the client. If necessary, it will flush its buffers including any current sys.msg. If you never want the server to send data to the client until it is absolutely necessary, set this value to -1. If you want the server to flush its buffers every time it checks for data from the client, set this value to 0. Otherwise, set it to the number of seconds you want to pass before data is flushed. Even when set to 0, all sys.msgs are not written to the client. Only the current sys.msg is written when the server is checking the client for messages. To force writing of all sys.msgs, you need to call sys.upd_client() after your sys.msg(). This is probably unnecesary and setting ClUpdAlarm to 1 or to 0 should be good enough for the cases when you want as many sys.msgs as possible to reach the client.
    4. You can use progress bars in your programs. There are 3 PCLs for starting, stopping, and changing labels/titles in your progress bar. They are:
    5. The client can turn automatic help on or off from the preferences menu. If help is off, then pressing the help key will display the short help message. Pressing it again will call the Applications help routine.
    6. There is a new system PCL that allows you to use the Client to choose a color. It is
    7. Tab Folders have been improved a lot and they now work well with pushed windows inside of the tabs also.
    8. You can now modify only a single or multiple columns when modifying scrolling fields. You can start column modify mode when you are in modify mode by either pressing the modify key or by double clicking on the border area of the modify area. You can add fields to modify by double clicking on them when you are already in column modify mode.
    9. There are 3 new system pcls that allow you to control colors in your programs. They are:

    4 May 98

    1. You can use "h","t","m", or "b" in numeric input in order to quickly specify large numbers.
      1b = 1000000000
      1m = 1000000
      1t = 1000
      1h = 100
    2. You can specify

      DefaultLogon <user> [<passwd>]
      


      in the 4CSrvrConfig file. Under Unix the <passwd> field should not be specified and under NT it must be. Specifying DefaultLogon allows all of the 4C daemons, except 4csrvr, to run without needing to prompt for a passwd. This is useful especially when one 4csrvr needs to read files from another 4csrvr. It is also useful for running compiles from the cmd line.
    3. Blocking type of CSV can be used to specify comma separated data file for VarSeq files only.
    4. Reports can be sent to a local client file as well as a local client printer. For either, set the sys.dev_cllocalf to "y". You will probably want to set the extname to %prompt to alow the user to choose the local file or printer.

    5 Mar 98

    1. The 4C debugger can now interupt a tightly looping application. The interupt may take a few seconds to stop the process, but it will eventually stop it.
    2. You can set 2 new srvr env vars that allow the system to determine the century if only "yy" is specified in a date entered by the user or in a sys.fmt_date() stmt. They are XLYYNEXT and XLYYPREV. If set they should be set to a full yyyy year. If you want all "yy" <= 80 to mean 20yy instead of 19yy then set XLYYNEXT=1980. If you want all "yy" >= 50 to mean 19yy instead of 20yy then set XLYYPREV=2050. Note that this second example wont mean anything until the year 2000 since the default is for 4C to use current century for all "yy" years. When doing the conversion, 4C first checks XLYYNEXT and if conversion is necessary it does it. It will only check XLYYPREV if no conversion was done using XLYYNEXT.
    3. The 4cclient and 4csrvr are much better at terminating if the TCP connection is terminated by the other process. This means no abandonned processes hanging around eating up resources.

    20 Jan 98

    1. TabFolder layouts can exec programs instead of linking them. Linking them is still the default. To specify that programs use exec instead, set the flag in the Layout definition.
    2. The 4C Debugger works and is greatly improved over the old version.
    3. You can specify a single character accelerator for Program FKeys. This ONLY works with scrolling programs. The debugger uses this feature for stepping/continueing.

    05 Dec 97

    1. A display alarm can be set so that modified display fields are sent to the client. This works similar to the old -a option of excel. You can set this alarm with a line in the _4CSRVRCONFIG file that looks like:

      DpyAlarm NSEC

      If this is not set, then the Server will wake up every 60 seconds when not busy in order to check for modified display fields. If you dont ever want the server to check for modified display fields, then set NSEC to 0.
    2. DR_RENUMBER has been implemented

    14 Nov 97

    1. xlbuild allows a -R option to rebuild everything. It causes xlbuild to recreate the svseqf.sxl file and then compile all files, all programs, all layouts, all action areas, all menubars, and all menus. The catg option can still be used to limit the programs and files that are compiled.
    2. The -d option of xlbuild works correctly now.
    3. The s_dftype and s_prtype files can and SHOULD be in your own program directory. If you modify the ones in the system directory, you will lose any changes you make to them.
    4. Scrolling programs and non scrolling programs use different default layouts, named Default and ScrollDefault. These layouts can be redefined in your own program directory.
    5. xlexport can now export layouts, action areas, menus, and menubars. xlimport can import them. See the help message with xlimport and xlexport for syntax.
    6. xlbuild can compile layouts, action areas, menus, and menubars. See the help message with xlbuild for syntax.
    7. The startup delay of w4ccl and xled has been fixed.
    8. sys.msg() messages do not get sent to the client immediately. Only the last sys.msg() is saved and sent whenever the server flushes its output buffer. You can force the buffer to be flushed by calling sys.upd_client().
    9. The sys.set_dfoption() system pcl now allows "ignore" or "no ignore". This is useful for dynamically turning off cmdbtns at runtime. It should only be used in the Init PCL because the client only checks it once.

    28 Oct 97

    1. There is a new system pcl sys.upd_client() that forces all waiting msgs to be sent to the client. This may be useful if you need the client to see sys.msg() messages immediately. Normally, they are buffered until the buffer is full or some other input is needed from the client.
    2. A program fkey can be specified as program only. This only makes sense for scrolling programs and means that the pcl will be executed when the program is in display mode only and the fkey is pressed. During field processing in add or modify mode the fkey will not run the program only PCL. It will retain its default processing.
    3. The Windows95 Client Install is a "REAL" Windows type install.
    4. The Client clseqf.sxl file can be built by calling the bootstrap program sys.clinfo.send. Once built, this file can be distributed to any client machine using the same servers.
    5. There are 5 new system pcls meant mostly for system use. They are:

           sys.send_slo()
           sys.send_smb()
           sys.send_ssdi()
           sys.send_sact()
           sys.send_smenu()
      


      They are used for building the clseqf.sxl file on the client so that it can be distributed among multiple clients. For more information see the bootstrap program sys.clinfo.send.
    6. All passwords sent across the network are encrypted.
    7. The W95 Client will allow saving of usrernames and passwords.
    8. The following utilities will work on remote files without JISAM being installed on the client:

           xled
           xlcopy
           xlcr
           xldel
           xlflgrep
           xlflrpt
           xlkeys
           xlscopy
           xlset
           xlupd
      

    22 Sept 97

    1. NoShare will work for W95 Clients.
    2. scrolldet fields that are labels will work correctly.
    3. Main layouts can specify ignoring the msg area. Any msgs will appear on the next higher level layout.
    4. The update speed of xled across a network has been greatly increased.
    5. You can specify Foreground and Background colors for individual controls and for scrolling programs. See the Colors doc for details.
    6. The system PCL sys.kill_win() takes a second arg as an exit code for the killed prog. If not specified, then the killed progs exit code is -3.
    7. There are 4 new system pcls. They are:
    8. You can now load 4C on any drive for WindowsNT/Windows95.
    9. You can use

      sys.set_dfoption(DFLABEL,"no verify");

      to turn off client side verification of an inplist display field. To turn it back on, use

      sys.set_dfoption(DFLABEL,"verify");

    11 Sept 97

    1. There are five new s_dftypes. They are:

      See the Screen Layouts document for details.
    2. Resizing layouts will work.
    3. When connecting to a server, you will need to provide a logon name and password.
    4. The jisam.shr (NT/Win95 only) file will be removed when no users are accessing jisam shared memory.
    5. The 4c.shr (NT/Win95 only) file will be removed when 4c shared memory is not in use.
    6. There are 2 new fields in sys.dpy_field. They are:

    31 July 97

    1. Programs run on NT with the system pcl sh() will no longer create a window. This fixes the problem of a window appearing and disappearing on the console every time an external prog was started.
    2. Layout info can be stored on the client. This speeds up initial access when starting a layout for the first time. The file this is stored in is clseqf.sxl. The info that gets cached on the client can be configured thru the preferences menu.
    3. The XLSEQFILE name is changed to svseqf.sxl for both Unix and NT systems.
    4. Typing a single char in the edit field of a sellist now works correctly.
    5. ActionAreas, Menus, and Menubars can now be compiled. These are not really compiled, but they are timestamped and Clients will reget them from the server the next time they are used. This means you dont need to exit 4C in order for these changes to be seen.

    18 July 97

    Instead of specifying max width and height for layouts and overlay members, you now specify a percent relative width and height. For layouts, the percent width or height is relative to the full display. For an overlay member, it is relative to the width/height of the containing overlay.

    17 July 97

    1. The actual spc (user fkey) can be dynamic in Action Areas. The 4C client will calculate what SPC to use based on the spc order. To use this type of SPC, specify "dynamic" as the spc name in the action item definition. You should also specifyy Dynamic? "y" in order for the label of the button to be dynamic as well.
    2. Top and Bottom can be specified in scrolling screens using the t,T,b,B characters.
    3. The up and down arrow keys, <keyup> and <keydown>, can be used by 4C programs as long as the control key is pressed at the same time. This allows browsing to work on text fields.

    14 July 97

    1. There is a new system PCL that runs a prog on the client machine. This is lsh(). It works the same as sh() except it runs on the client machine. This is the way that xled is started on the client machine from the sys.ps.maint program.
    2. There is a new PCL that allows the server to access the client environment. This is sys.get_clenv(). It works the same as sys.get_env() except the environment is obtained from the client.
    3. scimport will work from 4C windows now. In fact any shell script that needs input or displays output will run. After the script runs, you may need to enter a return from the output window.
    4. There is a new SysPCL, sys.run_layout(). Use sys.run_layout to start a layout that you want the next ScreenProg program to run in. You most likely will use this in the InitPCL.
    5. There is a new s_dftype, "ignore", that allows you to leave display fields defined but not have them appear when a ScreenProg is displayed in a layout.
    6. Layouts can be positioned relatively on the screen using the Initial X and Y pos. These positions are a percent position, so X 0 means all the way to the left and 100 means all the wat to the right. The Overlay cur flag can also be specified if this layout should overlay the current layout.
    7. A layout can be closed now from the Close entry on the system menu or from the X. This will KILL all 4C programs running in the layout. Any 4C program killed this way will set $wexit_code to a negative value so the calling program can check.

    27 May 97

    1. The default background for lists has changed from white to the normal 3D Background color. This was due to too much flashing when displaying 4c scrolling screens. You can still get the white background by setting the XLLISTBACKGROUND env var to White.
    2. There is a font def file in the 4c lib_dir that is used by default. It is called 4csfont.def. You can use your own by copying this file to the 4c etc_dir and modifying it. If you put this file in another directory or call it by a different name, you must set the XLFONTFILE env var to point to it. The one modification that you will need to make is the PointSizeInc. Set this to something reasonable for your display. I thought that by specifying PointSizes for fonts, I would avoid the hassle of figuring out what size display was being used. I still plan to do something else with fonts, but am not sure what yet. Be careful to separate fields with tabs, not spaces. USE AN EDITOR That ALLOWS this. MS-DOS edit WILL NOT work. Notepad WILL work.
    3. You can define your own function key usage if you dont like the default. In order to do this, copy the 4cfkey.def file from the 4c lib_dir to the 4c etc_dir and modify it. If you put it in a different directory or call it something different, then set the env var XLFKEYFILE to point to it.
    4. The sellist dftype can be specified for non choice fields now. There are two new system pcls for clearing the list and for adding to the list. They are sys.dflist_clear(DFLABEL) and sys.dflist_add(DFLABEL,<string>). These PCLs CANNOT be called from the InitPCL, so even if you have a list that wont change during the course of the program, it should be set after the InitPCL. The 4C Bootstrap program sys.prog.mstr has an example of this for the sys.catg_name field.
    5. It is no longer necessary to specify the asprog field in the screen overlay definition. The slh.fm program makes use of this feature by defining only one sah.srch ovly but any of the 4 sah.srch asprogs will use this ovly.
    6. The sys.prog.mstr program will let you get to the Screen Layout Def thru <user1>.
    7. The screen overlay definition allows you to specify how extra space is used when a program has more space than needed. You specify a percent of the space to be used up by the 4 margins. Any left over space then is divided equally across the display.

    20 May 97



    1. Multiple servers can be specified in the XLCONFIG file. Only one can be connected to at a time. The sample XLCONFIG files show how to do this.
    2. Multiple Applications can be specified per server. Only one application can be open at a time though. This is specifield in the 4CSRVRCONFIG file and the samples show how to do this.
    3. Recompiling programs will force automatic recompile of any layout using that program.
    4. You will not need to restart the 4C Client in order for layout changes to take affect.
    5. Recompile of a sub layout will automatically compile all higher level layouts as well.
    6. The w4ccl client does not look at s_fontdef.xl anymore. Instead it looks at a sequential file, 4csfonts.def in the 4c etc directory, or specified by the XLFONTFILE env var. You can edit and modify this file, but be aware that I plan to change the format of it in order to make it more readable.
    7. The w4ccl client does not read any local 4C files (of course xled does), so a 4c client that does not call xled does not need JISAM.
    8. Deleting rcds without the F_NOMSG will prompt if Delete OK.
    9. The missing shlib problem using the SCO server has been fixed.
    10. There have been minor changes to the 4cclsrvr.txt and 4cslo.txt docs. There are new docs as well.


    Back to Top