All projects MUST be recompiled after the installation of this Service Pack.

Failure to do will result in conflicting database size messages. To force an upgrade, edit the Citect.ini file and set [CTEDIT] UPGRADE=1. Ensure that the Incremental Compile menu option is not checked, or set [CTEDIT] INCREMENTALCOMPILE=0

Changes included in Citect v5.21 Service Packs require that Internet Explorer 4.01sp1 (or later) be installed when using Citect on Windows 95. Internet Explorer can be obtained from

The following files have been updated by this Service Pack.








































This Service Pack fixes the following problems:

* NCR 837 - "Too many Cicode Functions" error.

If a project contains more than 2700 Cicode functions the "Too many Cicode Functions" error is given on compiling the project. The maximum number of Cicode functions in a project has been increased from 2700 to 4500.

* NCR 10693 – TrnExportDDE() and TrnExportClip() Truncate Tags.

The TrnExportDDE() and TrnExportClip() functions incorrectly truncate trend tag names to 10 characters when exporting to a file or program. The TrnExportDBF() function will continue to truncate trend tags to 10 characters due to dBase format restrictions.

* NCR 10739 - Cicode Editor re-compile problems.

The Cicode Editor doesn't re-compile after a compile has been cancelled.

* NCR 12183 - Shutdown mode 4 does not reboot Windows NT.

When Citect is running under Windows NT, Shutdown mode 4 fails to reboot the computer.

Citect must be in your Startup folder if it is to start automatically after a reboot.

In Windows NT the user must have SE_SHUTDOWN_NAME privilege in order to shutdown the PC.

* NCR 13083 - Alarm Property Disabled.

The Alarm Property .Disabled always disables the alarm regardless of whether you write 1 or 0. This has been fixed so that if AlarmTagName.Disabled = 1, the alarm is disabled and if AlarmTagName.Disabled = 0, the alarm is enabled.

* NCR 13384 - Objects in disabled dynamic Group not hidden correctly.

Objects within a with a Disable Style Of Hidden will be visible even if disabled when the graphics page is first displayed.

* NCR 13385 - Grouped objects do not use the correct disable style.

When graphic objects are combined into a group the group disable style should apply to all objects within the group. Grouped objects are disabled with the embossed style irrespective of the group disable style setting.

* NCR 14030 – Runtime startup problem on Windows 95/98.

Citect runtime and ctconnect in CTAPI have a delay while starting up on Windows 95/98.

* NCR 14231 - CTAPI trend history query returns incorrect data.

If no valid trend tags are specified in a trend history query CTAPI incorrectly returns data for the previous query.

* NCR 14329 - CTAPI time out period is not long enough for query command.

The current CTAPI query timeout period of 5 minutes is insufficient for large or complex alarm or trend history queries. The time out period can now be controlled by the parameter [CTAPI] Query Timeout, which specifies the timeout in seconds.

* NCR 14449 - Alarm Event causes crash during startup.

If an event occurs that calls the Cicode functions WinNew() or WinNewAt() before Citect has completed initialising a crash may occur.

* NCR 14450 - Periodic Event Trend data does not export.

The Copy to Clipboard, Copy to File, and Print Trend buttons do not work for Periodic Event type trends.

* NCR 14554 - Cicode Editor stand alone failure.

The Cicode Editor will not function if run up stand alone with a citect.ini file in its local directory.

* NCR 14603 – Citect crash when acting as a DDEServer.

Under heavy IO Server load, Citect may crash after a few hours, if acting as a DDEServer. The fix will prevent Citect from crashing when the IO Server is under heavy load.

* NCR 14604 - Printing from Windows 95/98 may hang Citect.

When running Citect under Windows 95/98, some printers may hang Citect during printing or when run out of paper. This only affects printers connected to LPTX.DOS and of type ASCII_DEV.

* NCR 14632 - IODeviceInfo() function doesn't work.

When using the IODeviceInfo() function with an I/O Device Number, an empty string is returned.

* NCR 14639 - Device and history file problem.

A device will still create history files even if the time and period are not specified.

The following parameter has been added


CreateHistoryFiles = 1 // will work as previously prior to this change, i.e history file will be created.

CreateHistoryFiles = 0 // History file will not be created if time and period is not specified in the device.

The default value will be 1.

* NCR 14674 - DevPrev() function incorrectly returns a success.

The DevPrev() function does not return error code 294 when the start of an ASCII file is reached.

* NCR 14711 – DspFont() function cannot create large fonts.

The Cicode DspFont() function does not accept font sizes outside the range -127 to 126. This means the largest font that can be created with this function is 127 points.

* NCR 14716 - Citect DDK VdbOpen function enhanced.

