Date: 06-28-2006 Subject: Patch RELEASE 9.1A Runtime Files Included you will find the patch release of: EMBEDINI 9.1A 28 Jun 2006 9,1,1,0 MAKEDEF 9.1A 28 Jun 2006 9,1,1,0 MAKECLI 9.1A 28 Jun 2006 9,1,1,0 MAKECON 9.1A 28 Jun 2006 9,1,1,0 ODSBAC32.DLL 9.1A 28 Jun 2006 PLBCLIENT 9.1A 28 Jun 2006 9,1,1,0 PLBCLICON 9.1A 28 Jun 2006 9,1,1,0 PLBCON 9.1A 28 Jun 2006 9,1,1,0 PLBDSIGN 9.1A 28 Jun 2006 9,1,1,0 PLBSERVE 9.1A 28 Jun 2006 9,1,1,0 PLBWIN 9.1A 28 Jun 2006 9,1,1,0 PLBWSEC.DLL 9.1A 28 Jun 2006 9,1,1,0 SA_DLL32.DLL 9.1A 28 Jun 2006 9,1,1,0 SUNAAMDX 9.1A 28 Jun 2006 9,1,1,0 SETGUID 9.1A 28 Jun 2006 9,1,1,0 SUNINDEX 9.1A 28 Jun 2006 9,1,1,0 SUNMOD 9.1A 28 Jun 2006 9,1,1,0 SUNSORT 9.1A 28 Jun 2006 9,1,1,0 SUNWADO.DLL 9.1A 28 Jun 2006 9,1,1,0 SUNWODBC.DLL 9.1A 28 Jun 2006 9,1,1,0 SUNWMSQL.DLL 9.1A 28 Jun 2006 9,1,1,0 SUNWSRV.DLL 9.1A 28 Jun 2006 9,1,1,0 PLBCMP.PLC 9.1A 28 Jun 2006 PLBDBUG.PLC 9.1A 28 Jun 2006 SUNIDE.PLC 9.1A 28 Jun 2006 EDITOR.PLC 9.1A 28 Jun 2006 PLBMETH.INC 9.1A 28 Jun 2006 PLBEQU.INC 9.1A 28 Jun 2006 ADMEQU.INC 9.1 28 Feb 2006 *============================================================================== Notes for some NEW Items: - Enhanced COPYFILE instruction. - Added COPYNEXT, COPYCANCEL, and COPYSTATUS instructions. - Added FINDDIR instruction. - The method GetButtonByState has been added for a TOOLBAR object. - The methos GetColResizeFlag, SetColResizeFlag, and SetItemTextAll have been added for a LISTVIEW object. - Added a new keyword named PLBCS_TOPDOWN for PLBSERVE. - Added a new keyword named PLB_USERUNEXT keyword to control extension usage for the utility instructions. - Added the *TRACEAPPEND option for the MAILSEND instruction. - A BETA copy of Sunbelt Reports is included in this release for the purpose of soliciting feedback. Future versions of Sunbelt Reports will be licensed separately. *============================================================================== Notes for DOCUMENTATION: - Add a note (6.) for the FLUSHEOF instruction as follows: 6. The FLUSHEOF instruction is only compiled for source compatibility with other language vendors. The FLUSHEOF instruction is never executed when a program is executed. - In the note (2.) of the TYPE instruction, the PANEL and SPLITTER type values are reversed. The PANEL type value should be 0x2F30 and the SPLITTER type value should be 0x2E30. - Change the documentation for the RESOURCE property to allow this property to be used in the CREATE/SETPROP/GETPROP instructions. - Change the documentation for the CLIPCTRL property to allow this property to be used for both a WINDOW and PANEL object. - Change the documentation for the MENUORDER property to allow this property to be used in the CREATE/SETPROP/GETPROP instructions. - Change the documentation for the MERGETYPE property to allow this property to be used in the CREATE/SETPROP/GETPROP instructions. *============================================================================== The following files have been changed as follows: ------------------------------------------------------------------------------- PLSERRVE - Added a new keyword named 'PLBCS_TOPDOWN={on|off}'. When this keyword is set to ON, then the virtual memory address space for a PLB program is assigned at the top of the memory address range. This can be done to minimize memory address fragmentation. This keyword can be used when users start experiencing U98 errors that prevent programs from loading. - Corrected a problem where the Windows Application Server stopped logging data if there was an idle period of more than 4 minutes. This problem was caused by a change made in patch release 9.0H. - Corrected a problem where a GETPROP of the VALUE property for an EDITNUMBER object did not work. - Corrected a problem where a DESTROY for a PANEL object was not clearing the object handles that were create with the PANEL object as the parent container. The problem could cause indeterminate program execution due to possible memory conflicts that might occur in the PLBCLIENT process After the parent PANEL object was destroyed. Also, note that this problem might cause a GPF error in the PLBCLIENT process depending the OS memory usage at the client workstation. ------------------------------------------------------------------------------- PLBCLIENT- Modified the client to support enhanced COPYFILE and FINDDIR instructions. When the instruction file names include a leading '!', then the file name usage is directed to the client workstation. - Corrected a GPF error that would occur while executing a PLB program on a Unix PLBSERVE server when a SETPROP for a PANEL using a PANELS collection reference. In this case, the PLBCLIENT module would terminate prematurely with a GPF error. ------------------------------------------------------------------------------- PLBWIN - Modified the AFILE, IFILE, and FILE OPEN/PREP instructions to PLBSERVE determine if the files being opened are already opened by a PLB (UNIX) SUNFM file manager in an Open Once mode. If a SUNFM file manager has opened a file in a non-exclusive Open Once mode, then an I10 subcode 13 error is generated. When a SUNFM file manager is opening files in a Open Once mode, then the files must not be opened as unmanaged files. Please see the SUNFM descriptions for the keywords named 'FM_OPENONCE={on|off}' and 'FM_OPENONCE_SHARED={on|off}' to get more information. - Modified the MAILSEND trace data to provide date/time information. - Modified the MAILSEND trace data to say 'connecting...' and 'connected!' to better clarify the information. - Added a new option named '*TRACEAPPEND={svarslit}' for the MAILSEND instruction. This option allows the trace data to be appended to an existing trace log file. If the trace log file does not exist, then the trace log file is created. The TRACE and TRACEAPPEND options can not be specified in the same MAILSEND instruction. - Added a new runtime keyword named 'PLB_USERUNEXT={on|off}'. When this keyword is set to ON, then the utility instructions named AAMDEX, INDEX, and SORT use the runtime default extensions. Otherwise, these instructions use their default extensions as retrieved directly from the screen definition file being used. If this keyword is not specified, then the default is the same as OFF. - Modified the GETMODE/SETMODE instructions to support a new keyword named '*USERUNEXT={nvar}'. This keyword allows a program to control the behavior of the utility instructions as described for the 'PLB_USERUNEXT' keyword. - The implementation of the PLB_USERUNEXT and *USERUNEXT keywords allow the SETMODE *TXTEXT, *ISIEXT, and *AAMEXT keyword settings to be used by the utility instructions (AAMDEX, INDEX, & SORT). - Modified the COPYFILE to support a new syntax format that allows the PLB user application to directly control the copying action. The enhanced COPYFILE operations are invoked when this new syntax format is used. Otherwise, the COPYFILE operation is the same as for previous releases. Format: [label] COPYFILE {source}{sep}{dest}[{sep}{retcount}[{sep} MODE={mode}[{sep}BLOCKSIZE={size}]]] Where: label - Same as PLB reference manual documentation. {source} - Same as PLB reference manual documentation. {dest} - Same as PLB reference manual documentation. {retcount}- Return count is a Numeric Variable that Optional returns the number of blocks required to complete the transfer the data from the {source} file. {mode} - The {mode} is a Decimal Number or a Optional Numeric Variable that specifies a value that allows special modes to control the COPYFILE instruction operations. {size} - The {size} is a Decimal Number or a Optional Numeric Variable that specifies a value that is the block size to be used when transferring data from the {source} file to the {dest} file. Flags: ZERO - Same as PLB reference manual documentation. OVER - The OVER flag is set when the block count that is stored into the {retcount} variable is too large and it causes an overflow that loses data. Notes: 1. If the {retcount} is specified for the COPYFILE, then the COPYFILE executes as an enhanced instruction that may require the use of the following instructions to complete/cancel the data transfer for the copy. See the following instructions for more details: COPYNEXT - Copy additional data blocks from the {source] file to the {dest} file when the {retcount} value returned from the COPYFILE instruction is non-zero. COPYCANCEL - Cancel the current data transfer from the {source} file to the {dest} file. COPYSTATUS - Determine an enhanced COPYFILE is currently active. 2. When the {retcount} is specified for the COPYFILE, then the {source} and {dest} can include a leading '!' character that indicates that the file being used is located at the PLBCLIENT workstation. 3. When the {retcount} is specified for the COPYFILE, then the {source} and {dest} data can have a '|{ip/URL}:port' appended to the file name. When this file name data format is used, then the file being used is located at the SUNFM File Manager. 4. The {mode} numeric value has the following bit definitions that can be used to control various operations for the COPYFILE instruction: Value Action 0x00000001 - Use update mode for the COPYFILE. In this mode, the COPYFILE analyzes the {source} file data and compares it with the {dest} file data. Only, the data blocks that are found to be different are transferred from the {source} to the {dest}. 0x00000002 - Open the {source} file in a shared mode that allows other applications to have the file opened while the COPYFILE/COPYNEXT operations are executed. If this mode is not used, then the {source} is opened in an exclusive mode. 0x00000004 - When this mode is used, then the {dest} file is not deleted when the COPYFILE operation is canceled. If this mode is not used, then the default action is that the {dest} file is deleted when the COPYFILE operation is canceled. 0x00000008 - When this mode is used, then the COPYFILE operation not canceled when a program error occurs in a PLB program. If this mode is not used, then the default action is that a COPYFILE is automatically canceled when a PLB program error occurs. 0x00000010 - When this mode is used, the {dest} file attributes are by passed and the file is always overwritten. If this mode is not used, then an IO error occurs if a prior existing {dest} file is write protected. 0x00000020 - When this mode is used, the {source} file data is appended to the end of the {dest} file. If this mode is not used, then the default action is to overwrite the {dest} file. 4. The BLOCKSIZE {size} numeric value allows a user to specify a transfer data block size for special cases. If the BLOCKSIZE {size} is not specified, then the default block size is 8192 bytes. When the BLOCKSIZE {size} is specified, then the smallest allowed value is 4096 bytes. The {size} does not have an upper limit implemented. 5. The COPYFILE/COPYNEXT/COPYCANCEL/COPYSTATUS instructions are implemented to allow a user PLB application to have direct control over the data transfer for a copy operation. This implementation can be used in both a Windows and Unix OS environment with the capabilities to give end users feedback and control to cancel the copy operations. 6. When a COPYFILE uses the {retcount} that requires COPYNEXT instructions to complete the data transfer, then a second COPYFILE instruction causes an I72 error to occur if the previous COPYFILE is not completed or canceled. 7. The COPYFILE I72 errors have been expanded for the enhanced copyfile operations. The subcodes have been updated to give better information about a given error as follows: I72 Subcodes for COPYFILE: 1 - Unable to open the {source} file. 2 - Unable to open/create the {dest} file. 3 - COPYFILE is already in progress. The application must use the COPYNEXT or COPYCANCEL to finish the previous COPYFILE before starting a second COPYFILE action. 4 - Out of memory. 5 - COPYNEXT can not be executed until an enhanced copy action is started using a COPYFILE instruction. 6 - Unable to retrieve file attributes for the {source} file. 7 - Unable to retrieve file attributes for the {dest} file. 8 - An unexpected protocol message has been detected communicating with SUNFM or PLBSERVE. 9 - Failure occurred while reading a data file. 10 - Failure occurred while writing a data file. 11 - A version for the client or file manager does not support enhanced COPYFILE. 12 - Unable to log onto the SUNFM file manager for the {source} file. 13 - Unable to log onto the SUNFM file manager for the {dest} file. 14 - Communications error occurred on the {source} side. 15 - Communications error occurred on the {dest} side - Added the COPYNEXT instruction to allow multiple data blocks to be transferred for an enhanced COPYFILE operation. Format: [label] COPYNEXT {retcount] Where: label Optional. A Program Execution Label. {retcount} Optional. Return count is a Numeric Variable that returns the number of blocks required to complete the transfer the data from the {source} file for the last enhanced COPYFILE operation. Flags: ZERO and OVER Notes: 1. The ZERO flag is set TRUE when the COPYNEXT instruction completes successfully. Otherwise, the ZERO flag is is set to be FALSE. 2. The OVER flag is set TRUE when the block count that is stored into the {retcount} variable is too large and it causes an overflow that loses data. Otherwise, the flag is set FALSE. 3. An I72 error occurs if a COPYNEXT instruction is executed and a COPYFILE operation is not currently active. - Added the COPYSTATUS instruction to get the current status for an enhanced COPYFILE operation that is currently active. This instruction returns the number of blocks required to complete the last enhanced COPYFILE that has been executed. Format: [label] COPYSTATUS {retcount] Where: label Optional. A Program Execution Label. {retcount} Optional. Return count is a Numeric Variable that returns the number of blocks required to complete the transfer the data from the {source} file for the last enhanced COPYFILE operation. Flags: ZERO and OVER Notes: 1. The ZERO flag is set TRUE when an enhanced COPYFILE operation is active. The ZERO flag is set to be FALSE if an enhanced COPYFILE is not currently active. 2. The OVER flag is set TRUE when the block count that is stored into the {retcount} variable is too large and it causes an overflow that loses data. Otherwise, the flag is set FALSE. - Added the COPYCANCEL instruction cancels an enhanced COPYFILE that is currently active. Format: [label] COPYCANCEL Where: label Optional. A Program Execution Label. Flags: ZERO Notes: 1. The ZERO flag is set TRUE when an enhanced COPYFILE is canceled. The ZERO flag is set FALSE when this instruction is executed and an enhanced COPYFILE is not currently active. - Added a new instruction named FINDDIR that retrieves file and directory names from a starting directory that can be located local to the runtime or from a directory that exists on a PLBCLIENT workstation or from a directory that exists on a SUNFM file manager. The returned set of file/directory names are stored into a DIM variable as data items that are separated by a '|' character. Format: [label] FINDDIR {source}{sep}{dest}[{sep}MODE={mode}][{sep} ITEMCOUNT={count}] Where: label Optional. A Program Execution Label. {source} Required. A Character String Variable or literal that specifies the starting directory where the file and directory file names are to be retrieved. This data string can include a directory with a file name including wild card '*' characters. {dest} Required. A Character String Variable where the returned file and directory file names are to be stored. {mode} Optional. The {mode} is a Decimal Number or a Numeric Variable that specifies a value that allows special modes to control the FINDDIR operations. {count} Optional. Return count is a Numeric Variable that returns the number of name items that have been stored into the {dest} variable. Flags: EOS, OVER, and ZERO ZERO - Same as PLB reference manual documentation. OVER - The OVER flag is set when the block count that is stored into the {retcount} variable is too large and it causes an overflow that loses data. Notes: 1. The EOS flag is set TRUE if there are more name items than can fit into the {dest} variable and data has been lost by truncation. 2. The ZERO flag is set TRUE if the FINDDIR instruction completes successfully. Otherwise, the ZERO flag is set to be FALSE. 3. The OVER flag is set TRUE if the item count is too large to fit into the {count} variable. 4. The {source} can contain a directory and file name combination with wild card '*' characters to retrieve specific file/directory names. 5. If the {source} variable data directory name starts with a '!' character, then the file/directory data is to be retrieved from a PLBCLIENT workstation. 6. If the {source} variable data directory name has a '|{ip/URL}:port' appended, then the file/directory data is to be retrieved from a SUNFM file manager. 7. Each file/directory data item that is stored into the {dest} variable has a format as follows: 'fNAME' or 'dNAME' Where: f - The leading character of a 'f' indicates that the 'NAME' is a file. d - The leading character of a 'd' indicates that the 'NAME' is a directory. 8. Multiple file/directory data items are stored into the {dest} variable with each item separated by a '|' character when more than one item exists. 9. The {mode} numeric value has the following bit definitions that can be used to control various operations for the FINDDIR instruction: Value Action 0x00000001 - Filter out any hidden files and does not store them into the {dest} variable. 0x00000002 - Filter out any directory names and do not store them into the {dest} variable. 0x00000004 - Filter out any file names and do not store them into the {dest} variable. 10. The I72 error has been expanded to include any IO errors that can occur for the FINDDIR instruction. I72 Subcodes for FINDDIR: 100 - The client or SUNFM file manager does not support FINDDIR operations. 101 - Unable to log onto the specified file manager. 102 - Communications error communicating with the PLBCLIENT or SUNFM file manager. 103 - An unexpected protocol message type was encountered while communicating with the PLBCLIENT or SUNFM file manager. - Corrected a problem in a MAILSEND instruction where a colon was missing for the 'Content-Type' tag for a TEXT message type. - Corrected a problem in a MAILSEND instruction where an ending '-----doc----' boundary was being output unnecessarily for a message that did not have multiple parts. - Corrected a problem in a MAILSEND instruction where the CC header was being reported as a SUBJECT. - Modified the MAILSEND instruction to perform a soft disconnect from the email server. This change is to work around a problem where a MDaemon mail server could detect a premature disconnect when the MAILSEND instruction was logging off. - Modified the MAILSEND instruction to support a multi-line response when processing the LOGIN command sequence. This corrects a problem when the mail server sends the LOGIN responses as separate lines. - Corrected a problem in a DBSEND instruction that could cause a query buffer conflict when the query size was larger than 1024. - Corrected a problem where a GPF or indeterminate program execution could occur for the following code. The problem occurred when the destination variable was too small to contain all of the data retrieved from the source variables and the data processing stopped in the middle of an array variable for a PACK, PACKKEY, or IMPLODE instruction. Example: XARR FORM 30(2) FARR FORM 1(2) . D1 DIM 1 ARR DIM 1(6),("1"),("2"),("3"),("4"),("5"),("6") . ;........PACK D1,ARR ;........PACKKEY D1,ARR IMPLODE D1,",",ARR . CLEAR XARR ;GPF occurred after PACK, PACKKEY, or IMPLODE! - Corrected a problem that caused data corruption (bad End of Record) when an 8.0.7 or earlier version of an ISI header was being opened/used in the 8.7 compatibility mode. The corrective action for this problem is that an 8.0.7 ISI version or earlier now defaults the EOR type to be the same as expected for the OS type where the ISI file is being opened. - Corrected a problem where the PLB_CURDIR working directory setting as not being used for the COPYFILE instruction. With this change the COPYFILE uses the PLB user working directory as specified by the PLB_CURDIR or the SETMODE *PLBCURDIR setting. - Corrected a problem where a READ XML operation could retrieve data for a deleted record after a REPOSIT instruction. - Corrected a problem in the COPYFILE instruction that caused an I11 error when the source file name was specified as a $MACRO name. - Corrected a problem that caused indeterminate program execution after one of the following instructions was executed with a logical length for the input data that was longer than 512 or 1000 bytes. This would cause a buffer overflow that could cause a GPF or general indeterminate program execution. The following instructions could be affected with an input size larger than 512 bytes: BATCH COPYFILE ERASE EXECUTE FINDFILE FORK RENAME ROLLOUT SHUTDOWN The following instructions could be affected with an input size larger than 1000 bytes: SPLOPEN - Corrected a problem where XFILE variables were being closed for an EXECUTE instruction. The implementation for XFILE variables does not allow any XFILE variables to be temporarily closed since all data for opened XFILE variables is only in memory. - Corrected a problem where a leading path character was being sent with the attachment file name in a MAILSEND instruction. ------------------------------------------------------------------------------- PLBWIN - Modified the method processing for an AUTOMATION object to give an O103 error if the no data is returned by the method to create a PL/B GUI AUTOMATION object. Prior to this change the returned error was an O106. The O103 error is a more appropriate error for the situation. - Modified the PRTPLAY instruction to use the PLB_PATH directories to locate a spool file. - Modified the SETITEM instruction for an EDITNUMBER object to allow the selection starting and ending positions to be set. - Modified the LISTVIEW object to allow individual line items to be selected for the drag/drop actions associated with DRAGITEM. - Modified the TOOLBAR object to allow individual tool buttons to be selected for the drag/drop actions associated with DRAGITEM. Prior to this change the drag/drop support was not available to the TOOLBAR object. - Modified the drag/drop action for a LISTVIEW to allow click event to be generated when the drop event is not generate for a drag action. - Modified the drag/drop action for a TOOLBAR to allow click event or a button click event to be generated when the drop event is not generated for a drag action. - Modified the TEST instruction to accept a GUI object as the source operand. This change allows a user to determine if a GUI object has been created or not. Format: TEST {object} Note: 1. The ZERO flag is set to a TRUE state when the {object} is not created. The ZERO flag is set to a FALSE state when the {object} is created. 2. The EOS and LESS flags are always set to a FALSE state when this syntax form is used. - Modified the TOOLBAR instruction to allow a new method named 'GetButtonByState'. ............................................................... . GetButtonByState Method . The GetButtonByState method scans the current tool buttons in a TOOLBAR object and fetches the tool button that has a specified state. [label] {object}.GetButtonByState [GIVING {return}]: USING [*Key=]{key}: [[*State=]{state}] Where: {label} is an optional Program Execution Label. {object} is a required TOOLBAR object to be accessed. {return} is optional and it is a TOOLBUTTON object that gets the return value. {key} is required and it is a Character String Variable, literal, or Numeric Variable that identifies the starting tool button in the TOOLBAR object to start the scan. (state} is optional and it is a Numeric Variable that specifies a state value for a tool button. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS, OVER, and ZERO flags are cleared. 2. When the {key} is a Character String Variable or literal, then the string data is the RUNTIME name for the TOOLBUTTON object in the TOOLBAR object where the scan is to start. 3. When the {key} is a Numeric Variable, then the value gives the starting TOOLBUTTON position in the TOOLBAR where the scan is to start. In this case, the {key} value is a zero based index. 4. The GetButtonByState method scans the TOOLBAR to find the TOOLBUTTON object that has the property state as identified by the {state} value. The {state} values are as follows: Value TOOLBUTTON State Descriptions 1 - State of PUSHED property is on. 2 - State of PARTIALPUSHED property is on. 3 - State of ENABLED property is on. 4 - State of VISIBLE property is on. 5 - State of AUTOSIZE property is on. - Added three new methods for a LISTVIEW object that are named as follows: GetColResizeFlag - Retrieve the current flag status that identifies whether a specific column of a LISTVIEW object can be resized or not. SetColResizeFlag - Change the current flag state for a column of a LISTVIEW object that controls whether the specific column can be resized or not. SetItemTextAll - This method uses a single data string formatted delimited data fields that are stored into the subitems for a LISTVIEW item/row. ............................................................... . GetColResizeFlag Method . The GetColResizeFlag method retrieves the current status flag that indicates whether a specified column for a LISTVIEW object can be resized or not. [label] {object}.GetColResizeFlag [GIVING {return}]: USING [*Index=]{index} Where: {label} is an optional Program Execution Label. {object} is a required LISTVIEW object to be accessed. {return} is optional and it is a Numeric Variable that gets the return value for the column resize flag. {index} is a required Numeric Variable that is a zero based index to the LISTVIEW columns. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS is always cleared. 2. The ZERO flag is set to a TRUE state for a zero value. Otherwise, it is cleared. 3. The OVER flag is set to a TRUE state when the {return} variable is too small for the returned value size. 4. The {return} value is set to a zero value when the {index} column can not be resized by a end user. Otherwise, the returned value is non-zero to indicate that a column can be resized. 5. The {index} column value is limited to 32 columns. ............................................................... . SetColResizeFlag Method . The SetColResizeFlag method sets the current state flag for a LISTVIEW column to control whether a column can be resized by a end user or not. [label] {object}.SetColResizeFlag [GIVING {return}]: USING [*Index=]{index}: [*Flag=]{flag} Where: {label} is an optional Program Execution Label. {object} is a required LISTVIEW object to be accessed. {return} is an optional Numeric Variable that receives a value to indicate the success or failure for the method. {index} is a required Numeric Variable that is a zero based index to the LISTVIEW columns. {flag} is a required Numeric Variable that has a value used to set the current LISTVIEW column resize flag. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS is always cleared. 2. The ZERO flag is set to a TRUE state for a zero value. Otherwise, it is cleared. 3. The OVER flag is set to a TRUE state when the {return} variable is too small for the returned value size. 4. The {return} value is set to zero when the {index} value is invalid. Otherwise, the {return} value is set to one to indicate that the resize flag was changed. 5. The {index} column value is a zero-based value. When the the value is 0 to 31 inclusive, then the {index} is indicating a single column to be set. If the {index} value is a minus one (-1) value, then the method changes the flag setting for all of current columns in a LISTVIEW object. ............................................................... . SetItemTextAll Method . The SetItemTextAll method is used to set all of the subitems for a LISTVIEW item using a single data string that is formatted with delimited data fields to be stored. [label] {object}.SetItemTextAll [GIVING {return}]: USING [*Index=]{index}: [*Text=]{text}: [[*Delimiter=]{delim}: [[*Options=]{options} Where: {label} is an optional Program Execution Label. {object} is a required LISTVIEW object to be accessed. {return} is optional and it is a Numeric Variable that gets the return value for the success or failure for the method. {index} is a required Numeric Variable or decimal number that specifies the row to be set. {text} is a required Character String Variable or literal that contains a data string formatted as fields separated by a character delimiter. {delim} is an optional Character String Variable or literal that specifies the delimiter character. {options} is an optional Numeric Variable or decimal number that gives a bit mask value to control certain operations when storing the data into a LISTVIEW. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS is always cleared. 2. The ZERO flag is set to a TRUE state for a zero value. Otherwise, it is cleared. 3. The OVER flag is set to a TRUE state when the {return} variable is too small for the returned value size. 4. When the {delim} is not specified, then the default delimiter is a comma character. 5. When the {options} bit mask value is specified, then the bit definitions are defined as follows: $LV_SETITEM_QUOTED 0x0001 This control bit for the {options} parameter causes the field data to process formatted data that has double quote characters around field data strings. $LV_SETITEM_NOZEROWIDTH 0x0010 This control bit for the {options} parameter causes any LISTVIEW column with a zero width to be skipped when the {text} data is being stored. The corresponding field in the {text} data is not skipped. 6. The {index} parameter value is zero based index value that specifies the LISTVIEW row item to be changed. The {index} can also be a minus one (-1) value. In this case, the {text} data is used to change the LISTVIEW column header data. 7. The {return} for this method always returns a zero value. - Modified the LISTVIEW object to support the resize event. When this event is registered for a LISTVIEW object, the event is generated when the width of a column for a LISTVIEW object is changed by a user drag action. Note: 1. When the LISTVIEW resize event is generated, then the event modifier is given as bit mask value as follows: 0x0001 - The resize event was generated because of a user drag action for a LISTVIEW column. In this case, the event result value is a zero based value that identifies the column number that the resize event occurred for. 2. The LISTVIEW resize event only occurs after the user has finished the size drag action. - Modified the SaveCsvFile method for a LISTVIEW object to include two new controls for the 'Options' parameter. The two new control bits are defined as follows: $LV_CSVWR_OUTPUTHEADER 0x0008 This control bit for the OPTIONS parameter causes the LISTVIEW column names to be output as the first CSV record. $LV_CSVWR_NOZEROWIDTH 0x0010 This control bit for the OPTIONS parameter prevents the data for an column with a zero width from being output to the CSV file. - Modified the LoadCsvFile method for a LISTVIEW object to include new controls for the 'Options' parameter. The new control bit definitions are defined as follows: $LV_CSVRD_INPUTHEADER 0x0008 This control bil for the OPTIONS parameter causes the first record in a csv file to be loaded into the LISTVIEW column headers. $LV_CSVRD_NOZEROWIDTH 0x0010 This control bit for the OPTIONS parameter causes any LISTVIEW column with a zero width to be skipped when a CSV record is loaded. The corresponding CSV field in the CSV record is not skipped. - Modified the GetItemTextAll method for a LISTVIEW object to include an optional parameter named 'Options'. The 'Options' bit definitions are defined as follows: $LV_GETITEM_QUOTED 0x0001 This control bit for the OPTIONS parameter causes the column data to be returned in quoted format. $LV_GETITEM_NOZEROWIDTH 0x0010 This control bit for the OPTIONS parameter causes any LISTVIEW column with a zero width to be skipped when returning the column data. Note: 1. The *INDEX={index} parameter value has been changed to accept a '-1' value. When a '-1' value is specified for the {index} value, then column data for the LISTVIEW header is retrieved from the LISTVIEW object. - Corrected a problem where the RUNNAME property was not being processed properly for the STATUSBAR and TOOLBAR objects. - Corrected a problem where an O162 error was occurring when a CREATE of a SUBMENU was executed with a FLOATMENU specified as the parent menu object. - Corrected a problem where the HEIGHT/WIDTH property values for a PANEL were invalid when the PANEL had a border. The property values in this case were too small by 2 times the width of the border used for the panel. - Corrected a intermittent GPF error that could occur when the following conditions existed for an application: 1. The current focus exists for a GUI object that is on a PANEL object. 2. The WINDOW that contains the PANEL object is overlaid and is not the current OS active window. 3. Under some PLB application logic sequencing, the PANEL identified in item (1.) above is destroyed. 4. After some delayed period of time the WINDOW identified in item (2.) above becomes the current active window. 5. The GPF might occur in item (4.) because the GUI object that contained the focus for the WINDOW does not exist any more. 6. The corrective action is to make sure that the current WINDOW focus object setting is cleared if that object is destroyed. - Corrected a problem where the SCROLLBAR property for a COMBOBOX object was not working when it was changed using SETPROP. - Corrected a problem where a parameterized CALL using a GUI object was not generating a F05 error when the corresponding ROUTINE/LROUTINE object variable was a GUI object type. By default any GUI object in a CALL USING variable list MUST have the same object type as the corresponding GUI object in a ROUTINE/LROUTINE variable list. An exception is that the PANEL, MAINWINDOW, and WINDOW objects can be passed in CALL USING variable list to a ROUTINE/LROUTINE object variable that is a WINDOW pointer without causing a F05 error. ------------------------------------------------------------------------------- PLB(UNIX)- Corrected a problem where the COMSTAT instruction for a socket connection could report an error status when a timeout actually had occurred. - Corrected a problem where the COMSTAT instruction could give an invalid status for a COMFILE opened for listening. ------------------------------------------------------------------------------- PLBCMP - Modified the compiler to support the new *TRACEAPPEND option for the MAILSEND instruction. - Modified the compiler to give a compilation error when a WINDOW or MAINWINDOW object is used in a DRAGITEM, GETITEM, or SETITEM instruction. This change prevents an O105 error that always occurs in the runtime for these instruction/object combinations. - Modified the MACRO processing to allow local variable substitution strings to reference local variables that are declared at the same include level as the macro execution level. By default, any local variable substitution reference resolves to the same include level where the macro is defined. This default implementation allows local variables '#label' to be resolve to local variables in an INCLUDE file where a MACRO is defined. However, there are some cases where a user wants to reference local variables that are declared at the save INCLUDE level where the macro verb is executed. Not where the macro verb is defined. In this case, a special syntax format for a local variable '##label' can be used as a substitution string when a macro is executed. This cases the compiler to resolve the local label reference for '#label' at the same INCLUDE level where the macro is executed. Example: #MainVar INIT "MainLine" . INCLUDE Macros.Inc ... . The '#MainVar' in the MyMacro macro as follows compiles . and resolves the '#MainVar' to a local variable that . is found in the Macros.Inc file where it is defined. . MyMacro #MainVar ;Resolves to Macros.Inc ... . The '##MainVar' in the MyMacro macro as follows compiles . and resolves the '#MainVar' to the local variable that . is declared at the INCLUDE source level where the . the MyMacro is executed. . MyMacro ##MainVar ;Resolves to current level - Modified the compiler error to read as follows when a source line in a program is larger than 4096 bytes. "Program source line is too long/truncated at line: nnn.xx" Where: nnn - This is the source line number that is too long. xx - This is the INCLUDE identifier that contains the source line. - Corrected a problem where the compiler generated invalid PLC code when a FLUSHEOF instruction was used in a PLB program. This problem was caused by a compiler change in the 9.1 release. The runtime symptoms of this problem was that a C17, U51, or a GPF error could occur when a PLB program was executed that included a FLUSHEOF. - Corrected a problem where a PROFILE instruction that was included within the scope of a FUNCTION to FUNCTIONEND would cause invalid program code. The invalid program code in this case would cause indeterminate program execution that might result in a GPF error. - Corrected a problem where the compiler was giving an erroneous undefined error when a FUNCTION contained a single CALL to a forward referenced label that had a size of 11 bytes. This error was very indeterminate and would only occur when the forward reference was generated at a specific range of program addresses in the execution instructions of a program. - Corrected a problem where the compiler would terminate prematurely with a format error when the following code was compiled. Example: REC RECORD A DIM 1 RECORDEND . IF( REC(1),A ) ;Format error! ENDIF - Corrected a problem where a TABID property was not being allowed for a STATUSBAR object. - Corrected a problem where a RESOURCE property was not being allowed in any CREATE instructions. - Corrected a problem where a CLIPCTRL property was not being allowed for a PANEL object. - Corrected a problem where the MENUORDER and MERGETYPE properties were not being allowed for a CREATE of a MENU object. ------------------------------------------------------------------------------- PLBDBUG - Corrected compression problem for the interface to the GUI debugger. ------------------------------------------------------------------------------- PLBDSIGN - Corrected a problem where a PANEL HEIGHT and WIDTH property would shrink by 2 times the border width when a PLF form was saved and then loaded. - Corrected a problem where the PANEL objects that were hidden was being included in a drag selection group. With this change the drag selection rectangle now only includes PANEL objects that are showing on the form. - Corrected a problem where a right click on the form at a location where a PANEL object has been hidden was selecting the properties window for the PANEL object. With this change, the right click now only selects the property window for a PANEL object that is visible on the WINDOW. - Corrected a problem where a PLF form resource could be deleted when the resource was being used for a BUTTON object. - Corrected a problem where a FIND operation for a string in the source code could give invalid results when there was more than 65535 total bytes of source code for all of the events in a PLF form. ------------------------------------------------------------------------------- ODSBAC32.DLL- Modified the field definition processing to automatically change a CHAR field to be a LONGCHAR type when the field width is larger than 254 characters. - Corrected a problem where a temporary index was not being used when a data file contained fixed length records. - Corrected a problem where the ODSBAC32 DLL was using an authorization version of 9.0 instead of 9.1. ------------------------------------------------------------------------------- SUNIDE - Corrected a problem where the last line of the output window would be preserved when the contents were reset for a new build. - Added a Save All prompt when multiple files were modified when a build it being done. - Fixed up edit menu handling to disable select all when no files were open. - Added Edit menu option to strip trailing spaces from source. - Fixed doubleclick selection on record members to show the definition for the correct record member when multiple record definitions exists with members of the same name. - Corrected a problem where errors were not loaded from a source listing when the program contains a RECORD or a RECORD LIKE variable definition. This bug was caused by changes in the 9.1 release. - Fixed up list file searching and corrected a bug in list file type detection where a file without source or cross reference would be reported as a source listing. - Added Functionality to identify when mulitple labels exist with the same name when a Goto Label is selected. - Fixed find in files dialog to set the search button as the default for the enter key. - Modified IDE to always load editor and debugger modules from the PLB_SYSTEM folder. - Added Buttons in the IDE Options Misc tab to clear recent projects and recent files menus. -------------------------------------------------------------------------------