Date: 10-01-2019 Subject: RELEASE 10.2 Runtime Files These release notes pertain to the following programs or files: EMBEDINI 10.2 01 Oct 2019 10.2.0.500 EMBEDINI64 10.2 01 Oct 2019 10.2.0.500 HEXDUMP 10.2 01 Oct 2019 10.2.0.500 HEXDUMP64 10.2 01 Oct 2019 10.2.0.500 MAKECLI 10.2 01 Oct 2019 10.2.0.500 MAKECON 10.2 01 Oct 2019 10.2.0.500 MAKECONET 10.2 01 Oct 2019 10.2.0.500 MAKEDEF 10.2 01 Oct 2019 10.2.0.500 MAKEMFD 10.2 01 Oct 2019 10.2.0.500 MANAGECE 10.2 01 Oct 2019 10.2.0.500 OBJMATCH 10.2 01 Oct 2019 10.2.0.500 OBJMATCH64 10.2 01 Oct 2019 10.2.0.500 ODBCINST64 10.2 01 Oct 2019 10.2.0.500 PLBCGI 10.2 01 Oct 2019 10.2.0.500 PLBCLICON 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBCLIENT 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBCLINET 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBCON 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBCONET 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBNET 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBSERVE 10.2 01 Oct 2019 10.2.0.500 (Processed Server) PLBSERVET 10.2 01 Oct 2019 10.2.0.500 (Threaded Server) PLBWEBSRV 10.2 01 Oct 2019 10.2.0.500 (Processed Server) PLBWEBSRVT 10.2 01 Oct 2019 10.2.0.500 (Threaded Server) PLBWIN 10.2 01 Oct 2019 10.2.0.500 (ComCtl 6) PLBCLICON5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBCLIENT5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBCLINET5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBCON5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBCONET5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBNET5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) PLBWIN5 10.2 01 Oct 2019 10.2.0.500 (ComCtl 5) SUNAAMDX 10.2 01 Oct 2019 10.2.0.500 SUNAAMDX64 10.2 01 Oct 2019 10.2.0.500 SETGUID 10.2 01 Oct 2019 10.2.0.500 SUNINDEX 10.2 01 Oct 2019 10.2.0.500 SUNINDEX64 10.2 01 Oct 2019 10.2.0.500 SUNLS 10.2 01 Oct 2019 10.2.0.500 SUNMOD 10.2 01 Oct 2019 10.2.0.500 SUNMOD64 10.2 01 Oct 2019 10.2.0.500 SUNSORT 10.2 01 Oct 2019 10.2.0.500 SUNSORT64 10.2 01 Oct 2019 10.2.0.500 WININST 10.2 01 Oct 2019 10.2.0.500 ODSBAC32.DLL 10.2 01 Oct 2019 ODSBAC64.DLL 10.2 01 Oct 2019 PLBNETSUP.DLL 10.2 01 Oct 2019 10.2.0.500 Required for PLBNET PLBWSEC.DLL 10.2 01 Oct 2019 10.2.0.500 Req'd PLBWIN/PLBNET SA_DLL32.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWADO.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWADO25.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWADO28.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWMSQL.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWODBC.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWSRV.DLL 10.2 01 Oct 2019 10.2.0.500 SUNWSRV64.DLL 10.2 01 Oct 2019 10.2.0.500 Required for Sundm64 PLBCLI.ZIP 10.2 01 Oct 2019 10.2.0.600 (ComCtl 6) PLBRUN.ZIP 10.2 01 Oct 2019 10.2.0.600 (ComCtl 6) DBGIFACE 10.2 01 Oct 2019 PLBCMP 10.2 01 Oct 2019 PLBDBUG 10.2 01 Oct 2019 ADMEQU.INC 10.2 01 Oct 2019 PLBEQU.INC 10.2 01 Oct 2019 PLBMETH.INC 10.2 01 Oct 2019 *============================================================================== Notes for some NEW Items: - NCHAR and NINIT data types have been added to the PL/B Language which support Nation Character types using UTF-8 encoding. - New FTP object data variable type has been added to the PL/B Language. The FTP object implementation contains a full set of 'methods' to provide a feature rich set of operations allowing access to FTP servers. *============================================================================== Notes for DOCUMENTATION: - In the PL/B Language Reference manual under the 'PREPARE (XFILE)' section, modify the Note (5.) to include the following MODE bitmask value: XFILE_XMLOUTFMTNOEOR4BLKS - 0x10000 When this bit is turned on, the XFILE XML output does not generate a CR\LF eor after the for an XML element when all of the XML element data are blank characters. - In the PL/B Language Reference manual under the 'OPEN (XFILE)' section, modify the Note (7.) to include the following MODE bitmask value: XFILE_XMLOUTFMTNOEOR4BLKS - 0x10000 When this bit is turned on, the XFILE XML output does not generate a CR\LF eor after the for an XML element when all of the XML element data is blank characters. - In the PL/B Runtime Reference manual under the 'PLB_CHKDRN Keyword' as follows to correct 'IFILE2' label positioning: Example: From: IFILE1 IFILE IFILE2 IFILE To: IFILE1 IFILE IFILE2 IFILE - In the PL/B Language Reference manual, add a new method named 'ContextMenu' to the HTMLCONTROL object described as follows: *------------------------------------------------------------------ The ContextMenu method controls whether a 'right-click' action on a HTMLCONTROL allows a Windows OS context menu to appear or not. By default the HTMLCONTROL 'right-click' action does not allow the context menu to appear. This method can be used to turn on the 'right-click' context menu. This method uses the following format: [label] {object}.ContextMenu [GIVING {return}]: USING [*Flags=]{flags} Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been previously created. return Optional. A Numeric Variable that returns the pass\failure values for the execution of the method. flags Required. A Numeric Variable or decimal number that specifies a bit mask value that controls the behaviors of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set when the {return} value is zero which indicates that the method execution was successful. The ZERO flag is cleared if the {return} value is not zero which indicates that the method execution failed. 2. The OVER flag is set to TRUE if the {return} variable size is too small and the return value must be truncated to be stored into the variable. 3. The {flags} value is a bit-mask value where the bit values are described as follows: Flags Value Description 0x00000000 - The bit-mask value of zero which causes default behavior to be used. In this case, the 'right-click' action on a HTMLCONTROL does not allow the Windows OS context menu to appear. 0x00000001 - When this bit-mask value is on, this causes the 'rigth-click' action on a HTMLCONTROL to show the Windows OS context menu. - In the PL/B Language Reference manual in the '*TEMPLATE (PRTPAGE)' section, modify the descriptions as follows: Modify the 'Fields:' to include the following 'G' command: G //Optional parameter This command causes the template pdf pages and resources to be generically extracted without knowing the PDF object syntax structures. Modify Note (3.) as follows: 3. The default behavior when using a 3rd party PDF document as a template is that it must meet the criteria as outlined for a Sunbelt PDF template document. It might work with the *TEMPLATE control if basic PDF objects and formats are being used in the 3rd party PDF template. However, if the 'G' command is specified in the *TEMPLATE command {string}, the 3rd party PDF template is processed to extract the PDF objects and resources without knowing the PDF object syntax structures. The 'G' command can be used to improve the ability to use more complex 3rd party PDF templates. Add the following to the end of the Examples: .... . This next PRTPAGE causes a page to be removed from a template . using a generic extraction technique where PDF object commands . and formats are not known. . PRTPAGE PF;*TEMPLATE="F=secondary.pdf,P=4,G" . - Add the following FTP Object descriptions to the PL/B Language Reference manual. Add the FTP Object description as follows: ................................................................... FTP The FTP ( File Transfer Protocol ) object allows a PL/B program to connect as a ftp client to a ftp server and execute ftp commands to manage and transfer files. The FTP object has a full set of ftp commands implemented as PL/B methods to provide feature rich development capabilities. The following statement formats: [label] FTP [%|^][arraysize] Where: label Optional. A Program Execution Label. % Optional. Denotes the item as being GLOBAL. arraysize Optional. An integer decimal constant, CONST variable, or EQUATEd value indicating the number of array items. Flags Affected: NONE Note the following: 1. The FTP object is a runtime instance component that can be used directly without having to be created. There are no properties, events, or instructions for a FTP object. All interaction with the FTP object is through methods. 2. The FTP object exists as an internal PL/B object and it is referenced by a label for a FTP object declared in a PL/B program. Even though there may be multiple/different program references declared in a PL/B program, all of the PL/B program references access only one internal FTP object for a runtime instance. 3. The FTP object is implemented to include a full set of ftp commands that allow bi-directional file transfers and other ftp client-server management commands. All of the ftp commands are implemented by methods that are named as follows: Ascii, Binary, Cd, Close, Connect, Debug, Delete, Dir, DirItem, Get, MkDir, Put, Pwd, Rename, RmDir, Size, ModDate, LastResponse, Site, Systype Add the following method descriptions for the FTP Object: .................................................................... . Ascii Method for FTP Object . The Ascii method is used to set the ASCII file transfer mode. This transmits seven bits per character This method uses the following format: [label] {object}.Ascii GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set to be TRUE for this method. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. .................................................................... . Binary Method for FTP Object . The Binary method is used to set the binary file transfer mode. The binary mode transmits all eight bits per byte and thus provides less chance of a transmission error and must be used to transmit files other than ASCII files. This is the default file transfer mode used for the FTP object. This method uses the following format: [label] {object}.Binary GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set to be TRUE for this method. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. .................................................................... . Cd Method for FTP Object . The Cd method is used to change the current working directory for the FTP server session on the remote computer. This method uses the following format: [label] {object}.Cd GIVING {return}: USING [*PATH=]{path} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {path} is a Character String Variable or string Required literal that specifies the directory/path used to set the current working directory for the FTP server. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . Close Method for FTP Object . The Close method is used to close/disconnect the current socket connection to a FTP server. This method uses the following format: [label] {object}.Close GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set to be TRUE for this method. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. .................................................................... . Connect Method for FTP Object . The Connect method is used to make a socket connect and login to a FTP server. This method uses the following format: [label] {object}.Connect GIVING {return}: USING [*HOST=]{host}: [*USER=]{user}: [*PASSWORD=]{password}[: [*FLAGS=]{flags}] Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {host} is a Character String Variable or string Required literal that specifies the FTP URL or a TCP/IP:port used to make a socket connection to the FTP server running at the host. The default port is port 21. {user} is a Character String Variable or string Required literal that specifies the user name used to login to the FTP server. {password} is a Character String Variable or string Required literal that specifies the password used to login to the FTP server. {flags} is a Numeric Variable or decimal number that Optional specifies a bit mask value that can be used to control the behaviors of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. The {host} string can be formatted as follows: ftp://host:port OR tcp:port 4. The {flags} value defines a set of bit-mask values that control the behavior of this function. They are described as follows: Bit-Mask Values Description 0x00000000 The default behavior is to create a normal socket connection to a FTP server. 0x00000001 If this bit is turned on, an explicit SSL socket connection to a FTP server is made. 0x00000002 This bit ONLY takes affect when the 0x01 bit is turned on. If both the 0x01 and 0x02 bits are turned on, an explicit SSL socket connection is made with SSL reuse invoked to maximize the security and performance. 5. The {return} values are defined as follows: Return Values Descriptions 0 Method executed successfully with no errors. 3 Unable to connect to FTP server. 4 Unable to login to FTP server using the USER and PASSWORD settings. 5 SSL connection failure. .................................................................... . Debug Method for FTP Object . The Debug method is used to disable/enable FTP client logging as FTP commands are being executed. The FTP client logging can be turned on before a FTP connection is established. This method uses the following format: [label] {object}.Debug GIVING {return}: USING [[*LOGFILE=]{logfile}][: [*LEVEL=]{level}][: [*FLAGS=]{flags}] Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {logfile} is a Character String Variable or string Optional literal that specifies the local file name to be used for logging FTP command operations. {level} is a Numeric Variable or decimal number that Optional specifies how much debug data to log. {flags} is a Numeric Variable or decimal number that Optional specifies a bit mask value that can be used to control the behaviors of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. The {level} value can be set to control how much data is to be logged. The logging levels are described as follows: Log Level Description 0 Default is to log only errors. 1 Log only errors. 2 Log errors and actions. 3 Log all available data. 4. The {flags} value defines a set of bit-mask values that control the behavior of this function. They are described as follows: Bit-Mask Values Description 0x00000000 Open/Create log file to overwrite any existing log file data. 0x00000001 Open log file to append data to the end of an existing log file. 0x00000002 Flush current opened log file. 0x00000004 Close current log file. .................................................................... . Delete Method for FTP Object . The Delete method is used to delete the remote file that exists on the FTP server. This method uses the following format: [label] {object}.Delete GIVING {return}: USING [*REMOTEFILE=]{remotefile} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {remotefile} is a Character String Variable or string Required literal that specifies the file name that is to be deleted on the FTP server. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . Dir Method for FTP Object . The Dir method is used to retrieve a list of files names from a directory or directory information about a file(s) that is located on the system where the FTP server is executing. This method uses the following format: [label] {object}.Dir GIVING {return}: USING [*REMOTEFILE=]{remotefile}[: [*FLAGS=]{flags}] Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the number of items in the directory file list found by this method. {remotefile} is a Character String Variable or string Required literal that specifies the remote '[path+]file' that is to be used in the 'Dir' operation. {flags} is a Numeric Variable or decimal number that Optional specifies a bit mask value that can be used to control the behaviors of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that zero directory file list items have been found by this 'Dir' method operation. Otherwise, the ZERO flag is set to the non-zero value indicating the number of items in the directory file name. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the 'Dir' item count without being truncated. 3. Debug log entries may be generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. The {remotefile} name can include '*' and '?' characters as wildcard character only if the FTP server being accessed supports wildcards. 5. The {flags} value is bit-mask that control the operations of the FTP 'Dir' method. The bit-mask values are described as follows: Flags Bit Values Description 0x00000000 By default when there are no bits set, the 'Dir' returns information of a file or directory, else information of the current directory. 0x00000001 When this bit is set, the 'Dir' method returns a list of file names in a specified remote directory. .................................................................... . DirItem Method for FTP Object . The DirItem method is used to retrieve the next item from the last file list retrieved using the 'Dir' method. This method uses the following format: [label] {object}.DirItem GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Character String Variable that returns the data for the next item in the last list of files retrieved using the 'Dir' method. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set to be TRUE if the {return} variable is too small and the data must be truncated. 2. The OVER flag is set to be FALSE if the 'DirItem' returns data. The OVER flag is set to be TRUE if there is no more 'DirItem' data available. 3. The ZERO flags are always set to the FALSE state. 4. The {return} variable is set to be a NULL variable if there was an error detected. .................................................................... . Get Method for FTP Object . The Get method is used to retrieve a remote file from the system where the FTP server is executing to a local file on the system where the PL/B runtime is executing. This method uses the following format: [label] {object}.Get GIVING {return}: USING [*REMOTEFILE=]{remotefile}: [*LOCALFILE=]{localfile} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {remotefile} is a Character String Variable or string Required literal that specifies the remote file name that is to be retrieved from the system where the FTP server is executing. {localfile} is a Character String Variable or string Required literal that specifies the local file name where the remote file data is stored on the system where the PL/B runtime is executing. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . MkDir Method for FTP Object . The MkDir method is used to create a directory that is located on the system where the FTP server is executing. This method uses the following format: [label] {object}.MkDir GIVING {return}: USING [*PATH=]{path} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {path} is a Character String Variable or string Required literal that specifies the directory/path that is to be created on the system where the FTP server is executing. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . Put Method for FTP Object . The Put method is used to send a local file to a remote file on the system where the FTP server is executing. This method uses the following format: [label] {object}.Put GIVING {return}: USING [*LOCALFILE=]{localfile}: [*REMOTEFILE=]{remotefile} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {localfile} is a Character String Variable or string Required literal that specifies the local file name to be sent to the FTP server. {remotefile} is a Character String Variable or string Optional literal that specifies the remote file name receiving the data on the system where the FTP server is executing. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . Pwd Method for FTP Object . The Pwd method is used to retrieve the current working directory of the host of the FTP server. This method uses the following format: [label] {object}.Pwd GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Character String Variable that returns the current working directory. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set to be TRUE if the {return} variable is too small and the data must be truncated. 2. The OVER and ZERO flags are always set to the FALSE state. 3. The {return} variable is set to be a NULL variable if there was an error detected. .................................................................... . Rename Method for FTP Object . The Rename method is used to rename a file or directory that is located on the system where the FTP server is executing. This method uses the following format: [label] {object}.Rename GIVING {return}: USING [*OLDNAME=]{oldname}: [*NEWNAME=]{newname} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {oldname} is a Character String Variable or string Required literal that specifies the old file or path name that exists on the FTP server to be renamed. {newname} is a Character String Variable or string Required literal that specifies the new file or path name to be changed to in the rename operation. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . RmDir Method for FTP Object . The RmDir method is used to remove a directory that is located on the system where the FTP server is executing. This method uses the following format: [label] {object}.RmDir GIVING {return}: USING [*PATH=]{path} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the pass or fail value for the operation of this method. {path} is a Character String Variable or string Required literal that specifies the directory/path that exists on the FTP server to be removed. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero which indicates that the method executed successfully. Otherwise, the ZERO flag is set to be FALSE which indicates the method failed. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the pass/fail value without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. 4. If this method fails, the {return} variable contains a value of '2'. .................................................................... . Size Method for FTP Object . The Size method is used to retrieve the file size of a specified file on the FTP server. This method uses the following format: [label] {object}.Size GIVING {return}: USING [*REMOTEFILE=]{remotefile} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns the size of a specified file that exists on the FTP server. {remotefile} is a Character String Variable or string Required literal that specifies the file name that exists on the FTP server. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to be TRUE if the {return} value is zero. Otherwise, the ZERO flag is set to be FALSE. 2. The OVER flag is set to be TRUE if the {return} Numeric variable is too small to receive the file size without being truncated. 3. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. .................................................................... . ModDate Method for FTP Object . The ModDate method is used to retrieve the last-modified time of a specified file on the FTP server. This method uses the following format: [label] {object}.ModDate GIVING {return}: USING [*REMOTEFILE=]{remotefile} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Character String Variable that returns the last-modified time of a specified file. {remotefile} is a Character String Variable or string Required literal that specifies the file name that exists on the FTP server. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set to be TRUE if the {return} variable is too small and the data must be truncated. 2. The OVER and ZERO flags are always set to the FALSE state. 3. The {return} variable is set to be a NULL variable if there was an error detected. 4. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. .................................................................... . LastResponse Method for FTP Object . The LastResponse method is used to retrieve the last response from the FTP server. This method uses the following format: [label] {object}.LastResponse GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Character String Variable that returns the last response from the FTP server. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set to be TRUE if the {return} variable is too small and the data must be truncated. 2. The OVER and ZERO flags are always set to the FALSE state. 3. The {return} variable is set to be a NULL variable if there was an error detected. .................................................................... . Site Method for FTP Object . The Site method sends a site specific command to the remote server connected to the FTP object. This method uses the following format: [label] {object}.Site GIVING {return} USING [*CMD=]{cmd} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Numeric Variable that returns a value for the method pass or failure. {cmd } is a Character String Variable or string Required literal that specifies the specific command data. Flags Affected: EOS, OVER, ZERO Note the following: 1. The ZERO flag is set to a TRUE state if the returned value is zero indicating an error has occurred. Otherwise, the ZERO flag is set to a FALSE state indicating that the method executed successfully. 2. The OVER flag is set to a TRUE state if the {return} variable is too small to receive the numeric value. Otherwise, this flag is set to a FALSE state. 3. The EOS flag is always set to the FALSE state. 3. The {return} variable is set to be a NULL variable if there was an error detected. 4. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. .................................................................... . SysType Method for FTP Object . The SysType method is used to retrieve the remote system type for the current FTP connection. This method uses the following format: [label] {object}.SysType GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a FTP object that has been previously Required declared. {return} is a Character String Variable that returns the system type as received from the remote system for the current FTP connection. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set to be TRUE if the {return} variable is too small and the data must be truncated. 2. The OVER and ZERO flags are always set to the FALSE state. 3. The {return} variable is set to be a NULL variable if there was an error detected. 4. Debug log entries are generated if the debug logging is enabled. See FTP 'Debug' Method description to enable debug logging. - In the PL/B Language reference manual in the 'GETFILE' section, change the Note (16.) table to include a new value of '3' described as follows: Value The file variable is ... 3 the socket for the file variable causes a socket error. The SUNDM data manager connection should be re-established by re-opening the file(s). - Add the following National Character support overview to the PL/B Language Reference manual: PL/B NCHAR Support Overview The PL/B Language provides National Character support using the UTF-8 character encoding. By using UTF-8 character encoding, the PL/B Language preserves the basic PL/B instruction behaviors. This support minimizes the impact on PL/B program development. The UTF-8 character encoding support provides advantages which work best for the PL/B Language as follows: 1. It can represent all 1,114,112 Unicode characters. 2. Since UTF-8 is fully compatible with 7-bit ASCII, PL/B code that uses strings on a byte-by-byte basis still works. 3. Characters will never require more than four bytes. 4. String sort order is preserved. In other words, sorting UTF-8 strings per-byte yields the same order as sorting them per-character by logical Unicode value. 5. There are no byte-order/endianness issues, since UTF-8 data is a byte stream. The National Character support for PL/B has added three data constructs of NCHAR, NINIT, and N"literal". These data constructs have the same basic language format and behaviors as implemented for DIM, INIT, and "literal' that is expected in the PL/B programs. The following table gives an overview comparison of the normal language constructs versus the National Character constructions: PL/B Data Construct Comparisons Normal National Description DIM NCHAR The NCHAR has the same structure as the DIM when it is declared in a PL/B program. For the same program declared character size of a DIM and NCHAR, the NCHAR physical byte size is 4 times larger than the DIM byte size. Also, the NCHAR has a state flag indicating that it can ONLY be populated with valid UTF-8 characters. INIT NINIT The NINIT has the same structure as the INIT when it is declared in a PL/B program. However, the physical byte size of the NINIT is 4 times larger then the INIT byte size when the same number of UTF-8 characters are in the literal declaration. Also, the NINIT has a state flag indicating that it can ONLY be populated with valid UTF-8 characters. "lit" N"lit" The N"lit" has the same structure as the "lit" when it is used in a PL/B program. However, the N"lit" literal data can only contains valid UTF-8 encoded characters. Otherwise, the PL/B compiler gives an appropriate compilation error. The N"lit" physical byte size is the exact number of bytes required to encode the UTF-8 characters. Note: 1. The NCHAR, NINIT, and N"lit" data constructs can ONLY contain a data string that is a properly formatted UTF-8 encode character data stream. 2. The 'F14' format error is generated by the PL/B runtimes if a PL/B program performs an operation that attempts to store an invalid UTF-8 data string into an NCHAR or NINIT data variable. The PL/B National Character support using NCHAR, NINIT, and N"literal" data constructs are not supported or are restricted in the following PL/B instructions: NOT SUPPORTED: AND COMPRESS CONVERTUTF DECODE64 DECOMPRESS DECRYPT ENCODE64 ENCRYPT NOT OR PARSEFNAME TEST XOR RESTRICED: HASH - NCHAR can not be used for destination operand. MOVE - MOVE from integer to NCHAR is not supported. RESET - No NCHAR/N"lit" 2nd operand. SETLPTR - No NCHAR/N"lit" 2nd operand. - In the PL/B Language Reference manual under the Contents, add the NCHAR data variable described as follows: NCHAR The NCHAR instruction defines a National character string variable or an array of National character string variables. If defining an array, any number of the array items may be initialized only with valid UTF-8 data. The instruction uses one of the following formats: (1) [label] NCHAR [%][*]{size} (2) [label] NCHAR [%][*]{size}({arraysize}) (3) [label] NCHAR [%][*]{size}({arraysize}),("????"),...,("????") (4) [label] NCHAR [%][*]{size}({arraysize},...,{arraysize}) (5) [label] NCHAR ^ (6) [label] NCHAR ^{size}[({arraysize})] (7) [label] NCHAR ^,{variable} (8) [label] NCHAR ^ ({arraysize}[,({target}),...,({target})]) (9) [label] NCHAR ^ ({arraysize}[{mmm}]) (10) [label] NCHAR %% (11) [label] NCHAR %%({ arraysize },...,{ arraysize }) (12) [label] NCHAR [*][%]{size}({arraysize}), INITIAL "????", ... (13) [label] NCHAR ({arraysize})@ (14) [label] NCHAR @() (15) [label] NCHAR @(,) (16) [label] NCHAR @(,,) Where: label Optional. A Data Definition Label. % Optional. Denotes the item as being GLOBAL. %% Optional. Denotes the item as GLOBAL but does not initialize it in any way. * Optional. Denotes the item or file as being COMMON. size Required. A decimal constant or EQUATEd value indicating the variable size as the number of characters. arraysize Optional. An Integer decimal constant, CONST variable or equated value indicating the number of array items. ???? Optional. The initialization for the appropriate array, based on the order given. target Optional. A previously declared DIM variable that initializes the array. ^ Optional. Denotes the item as being a POINTER. variable Required. The name of a previously defined variable of the same type. mmm Optional. A array element size. Flags Affected: NONE Note the following: 1. The declared size of the NCHAR identifies UTF-8 characters. A UTF-8 character encoded character can have a physical size up to 4 bytes. Therefore, each NCHAR character requires a maximum of 4 bytes and the NCHAR variable physical size in bytes is 4 times the number of UTF-8 characters declared. The Physical Length is set to the declared size and both the Length Pointer and Form Pointer are set to zero indicating a Null String. If the NCHAR is an initialized array, the Form Pointer is set to one and the Length Pointer is set to the the last UTF-8 character of the initialized contents (that may be less than the Physical Length) for each appropriate array item. 2. NCHAR variables are blank filled unless an initialized array. 3. NCHAR variables can have a declared size up to 8MB. When a NCHAR size larger than 16383 is specified, the NCHAR data construct is implemented as an auto load NCHAR variable. This helps to keep the object code file size as small as possible. See the compiler option to change the default auto load NCHAR variable size. If a user application requires a NCHAR data variable with a size larger than 8MB, a NCHAR pointer can be used and an DMAKE creates a NCHAR with a size up to 500MB (536870911 value). This size is limited by the OS memory allowed for the PLB program space. The runtime 'm' or 'MV' command line options increases the PLB program memory size. Note that: . If WRITE operations are performed using very large NCHAR variables, FILE variables with small buffer sizes should be avoided because it can result in a lengthy IO operation. . If a WRITE operation is performed using a very large NCHAR variable, opening a FILE variable in a SHARENF or EXCLUSIVE mode can give the best performance. 4. NCHAR variables can ONLY contain valid UTF-8 encoded characters. An F14 format error occurs if invalid UTF-8 characters are being moved/stored in a NCHAR variable. 5. The processing for the auto load NCHAR pointers only allocates a NCHAR pointer when the variable is first used and not allocated when the PLC program is loaded. Therefore, there is no wasted memory allocations used for auto load NCHAR pointers that are never used in a program. Example: In this example, the 'B' pointer is not used. Therefore, there is never any memory allocated for the 1000 character variable. Also, the memory allocation for the 'A' variable only occurs when the variable first used in the program. A NCHAR ^100 ;Auto load NCHAR pointer B NCHAR ^1000 ;Auto Load NCHAR pointer C NINIT "Test" . MOVE C,A ;'A' NCHAR is allocated when 1st used. . 6. The processing for the static auto load NCHAR variables only allocates memory when the variable is first used and not when the PLC program is loaded. Thus, there is no wasted memory allocations used for auto load NCHAR variables that are never used. Also, note that the PLBCMP compiler gives a complication error when a static auto load NCHAR variable is encountered in an instruction that uses a pointer as a destination. Example: Also, the memory allocation for the 'B' variable only occurs when the variable first used in the program. B NCHAR 1000000 ;Auto Load NCHAR variable C NINIT "Test" . MOVE C,B ;'B' NCHAR is allocated when 1st used. . 7. UTF-8 string literals that initialize a NCHAR array must be enclosed in quotes and surrounded by parentheses, while valid Ctrl codes need only be surrounded by parentheses. Single byte Ctrl codes can only have a value from 0 to 127 to be a valid UTF-8 character. 8. Multi-dimension arrays (format 4) are supported up to a maximum of fourteen dimensions (three in ANSI mode). 9. The ^ denotes a Pointer Variable. 10. If the % form is used, the data item is placed in the Global Data Area. The variable is then available to other programs that also declared it with the percent form. Global Data Items are available with PLBCMP only. 11. If the %% form is used, the data label is placed in the Global Data Area but no initialization takes place if it has not already been defined in the Global Data Area. If an array data label is placed in the Global Data Area, when initialized, it must have the same number of elements in the array. Global Data Items are available with PLBCMP only. 12, If the * form is used, the data item is in common with other programs and all of the rules of COMMON must be followed. 13. If an array is defined, each element may have a label. 14. Formats (12) through (16) are only valid when the SWDBCmode of the compiler is enabled (-zc=3). Even though NCHAR is not a SWDBC supported data construct, these syntax formats are not being restricted using the Sunbelt compiler. . Format (12) provides another array initialization syntax. . Format (13) provides a NCHAR syntax for an array of NCHAR pointers. . Format (14) provides another NCHAR array pointer construct. The NCHAR array pointer can contain an address of a NCHAR array. . Format (15) provides a two-dimensioned NCAHR array pointer construct. The two-dimensioned NCHAR array pointer can contain an address of a two-dimensioned NCHAR array. . Format (16) provides a three-dimensioned NCHAR array pointer construct. The three-dimensioned NCHAR array pointer can contain an address of a three-dimensioned NCHAR array. Tips: 1. If WRITE operations are performed using very large NCHAR variables, FILE variables with small buffer sizes should be avoided because it can result in a long time to perform the IO operation. 2. If a WRITE operation is performed using a very large NCHAR variable, opening the FILE variable in a SHARENF or EXCLUSIVE mode can give the best performance time to perform the IO operation. - In the PL/B Language Reference manual under the Contents, add the NINIT data variable described as follows: NINIT The NINIT instruction defines a UTF-8 character string variable and assigns it an initial value. The NINIT creates an NCHAR data construct which can only be initialized with valid UTF-8 encoded characters. It uses one of the following formats: (1) [label] NINIT [*]{init-data} (2) [label] NINIT ^ (3) [label] NINIT ^,{variable} (4) [label] NINIT % [*]{init-data} (5) [label] NINIT %% Where: label Optional. A Data Definition Label. init-data Required. A valid UTF-8 character or UTF-8 control string Literal containing variable initialization data. % Optional. Denotes the item as being GLOBAL. %% Optional. Denotes the item as GLOBAL but does not initialize it in any way. * Optional. Denotes the item or file as being COMMON. ^ Optional. Denotes the item as being a POINTER. variable Required. The name of a previously defined variable of the same type. Flags Affected: NONE Note the following: 1. The NINIT data variable is constructed the same as an NCHAR variable. The physical data size is 4 times the number of valid UTF-8 characters that exist in the string literal data that is to be stored into the data variable. 2. UTF-8 character string literals must be enclosed in quotation marks. 3. Ctrl string literals must be valid representations of binary, decimal, hex or octal values. The Ctrl characters must have a value from 0 to 127 to be a valid UTF-8 character represented by a single byte value. 4. The Form Pointer is equal to the first character in the string. 5. The Physical Length is the largest number of valid UTF-8 characters stored into the variable. The Length Pointer is set to the last UTF-8 encoded character stored into the NINIT variable. 6. Arrays may not be defined using the NINIT instruction. To initialize an array, use the NCHAR instruction. 7. The ^ denotes a Pointer Variable. 8. If the % form is used, the data item is placed in the Global Data Area. The variable is then available to other programs that also declared it with the percent form. Global Data Items are available with PLBCMP only. 9. If the %% form is used, the data label is placed in the Global Data Area but no initialization takes place if it has not already been defined in the Global Data Area. If an array data label is placed in the Global Data Area, when initialized, it must have the same number of elements in the array. Global Data Items are available with PLBCMP only. 10. If the * form is used, the data item is in common with other programs and all of the rules of COMMON must be followed. - In the PL/B Language Reference manual under the Contents in the 'Data Definition' section, add the data description as follows for National Characters: National Character String Variables National character string variables are defined using the types NCHAR and NINIT instructions. NCHAR instructions define only the Physical Length (unless an initialized array in which case NINIT guidelines apply). The NINIT instructions define the Physical Length, Physical String, Logical Length, and Logical String. Whether using the NCHAR or NINIT instructions, only valid UTF-8 encoded characters can be stored in the National Character String Variables. Note the following: 1. The size of a national character string variable is set at declaration time. The size of the variables are set to the number of UTF-8 characters declared for a NCHAR and stored into a NINIT. 2. The maximum length of a national character string variable or PLBCMP supports lengths up to 8MB. 3. The Length Pointer (LP) may never exceed the Physical Length (PL) of a variable. The LP is set to the last UTF-8 encoded character in the NCHAR and NINIT variables. 4. The Form Pointer (FP) may never exceed the Length Pointer (LP). 5. A null variable is indicated by a Form Pointer (FP) of zero (0). 6. Character string arrays require a NCHAR definition and they may be initialized to a valid UTF-8 character string literal. - In the PL/B Language Reference manual under the Contents in the 'Instruction Syntax' section, add the description as follows for National String Literals: National String Literals National String Literals behave the same as normal PL/B Language Literals. They are data strings (alpha, numeric, or a combination) that are not declared as variables. However, National String Literals can ONLY contain valid UTF-8 encoded characters. They can be used in programs where a constant string value is needed. They may be in one of the following formats: . String - a sequence of UTF-8 characters - alpha, numeric and/or other special character that must be valid UTF-8 characters. . Character - a single UTF-8 character. . Number - a decimal integer number whose byte value is from 0 to 127. . Ctrl - binary, decimal, hex or octal representation whose byte value is 0 to 127. Character literals may be defined in any supported numbering base as long as the byte value is from 0 to 127: Decimal 32 Binary 0b00100000 Hexadecimal 0x20 Octal 040 The following rules apply to string literals: 1. A national string literal must be enclosed in quotes with a leading 'N' character (N"") in PL/B operations. However, when a national string literal is used to initialize a NCHAR array or NINIT data variable types, only quotes are used. Example: Quote NINIT "?????????? ???????" MATCH N"?????????? ???????", Quote 2. A national string literal may be continued from one line to another by ending the first line with a pair of colons (::). 3. The Form Pointer is always one while the Length Pointer points to the last UTF-8 character. 4. National string literals are generally the first OPERAND in most supported operations. The OPERATION formats are described later. The following examples show how National String Literals may be used for OPERANDS: MOVE N"YEAR-END" TO S$CMDLIN MOVE n"?????????? ???????", S$CMDLIN MATCH N"????", S$CMDLIN A national string literal may be continued on multiple lines: Quote NCHAR 30(3): ("My Quote is: '": "?????????? ???????'" ): ("Testing:): ("Last Name") . MOVE n"My Quote is: '":: "?????????? ???????'" TO S$CMDLIN - In the PL/B Runtime Reference manual under the 'F (Format) Errors' section, add these news error described as follows: F14 - Invalid UTF-8 characters are being moved or stored into a NCHAR or NINIT variable. The NCHAR and NINIT variable can ONLY contain valid UTF-8 characters. F15 - Unable to uppercase a UTF-8 string. F16 - NCHAR and DIM variable types are not allowed for the PL/B instruction. F17 - Out for memory to perform format operation. - In the PL/B Language Reference manual, add the followng NCHAR, NINIT, and N"lit" support to each of the following instructions: APPEND source Required. A previously defined Character String Variable, National Character String Variable, Literal, National String Literal, or Numeric Variable that is appended to the {dest} variable. dest Required. A previously defined Character String Variable or National Character String Variable to which the {source} operand is appended. Note: 6. The National Character String Variables can ONLY contain valid UTF-8 characters. Otherwise, a F14 error occurs. - In the PL/B Language Reference manual, add the following Note to the '*PICT (PRTPAGE)' section: Note: 5. The PRTPAGE *PICT control syntax format (2) can ONLY be used when the 'PRTPAGE PFILE' output is directed to the Sunbelt 'pdf:' device using the 'PRTOPEN PFILE' instruction. Otherwise, this 'PRTAGE *PICT' control syntax format (2) operation is ignore. - In the PL/B Language Reference manual, change/add the following Notes in the 'PLFORM' section as follows: Note: Change the Note (1.) to read as follows: 1. The {form} must have been generated by Sunbelt's 'Visual PL/B Designer' utility. Add a Note (5.) as follows: 5. The supported {form} file formats are described as follows: {form} Type Description PLF - Binary file created by the 'Visual PL/B Designer' utility. This file contains PL/B objects, properties, events and PL/B user code. PWF - Binary file created by the 'Visual PL/B Designer' utility. The PWF binary structure is the same as the PLF. However, there are specialized properties and events required to support the HTML objects created by a PL/B Web Server. XPLF - The XPLF file is a XML file format which contains all of the PLF PL/B objects, properties, events, and PL/B code as XML data. The XPLF XML data can be created using the 'Visual PL/B Designer' utility. The XPLF XML data can be loaded, changed, and compiled the same as a PLF form. XPWF - The XPWF file is a XML file format which contains all of the PWF PL/B objects, properties, events, and PL/B code as XML data. The XPWF XML data can be created using the 'Visual PL/B Designer' utility. The XPWF XML data can be loaded, changed, and compiled the same as a PWF form. - In the PL/B Language Reference manual, change the following instructions to include NCHAR support. Also: 1. For the instructions that show a version older in the upper right corner, remove any versions older than version 9.5. 2. For the instructions that support National Character strings, add 'NCHAR' to the upper rignt corner of the description page. APPEND ANSI/NCHAR source Required. A previously defined Character String Variable, Literal, National Character String Variable, Nation Character String literal, or Numeric Variable that is appended to the {dest} variable. dest Required. A previously defined Character String Variable or National Character String Variable to which the {source} operand is appended. BUMP ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable whose form pointer is modified. CHOP NCHAR source Required. A previously defined Character String Variable or National Character String Variable containing the string that is moved. dest Optional. A previously defined Character String Variable or National Character String Variable that receives the source string. CLEAR ANSI/NCHAR dest Required. A previously defined Character String Variable, National Character String Variable, a Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables that is processed. CMATCH ANSI/NCHAR source Required. A previously defined Character String Variable, a single character Literal, National Character String Variable, National Character String Literal, a {ctrl} representation, or an EQUATEd value that is compared to the {dest} value dest Required. A previously defined Character String Variable, a single character Literal, National Character String Variable, National Character String Literal, a {ctrl} representation, or an EQUATEd value that is compared to the {source} value. CMOVE ANSI/NCHAR source Required. A previously defined Character String Variable, single character Literal, National Character String Variable, National String Literal, a {ctrl} representation or an EQUATEd value that is moved to the {dest} value. dest Required. A previously defined Character String Variable or National Character String Variable that receives the {source} value. Note: 1. The Form Pointed character of {source} or the character specified in {char} is moved into {dest} at its Form Pointed character position. COUNT ANSI/NCHAR The COUNT verb determines the number of significant characters that currently exist in a variable or list of variables. The instruction uses the following format: source Required. A previously defined Character String Variable, a National Character String Variable, a Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables that is processed. Note: 3. After the operation is finished, {result} contains the total number of significant characters that exist in all of the variables in {source}. Significant characters are determined by the descriptions in the Notes 4 and 5. DFREE NCHAR The DFREE instruction releases the memory of a DIM or NCHAR variable created using the DMAKE instruction. The instruction uses the following format: dest Required. A previously defined DIM or NCHAR POINTER variable. Note: 1. If the {dest} pointer does not refer to a DIM or NCHAR variable created by a DMAKE instruction, the pointer is simply cleared. 2. Any DIM or NCHAR pointer that is referencing this same buffer allocation is also cleared. DMAKE NCHAR 1) Change the 'DIM' word in the description and notes to be 'DIM or NCHAR'. 2) Replace '9.0, PLBCMP Only' in upper right corner with NCHAR. DRELEASE NCHAR 1) Change the 'DIM' word in the description and notes to be 'DIM or NCHAR'. 2) Replace '9.0, PLBCMP Only' in upper right corner with NCHAR. 3) Add sentence to the Note (3.) as follows: 3. The instruction 'MOVEPTR 0,pDIM' detaches and clears a DIM pointer. If the pointer was referencing a DMAKE DIM variable, the action is the same as a DRELEASE instruction. Also, this same behavior is expected when a NCHAR variable is being used. ENDSET ANSI/NCHAR source Required. A previously defined Character String Variable or National Character String Variable whose form pointer is modified. EXTEND ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable that is modified. FILL NCHAR 1) Replace 8.1 from upper right corner and put NCHAR in the upper right corner. The FILL instruction stores a character value into every physical character position of one or more destination variables. The instruction uses the following format: source Required. A previously defined Character String Variable, literal, National Character String Variable, or National String Literal from which the fill character is retrieved. dest Required. A previously defined Character String Variable, National Character String Variable or Numeric Variable, a list of variables, or a VARLIST of variables that is filled with the {source} character value. Note: 5. The FILL instruction ignores any Numeric Variables that are encountered in the {dest} list. The basic operation of the FILL instruction is only meant to manipulate a Character String variable or National Character String variable. The ability to compile a Numeric Variable into a FILL {dest} list was provided for situations where Character String variables, National Character String variables, and Numeric Variables exist in the same RECORD or VARLIST. In this case, the FILL operation is executed for any Character String variables and National Character String variables and any Numeric Variables are ignored. FINDCHAR NCHAR 1) Remove '8.3F, PLBWIN and PLBCON Only' from upper right corner. Add 'NCHAR' to upper right corner. source Required. A previously defined Character String Variable or National Character String Variable containing the characters for which to search. dest Required. A previously defined Character String Variable or National Character String Variable that is searched. Output Optional. A previously defined Character String Variable or National Character String Variable that will contain the located character if any. HASH 9.5A/NCHAR source Required. A previously defined Character String Variable or National Character String Variable that is evaluated to generate a hash string. Note: ( Add Note (7.) as follows: 7. The {dest} variable can not be a NCHAR because the output hash string is not a valid UTF-8 string. LENSET ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable whose length pointer is modified. LOWERCASE NCHAR source Required. A previously defined Character String Variable or National Character String Variable for which the characters found in the logical string are translated to lower case. dest Optional. A DIM or NCHAR variable that identifies the character set used to translate the {source} characters to lower case. MATCH ANSI/NCHAR source Required. A previously defined Character String Variable, Literal, National Character String Variable, National Character String Literal, or RECORD that is compared to the {dest} operand. dest Required. A previously defined Character String Variable, Literal, National Character String Literal, National Character String Literal or RECORD that is compared to the {source} operand. wildcard Required. A previously defined Character String Variable, National Character String Variable or constant character indicating source variable wildcard characters. MOVE - Character String to Character String ANSI/NCHAR source Required. A Character String Variable, Literal, National Character String Variable, or National Character String Literal that serves as the source operand. dest Required. A Character String Variable or National Character String Variable that serves as the destination operand. MOVEFPTR ANSI/NCHAR source Required. A previously defined Character String Variable or National Character String Variable whose form pointer is moved to the {dest} variable. MOVELPTR ANSI/NCHAR source Required. A previously defined Character String Variable or National Character String Variable whose length pointer is moved to the {dest} variable. MOVEPLEN NCHAR 1) Remove 7.8.6 in upper right corner. Put NCHAR in upper right corner. source Required. A previously defined Character String Variable or National Character String Variable whose Physical Length is moved to the {dest} variable. OCCURS NCHAR 1) Remove 9.0 in upper right corner. Put NCHAR in upper right corner. source Required. A previously defined Character String Variable, literal, National Character String Variable, National Character String Literal, decimal number, or equated value for which to search. search Required. A Character String Variable, Literal, National Character String Variable, or National Character String Literal whose logical string is searched for string comparisons as specified in the {source} parameter. PACK ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable that receives the appended source variables. source Required. A previously defined Character String Variable, National Character String Variable, Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables that are appended together and placed in the {dest} operand. PACKKEY NCHAR 1) Remove 7.8.4 in upper right corner. Put NCHAR in upper right corner. dest Required. A previously defined Character String Variable or National Character String Variable that receives the appended source variables. source Required. A previously defined Character String Variable, National Character String Variable, Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables that are appended together and placed in the {dest} operand. RESET ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable whose form pointer is modified. Note: Add Note (8.) as follows: 8. The {pos} operand can not be a National Character String Variable or a National Character String Literal. SET NCHAR 1) Remove 8.1 in upper right corner. Put NCHAR in upper right corner. dest Required. A previously defined Character String Variable, National Character String Variable, a Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables processed. SETLPTR ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable whose length pointer is modified. Note: Add Note (10.) as follows: 10. The {pos} operand can not be a National Character String Variable or a National Character String Literal. SMAKE NCHAR 1) Remove 'PLBCMP Only' in upper right corner. Put NCHAR in upper right corner. The SMAKE instruction allows dynamic creation of a DIM or NCHAR character string variable. The greatest feature of SMAKE is that very large DIM or NCHAR variables (up to the DIM/NCHAR size limitation) may be created by a program once it loads into memory. This is accomplished without the disk space overhead the program would require if the variable were defined in the User Data Area (UDA). The instruction uses the following format: Note: 1. {dest} must be a DIM or NCHAR Pointer Definition. Otherwise, a compiler error occurs. SQUEEZE NCHAR 1) Remove '8.1' in upper right corner. Put NCHAR in upper right corner. source Required. A previously defined Character String Variable, National Character String Variable, Numeric Variable, Constant, Literal, or National Character String Literal whose Logical String is used. dest Required. A previously defined Character String Variable or National Character String Variable that receives the {source} value. delete Optional. A previously defined Character String Variable, Literal, National Character String Variable, or National Character String Literal indicating the characters to delete from the source string during the transfer. chars Optional. A previously defined Character String Variable, Literal, National Character String Variable, or National Character String Literal indicating the characters to keep from the source string during the transfer. TYPE ANSI/NCHAR dest Required. A previously defined Character String Variable or National Character String Variable tested for a valid numeric format. Note Changes: 1. When the first syntax format is used, the {dest} variable can be a DIM or NCHAR type variable. ... 2. Change Note (2.) to include the following: Data Type Sunbelt SWDBC Note NCHAR 544 (0x220) 544 DIM type plus 0x200 identifying a National Character String Variable. UNPACK ANSI/NCHAR source Required. A previously defined Character String Variable, National Character String Variable or FORM variable that is disassembled into the {dest} variables. dest Required. A previously defined Character String Variable, National Character String Variable, Numeric Variable, a list of string and/or numeric variables, or a VARLIST of string and/or numeric variables that receive the contents of the {source} operand. UPPERCASE NCHAR source Required. A previously defined Character String Variable or National Character String Variable for which the characters found in the logical string are translated to upper case. dest Optional. A DIM or NCHAR variable to receive the data from the logical string of the {source} variable. table Optional. A DIM variable that identifies the character set used to translate the {source} characters to upper case. NCHAR is NOT supported for the table translate operation. - In the PL/B Language Reference manual, make the following changes for the Oracle SQLIO support. I) 'SQLIO Database Engine Notes' Section Add 'ORACLE' description as follows: ORACLE 1. An ORACLE administrator needs to create and maintain any databases that SQLIO uses for a PLB application. If the ORACLE administrator does not create an application database, everything goes to the default that has been defined by the administrator for a connection. 2. If the PLB_SQLIO_DRIVER is set to a DBFILE connection, all database notes documented for a DBCONNECT instruction apply. II) 'SQLIO Schema File Format' Section Modify ' Schema Record' in the '' description to include the following: 4 = ORACLE language type Modify ' Schema Record' in the '' descriptions as follows: 1 - Char data type with binary collated sequence and trailing spaces are dropped. For Oracle, this type works the same as type 0. 2 - Char data type that is not case sensitive and trailing spaces dropped. For Oracle, this type works the same as type 0. 4 - Char data type with binary collating sequence. For Oracle, this type work the same as type 3. 5 - Char data type that is not case sensitive. For Oracle, this type works the same as type 3. III) 'SQLIO Runtime Keywords' Section Modify the 'PLB_SQLIO_SQLTYPE' keyword to include the following: 4 = ORACLE language type IV) 'SQLIO Administrative Tables' Section Modify 'Sun_Sqlio_Columns' in the 'sql_type' descriptions to include the following: 1 - Char data type with binary collated sequence and trailing spaces are dropped. For Oracle, this type works the same as type 0. 2 - Char data type that is not case sensitive and trailing spaces dropped. For Oracle, this type works the same as type 0. 4 - Char data type with binary collating sequence. For Oracle, this type work the same as type 3. 5 - Char data type that is not case sensitive. For Oracle, this type works the same as type 3. *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - Modified to support 10.1A changes. plbwebbasic.css 10.1B 190424 plbwebbasic.js 10.1B 190429 plbwebctls.js 10.1A 190103 plbwebmob.js 10.0A 180402 Support jQuery Mobile plbwebtvcssinfo.html 9.9 161028 plbmobstart.html 10.0A 180402 Support jQuery Mobile plbwebstart.html 10.0A 180402 plbwebstart99a.html 9.9A 170428 - Corrected a problem where the EDITTEXT/EDITNUMBER input type of number did not work as expected for the final 10.1B patch release. This problem prevented the proper keyboard on mobile devices. The problem is corrected for the 10.2 release. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV - Added ftp support using a new FTP internal object. The FTP object does not need to be created and it does not have any events, properties, or PL/B instructions. The FTP has a full set of ftp commands that are implemented as PL/B methods that allow b-directional file transfers to and from a ftp server. See the documentation section for more details. - Modifed the OPEN and PREPARE XFILE MODE bit definitions to include a new bitmask value described as follows: XFILE_XMLOUTFMTNOEOR4BLKS - 0x10000 When this bit is turned on, the XFILE XML output does not generate a CR\LF eor after the for an XML element when all of the XML element data is blank characters. - National Character support has been added to the PL/B Language. See the 'Notes for DOCUMENTATION:' section for Overview and descriptions detailing the support. New data contructs NCHAR, NINIT, and N"literals" have been added along with changes to PL/B instructions as follows: Instructions modified for National Character support: APPEND BUMP CHOP CLEAR CMATCH CMOVE COUNT DFREE DMAKE DRELEASE ENDSET EXTEND FILL FINDCHAR GETPROP HASH - NCHAR can not be used for destination operand. LENSET LOWERCASE MATCH MOVE MOVEFPTR MOVELPTR MOVEPLEN OCCURS PACK PACKKEY REPLACE RESET - No NCHAR/NINIT/N"lit" for 2nd operand SCAN SETLPTR - No NCHAR/NINIT/N"lit" for 2nd operand TYPE UNPACK WHEREIS WHEREIS WRITE READ DELETED DELETEK DELETEDK READKEY Instructions NOT supporting National Characters: AND COMPRESS CONVERTUTF DECODE64 DECOMPRESS DECRYPT ENCODE64 ENCRYPT NOT OR PARSEFNAME TEST XOR - Corrected a bug when using a PRINT or SPLOPEN if the default printer device or the spooled device was specified using the 'F' mode in the ':F:myfile.pdf' format. See the device naming format described in the PL/B Language Reference manual under the '*DEFPRT (SETMODE)' section. - Corrected a problem where an 'OPEN FILELIST' operation could cause an unexpected I81 error if the FILELIST was opened to files on a Data Manager and the Data Manager system was rebooted before the re-open occurred. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, ALL GUI CLIENTS - Added a new HTMLCONTROL method named 'ContextMenu' to provide program which allows the 'right-click' action to invoke the Windows OS Context Menu on the HTMLCONTROL object. See the DOCUMENTATION section for details. ------------------------------------------------------------------------------- PLBWIN, PLBNET, ALL GUI CLIENTS - Corrected a problem where unexpected data could be loaded into a LISTVIEW or STATTEXT object when the input data being loaded contained character values larger than 0x7F. This problem was caused in patch release 10.1B. - Corrected a problem where the LISTVIEW 'GetItemTextAll' method would return unexpected results. This problem was caused by a change in patch release 10.1B. ------------------------------------------------------------------------------- PLB(UNIX) - Modified the SHUTDOWN to not output any termination terminal control data when Rest CGI Mode is being used. This change avoids an issue where unexpected extraneous data following STREAM output data could occur. ------------------------------------------------------------------------------- PLBCMP - Modified to support National Character PL/B instructions. There are new data constructs of NCHAR, NINIT, and N"literals" that are implemented to support National Character data encoded as UTF-8 characters. ------------------------------------------------------------------------------- PLBDBUG - Modified for National Character support. Modified DV, DL, and TP commands to support NCHAR variable type. ------------------------------------------------------------------------------- DBGIFACE - Modified the 10.2 GUI debugger to require a 10.2 'suncs21.ocx' control version. Otherwise, the GUI debugger shows an appropriate alert to be responded by the end-user and then the debugger quits. This change has been made to avoid unexpected debugger behaviors that could occur when different 'suncs21.ocx' and GUI debugger versions where being used. ------------------------------------------------------------------------------- PLBMETH.INC - Added FTP object methods and parameters. ------------------------------------------------------------------------------- SUNIDE.PLC - Added a find function for the source map and browse labels objects. - Corrected issue with display of the shortcut menu for the sources treeview. - Implemented an IDE option to allow the source/labels find panel to be hidden. - Corrected I81 error that occurs when a string including a single quote was copied to the clipboard. - Corrected file selection when using the Find function of the source map. - Increased the maximum number of inclusion files supported from 1000 to 5000. - Added quotes around the compiler's work directory specification. - Corrected an issue where the right click 'Build program.pls' float menu option was not working. - Corrected an issue where the 'Build All' operation was failing to compile multiple programs back to back. This issue could occur when using the default compiler command line which causes quotes to be used around the compiler's work directory specification. - Removed the "Compare Files" function. - Removed the bookmarking of errors after a compile. - Added toolbar buttons and edit menu functions to toggle bookmarks, move to the next or previous bookmark, and clear all bookmarks. - Allow toggling of bookmarks by clicking in the left margin. - Modified the bookmark icon. - Made bookmark navigation able to traverse multiple open files. ------------------------------------------------------------------------------- DESIGNER.PLC - Added support for XML form files. - Corrected setting of the selected designer font upon initialization. - Modified to save all dialog positions between editing sessions. - Modified to persist unsupported event routines during the saving of a form to another type such as a plf to a pwf. - Modified the resource editor to support id values greater than five digits. - Corrected the order of menu items being pasted from the clipboard. - Ensures that new items added to collections such as menus or statusbars are visible to the user. - Corrected an error that occurred when collapsing and expanding categories in the properties window. - Included the WEBCLASS, WEBHEIGHT, WEBWIDTH, WEBLEFT, WEBTOP, and WEBPOSITION properties for the TOOLBAR and STATUSBAR objects. - Enabled TABID Renumbering for web forms. - Corrected an issue in the version comparison logic. - Added shortcut menus to text and numeric property edit fields to allow undo, cut, copy, paste, delete, and select all functions. - Corrected F04 error that occurred when an object was being recreated. - Corrected an error that occurred when an object name property was only changed case. - Added support for XML form files. - Corrected setting of the selected designer font upon initialization. - Modified to save all dialog positions between editing sessions. - Modified to persist unsupported event routines during the saving of a form to another type such as a plf to a pwf. - Modified the resource editor to support id values greater than five digits. - Corrected the order of menu items being pasted from the clipboard. - Ensures that new items added to collections such as menus or statusbars are visible to the user. - Corrected issues with the font selection dialog. - Corrected an error that occurred when collapsing and expanding categories in the properties window. - Added an enhanced editor for the InnerHTML property. - Corrected designer definitions regarding listview columns. ------------------------------------------------------------------------------- SUNCS21.OCX - Added file's last modified time to the status bar. - Modified the Find function to search for Labels Only. This change requires use of a 10.2 suncs21.ocx. - Added bookmark functions to the shortcut menu. - Now allows toggling bookmarks by clicking in the left margin. - Added functions to support global bookmarks. ------------------------------------------------------------------------------- EDITOR.PLC - Added support for enhanced bookmarks. - Modified the Find function to search for Labels Only. - Added bookmark functions to the shortcut menu. - Now allows toggling bookmarks by clicking in the left margin. - Added functions to support global bookmarks. ------------------------------------------------------------------------------- SCHEMAEDITOR.PLC - Corrected field validation logic in the index addition routine. - Added SQLIO support for Oracle databases. - Modified the schema import function of Add Tables to be more flexible parsing source lines. ------------------------------------------------------------------------------- WATCH.PLC - Corrected display of version numbers. ------------------------------------------------------------------------------- DBEXPLORER.PLC - Modified support for the updated editor. -------------------------------------------------------------------------------