The Citect Driver Developers Kit API function VdbOpen function has been enhanced such that when the full path to the selected dBase file is not provided, the VdbOpen function will generate a filtered memory image including all matching dBase files in the include path.

* NCR 14723 - Genie update problem.

When changing a genie property from either Multi-state Array Animated type symbol or Multi-state Array Numeric String type text to On/off type symbol or text, the page which has the genie stays the same.

* NCR 14751 - Projects Fail To Upgrade.

Upgrading projects from versions earlier then version 5.00 will cause a GPF, and the upgrade to fail, if the following field names are contained in any of the projects files: "TEXT", "FONT", "VISIBLE", "MVX", "MVY", "ROT", "SZX", "SZY", "FIL", "CMD", "DOWN_CMD", "DBLCLK_CMD", "REPEAT_CMD", "MSG_LOG", "MVXSL", "MVYSL", "ROTSL", "PRIV", "AREA", "DEVICE", "DESC", "COMMENT", "DISABLED", "SET_ARR".

* NCR 14770 - Graphics Builder may crash when saving a page.

Graphics Builder may crash when trying to save a page after adding several characters to a genie form.

* NCR 14772 - Windows 2000 network disconnect may cause Citect to hang.

If Citect is running on Windows 2000 and using the TCP/IP protocol and the network fails or is disconnected Citect may hang.

* NCR 14861 - DevOpen() function with mode 8 incorrectly returns a success.

DevOpen() function with mode 8 does not return -1 when the device cannot be opened.

Only the first call to DevOpen() with mode 8 will return -1, after that calling DevOpen() again with any mode will return a valid handle.

* NCR 14872 - Alarm summary list problem.

If the alarm summary length is less than the number of active alarms when the alarms are turned off, acknowledging alarms doesnt work correctly.

* NCR 14911 - Cursor does not always appear when a popup widow is displayed.

A popup window under some circumstances may not have a visible cursor. This means that if the user does not have a mouse the controls within the window cannot be accessed.

* NCR 14929 - SSEVEN Driver.

The SSEVEN driver counts a tag defined as Unsigned Int as two points. This is incorrect, as it should have one point per tag.

This Service Pack also contains the fixes for previous Version 5.21r0 Service Packs. These were:

Service Pack A:

*NCR 7963 – DspInfo() with datatype of ‘3’

DspInfo(hInfo,3,nOffsetTag) returns the tag name without the array index of the variable.

*NCR 8994 - PageInfo() enhancements

PageInfo() now accepts types 21 and 22 to return the width and height of the current page.

*NCR 11557 – "Cancel" button added to broken link dialog box.

A "Cancel" button has been added to the broken library link dialog box which may come up during the updating of pages in the graphics builder. Pressing the button will cancel the entire process.

*NCR 11683 - Clear and Backspace buttons in FormNumPad() mode 32 don't work.

When a value is entered into the combobox in FormNumPad() mode 32, and the 'Clr' (Clear) button is pressed, the combobox text field does not clear. Also the '<-' (backspace) button will not clear the last character.

*NCR 11698 – Update Pages does not update the modified template properties.

Template properties, like size, colour, and keyboard commands, do not get modified on linked pages during update pages. This has now been fixed. To enable the fix set the ini parameter:



Once set you will no longer be able to modify these properties on linked pages.

*NCR 11784 – Enhancement to broken library link dialog.

"Yes To All" and "No To All" buttons have been added to the broken library link dialog in the graphics builder.

*NCR 11929 - A tick on the Access Tab(General Tab) is missing in Graphics Builder.

A tick should be displayed when the description field, tooltip field or log device field is filled, or when the area box or privilege is not checked.

*NCR 12301 – Internet Display Client crashes.

The Internet Display Client crashes when the Cancel button of the file transfer dialog is selected.

*NCR 12475 – File extension "v52" for symbol and genie library files.

If CtDraw32 crashes during a pack libraries it leaves the name of the libraries with an extension "V52" regardless of whether it was a Symbol or Genie being packed at the time of the crash. Attempting to repack the libraries again can not differentiate between a symbol and genie library files. This has been changed to "l52" for libraries and "g52" for genies.

Note: "v52" will be "v51" in Citect version 5.1

*NCR 12533 – AssInfo() function.

The AssInfo() function does not return the array index with the tag name.

*NCR 12631 - RTF report files will not roll over.

If you have a report device which outputs data in RTF file format, and configure history files, then they will not roll over correctly. Citect will simply keep writing to the same RTF file the whole time and will not create any history files when they are due.

*NCR 12652 - Backup Path Failure may cause Citect to shut down.

