Date: 09-01-2009 Subject: PATCH RELEASE 9.3B Runtime Files These release notes pertain to the following programs or files: PLBCLI 9.3B 01 Sep 2009 9,3,2,600 PLBCLICON 9.3B 01 Sep 2009 9,3,2,500 PLBCLIENT 9.3B 01 Sep 2009 9,3,2,500 PLBCLINET 9.3B 01 Sep 2009 9,3,2,500 PLBCON 9.3B 01 Sep 2009 9,3,2,500 PLBCONET 9.3B 01 Sep 2009 9,3,2,500 PLBNET 9.3B 01 Sep 2009 9,3,2,500 PLBRUN 9.3B 01 Sep 2009 9,3,2,600 PLBSERVE 9.3B 01 Sep 2009 9,3,2,500 PLBSERVET 9.3B 01 Sep 2009 9,3,2,500 (Threaded Server) PLBWIN 9.3B 01 Sep 2009 9,3,2,500 SUNINDEX 9.3B 01 Sep 2009 9,3,2,500 ODSBAC32.DLL 9.3B 01 Sep 2009 SA_DLL32.DLL 9.3B 01 Sep 2009 9,3,2,500 PLBEQU.INC 9.3B 01 Sep 2009 DBGIFACE.PLC 9.3B 01 Sep 2009 EDITOR.PLC 9.3B 01 Sep 2009 PLBCMP.PLC 9.3B 01 Sep 2009 PLBDBUG.PLC 9.3B 01 Sep 2009 PLBDSIGN.PLC 9.3B 01 Sep 2009 SUNCS21.OCX 9.3B 01 Sep 2009 SUNIDE.PLC 9.3B 01 Sep 2009 msvcm80.dll 8.0.50727.4053 msvcp80.dll 8.0.50727.4053 msvcr80.dll 8.0.50727.4053 Microsoft.VC80.CRT.Manifest 8.0.50727.4053 *============================================================================== Notes for DOCUMENTATION: - The FONT property should be removed from the MAINWINDOW object. - For the mapped drive support for an Application Server or Data Manager, it is possible to specify a username and password for a network share. The required syntax to specify a username and password is defined as follows: Format: {drv}:=[~]{redir}[;{username};{password}] Where: {drv} Drive device letter ( a to z ) inclusive. {redir} Drive device redirection string. This string can be a UNC path or a DOS drive path. [~] Optional character before the {redir} string to prevent removal of the {drv}. {username} Optional user name required to access a network share. {password} The password is required when the user name is specified. It is used to access a network share. Note: 1. The {username} and {password} exist as raw text strings. Care should be taken to protect the ini file from unauthorized access since the user name and password are stored in plane text. Limited access to an Application Server or Data Manager should be considered when the {username} and {password} parameters are used. Example: [mapdrives] x:=\\server\sharename\directory;myname;mypassword - Modify the LISTVIEW InsertColumnBgClr note (1.) to read as follows: Note 1. The data string stored into each sub item of the new column specifies a hexadecimal string that represents the RGB background color value of the line item. The expected string format of a line item color is '0xRRGGBB'. - Modify the LISTVIEW InsertColumnFgClr note (1) to read as follows: Note: 1. The data string stored into each sub item of the new column specifies a hexadecimal string that represents the RGB foreground color value of the line item. The expected string format of a line item color is '0xRRGGBB'. *============================================================================== The following files have been changed as follows: ------------------------------------------------------------------------------- PLBSERVE - Added a new keyword named '*SERVERSENDCOUNT={nvar}' for the GETMODE instruction. This keyword returns the current message send count that is accumulated for the Application Server runtime. For all other runtimes, this keyword returns a value of zero. - Modified to prevent the possibility of hanging in a socket receive function during the client/server startup and termination phases. With this change the normal receive keepalive timeout is being used during the startup and termination operations. The default receive keepalive timeout is 130 seconds and can be changed using the PLBCS_RECVTIMEOUT keyword. - Corrected a problem where fast events with arguments could cause an O105 error or hang the client to hang. This change requires a 9.3B client for everything to work properly. ------------------------------------------------------------------------------- PLBSERVE(WINDOWS) - The Application Server for Windows has been modified to support the keyword named 'ADMIN_SHELLICON={on}off}'. When this keyword is turned on, the PLBSERVE icon is inserted into the Windows taskbar icon tray area. If a user executes a right-click on the PLBSERVE icon, he may select a menu option to display PLBSERVE statistics or to terminate the PLBSERVE Application Server. ------------------------------------------------------------------------------- PLBCLIENT, PLBCLICON, PLBCLINET - Added a new keyword named 'PLBCS_CMDLIN={command}'. This keyword can be used as a substitute for the 'PLBCS_CMDLN={command}' that is currently supported for the clients. The description for the new 'PLBCS_CMDLIN' keyword is the same as the 'PLBCS_CMDLN' keyword. - Corrected problems that would cause a hang issue with fast events. ------------------------------------------------------------------------------- PLBCLIENT, PLBCLINET - Corrected a problem where the username for the 'iuser' option was retrieved incorrectly from the command line and this would prevented a NT Service from being installed for a user. ------------------------------------------------------------------------------- PLBCLINET - Corrected an issue with .NET fast events where a second fast event could be dispatched before the first finished. This problem could cause indeterminate program results, but would usually cause a .NET General Protection Fault (GPF). ------------------------------------------------------------------------------- PLBSERVE, PLBCLINET - Changes have been made to allow a group of SETPROP instructions for .NET objects to be buffered and sent to a client in a minimum number of messages. This change is to optimize the execution of a group of SETPROP instructions when error results are to be sent back to the server. Note: 1. At this point, a SETPROP using an internal collection syntax format is not buffered. Example of SETPROP that is not buffered: SETPROP object.Rows.Item(lvRow).Cells.Item($Select): *Value=vFalse 2. When a group of SETPROP instructions are processed for a single object, it is more efficient to include all of the properties into a single SETPROP for the Application Server. In both of these examples the SETPROP data is buffered. Example of less efficient format for Application Server: SETPROP object, *Prop1={value1} SETPROP object, *Prop2={value2} SETPROP object, *Prop3={value3} Example of more efficient format for Application Server SETPROP object, *Prop1={value1}: *Prop2={value2}: *Prop3={value3} ------------------------------------------------------------------------------- PLBWIN, PLBNET - Corrected a problem where a COMCLOSE of a closed COMFILE could cause a GPF error after the COMFILE had been previously opened and closed for a socket connection. - Corrected a GPF error that could occur when an error occurred when an NT Service was starting. - Modified the NT Service startup procedure for PLBWIN/PLBNET to set the default working directory to be the directory where the runtime is loaded from. - Modified the NT Service installation options to eliminate the order dependency requirement when using the INI name option. Examples that work as expected: plbwin -idefault -imyini plbwin -idefault -i myini plbwin -imyini -idefault plbwin -i myini -idefault ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX) - Added two keywords for the GETFILE instruction named 'GETSUNDMIP={svar}' and 'GETSUNDMPORT={svar}'. These keywords are described as follows: GETSUNDMIP={svar} This keyword returns the current TCP/IP address for the SUNDM Data Manager. The returned TCP/IP string is the IP4 format that is 'nnn.nnn.nnn.nnn'. This TCP/IP address is the resolved address used for the socket connection to the SUNDM Data Manager. This keyword is valid for an AFILE, FILE, or IFILE file variable. If the AFILE, FILE, or IFILE file variable is opened but not through the SUNDM Data Manager, the {svar} variable is nulled. If the AFILE, FILE, or IFILE file variable is not opened, the {svar} variable remains unchanged. GETSUNDMPORT={svar} This keyword returns the current port number used to access the SUNDM Data Manager. The returned port number string is a decimal number. This keyword is valid for an AFILE, FILE, or IFILE file variable. If the AFILE, FILE, or IFILE file variable is opened but not through the SUNDM Data Manager, the {svar} variable is nulled. If the AFILE, FILE, or IFILE file variable is not opened, the {svar} variable remains unchanged. - When the enhanced COPYFILE is used to access a Sundm Data Manager, a default maximum receive timeout of 5 seconds is used to wait for a response from the Data Manager. The default 5 second timeout may not be sufficient when larger block sizes are used. Therefore, the 5 second default is used for a block size of 8192 or smaller. Otherwise, the default time is calculated by the following expression: ( timeout = blocksize / 1638 ) Note: 1. If the Sundm Data Manager keyword named 'FM_USELONGTIMEOUT=on' is used, the default receive timeout of 180 is used when the block size is 8192 or smaller. - Corrected a GPF error that would occur in the INDEX instruction when the ISI tree depth level overflowed. With this change, an appropriate error is now given when the tree level overflow occurs. With this change the ISI tree depth for the INDEX instruction has been changed from 10 to 16. In addition, the runtime ISI tree depth level has been changed from 14 to 18. - Corrected a problem where the INDEX and SORT instructions was not using the PLB_CURDIR keyword setting to locate the (-l) log file without a specified path. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE - Corrected a GPF error that would occur when a memory allocation failed while performing an IO operation that was included in a TRANSACTION. ------------------------------------------------------------------------------- PLBWIN, PLBNET, ALL GUI CLIENTS - Modified to prevent SETPROP of FONT for the MAINWINDOW. The runtimes require that the FONT for the MAINWINDOW must remain the same at all times after the initial startup. The initial FONT for the MAINWINDOW is used to create the main window initial size and used to establish various runtimes settings required for positioning and sizing of objects. The MAINWINDOW was implemented to only support one FONT that defaults to 'Courier New' unless the PLBWIN_FONT keyword is specified in the PLBWIN.INI file. With this change, a SETPROP FONT instruction is ignored for the MAINWINDOW. - Modified the scaling for an ICON object to allow the ICON object to be centered into the scaled object rectangle when the WINDOW Scale method FLAGS parameter has the 0x00000004 bit definition set. - Modified the WINDOW Scale method to support a new bit definition for the *Flags parameter that causes all ICON objects to be located into the ICON scaled rectangle. The *Flags bit definition are: 8. The {flags} bit-mask values are defined as follows: Value Scale the WINDOW object and ... 0x00000001 position to the original top left property settings. 0x00000003 use the current top left property settings. NEW 0x00000004 Center all ICON objects after scaling action. - Corrected a problem where the runtime default images for the LoadStdToolBitMap method of a IMAGELIST had an image height of 15 pixels. This problem was causing the PLB Designer Imagelist Editor to present the Standard Images with a black underline. - Corrected a problem where a LINE object was not scaled properly when a WINDOW Scale method was processed. - Corrected problems where a COMBOBOX object was not scaled properly when a WINDOW Scale method was processed. - Corrected a problem where the TabStops property settings for a DATALIST were not scaled properly when a WINDOW Scale method was processed. - Corrected a problem where an EDITTEXT object without a border was not be displayed properly after a WINDOW method was processed. - Corrected scaling problems for LISTVIEW columns when the columns were added or removed after the LISTVIEW object was created. - Corrected a problem where the RADIOGRP/CHECKGRP objects did not auto scale properly when they were created after their parent WINDOW had been previously scaled. - Modified the starting and ending points for a LINE object in character mode to set the point at the center of the cell. This change is to correct a problem where a LINE object was causing a DISPLAY character to the left and above a line to disappear. - Corrected a problem where the behavior of the InsertColumnFgClr and InsertColumnBgClr changed from 0xRRGGBB to 0xBBGGRR when changes were made in the 9.3A patch release for the InsertAttrRGB method. The original documentation references color values as 0xBBGGRR but it has been determined that the original documentation was wrong. Since release 9.1, the color values stored for color attributes columns were formatted as 0xRRGGBB (RGB) values. The 9.3B patch documentation is being modified for the InsertColumnFgClr and InsertColumnBgClr method to specify that the color values are expected to be RGB (0xRRGGBB) values. - Corrected a problem where the Scale method for a WINDOW object did not scale a COMBOBOX object properly. - Corrected a GPF error that would occur when a MREGION existed on a WINDOW object that was scrolled using a scroll bar action. This problem was caused by a change in the 9.3A patch release. - Corrected problems that prevented .NET xml data property streams from being stored into a PLF when the xml data byte size was larger than 65535. In this case, the PLF format version has to be changed when the xml data streams larger than 65535 are stored in the PLF. Therefore, any PLF with this newer version, can ONLY be loaded using a 9.3B runtime version or later. Otherwise, an PLF load error will occur. ------------------------------------------------------------------------------- PLBNET - Corrected a problem that was preventing multiple .NET objects from being created on a .NET Panel using the PLB Designer. - Corrected a problem where a validate event might not occur after a .NET control looses focus by a SETFOCUS statement. ------------------------------------------------------------------------------- PLBNET, PLBCLINET - A Microsoft security update has been applied to the .NET modules that requires the following Microsoft redistribution modules: msvcm80.dll 8.0.50727.4053 msvcp80.dll 8.0.50727.4053 msvcr80.dll 8.0.50727.4053 Microsoft.VC80.CRT.Manifest 8.0.50727.4053 ------------------------------------------------------------------------------- PLBCMP - Added a new keyword named 'SERVERSENDCOUNT' for a GETMODE instruction. When this keyword is processed for a GETMODE instruction under a PLBSERVE runtime, the returned value is the current runtime message count that has been sent to a client module. - Corrected an unexpected compiler error that would occur when the execution error for a PLF form event was given as a local label to the PLF with a leading '#' character. - Corrected an unexpected compiler error that would occur when two MAILSEND instructions were compiled back to back in a program and the first MAILSEND used an *PASSWORD parameter and the second MAILSEND did not use an *PASSWORD parameter. ------------------------------------------------------------------------------- PLBDBUG - Corrected a GPF error that would occur when a DV command was processed for a Pointer to a Pointer to a Global DIM variable. ------------------------------------------------------------------------------- UTILITY - Corrected a GPF error that would occur in the Sunindex utility when the ISI tree depth level overflowed. With this change, an appropriate error is now given when the tree level overflow occurs. With this change the ISI tree depth has been increased from 10 to 16. - Modified the Sunindex utility to give a warning message when the ISI tree structure is more than 95 percent full. ------------------------------------------------------------------------------- ODSBAC32.DLL - Corrected a problem where 20 ms of elapsed time was lost for each row of data retrieved from a Data Manager using the ODBC driver. For a large number of rows, this can improve performance significantly. ------------------------------------------------------------------------------- SA_DLL32.DLL - The runtime ISI tree depth level has been changed from 14 to 18. This change is required because the SUNINDEX instruction has been modified to support an ISI tree depth level of 16. ------------------------------------------------------------------------------- SUNIDE.PLC - Added HelpIDs to the menus so you can press F1 for help with a menu item selected. - Added recognition of PLBCMP_INCEXT keyword while resolving includes for the source map. - Corrected a problem were CENDIF conditional compiler directive was not handled correctly while resolving includes. - Extended find in files scratch buffers to support directories that have more than 5000 files in them (assuming 8.3 file names). - Corrected a problem where double clicking a line in the find in files results could incorrectly identify the file name containing the item. - Added ide option to prevent the editor from checking for externally modified files. ------------------------------------------------------------------------------- SUNCS21.OCX - Correct a problem were an excessive number of "search wrapped" messages would display. - Corrected a GPF that could occur when painting the screen with folded lines and the end of the code was visible in the window. - Modified to support multiple screens. - Modification to support code folding in the debugger. - Corrected a GPF error that would occur while debugging a program with a large number of includes where the include identifier reached "IF" - Modified to better handle continuation lines and syntax coloring. ------------------------------------------------------------------------------- DBGIFACE.PLC - Modified debugger right click to not treat literals as variables. - Modified debugger right click to not have "variable to big" enclosed in quotes so it is not mistaken as the contents of the variable. - Modified graphical debugger to support code folding. Debugger will now automatically step over collapsed logic. ------------------------------------------------------------------------------- EDITOR.PLC - Modified save logic to wait for network server to update file timestamp after a save before continuing to prevent bogus "file changed externally" messages. - Modified to better handle continuation lines and syntax coloring. ------------------------------------------------------------------------------- PLBDSIGN.PLC - Added splitters to the special editing windows (menu items, listview columns, statusbar panels, toolbar buttons, tabcontrol panels). - Added logic to remove the sizing handles from any selected controls during form resizing. Upon sizing completion, the handles are redrawn. - Corrected an F04 issue in the CompareStrings function. - Added support for .Net ContextMenuStrip objects. - Corrected an O123 error during a .Net object rename operation. - Corrected the setting of the DockPad properties for Window objects. - Allows removal the the Form Prefix property string. - Corrected setting of the SizeGrip property. - Corrected detection of duplicate item names in the special property editors. - Corrected the output of the ObjectID property for menus, submenus, and floatmenus. - Added logic to handle missing ActiveX controls during the form load process. - Added a "Selected" property to tab panels to signify which panel should be initially displayed. If no panels are marked as selected, the panel left visible in the designer is the initially selected panel. - The text length of a menu item has been increased to 256 characters. -------------------------------------------------------------------------------