If a RUN and BACKUP path are both set, but the BACKUP path fails, and an attempt is made to display a non-existent page (eg. using PageDisplay() ), Citect displays the message "Cannot display page" and then shuts down.

*NCR 12770 - SPC Subgroup size of 1.

Citect SPC now supports a subgroup size of 1 - Contact Citect Support for more information.

*NCR 12827 – Centering of Startup Page

Citect can now be configured to open the startup page in the center of the screen. This is done by setting the ini parameter:



*NCR 12829 - Scrollbars for page in Graphics Builder.

If you adjust the page size in the graphics builder to be larger than the screen, then scrollbars do not automatically appear.

*NCR 12913 - Character sequences not recognised.

Character sequences CTRL+0 (0x2030) to CTRL+9 (0x2039) and CTRL+SHIFT+0 (0x3030) to CTRL+SHIFT+9 (0x3039) are not recognised. Also character sequences CTRL+ALT+0 (0x6031) and CTRL+ALT+1 (0x6032) are incorrectly recognised as CTRL+ALT+P (0x6050) and CTRL+ALT+Q (0x6051). PRINT SCREEN will now be recognised as KEY_SNAPSHOT (0x012C) when it is released.

*NCR 12942 - STRING substitution error on genie.

Associating a STRING variable to an untyped super genie substitution, eg. ?1? causes an error dialog to pop up. The dialog cannot be dismissed. Changing pages while the dialog is up causes a GP in Citect runtime.

The Error dialog popped up as follows:

File (E:\v521\source\display\CT_EXEC.C) Line (2243)

Error Invalid Load Variable Type.

*NCR 12970 – New TimeInfo() and DateInfo() functions

Two new Cicode functions TimeInfo(INT nInfo) and DateInfo(INT nInfo, INT nExtra) have been added to Citect. These two functions return the Time and Date formats in effect on the Citect Server. Contact Citect Support for more information.

*NCR 12971 – Deleting a project causes an incorrect error message.

Deleting a project that has a file open in another application causes an incorrect error message with a line number in the code to appear.

*NCR 13030 – Data Path not suitable for trend files

Running Citect when the data/history directory is a sub directory of the project directory results in the error "Path : '[data]:cpu' not suitable for trend files". Citect can now be configured to ignore this restriction on data directory location by setting the ini parameter:



*NCR 13046 - RTF report files don't display correctly after being removed.

When RTF report files are created and written to many times, the RTF file is readable and all writes to the file are visible. However, when the RTF file is deleted or removed, or even if a DevZap() function is performed on the report device, then subsequent writes to the RTF file are not be readable in RTF format.

*NCR 13073 – Incorrect text on the windows menu.

The text for closing the window on the system menu for child windows should be "Close" instead of "Shutdown".

*NCR 13113 - Cicode function IODeviceInfo() crashes Citect.

Calling IODeviceInfo("<any valid I/O device>", 22 or 23) will crash a Citect workstation if it is not an I/O server. This has been fixed so that calling IODeviceInfo() with 22 or 23 will only return valid values on I/O servers, otherwise it will raise a hardware alarm of "Cicode Invalid argument passed".

*NCR 13114 - SELECT CASE compile error.

Compiling a function using the SELECT CASE statements may not work correctly.

*NCR 13152 - Incorrect bitmap object size at runtime.

Citect may display bitmap objects at an incorrect size at runtime.

*NCR 13162 - Wrong IODevice Hardware alarm.

When you have more than 512 IODevices in a Citect database then a hardware alarm for an IODevice may be reported as being for another IODevice. Also ErrSetHw()/ErrGetHw() will not work correctly when there are more than 511 IODevices in the database. To correct this the mask for IODevices passed into this function (ie. the number added to the IODevice number) has been changed from 512 to 8192. The old mask of 512 can still be used by setting [Code]BackwardCompatibleErrHw=1 in your configuration file. However with backward compatible mode you will only be able to have ErrSetHw()/ErrGetHw() work correctly with 511 IODevices or less in your database.

*NCR 13185 - Enumeration of DESIGO INSIGHT tags within the OPC server

The OEM tag extension for Staefa now supports enumeration functions for tags. An OPC client displaying a list of tags will now show Citect and DESIGO INSIGHT tags.

*NCR 13186 - Write to devices fails.

Citect is unable to write to a database file if a previous write attempt was made while the file was locked by another application.

*NCR 13192 – Parent Page Activation

When a child page is closed at runtime, the parent page should be activated (not the top parent page).

*NCR 13196 – Staefa Tag Support

Staefa ODC tags are now supported by CTAPI. Both the Citect Server and Client must be have Version 5.21 Service Pack A installed.

*NCR 13217 - WinCopy() and WinFile() enhancements

WinCopy() and WinFile() have been enhanced to take the specified x/y scales and palette. These functions now have arguments as follows - WinCopy(xScale, yScale, sPalette) and WinFile(Filename, xScale, yScale, sPalette).

Note: When using both scaling and a different palette you may not get desired results. This is because a pixel averaging algortihm is used when scaling down. This may choose colours near the colour you are mapping and thus will not be mapped by a single colour map. You can adjust the palette to include these colours or turn pixel averaging off by setting [Animator]UsePixelAveraging=0.

*NCR 13265 - DspInfo() problem on Super Genies.

When you use an association without a type on a Super Genie (eg. ?1?) then DspInfo() will not be able to give any information for the substituted tag if that tag is a DIGITAL.

Service Pack B:

* NCR 12745 - FileRichTextPrint() error return.

FileRichTextPrint() now checks if the file can be printed and will return error 367 'File cannot be printed' or error 261 'File does not exist' if unsuccessful.

* NCR 13022 - Keyboard commands are 'eaten'.

After a page is displayed the cursor focus may not be set correctly, leading to pagewide and global keyboard commands being 'eaten' when the cursor is subsequently set on the first key press.

* NCR 13146 - FileFind() doesn't close file handles.

FileFind() fails to close opened file handles when finding just one file, or if a recursive call fails to finish finding all specified files. A new function FileFindClose() is introduced to let users close opened FileFind() handles which aren't needed any more. Note: FileFindClose() does not take any parameters.

* NCR 13231 - DDK function "Debug" output display problem.

This is a problem in the DDK where driver debug function (*Debug)(ASCIIZ, CHAR*, SHORT) cannot display more than 432 bytes of user data in Citect Kernel Window. It is supposed to support 2048 bytes by design. This has now been fixed so that it can display 2048 bytes of user data and truncates the data with "DATA TOO LONG BEING CUT OFF", if data is more than 2048 bytes.

* NCR 13246 - Runtime crash with DspText().

Citect will sometimes crash at runtime when displaying a page or activating a Super Genie. When examining the page or Super Genie that caused the crash in the Graphics Builder, you will see that one of the animation points on the page calls Cicode that writes text to itself or another animation point that is not a pure animation point. The Cicode calls the DspText() Cicode built in function, or calls a Cicode function which in turn calls DspText() such as TrendDspCursorValue(). The crash may result from the use of the DspText function where the animation point parameter refers to an animation point which is not a pure animation point. The fix is has been to prevent Citect crashing in this situation, and to provide a hardware alarm indicating this error condition. The hardware alarm has the following message "Wrong type for text display AnXX" where XX refers to the An number being written to. If this error is found, then the problem should be rectified by ensuring text is configured to be written only to pure animation points. Configure these points using the Citect Graphics Builder 3.4 / 4.2 tools.

* NCR 13266 - "Driver Is Not Responding" error.

Citect will sometimes show the "Driver Is Not Responding" error in the kernel. When examining the settings for the protocol driver having the problem, you will see (Retry + 1) * TimeOut (seconds) > Watchtime. With the settings (Retry + 1) * TimeOut (seconds) > Watchtime, then under a timeout condition, the IO Server may time out the request before the driver can time out the request. This situation results in the "Driver Is Not Responding" error occuring in the kernel. Users using the default values for a driver should normally not be affected by this problem, as the default values for a driver should satisfy the above equation. The change prevents the IO Server from timing out a request for a default period of 5 minutes. This should always allow a driver to timeout a request before the IO Server. The new IO Server timeout parameter introduced by this change is [IOSERVER] CancelTimeout, and is measured in seconds. The default is 300 seconds (5 minutes). This parameter should not normally need to be modified.

* NCR 13295 - Internet Display Client Startup

It is now possible to run IDC without typing the IPAddress and Password at startup.

Simply set

[Internet] ShowSetupDlg = 0

[Internet] IPAddress

[Internet] Password

in the IDC's Citect.ini file. Both IPAddress and Password need to be set otherwise the dialog will come up as before. If ShowSetupDlg is set to 1, a setup dialog will show as usual.

* NCR 13296 - Multiple Internet Display Clients

It is now possible to run multiple Internet Display Clients on a single computer.

* NCR 13298 - Internet Display Client downloads files unnecessarily.

When the Internet Display Client requests a file which has been downloaded previously, it will download it again if the file can not be found inside the Internet cache.

* NCR 13300 - Dial up on a dial back modem.

Dial back may fail if a dial up is being attempted at the same time on the same modem. Citect should give priority to the dial back in this case.

* NCR 13331 - "Out of memory" error when compiling a large number of events.

An "Out of memory" Citect compiler error occurs with a context message of "Allocating Wrt Table". The error happens when compiling a large project for which there were greater than or equal to 32500 event tags, each writing to a different tag address.

* NCR 13333 - Citect Error Handling.

The exception address should be written by Citect into the Dr Watson log header.

* NCR 13334 - "Page RDB" crash.

Attempting a "Page RDB" command in the kernel on a project with a large number of groups may cause Citect to crash.

* NCR 13337 - Dial up on a dial back modem.

Dial up may fail on a dial back modem. Citect should allow dial up to proceed on a dial back modem if no dial up modems are available.

* NCR 13395 - Memory Leaks.

Use of CtApi may lead to memory leaks.

* NCR 13405 - Accessing arrays with scaling may fail.

Using a tag as an index to an array with engineering scale will permit values outside the engineering range to be set.

* NCR 13407- Crash when using PageInfo().

Calling PageInfo() during startup may cause Citect to crash.

* NCR 13435 - Remote dialup occurs on non - I/O servers.

If you have a setup with an I/O Server and a non - I/O Server running a project that executes dialouts, and the non - I/O server is connected to a modem, then a crash could occur because the non - I/O server dials out using the dialout cicode in the project.

* NCR 13441 - New Time Stamped Alarm types.

Three new Time Stamped alarm types have been added. They all allow the time stamp to be a negative offset from midnight of the next day (or midnight of the current day depending on how this is viewed). The actual offset is always positive when specified but is treated as a full negative offset. The new types are (8) Negative BCD offset stored as hex, (9) Negative BCD offset stored as decimal and (10) Negative millisecond offset. Total history from midnight of next day available to be specified for each type is (8) 4 days, (9) 178 days and (10) 49 days.

* NCR 13446 – AlarmSetInfo().

Using AlarmSetInfo() with a type of 2 does not work when the value (alarm category number) is higher than 31.

* NCR 13449 - TrnInfo() function problem with mode 6.

The TrnInfo() function does not correctly return values greater than 32767 when using mode 6. This causes a problem when using this function and mode when there are more than 32767 events, as the number turns negative.

* NCR 13454 - Transparent PlotOpen() modes.

Transparent PlotOpen() modes 65 and 129 make do not have any affect. Using PlotGrid() with nFillCol = No_Change will not result in a history of plots like in Version 3.4/4.2.

* NCR 13472 - Duplicate dialog Hotkeys in the graphics builder.

The "Guidelines Setup" dialog box in the graphics builder has duplicate hotkeys with 3 controls all having the same 'C' keyboard shortcut.

* NCR 13475 - Numeric format display in Graphics Builder is incorrect.

When a new numeric object is added and a new numeric format selected for it, all existing numeric objects will then display with the chosen format. Existing objects should continue to display with their own numeric format.

* NCR 13482 - Remote I/O Device cache timeout.

The cache timeout for a remote I/O device is not being updated when the connection schedule is modified using the IODeviceControl() function with type 13 or type 15.

Service Pack C:

* NCR 11609 - Page origin gets corrupted

When running with [Page]DynamicSizing = 0 if a page is scrolled and then moved the page origin is corrupted.

* NCR 11680 - Minimised Window Display errors.

When a Citect window is minimised and the project run, the Citect window displays incorrectly.

* NCR 12550 - DspAnFree() causes crash.

Citect will crash when DspAnFree(An) is called on a Cicode object that has something continuously displayed on it using DspText(An, Font, Text). DspText() now checks if the Animation point has been freed.

* NCR 12784 - Text object displays Japanese characters incorrectly

Projects created or modified under a Japanese Operating System will have problems displaying Japanese characters within text objects.

* NCR 12988 - Copy/Paste problem in Project Editor.

Variable Tag records cannot be copied and pasted. This does not affect other forms.

* NCR 13174 - Upgrading project problem.

When upgrading a project, from ver 4.xx to 5.20 or 5.21, if the project has a genie using a substitution called %Page% or %An% then once it's upgraded it will have problems. When you paste this genie onto a page or it has been pasted previously, the name of the current page is automatically substituted into the field, and the property can not be modified. For the %An% the an number will be automatically substituted into the field.

To overcome this during the upgrade, set [CTEDIT] UpdateAnPage = 1 and set [CTEDIT] SubtPageValue and [CTEDIT] SubtAnValue to whatever name you would like to change it to. The default values for SubtPageValue and SubtAnValue are PageSubt and AnSubt respectively.

* NCR 13296 - Multiple Internet Display Clients.

It is now possible to run multiple Internet Display Clients on a single computer.

* NCR 13488 - Remote I/O Devices.

Automatic cache refreshing can now be enabled or disabled explicitly using the new [Dial]CacheRefresh parameter. Allowable values are 0 to disable cache refreshes, or 1 to enable. The default value is 1.

* NCR 13489 - Remote I/O Devices and IODeviceInfo() type 18.

IODeviceInfo() type 18 erroneously reports a unit as connected if the unit is offline. IODeviceInfo() type 18 has been enhanced to more accurately report the state of the unit.

* NCR 13551 - Cannot scroll back into history using an event based SPC Trend Chart

When pressing the historical scroll back button on an event based SPC trend chart, the chart jumps back to display the realtime data immediately, rather than displaying the historical data.

* NCR 13557 - New PageFileInfo() function.

A new cicode function PageFileInfo() has been added to return the width and the height of a page without the page having to be displayed at the time. PageFileInfo(sPageName, nMode) returns the page width or height of sPageName depending on the value of nMode. Mode 0 returns the page width, and mode 1 returns the height of the page.

* NCR 13565 - Dialback modems.

Citect stops monitoring a dialback modem for incoming calls if the modem is turned off and turned on again. Citect should restart monitoring when the modem is turned back on.

* NCR 13585 - Calling DspInfo() may cause Citect to crash.

When calling DspInfo() with type 3, Citect may crash. This happens after 5.21 Service Pack A is installed.

* NCR 13614 - AssChainPopup() problem.

AssChainPopup() failed to open the same Super Genie with different tag associations.

* NCR 13659 - KeySetSeq() fails to work.

The Cicode function KeySetSeq() fails to work when an AN is specified. It only works when you specify an AN of 0 which causes it set a page key sequence.

* NCR 13661 - Runtime performance enhancements.

The performance of Citect runtime has been enhanced in the area of loading pages.

* NCR 13665 - Rectangle and Circle fill runtime problem.

When a rectangle and circle object (that has fill property) is moved, the fill will not be shown correctly during runtime, unless the page is refreshed.

* NCR 13667 - Incorrect project names on Japanese Citect.

When a new project with a Japanese name is created under a Japanese operating system, Citect changes the first character to an invalid character.

* NCR 13668 - Text displays incorrectly on Japanese Citect.

Palette text in the Graphics Builder is too small to read and text in the New Project box in the Citect Explorer does not show correctly.

* NCR 13669 - Copyright Character on Japanese Citect.

Copyright Character © does not display correctly on Japanese Citect.

* NCR 13719 – Hardware key checking.

Hardware key failures occur because Citect does not correctly retry the key.

* NCR 13799 – Minimum page sizes.

If a page is smaller than a minimum width then it may appear corrupted. The minimum page width arises from the Windows limitation that all windows must have a minimum width of 132 pixels. The minimum page width is therefore equal to 132 - 2 * <border width>. where <border width> depends on the window mode being used. The table below gives minimum page widths for all window modes.

WinNewAt mode Border Size Minimum Page Width

0 = Normal window 4 124

4 = No resize 3 126

8 = No icons 3 126

16 = No caption 1 130

If the page is smaller than this minimum size it will now display correctly with the page left aligned and the unused area on the right side of the window will be covered with a thin black strip.

Note that all new pages should be made wider than these minimum widths.

Service Pack D:

* NCR 5598 - Update pages.

Update pages do not delete fields from a form in a Super Genie when field is empty. Update Pages now removes all data in the field when its parent (Genie/Super Genie) is empty or blank.

* NCR 12541 - Variable Tag Scale fields.

Variable tags of type LONG INT may require 11 characters to be entered. This includes the 'minus' sign for a 10 digit negative value. Thus 11 characters is required in the scale field.

* NCR 13692 - Drifting Accumulators.

All accumulators will drift when some or more of the Trigger data values come from a PLC which has response times slower than the accumulator watch time. Only the accumulator with the 'slow' trigger should drift.

* NCR 13737 - CTAPI session is not released.

The CTAPI session for client connection is not released sometimes when using TCP/IP, causing the CTAPI license to not be freed.

* NCR 13783 – Japanese Characters in Graphics Builder.

When opening a file from Graphics Builder, Japanese characters in the project and file name do not display correctly.

* NCR 13798 - Japanese half size characters in Graphics Builder.

When trying to save a page using "half size Japanese characters" in Graphics Builder, the error message "invalid page name" will occur.

* NCR 13834 - DevModify() leaks memory.

Calling the Cicode function DevModify() will leak memory in Citect.

* NCR 13840 - Calling DspFileSetName() may cause Citect to crash.

Citect may crash when trying to display a file with DspFileSetName() if the file has 16000 or more lines.

* NCR 13875 - Japanese half size characters.

When trying to compile a project that uses "half size Japanese characters" in its name, it will fail to compile and give an error message.

* NCR 13879 – FileFind() problem.

When calling FileFind() to a non existent file, it will return the directory path of that file and when it tries to find the next file it will crash. This happens after 5.21 Service Pack B is installed.

* NCR 13880 - Citect Project Editor error message.

Citect asks for an include project on startup even after it has been marked as deleted in the Project Editor.

* NCR 13893 - Citect graphics will freeze in runtime.

When changing the visibility of an object, Citect runtime will freeze when changing the state of the object to hidden.

* NCR 13906 - Compiler crash.

A crash in the compiler happens when compiling a project which includes a large number of group entries. There is at least one group which encompasses multiple sub-groups, so that the total number of associations for the group is greater than 256.

* NCR 13914 - Express Wizard crashes in Japanese Citect.

When the Finish button is pressed after completing an Express Wizard setup, Japanese Citect brings up an error message, and then crashes.

* NCR 13925 - CTAPITrend() problem.

Cicode function CTAPITrend() will return no samples if the two tags specified have the first 10 characters the same.

* NCR 13939 - Calls to WinCopy() and WinFile() functions don't work.

The functions WinCopy() and WinFile() should be able to be called simply with WinCopy(), and WinFile(sFile). Since Service Pack B this does not work and they must be called with additional parameters. See Knowledge Base article Q2841.

* NCR 13961 - Citect server hangs up.

Citect server will hang on the error message box "Invalid handle" when a CTAPI client makes a very large trend query and the connection is killed after a time out.

* NCR 13968 - Remote I/O devices.

Calling IODeviceControl() functions for remote I/O devices on a display client may cause a General Protection Fault in Citect. IODeviceControl() functions for remote I/O devices should only be able to be called from the I/O server on which the remote I/O device is defined.

* NCR 13996 - CTAPI returns tag value in the wrong format.

The value of the tag returned by CTAPI is not in the format specified in the tag definition.

Service Pack E:

* NCR 12200 - Area checkbox does not work.

The Area checkboxes in the Graphics Builder property pages do not behave correctly and do not set the Area of the keyboard commands / objects appropriately.

* NCR 14021 - Upgrading large Citect projects.

When attempting to upgrade large Citect projects by setting [CTEDIT]Upgrade=1 and restarting Citect, an error message "Citect could not start Graphics Builder" may appear and Citect Explorer will not start.

* NCR 14047 - Drop down lists not updated on project restoration.

Drop down lists in the database edit form in the Project Editor may not get updated when a project is restored onto an existing one. This will happen if the drop down lists were accessed in the original project. The drop down lists are only updated when Citect Explorer is closed and restarted again, or if another project is selected before selecting the original project again.

* NCR 14095 - CTAPI returns incorrect "DESC" field in alarm query.

CTAPI will return an incorrect value for the "DESC" field in an alarm query. The value returned will be the value of the "SUMSTATE" field rather than a blank.

* NCR 14111 - Duplicate entries in pgkey.dbf.


When a Super Genie has a pagewide keyboard command associated with it, every time update pages is done on the Super Genie a separate entry is created in pgkey.dbf.

* NCR 14123 - Symbol set disabled appearance problem.

A Symbol set graphics object my look disabled during runtime when it should not be.

* NCR 14127 – Prompt() and DspText() function crash Citect at startup.

When calling Prompt() or DspText() function during startup, Citect may crash. This happens after 5.21 Spk B is installed.

* NCR 14133 - Proxi server runs out of kernel queues.

Citect may run out of kernel queues and shutdown under the following conditions: Several IDC clients try to connect to a Proxi server, which already has connections defined to around 30 IOServers. The problem results from Citect running out of network session structures. The maximum number of network session structures has been increased from 255 to 4000. However it will be impossible to use more than 255 sessions unless Citect is configured to use pure TCPIP sockets connections, rather than Netbios based connections. The default number of kernel queues has also been increased from 512 to 1000. This is the [Kernel]Queue parameter in the Citect.ini file.

* NCR 14136 - Internet Display Client [DNS] Problem.

When an Internet Display Client connects to the Internet server, it will ask for [DNS] and [Client] information from the Internet server's Citect.ini file to populate its own Citect.ini file. The problem occurs when the information inside [DNS] or [Client] section exceeds 256 characters. In this case only the first 256 characters of information are transferred.

* NCR 14184 - IODeviceInfo() Problem.

IODeviceInfo() function cannot handle unit names that start with a digit. It mistakenly assumes that a unit number was passed as an argument instead of a unit name.

* NCR 14188 - Error on adding trend pens.

When adding trend pens in runtime on a trend client the addition will fail and a hardware error 'Name does not exist' will be generated. The error will not happen on the trend server. This problem was introduced after the installation of Version 5.21 Service Pack D.

* NCR 14189 - Symbol fields removed.

Symbol fields get mistakenly removed upon reopening a page. This problem occurs after the installation of v5.21 Service pack D

* NCR 14204 – TagWrite() Scaling problem.

When tags are written to using TagWrite() some numbers will be scaled incorrectly. Occurrences of this problem are in the minority and depend on both the scale of the tag and the number being written.

* NCR 14227 - Tag Import.

Tag import no longer works after 521 Service Pack D is installed. The file CiDBFDrv.dll was not shipped. This has been corrected.

Service Pack F:

*NCR 12580 - DspInfo*() functions and Cicode Objects.

The DspInfo*() and InfoForm() functions do not work on a Cicode Object.

*NCR 13926 - CTAPITrend() can not return all samples for queries containing mixed trend types.

The Cicode function CTAPITrend() used by CTAPI can not process the trend query correctly if there are periodic and event trend tags mixed in the tag list. Only those tags which have the same type as the first one will have samples returned.

*NCR 14203 - DDE Driver Memory Leak.

Using the DDE driver to request data from another application may cause a memory leak.

*NCR 14213 - CTAPITrend() still running when the client is dead.

The Cicode query CTAPITrend() started by a CTAPI client will keep running until the query is finished, even if the client has already terminated.

*NCR 14230 - CTAPI trend and alarm queries return incorrect data.

CTAPI may return incorrect data if more than one query is running simultaneously due to the query device used by trend history or alarm queries not being fully protected.

*NCR 14235 - CTAPI Alarm or TrendHistory query returns incorrect records.

The CTAPI Alarm or Trend history query is using the local client's privileges instead of the CTAPI connection's priviledges, which may result in incorrect records being returned to the CTAPI client.

*NCR 14236 - AlarmSumFirst() & AlarmSumNext() ignore user's access rights.

The Cicode functions AlarmSumFirst() & AlarmSumNext() return alarm summary records that the user does not have access rights to.

*NCR 14238 - The [Debug]Memory=16 setting for memory corruption has been improved.

The behaviour of this setting has been improved so that memory is freed after use.

*NCR 14341 - WinNewAt() with mode 512.

When WinNewAt is used with mode 512 to open a supergenie it should block opening further copies of the same supergenie with the same associations. When a constant is passed as an association and the constant is the same, the second supergenie is not blocked.

*NCR 14345 - DspInfoNew() crashes Citect.

DspInfoNew() run on an object, with a scaled array tag associated with it, will crash Citect.

*NCR 14349 - FTP Server may send the wrong file.

When the Internet Display Client connects to the FTP Server and requests a file from the main project, the FTP Server may send the wrong file if there is another file of the same name in a subdirectory of the main project.

*NCR 14355 - Modifying Genies.

Modifying a genie while a page is open which has an instance of the genie on it can cause problems at runtime. An example of the type of problems seen is touch commands on the genie not functioning correctly.

*NCR 14361 - TagRead() fails on OPC and DDEDRV.

TagRead() may fail when used on variable tags being accessed through the OPC or DDEDRV protocol drivers. They will fail when the tag has an '[' (open square bracket) followed by a non numeric character or '0' (zero) as part of the address.

*NCR 14376 - Message log file rollover problems.

A device will only log to at most two files instead of the number specified, and will not rollover to subsequent log files.

*NCR 14382 - Accessing alarm properties may cause Citect to crash.

When Accessing alarm properties dynamically, for example via the TagRead() or TagWrite() Cicode functions or CTAPI, and there is not an alarm device defined then Citect may crash.

*NCR 14383 - Graphics Builder crash when saving a genie.

Graphics Builder may crash when saving a page containing the maximum number of characters(254) in the Genie Substitution string.

*NCR 14436 - Uppercase Genie substitutions don't work.

Genie substitution don't work when defining an association using certain uppercase words (eg. "TEXT", "FONT", "VISIBLE", "MVX", "MVY", "ROT", "SZX", "SZY", "FIL", "CMD", "DOWN_CMD", "DBLCLK_CMD", "REPEAT_CMD", "MSG_LOG", "MVXSL", "MVYSL", "ROTSL", "PRIV", "AREA", "DEVICE", "DESC", "COMMENT", "DISABLED", "SET_ARR"}

*NCR 14458 - Citect may crash with ActiveX operations.

Trying to set an Object as a property of another Object will fail and Citect may crash. (eg. Setting the RecordSource of a DBGrid Object to a ADO Object).