Date: 10-01-2024 Subject: RELEASE 10.7 Runtime Files These RELEASE notes pertain to the following programs or files: EMBEDINI 10.7 01 Oct 2024 10.7.0.500 EMBEDINI64 10.7 01 Oct 2024 10.7.0.500 HEXDUMP 10.7 01 Oct 2024 10.7.0.500 HEXDUMP64 10.7 01 Oct 2024 10.7.0.500 MAKECLI 10.7 01 Oct 2024 10.7.0.500 MAKECON 10.7 01 Oct 2024 10.7.0.500 MAKECONET 10.7 01 Oct 2024 10.7.0.500 MAKEDEF 10.7 01 Oct 2024 10.7.0.500 MAKEMFD 10.7 01 Oct 2024 10.7.0.500 MANAGECE 10.7 01 Oct 2024 10.7.0.500 OBJMATCH 10.7 01 Oct 2024 10.7.0.500 OBJMATCH64 10.7 01 Oct 2024 10.7.0.500 ODBCINST64 10.7 01 Oct 2024 10.7.0.500 PLBCGI 10.7 01 Oct 2024 10.7.0.500 PLBCLICON 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBCLIENT 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBCLINET 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBCON 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBCONET 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBNET 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) PLBSERVE 10.7 01 Oct 2024 10.7.0.500 (Processed Server) PLBSERVET 10.7 01 Oct 2024 10.7.0.500 (Threaded Server) PLBWEBSRV 10.7 01 Oct 2024 10.7.0.500 (Processed Server) PLBWEBSRVT 10.7 01 Oct 2024 10.7.0.500 (Threaded Server) PLBWIN 10.7 01 Oct 2024 10.7.0.500 (ComCtl 6) SUNAAMDX 10.7 01 Oct 2024 10.7.0.500 SUNAAMDX64 10.7 01 Oct 2024 10.7.0.500 SETGUID 10.7 01 Oct 2024 10.7.0.500 SUNINDEX 10.7 01 Oct 2024 10.7.0.500 SUNINDEX64 10.7 01 Oct 2024 10.7.0.500 SUNLS 10.7 01 Oct 2024 10.7.0.500 SUNMOD 10.7 01 Oct 2024 10.7.0.500 SUNMOD64 10.7 01 Oct 2024 10.7.0.500 SUNSORT 10.7 01 Oct 2024 10.7.0.500 SUNSORT64 10.7 01 Oct 2024 10.7.0.500 WININST 10.7 01 Oct 2024 10.7.0.500 PLBNLD.DLL 10.7 01 Oct 2024 10.7.0.500 PLBNETSUP.DLL 10.7 01 Oct 2024 10.7.0.500 Required for PLBNET PLBWSEC.DLL 10.7 01 Oct 2024 10.7.0.500 Req'd PLBWIN/PLBNET ODSBAC32.DLL 10.7 01 Oct 2024 ODSBAC64.DLL 10.7 01 Oct 2024 SA_DLL32.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWADO.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWADO25.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWADO28.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWMSQL.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWODBC.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWSRV.DLL 10.7 01 Oct 2024 10.7.0.500 SUNWSRV64.DLL 10.7 01 Oct 2024 10.7.0.500 Required for Sundm64 DBGIFACE 10.7 01 Oct 2024 PLBCMP 10.7 01 Oct 2024 PLBDBUG 10.7 01 Oct 2024 SUNDEBUG 10.7 01 Oct 2024 ADMEQU.INC 10.7 01 Oct 2024 PLBEQU.INC 10.7 01 Oct 2024 PLBMETH.INC 10.7 01 Oct 2024 PLBRUN.ZIP 10.7 01 Oct 2024 10.7.0.600 (ComCtl 6) *============================================================================== Notes for some NEW Items: *============================================================================== Notes for DOCUMENTATION: - Improved on-line Web Manuals with new look and enhanced searching. Access the on-line manuals at this link: https://www.sunbelt-plb.net/show.php?Page=tsmanual.shtml - In the 'Sunbelt PL/B Language Reference' manual, change the 'SQLIO Administrative Tables' section as follows: Change the 'Sun_Sqlio_Columns' sql_type to include value of '15' and '16' that read as follows: sql_type 15 - SQL_VARCHAR2 - This data type is the VARCHAR2 SQL type for the Oracle Server. This SQL type allows variable length data in a table column. 16 - SQL_VARCHAR2_T - This data type is the VARCHAR2 SQL type for the Oracle Server. This SQL type allows variable length data in a table column and trailing spaces are dropped. - In the 'Sunbelt PL/B Language Reference' manual, change the 'SQLIO Schema File Format' section as follows: Change the ' Schema Record' to inclued values of '15' and '16' that read as follows: 15 - SQL_VARCHAR2 - This data type is the VARCHAR2 SQL type for the Oracle Server. This SQL type allows variable length data in a table column. (10.7) 16 - SQL_VARCHAR2_T - This data type is the VARCHAR2 SQL type for the Oracle Server. This SQL type allows variable length data in a table column and trailing spaces are dropped. (10.7) - In the 'Sunbelt PL/B Language Reference' manual, change the 'PRTOPEN' instruction note 7 to include the FLAGS keyword as follows: FLAGS={value} The FLAGS is a numeric variable or decimal constant that is a bit mask used to invoke specialized behaviors for the printed output. Bit mask values are described as follows: PRT_FLAGS_UNICODE EQU 4096 (0x1000) When this bit is turned on, the Unicode support is enabled and used for advanced printing output. In this case, the printer output device can be a Windows print device or the Sunbelt PDF output device (pdf:). Also the Unicode support applies to the print preview output. - In the 'Sunbelt PL/B Language Reference' manual, change the 'MAILSEND' instruction note 3 to include the MESSAGEID option as follows: *MESSAGEID={svarlit} This optional parameter specifies the SMTP 'Message-ID:' header string to be included in the email message. Example Keyword to include in your MAILSEND instruction: *MESSAGEID="uniqueidentity@somecompany.com" - In the 'Sunbelt PL/B Language Reference' manual, change the 'MAILSEND' instruction note 3 so the *TYPE values include the following: Type Value 4 - The Content-Type is set to 'text/html; charset=utf-8'. In this case, the e-mail body is in HTML format with lines delimited with HTML line break or paragraph sequences. Also, the e-mail body encoding is specified to be UTF-8. - In the 'Sunbelt PL/B Language Reference' manual, add the following methods for the LISTVIEW object. ----------------------------------------------------------------------- GetItemNum Method (LISTVIEW) The GetItemNum method retrieves the data for a specified item in a LISTVIEW object and stores the data into PL/B numeric return variable. This method uses the following format: [label] {object}.GetItemNum [GIVING {return}] USING [*Index=]{index}[: [*Subitem=]{subitem}][: [*Format=]{format}] Where: label Optional. A Program Execution Label. object Required. A LISTVIEW object that is accessed. return Optional. A Numeric Variable that returns the numeric value for the item's text. index Required. A zero-based decimal number or Numeric Variable that specifies the item or row being accessed. subitem Optional. A zero-based decimal number or Numeric Variable that specifies the sub-item number. format Optional. A decimal number or Numeric Variable that specifies the format to be used for the data being stored in the {return} numeric variable. The format is only used when the {return} variable is a PL/B INTEGER data type. Flags Affected: EOS, OVER, ZERO Note the following: 1. The {sub-item} specifies that the text is to come from a child item (column) of {index}. If not given, zero is assumed and the text from the item label is returned. 2. Upon completion, {return} will contain the numeric value as specified for the item's text. 3. The OVER, ZERO, and EOS Condition Flags are determined the same as described for a MOVE instruction of a Character String to a Numeric variable. 4. The {format} value is not used when the {return} variable is a FORM. The {format} value is used when the {return} variable is an INTEGER. The {format} values are described as follows: Format Value Description 0 - If the text data contains the leading '0x' characters, the text data value is scanned as a hexadecimal string. Otherwise, the text data valued is scanned as a decimal string. If the {format} is not used for the method, this is the default behavior. 1 - The text data value is always scanned as a hexadecimal string where the text data must have the leading '0x'. Otherwise, the return value is zero. 5. If the {return} variable is a FORM variable and the text data contains the leading '0x' characters, the text data value is scanned as a hexadecimal string and converted to a decimal value. The converted decimal value is returned in the FORM variable. ----------------------------------------------------------------------- SetItemNum Method (LISTVIEW) The SetItemNum method stores a numeric input value into a specified item in a LISTVIEW object. This method uses the following format: [label] {object}.SetItemNum [GIVING {return}] USING [*Index=]{index}: [*Value=]{value}[: [*Subitem=]{subitem}][: [*Format=]{format}] Where: label Optional. A Program Execution Label. object Required. A LISTVIEW object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. index Required. A zero-based decimal number or Numeric Variable that specifies the item or row being accessed. value Required. A Numeric Variable that is stored into a LISTVIEW item as a numeric string. subitem Optional. A zero-based decimal number or Numeric Variable that specifies the sub-item number. format Optional. A decimal number or Numeric Variable that specifies the format to be used for the data being stored in a LISTVIEW item when the {value} is a PL/B INTEGER. Flags Affected: EOS, OVER, ZERO Note the following: 1. The {sub-item} specifies that the text is to associate with a child item of {index}. If not given, zero is assumed and the text of the item label is set. 2. Upon completion, {return} will contain the status of the modification as follows. $TRUE and $FALSE are defined in PLBEQU.INC. Value Constant The modification... 0 $FALSE failed. 1 $TRUE was successful. 3. If the value returned is zero, the ZERO Condition Flag is set. 4. The OVER and EOS Condition Flags are always cleared. 5. The {format} value is not used when the input {value} is a numeric string from a FORM. The {format} value is used when the input {value} is a value from an INTEGER. The {format} values are described as follows: Format Value Description 0 - The input INTEGER value is stored into the LISTVIEW item as a decimal string. This is the same as the default behavior when {format} is not specified. 1 - The input INTEGER value is stored into the LISTVIEW item as a hexadecimal string with a leading '0x' identifier. 6. For improved performance in the Application Server environment, do not specify the optional return value and parameters unless needed. - In the 'Sunbelt PL/B Language Reference' manual, add the following methods for the DATATABLE object. ----------------------------------------------------------------------- GetRowNum Method (DATATABLE) The GetRowNum method retrieves the data for a specified item in a DATATABLE object and stores the data into PL/B numeric return variable. This method uses the following format: [label] {object}.GetRowNum [GIVING {return}] USING [*Row=]{row}[: [*Col=]{column}][: [*Format=]{format}] Where: label Optional. A Program Execution Label. object Required. A DATATABLE object that is accessed. return Optional. A Numeric Variable that returns the numeric value for the item's text. row Required. A zero-based decimal number or Numeric Variable that specifies the row being accessed. col Optional. A zero-based decimal number or Numeric Variable that specifies the column number. format Optional. A decimal number or Numeric Variable that specifies the format to be used for the data being stored in the {return} numeric variable. The format is only used when the {return} variable is a PL/B INTEGER data type. Flags Affected: EOS, OVER, ZERO Note the following: 1. The {column} specifies that the text is to come from a child column item of a {row}. If not given, zero is assumed and the text from the left most column item is returned. 2. Upon completion, {return} will contain the numeric value as specified for the column item's text. 3. The OVER, ZERO, and EOS Condition Flags are determined the same as described for a MOVE instruction of a Character String to a Numeric variable. 4. The {format} value is not used when the {return} variable is a FORM. The {format} value is used when the {return} variable is an INTEGER. The {format} values are described as follows: Format Value Description 0 - If the text data contains the leading '0x' characters, the text data value is scanned as a hexadecimal string. Otherwise, the text data valued is scanned as a decimal string. If the {format} is not used for the method, this is the default behavior. 1 - The text data value is always scanned as a hexadecimal string where the text data must have the leading '0x'. Otherwise, the return value is zero. 5. If the {return} variable is a FORM variable and the text data contains the leading '0x' characters, the text data value is scanned as a hexadecimal string and converted to a decimal value. The converted decimal value is returned in the FORM variable. ----------------------------------------------------------------------- SetRowNum Method (DATATABLE) The SetRowNum method stores a numeric input value into a specified column item in a DATATABLE object. This method uses the following format: [label] {object}.SetRowNum [GIVING {return}] USING [*Row=]{row}: [*Value=]{value}[: [*Col=]{column}][: [*Format=]{format}] Where: label Optional. A Program Execution Label. object Required. A DATATABLE object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. row Required. A zero-based decimal number or Numeric Variable that specifies the row being accessed. value Required. A Numeric Variable that is stored into a DATATABLE column item as a numeric string. col Optional. A zero-based decimal number or Numeric Variable that specifies the column number. format Optional. A decimal number or Numeric Variable that specifies the format to be used for the data being stored in a DATATABLE column item when the {value} is a PL/B INTEGER. Flags Affected: EOS, OVER, ZERO Note the following: 1. The {col} specifies that the text is to associate with a child column item of {row}. If not given, zero is assumed and the text of the left most column item is set. 2. Upon completion, {return} will contain the status of the modification as follows. $TRUE and $FALSE are defined in PLBEQU.INC. Value Constant The modification... 0 $FALSE failed. 1 $TRUE was successful. 3. If the value returned is zero, the ZERO Condition Flag is set. 4. The OVER and EOS Condition Flags are always cleared. 5. The {format} value is not used when the input {value} is a numeric string from a FORM. The {format} value is used when the input {value} is a value from an INTEGER. The {format} values are described as follows: Format Value Description 0 - The input INTEGER value is stored into the DATATABLE item as a decimal string. This is the same as the default behavior when {format} is not specified. 1 - The input INTEGER value is stored into the DATATABLE item as a hexadecimal string with a leading '0x' identifier. - In the 'Sunbelt PL/B Language Reference' manual, modify the Note (7.) for the 'MOVEPTR' instruction to read as follows: 7. Enhanced ARRAY processing is supported. However, the format (2) gives an indeterminate OVER flag state when the {source2} parameter is a multi-dimensioned ARRAY with a part index specified. Also, if the {source2} is a multi-dimensioned ARRAY with an index specified for every dimension, the OVER flag state is valid. In addition, if the {source2} is a single dimensioned ARRAY with or without having an index specified, the OVER flag is returned with the correct state value. - In the 'Sunbelt PL/B Runtime' manual, add the following keyword description: PLB_SSL_VERSION={ver} Windows This keyword is used to specify the OpenSSL DLL 32-bit library version to be loaded for PL/B instructions that use a SSL connection. This includes the HTTP, MAILSEND, and FTP ( Connect method ). Note: 1. The {ver} is a string that specifies the OpenSSL DLL library version to be loaded. The {ver} string is limited to 15 characters. The PL/B Windows runtime uses the {ver} string to create an OpenSSL DLL library name as follows: a. By default the PL/B Windows runtime can load the OpenSSL libraries named 'libssl-1_1.dll' and 'libcrypto-1_1.dll'. See the 'Sunbelt PL/B Runtime Reference' manual under the 'PLB_LOADLIBSSL_FIRST' for more details. b. When the 'PLB_SSL_VERSION={ver}' keyword is specified, PL/B Windows runtime uses the {ver} characters to create the OpenSSL DLL library names as follows: 'libssl-{ver}.dll' 'libcrypto-{ver}.dll' Warning: Make sure that the {ver} character are specified exactly as found in the OpenSSL DLL file names to be loaded. For example to load/use an OpenSSL DLL version 3 library: 1) Add the PLB_SSL_VERSION keyword to the 'plbwin.ini' configuration file under the [Environment] section as follows: PLB_SSL_VERSION=3 2) In this case, the PL/B Windows runtime will create the OpenSSL DLL library names as follows: libssl-3.dll libcrypto-3.dll 3) Make sure that ONLY 32-bit OpenSSL DLL binary files are being loaded/used because the PL/B Windows runtimes are ONLY 32-bit applications. - In the 'Sunbelt PL/B Web Server' manual, add the following keyword description: PLBWEB_SSL_VERSION={ver} Windows This keyword is used to specify the OpenSSL DLL 32-bit library version to be loaded for PWS connects that use a SSL connection. This keyword ONLY takes affect when the 'PLBWEB_SSL_1_1_USED' is set to 'on' and the PL/B Web Server is configured to used SSL connections. Note: 1. The {ver} is a string that specifies the OpenSSL DLL library version to be loaded. The {ver} string is limited to 15 characters. The PL/B Web server uses the {ver} string to create an OpenSSL DLL library name as follows: a. When the PWS server has the 'PLBWEB_SSL_1_1_USED=on' keyword set, by default the PWS server loads the OpenSSL libraries named 'libssl-1_1.dll' and 'libcrypto-1_1.dll'. If the 'PLBWEB_SSL_VERSION' is used, the PWS server replaces the default binary names with the new version names that are created. b. When the 'PLBWEB_SSL_VERSION={ver}' keyword is specified, PWS server uses the {ver} characters to create the OpenSSL DLL library names as follows: 'libssl-{ver}.dll' 'libcrypto-{ver}.dll' Warning: Make sure that the {ver} character(s) are specified exactly as found in the OpenSSL DLL file names to be loaded. For example to load/use an OpenSSL DLL version 3 library: 1) Add the PLBWEB_SSL_VERSION keyword to the 'plbwebsrv.ini' configuration file under the [Environment] section as follows: PLBWEB_SSL_VERSION=3 2) In this case, the PL/B Web server will create the OpenSSL DLL library names as follows: libssl-3.dll libcrypto-3.dll 3) Make sure that ONLY 32-bit OpenSSL DLL binary files are being loaded/used because the Windows PL/B Web Server is a 32-bit applications. - In the 'Sunbelt PL/B Web Server' manual, add the following keyword descriptions: PLBFTP_SSL_VERSION={ver} Windows This keyword is used to specify the OpenSSL DLL 32-bit library version to be loaded for PWS FTP connections that use SSL. This keyword ONLY takes affect when the 'PLBFTP_SSL_1_1_USED' is set to 'on' and the PL/B Web Server is configured to used SSL connections for FTP support. Note: 1. The {ver} is a string that specifies the OpenSSL DLL library version to be loaded. The {ver} string is limited to 15 characters. The PL/B Web server uses the {ver} string to create an OpenSSL DLL library name as follows: a. When the PWS server has the 'PLBFTP_SSL_1_1_USED=on' keyword set, by default the PWS server loads the OpenSSL libraries named 'libssl-1_1.dll' and 'libcrypto-1_1.dll'. If the 'PLBFTP_SSL_VERSION' is used, the PWS server replaces the default binary names with the new version names that are created. b. When the 'PLBFTP_SSL_VERSION={ver}' keyword is specified, PWS server uses the {ver} characters to create the OpenSSL DLL library names as follows: 'libssl-{ver}.dll' 'libcrypto-{ver}.dll' Warning: Make sure that the {ver} character(s) are specified exactly as found in the OpenSSL DLL file names to be loaded. For example to load/use an OpenSSL DLL version 3 library: 1) Add the PLBFTP_SSL_VERSION keyword to the 'plbwebsrv.ini' configuration file under the [Environment] section as follows: PLBFTP_SSL_VERSION=3 2) In this case, the PL/B Web server will create the OpenSSL DLL library names as follows: libssl-3.dll libcrypto-3.dll 3) Make sure that ONLY 32-bit OpenSSL DLL binary files are being loaded/used because the Windows PL/B Web Server is a 32-bit applications. - In the 'Sunbelt PL/B Runtime Reference' manual, add the following keyword to the 'PLBWIN,PLBCON/keywords' section: ADMIN_HOSTNAME6 Keyword ADMIN_HOSTNAME={ipv6} This keyword controls access to administrative data when PLBWIN is running as an automation server. The {ipv6} parameter specifies an 'Internet Protocol Version 6' address/hostname for the administrative task. If both the ADMIN_HOSTNAME and the ADMIN_HOSTNAME6 keywords are specified in the PL/B runtime '.ini' configuration file, the ADMIN_HOSTNAME6 takes priority and is used. If the ADMIN_HOSTNAME6 keyword is found and the IPV6 address is not resolved, no administrative logon task is created. If the ADMIN_HOSTNAME6 does not exist, the PL/B runtime looks for the ADMIN_HOSTNAME keyword and continues an normally expected. Note: If no logon task is created, an ADMLOGON statement will only work when 'local' is specified for an I/P address. Examples of IPV6 addresses: ADMIN_HOSTNAME6=::1 ADMIN_HOSTNAME6=fe80::1cab:8479:b8ee:4d1 ADMIN_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 ADMIN_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 - In the 'Sunbelt PL/B Web Server' manual, add the following keyword descriptions: --------------------------------------------------------------------- ADMIN_HOSTNAME6 Keyword ADMIN_HOSTNAME6={ipv6 address | URL} This keyword controls access to administrative data maintained by the server. The parameter specifies an IPV6 address or URL that resolves to an IPV6 address for the administrative task. If both the ADMIN_HOSTNAME and the ADMIN_HOSTNAME6 keywords are specified in the PL/B Web Server '.ini' configuration file, the ADMIN_HOSTNAME6 takes priority and is used. If the ADMIN_HOSTNAME6 keyword is found and the IPV6 address is not resolved, no administrative logon task is created. If the ADMIN_HOSTNAME6 does not exist, the PL/B Web server looks for the ADMIN_HOSTNAME keyword and continues an normally expected. Note: If no logon task is created, an ADMLOGON statement will only work when 'local' is specified for an I/P address. Examples of IPV6 addresses: ADMIN_HOSTNAME6=::1 ADMIN_HOSTNAME6=fe80::1cab:8479:b8ee:4d1 ADMIN_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 ADMIN_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 --------------------------------------------------------------------- PLBWEB_HOSTNAME6 Keyword PLBWEB_HOSTNAME6={ipv6 address | URL} This required keyword specifies the URL string or the IP address of the server system executing Plbwebsrv. The parameter specifies an IPV6 address or URL that resolves to an IPV6 address for the PL/B Web Server. This keyword is option. However, this must be specified if an IPV6 address is to be used. If both the PLBWEB_HOSTNAME and the PLBWEB_HOSTNAME6 keywords are specified in the PL/B Web Server '.ini' configuration file, the PLBWEB_HOSTNAME6 takes priority and is used. If the PLBWEB_HOSTNAME6 keyword is found and the IPV6 address is not resolved, an error is logged and the PL/B Web Server command task is not created. If the PLBWEB_HOSTNAME6 does not exist, the PL/B Web server looks for the PLBWEB_HOSTNAME keyword and continues an normally expected. Note: If no main task is created, command controls ( -t, -f, ... ) can not make a connection and do not work. Examples of IPV6 addresses: PLBWEB_HOSTNAME6=::1 PLBWEB_HOSTNAME6=fe80::1cab:8479:b8ee:4d1 PLBWEB_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 PLBWEB_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 --------------------------------------------------------------------- PLBWEB_ADDRESS6 Keyword 1) PLBWEB_ADDRESS6={ipv6 address | URL} 2) PLBWEB_ADDRESS6={[ipv6 address | URL]:portnum} This keyword is optional and used to create an IPV6 listening socket to be created for the PL/B Web Server that allows PL/B Web clients to logon and execute PL/B programs. The {portnum} is optional and defaults to a value of ‘8081’ if it is not specified. This IPV6 listening socket requires that normal HTTP protocol messages as generated by industry standard Web Browsers. The parameter specifies an IPV6 address or URL that resolves to an IPV6 address for the PL/B Web Server. If both the PLBWEB_ADDRESS and the PLBWEB_ADDRESS6 keywords are specified in the PL/B Web Server '.ini' configuration file, the PLBWEB_ADDRESS6 takes priority and is used. If the PLBWIN_ADDRESS6 keyword is found and the IPV6 address is not resolved, an error is logged and the PL/B Web Server task is terminated. If the PLBWEB_ADDRESS6 does not exist, the PL/B Web server looks for the PLBWEB_ADDRESS keyword and continues an normally expected. Examples of IPV6 addresses without port number: PLBWEB_ADDRESS6=::1 PLBWEB_ADDRESS6=fe80::1cab:8479:b8ee:4d1 PLBWEB_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 PLBWEB_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 Uses default port number 8081. Examples of IPV6 addresses with port number: PLBWEB_ADDRESS6=[::1]:8082 PLBWEB_ADDRESS6=[fe80::1cab:8479:b8ee:4d1]:8082 Uses default port number 8082 as specified. - In the 'Sunbelt PL/B Application Server' manual, add the following keyword descriptions: --------------------------------------------------------------------- ADMIN_HOSTNAME6 Keyword ADMIN_HOSTNAME6={ipv6 address | URL} This keyword controls access to administrative data maintained by the server. The parameter specifies an IPV6 address or URL that resolves to an IPV6 address for the administrative task. If both the ADMIN_HOSTNAME and the ADMIN_HOSTNAME6 keywords are specified in the PL/B Application server '.ini' configuration file, the ADMIN_HOSTNAME6 takes priority and is used. If the ADMIN_HOSTNAME6 keyword is found and the IPV6 address is not resolved, no administrative logon task is created. If the ADMIN_HOSTNAME6 does not exist, the PL/B Application server looks for the ADMIN_HOSTNAME keyword and continues an normally expected. Note: If no logon task is created, an PL/B ADMLOGON statement will only work when 'local' is specified for an I/P address. Examples of IPV6 addresses: ADMIN_HOSTNAME6=::1 ADMIN_HOSTNAME6=fe80::1cab:8479:b8ee:4d1 ADMIN_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 ADMIN_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 --------------------------------------------------------------------- PLBCS_HOSTNAME6 Keyword PLBCS_HOSTNAME6={ipv6 address | URL} This required keyword specifies the URL string or the IP address of the server system executing PLBSERVE. The parameter specifies an IPV6 address or URL that resolves to an IPV6 address for the Application server. This keyword is option. However, this keyword must be specified if an IPV6 address is to be used. If both the PLBCS_HOSTNAME and the PLBCS_HOSTNAME6 keywords are specified in the PL/B Application Server '.ini' configuration file, the PLBCS_HOSTNAME6 takes priority and is used. If the PLBCS_HOSTNAME6 keyword is found and the IPV6 address is not resolved, an error is logged and the PL/B Application Server command task is not created. If the PLBCS_HOSTNAME6 does not exist, the PL/B Application Server looks for the PLBCS_HOSTNAME keyword and continues an normally expected. Note: If no main task is created, command controls ( -t, -f, ... ) can not make a connection and do not work. Examples of IPV6 addresses: PLBCS_HOSTNAME6=::1 PLBCS_HOSTNAME6=fe80::1cab:8479:b8ee:4d1 PLBCS_HOSTNAME6=FE80:0000:0000:0000:0202:B3FF:FE1E:8329 PLBCS_HOSTNAME6=FE80::::0202:B3FF:FE1E:8329 --------------------------------------------------------------------- PLBCS_LOCALIP6 Keyword PLBCS_LOCALIP6={ipv6 address | URL} This optional keyword specifies the IPV6 URL or the IP address of a local system network with which to bind before attempting a connection to the PLBCS_HOSTNAME6 address. This is provided for situations where a server may have multiple independent networks available. PLBSERVE uses the PLBCS_LOCALIP6 address in place of the PLBCS_HOSTNAME6 address when the PLBCS_HOSTNAME6 address is all zeros and one of the f, r, or t command options is used. Examples of IPV6 addresses: PLBCS_HOSTNAME6=::0 and PLBCS_LOCALIP6=fe80::1cab:8479:b8ee:4d1 In this case, the 'PLBCS_LOCALIP6' address is used when one of the PLBSERVE commands f, r, or t is used. - In the 'Sunbelt PL/B Language Reference' manual, modify the following PL/B statement descriptions for IPV6: --------------------------------------------------------------------- ADMLOGON 1) [label] ADMLOGON {admin},{ip},{port}[,{public}][,{logon}] 2) 1) [label] ADMLOGON {admin},[{ipv6}],{port}[,{public}][,{logon}] Where: ip Required. The IP address of the server using an IPV4 socket when using syntax format 1). ipv6 Required. The IP address of the server using an IPV6 socket when using syntax format 2). Note: 7. When the syntax format 2) is being used, the {ipv6} parameter data must be enclosed in '[]' brackets and formatted for an IPV6 address as follows: ADMLOGON Admin, "[::1]",2100 or ADMLOGON Admin, "[localipv6-test.home]",2100 --------------------------------------------------------------------- COMOPEN Modify the Note (7.) described as follows: 1) The protocol is the first parameter. This value must always be “S” for Sockets to be created as an IPV4 connection. This value must be "S6' for Sockets to created as an IPV6 connection. 2) The address is the third parameter. This value is the local TCP/IP address. If the first parameter value is "S", the local TCP/IP address must be an IPV4 address format or a URL that resolves to an IPV4 address. If the first parameter value is "S6", the local TCP/IP address must be an IPV6 address format or a URL that resolves to an IPV6 address. Any other value will cause an I97 error. This value is only required for the Open mode and is disregarded if the mode is Create and the first parameter is "S". Add a Note (12.) described as follows: 12. If the first parameter value is "S6", the following examples show allowed IPV6 URI formats. COMOPEN comopen,"S6,O,::1,9999,R" Opens a socket connection to a local IPV6 address. COMOPEN comopen,"S6,O,localipv6-test.home,9999,R" Opens a socket connection to an IPV6 URL that resolves to an IPV6 address. COMOPEN comopen,"S6,C,::1,9999,R" Creates a listening socket for a local IPV6 address. --------------------------------------------------------------------- HTTP Modify the Note (3.) *FLAGS parameter described as follows: *FLAGS={dnumnvar} 0x4000 - $HTTP_FLAG_USE_IPV6 This flags value is only used for Windows PL/B runtimes. Setting this flag causes the HTTP instruction to expect an address or host name to be processed for an IPV6 format. In this case, the following are valid IPV6 addresses: Examples of possible IPV6 {hostname} string values: "::1" "fe80::1cab:8479:b8ee:4d1" "localipv6-test.home" --------------------------------------------------------------------- MAILSEND Modify the Note (4.) *OPTIONS parameter described as follows: 0x400 Setting this bit ($MAIL_FLAG_USEIPV6) in the *OPTIONS value causes the MAILSEND instruction to expect and process the {outgoing} parameter as an IPV6 URL or address. In this case, the {outgoing} parameter must resolve to be a valid IPV6 socket connection. - In the 'Sunbelt PL/B Language Reference' manual, modify the 'Method Syntax' section as follows: Modify the Note (4.) to read as follows: 4. {res} is a DIM, FORM, INTEGER, or an object (AUTOMATION, COLOR, FONT, IMAGELIST, or VARIANT) that receives the result of the method. The specific type allowed depends on the {method} requirements. If the {res} has a specific type of a DIM ( Character String Variable ), a FORM variable is allowed where the Character String data is moved to the FORM variable the same as described for a 'MOVE Character String to Numeric Field'. The {res} value is always optional. Modify the Note (6.) to read as follows: 6. {parm} is a DIM, FORM, INTEGER, immediate numeric value, expression, literal, or an object (AUTOMATION, COLOR, FONT, IMAGELIST, or VARIANT) specifying a parameter value. The specific type(s) allowed depend on the {method} requirements. If the {parm} has a specific type of a DIM (Character String Variable), a FORM variable is allowed such that the FORM string data is used and processed by the method. - In the 'Sunbelt PL/B Language Reference' manual, modify the MDIxxxxxx Property sections to include a Note described as follows: --------------------------------------------------------------------- MDIBORDER Property Add this Note (4.) 4. When using the PL/B Web Server, see the 'MPIBORDER' property. --------------------------------------------------------------------- MDIHEIGHT Property Add this Note (5.) 5. When using the PL/B Web Server, see the 'MPIHEIGHT' property. --------------------------------------------------------------------- MDILEFT Property Replace the current Note (4.) 4. When using the PL/B Web Server, see the 'MPILEFT' property. --------------------------------------------------------------------- MDISCROLL Property Add this Note (5.) 5. When using the PL/B Web Server, see the 'MPISCROLL' property. --------------------------------------------------------------------- MDITOP Property Add this Note (5.) 5. When using the PL/B Web Server, see the 'MPITOP' property. --------------------------------------------------------------------- MDIWIDTH Property Add this Note (5.) 5. When using the PL/B Web Server, see the 'MPIWIDTH' property. - In the 'Sunbelt PL/B Language Reference' manual, modify the WINTYPE Property Note (3.) to include the following MPI types: Value Keyword The window... 12 $MPICLIENT contains a MPI client window to support MPI child type windows. The properties MPIBORDER, MPISCROLL, MPITOP, MPILEFT, MPIHEIGHT, and MPIWIDTH manipulates the MPI client window. The MPILayout and MPIShow methods also affect the MPI client window. This window type is only used when using Plbwebsrv or Plbwin (WebView) runtimes. 13 $MPICHILD a MPI child window for use with a host MPI client type window. This window type is only used when using Plbwebsrv or Plbwin (WebView) runtimes. - In the 'Sunbelt PL/B Language Reference' manual, add the MPIxxxxxx Property descriptions as follows: --------------------------------------------------------------------- MPIBORDER Property MPIBORDER property defines whether a MPI client window has a border. This property is only implemented for Web Objects. The property uses the following format: MPIBORDER={value} Note the following: 1. MPIBORDER may be used in CREATE, SETPROP, or GETPROP statements of a WINDOW object. 2. {value} is a decimal number, a Numeric Variable, an Expression, or a keyword as defined in PLBEQU.INC. The supported values and keywords are: Value Keyword The window border is ... 0 $OFF not displayed. (default) 1 $ON displayed. --------------------------------------------------------------------- MPIHEIGHT Property MPIHEIGHT property defines the height of a MPI client window. This property is only implemented for Web Objects. The property uses the following format: MPIHEIGHT={value} Note the following: 1. MPIHEIGHT may be used in CREATE, SETPROP, or GETPROP statements of a WINDOW object. 2. {value} is a decimal number, a Numeric Variable or an Expression defining the window height in pixels. 3. If {value} is zero, the bottom of the MPI client is pinned to the bottom of the WINDOW object. --------------------------------------------------------------------- MPILEFT Property MPILEFT property defines the left position of a MPI client window. This property is only implemented for Web Objects. The property uses the following format: MPILEFT={value} Note the following: 1. MPILEFT may be used in CREATE, SETPROP, or GETPROP statements of a WINDOW object. 2. {value} is a decimal number, a Numeric Variable or an Expression defining the left position in pixels. --------------------------------------------------------------------- MPISCROLL Property MPISCROLL property specifies the type of scrollbars provided for the MPI client window. This property is only implemented for Web Objects. The property uses the following format: MPISCROLL={value} Note the following: 1. MPISCROLL may be used in CREATE or GETPROP statements of a WINDOW object. 2. Scrollbar handling occurs by using a specific CSS class ( sb1, sb2, sb3, or sb4 ) found in 'plbwvbasic.css'. 3. {value} is a decimal number, a Numeric Variable, an Expression, or a keyword as defined in PLBEQU.INC. The supported values and keywords are: Value Keyword The type of scrollbars available are ... 0 $NONE none. (default) 1 $SCRBOTH both horizontal and vertical. 2 $SCRHORZ horizontal only. 3 $SCRNONE none. 4 $SCRVERT vertical only. --------------------------------------------------------------------- MPITOP Property MPITOP property defines the top position of a MPI client window. This property is only implemented for Web Objects. The property uses the following format: MPITOP={value} Note the following: 1. MPITOP may be used in CREATE, SETPROP, or GETPROP statements of a WINDOW object. 2. {value} is a decimal number, a Numeric Variable or an Expression defining the top position in pixels. --------------------------------------------------------------------- MPIWIDTH Property MPITOP property defines the width of a MPI client window. This property is only implemented for Web Objects. The property uses the following format: MPIWIDTH={value} Note the following: 1. MPIWIDTH may be used in CREATE, SETPROP, or GETPROP statements of a WINDOW object. 2. {value} is a decimal number, a Numeric Variable or an Expression defining the window width in pixels. 3. If {value} is zero, the right of the MPI client is pinned to the right of the WINDOW object. - In the 'Sunbelt PL/B Language Reference' manual, add the MPI method descriptions as follows: --------------------------------------------------------------------- GetActiveMPIChild Method (WINDOW) The GetActiveMPIChild method returns the OBJECTID property of the active MPI child WINDOW object. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.GetActiveMPIChild [GIVING {return}] Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that receives the OBJECTID of the active MPI window. Flags Affected: EOS, OVER, ZERO Note the following: 1. Zero is returned if there is no active MPI child window. 2. If the value returned is zero, the ZERO Condition Flag is set. 3. The OVER and EOS Condition Flags are always cleared. --------------------------------------------------------------------- MPILayout Method (WINDOW) The MPILayout method arranges the MPI child windows in a MPI client WINDOW to allow for easier navigation and manipulation. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.MPILayout [GIVING {return}] USING [*Layout=]{layout} Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. layout Required. A Numeric Variable that specifies a parameter value as defined below. Flags Affected: EOS, OVER, ZERO Note the following: 1. The required {layout} parameter is a decimal number, a Numeric Variable, an Expression, or a keyword as defined in PLBMETH.INC. The supported values and keywords are: Value Keyword All MPI child icons are ... 1 $ArrangeIcons arranged within the client region of the MPI client window. 2 $Cascade cascaded within the client region of the MPI client window. 3 $TileHorizontal tiled horizontally within the client region of the MPI client window. 4 $TileVertical are tiled vertically within the client region of the MPI client window. 2. If the value returned is zero, the ZERO Condition Flag is set. 3. The OVER and EOS Condition Flags are always cleared. --------------------------------------------------------------------- MPIShow Method (WINDOW) The MPIShow method shows or hides a MPI client WINDOW. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.MPIShow [GIVING {return}] USING [*Show=]{show} Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. show Required. A Numeric Variable that specifies a parameter value as defined below. Flags Affected: EOS, OVER, ZERO Note the following: 1. The required {show} parameter is a decimal number, a Numeric Variable, Expression, or a keyword as defined in PLBMETH.INC. The supported values and keywords are: Value Keyword The MPI child window is ... 0 $SW_HIDE hidden from view. 1 $SW_SHOWNORMAL visible. 2. If the value returned is zero, the ZERO Condition Flag is set. 3. The OVER and EOS Condition Flags are always cleared. --------------------------------------------------------------------- GetMPIChildCount Method (WINDOW) The GetMPIChildCount method returns the number of MPI child WINDOW objects for an MPI client WINDOW object. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.GetMPIChildCount [GIVING {return}] Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that returns the number of MPI child objects. Flags Affected: EOS, OVER, ZERO Note the following: 1. The return value is a count of current MPI child WINDOWS whose parent is a MPI client WINDOW. 2. If the value returned is zero, the ZERO Condition Flag is set. 3. The OVER and EOS Condition Flags are always cleared. --------------------------------------------------------------------- MPIChildNext Method (WINDOW) The MPIChildNext method activates the MPI child window that is immediately after the currently active child WINDOW. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.MPIChildNext [GIVING {return}] Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. Flags Affected: EOS, OVER, ZERO Note the following: 1. The ZERO flag is set to indicate that the method executed successfully. 2. The OVER flag is set TRUE if the destination numeric variable was too small to receive the result without being truncated. 3. If the WINDOW object is a MPI client WINDOW, this method activates the child window that is immediately after the currently active child window. 4. If the WINDOW object is a MPI child WINDOW, this method activates the child window that is immediately after this child window. --------------------------------------------------------------------- MPIChildPrev Method (WINDOW) The MPIChildPrev method activates the MPI child window that is immediately before the currently active child WINDOW. This method is only implemented for Web Objects. The method uses the following format: [label] {object}.MPIChildPrev [GIVING {return}] Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. Flags Affected: EOS, OVER, ZERO Note the following: 1. The ZERO flag is set to indicate that the method executed successfully. 2. The OVER flag is set TRUE if the destination numeric variable was too small to receive the result without being truncated. 3. If the WINDOW object is a MPI client WINDOW, this method activates the child window that is immediately before the currently active child window. 4. If the WINDOW object is a MPI child WINDOW, this method activates the child window that is immediately before this child window. - In the 'Sunbelt PL/B Language Reference' manual, modify the Note (5.) for the 'GetState Method (CLIENT)' descriptions as follows: Modify Note (5.) to include the following Mask Values: Mask Value Value Definition 0x04 $CLI_STATE_JQMOBILE This state flag identifies that a client uses JQuery Mobile. 0x08 $CLI_STATE_BOOTSTRAP4 This state flag identifies that a client uses BOOTSTRAP 4. 0x10 $CLI_STATE_BOOTSTRAP5 This state flag identifies that a client uses BOOTSTRAP 5. - In the 'Sunbelt PL/B Language Reference' manual, modify the following PL/B statement descriptions for OpenSSL usage: --------------------------------------------------------------------- HTTP Modify the Note (3.) *FLAGS parameters described as follows: 0x8 - $HTTP_FLAG_SSL - When this bit is set, the HTTP instruction executes using the SSL (Secure Sockets Layer) to access a web server using a secured communications connection. See information for OpenSSL libraries using this link: (http://www.openssl.org/) 0x200 - $HTTP_FLAG_USESUNSSL ( Windows PL/B runtimes ONLY ) - Setting the $HTTP_FLAG_USESUNSSL bit mask value causes the HTTP instruction to first attempt to load the OpenSSL DLLs ( ssleay32.dll and libeay32.dll ) if they exist in the 'openssl' sub-directory located in the directory specified by the PLB_SYSTEM keyword found in the PL/B runtime INI file. Note, this flag option is obsolete for release 10.7 and newer releases. Modify the Note (3.) *FLAGS 0x200 parameter example as follows: Modified Example verbiage to read: The OpenSSL DLLs ( ssleay32.dll and libeay32.dll ) must exist in the following directory to be used. --------------------------------------------------------------------- MAILSEND Modify the Note (3.) {options} operand descriptions as follows: *OPENSSL Add this sentence to the end of the *OPENSSL description: See information for OpenSSL libraries using this link: (http://www.openssl.org/) *STARTTLS Add this sentence to the end of the *STARTTLS description: See information for OpenSSL libraries using this link: (http://www.openssl.org/) Modify the Note (4) *OPTIONS bit value descriptions as follows: 0x10 -... Add this sentence to the end of the 0x10 bit value description: See information for OpenSSL libraries using this link: (http://www.openssl.org/) 0x80 -... Add this sentence to the end of the 0x80 bit value description: See information for OpenSSL libraries using this link: (http://www.openssl.org/) 0x200 - Setting this value causes the MAILSEND instruction to first attempt to load the OpenSSL DLLs ( ssleay32.dll and libeay32.dll ) if they exist in the 'openssl' sub-directory located in the directory specified by the PLB_SYSTEM keyword found in the PL/B runtime INI file. Note, this flag option is obsolete for release 10.7 and newer releases. Modify the Note (4.) *OPTIONS 0x200 parameter example as follows: Modified Example verbiage to read: The OpenSSL DLLs ( ssleay32.dll and libeay32.dll ) must exist in the following directory to be used. - In the 'Sunbelt PL/B Language Reference' manual, add the WEBSTYLE property description as following: ----------------------------------------------------------------------- WEBSTYLE Property The WEBSTYLE property is used to allow multiple HTML inline styles to be applied to a Web Object when the object is created. This property also allows a variety of HTML inline styles to be applied when PL/B Web objects are loaded/created using PLF and PWF forms. The property uses the following format: WEBSYTLE={style} Note the following: 1. WEBSTYLE may be used in CREATE, SETPROP or GETPROP statements. 2. This property only takes affect when it is used in the CREATE statement. Once created, the mode remains in effect until the object is destroyed. The SETPROP stores the WEBSTYLE string data but the HTML inline styles DO NOT take immediate affect The GETPROP returns the last WEBSTYLE string stored for a Web Object. 3. When the WEBSTYLE inline styles are applied by a CREATE operation, the actual interpretation and presentation of the Web object is strictly controlled by the Browser engine being used. Beware, the final presentation may have some style conflict(s) that cause unexpected results. In some cases, the 'CSS The !important Rule' can be used to elevate the inline style to force its usage. Example of HTML inline style using '!important' color:red !important; 4. The {style} is a literal or character variable containing one or more attributes formatted as expected for HTML inline Styles. The {style} string is formatted the same as expected for the 'HTML style Attributes' where each style definition is described as follows: style_definitions "One or more CSS properties and separated by semicolons. (e.g. style="color:blue;text-align:center")" See the following links for more format details: https://www.w3schools.com/html/html_css.asp Understanding HTML Styles including inline styles. https://www.w3schools.com/html/html_styles.asp Setting the style of an HTML element. https://www.w3schools.com/TAGS/att_global_style.asp Using style attribute definition and usage. https://www.w3schools.com/css/css_important.asp Description of 'CSS The !important Rule'. 5. Example PL/B WebStyle property string using CREATE: . Win WINDOW nVar FORM 2 ButtonWv BUTTON bStyle INIT "color:red;": "text-align:center;": "border: 3px solid forestgreen;" . WINHIDE SETMODE *WEBMODEPLF=3 CREATE WIN=50:400:50:400, WEBOBJECT=1 . CREATE Win;ButtonWv=50:80:50:150: "Exit": WEBOBJECT=1: WEBSTYLE=bStyle //Inline style ACTIVATE ButtonWv,Exit,nVar . SETPROP WIN, VISIBLE=1 . LOOP WAITEVENT REPEAT . Exit STOP 6. When using the PL/B 'designer', set the WebStyle property for a Web object by specifying the HTML inline style parameters. Example of designer WebStyle property string: color:red;text-align:center;border: 3px solid forestgreen; *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- All Sunbelt Products ------------------------------------------------------------------------------- Sunbelt GitHub Updates - Updates to 'sunbelt-plb-samples' found at the GibHub link as follows: https://github.com/KcsDev1982/sunbelt-plb-samples Updates: namedIO - Sample PL/B program with Named IO, View, and Filter. templates - Sample program 'restskeleton.pls' added. ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - Modified to support 10.7 changes. plbwebbasic.css 10.6B 240426 plbwebipad.css 10.6B 240409 plbwebbasic.js 10.7 240916 plbwebctls.js 10.5B 230727 plbwebmob.js 10.0A 180402 Support jQuery Mobile plbwebboot.html 10.2A 191210 plbwebtvcssinfo.html 9.9 161028 plbmobstart.html 10.0A 180402 Support jQuery Mobile plbwebstart.html 10.0A 180402 plbwebstartwv.html 10.5 220524 Support Bootstrap 5 plbwebstart99a.html 9.9A 170428 ------------------------------------------------------------------------------- PLBWEBSRV (Windows) - Added new keywords named 'PLBWEB_SSL_VERSION={ver}' and 'PLBFTP_SSL_VERSION={ver}' which can be used to allow new OpenSSL OpenSSL DLL libraries to be loaded by the PL/B Web Server when the PWS configuration specifies SSL connections. See the Documentation section for more details. ------------------------------------------------------------------------------- PLBWEBSRV - A new property named 'WEBSTYLE' has been implemented as a CREATE only property for Web Objects. ----------------------------------------------------------------------- WEBSTYLE Property The WEBSTYLE property is used to allow multiple HTML inline styles to be applied to a Web Object when the object is created. This property also allows a variety of HTML inline styles to be applied when PL/B Web objects are loaded/created using PLF and PWF forms. The property uses the following format: WEBSYTLE={style} See the Documentation section for more details. - Added support to the PL/B Web Sever for MPI ( Multi Page Interface ) that allows multiple WINDOW objects to be embedded into a single WINDOW object. The details of the MPI methods and properties can be found in the Documentation Section. Methods: GetActiveMpiChild MPILayout MPIShow GetMpiChildCount MpiChildPrev MpiChildNext Properties: MPIBORDER MPIHEIGHT MPILEFT MPISCROLL MPITOP MPIWIDTH - The CLIENT object method 'GetState' has been modified to determine if JQuery Mobile, Bootstrap 4, and Bootstrap 5 support is used. See Documentation Section for more details. - Corrected a PHP POST buffer problem. ------------------------------------------------------------------------------- PLBWIN, PLBWEBSRV - Modified to correct LISTVIEW web object checkbox event to return a proper row number. - Modified the LINE object to support a WEBOBJECT property. - Modified to support file names with '.png' as a resource. - Modified the 'SetWebTheme Method (RUNTIME)' {options} to include the following bit mask value: $BS5_OPTION_NO_WINBORDER ( 0x4 ) This option bit will convert all WINDOW WINTYPEs of $FIXEDSINGLE or $FIXED3D to $NOBORDER on a PL/B Web Server. ------------------------------------------------------------------------------- PLBWIN, PLBSERVE, PLBWEBSRV (Windows) - Added new keyword named 'ADMIN_HOSTNAME6={ipv6}' that can be used to create an ADMIN listening socket using IPV6 (Internet Protocol Version 6). This keyword works the same as the 'ADMIN_HOSTNAME' except the 'ADMIN_HOSTNAME' keyword creates an IPV4 socket while the 'ADMIN_HOSTNAME6' creates an IPV6 socket. See the Documentation Section for more details. Note: If both the ADMIN_HOSTNAME and the ADMIN_HOSTNAME6 keywords are specified in the PL/B runtime '.ini' configuration file, the ADMIN_HOSTNAME6 takes priority and is used. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLBWEBSRV (Windows) - Added new keyword named 'PLB_SSL_VERSION={ver}' which can be used to allow new OpenSSL DLL libraries to be loaded by PL/B instructions. See the Documentation section for more details. - The following PL/B instructions have been modified to support IPV6 socket connections: ADMLOGON, COMOPEN, HTTP, and MAILSEND See the Documentation Section for more details. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV - Corrected a problem in a SQLIO operation could fail to find a record when an AAM key is being used for a column SqlType SQLIO_SQL_INTEGER, SQLIO_SQL_DECIMAL, or SQLIO_SQL_REAL data type. This problem would occur if the SQL select statement was using " NVAR LIKE '01X 1' " where the key data had leading spaces. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLBWEBSRV, ALL GUI CLIENTS - Modified the LISTVIEW object to support two new methods as follows: See the descriptions in the Documentation section for more details. These methods are implemented to allow LISTVIEW data to be retrieved and stored using PL/B numeric ( FORM or INTEGER ) variables. GetItemNum Giving Nvar using Index , SubItem, Format SetItemNum Giving nVar Using Index, Value=NVar, SubItem, Format - Modified the DATATABLE object to support two new methods as follows: See the descriptions in the Documentation section for more details. These methods are implemented to allow DATATABLE data to be retrieved and stored using PL/B numeric ( FORM or INTEGER ) variables. GetRowNum Giving Nvar using Row , Col, Format SetRowNum Giving nVar Using Row, Valu, Col, Format ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBWEBSRV, ALL GUI CLIENTS - Modified to allow ToolBar 'AddButton' method to add menus with a size greater than 256 characters total. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV, ALL GUI CLIENTS - Modified PL/B 'Method Syntax' so a FORM numeric variable string can be used in any method result and/or parameter that has a specific type of a Character String Variable. This helps simplify PL/B code where the FORM string data needs to be used in a method with a DIM type. ------------------------------------------------------------------------------- PLBWIN - The CLIENT object method 'GetState' has been modified to determine if the runtime supports Bootstrap 5. See Documentation Section for more details. - A new property named 'WEBSTYLE' has been implemented as a CREATE only property for Web Objects. ----------------------------------------------------------------------- WEBSTYLE Property The WEBSTYLE property is used to allow multiple HTML inline styles to be applied to a Web Object when the object is created. This property also allows a variety of HTML inline styles to be applied when PL/B Web objects are loaded/created using PLF and PWF forms. The property uses the following format: WEBSYTLE={style} See the Documentation section for more details. ------------------------------------------------------------------------------- PLB(LINUX) - Change documentation to include PLB_FNC=lower during installation. ------------------------------------------------------------------------------- PLBCMP - Added new keyword named 'MESSAGEID={svarlit}' to the MAILSEND instruction. This keyword is implemented to include the SMTP 'Message-ID:' header in the email message. Example Keyword to include in your MAILSEND instruction: *MESSAGEID="messageidentity@somecompany.com" ------------------------------------------------------------------------------- PLB Utilities - Modified the 'Sunlist' utility to support a display paging option. The 'd=nn' option can be used to force a user interaction after 'nn' lines of data has been displayed. The 'esc' key can be used to disable the display paging mode of operation. ------------------------------------------------------------------------------- SUNIDE.PLC - Watch variables, Trace variables, and Breakpoints are now saved and restored between sessions when using the Integrated Debugger. - Watch variables, Trace variables, and Breakpoints may now be set in the IDE and passed to the Integrated Debugger. - The Watch variables, Trace variables, and Breakpoints windows are now available while editing. - Corrected parsing of function variable names. - Corrected an issue with multiple editor processes being initialized prematurely. - Modified logic to prevent screen flashing when changing the output windows in the lower section of the main form and changing file tabs. - Modified the Watch Variables, Breakpoints, and Tracepoints listviews to support multiple selection. - Corrected an issue causing the IDE options such as file extension to be lost when the options dialog was canceled. - The icon indicating an out of date program is now changed when an inclusion file or form is modified. - Corrected an issue dragging and dropping multiple files into a project. - Corrected buffer size issues in GitCommit. - Opening a recent file now follows the previously associated program. - The Find in Files Leave Open and Remember Options value are now available from the Find in Files dialog. - Added Quick Watch, New Breakpoint, and New Tracepoint to the main toolbar. - Added the "Close All Except" File menu function. ------------------------------------------------------------------------------- DESIGNER.PLC - Modified forms to display larger text correctly. - Corrected an I08 error when editing a Listview attribute. - Corrected an issue in updating the LabelText appearance property. - Corrected an issue regarding the Line object and the WebObject Property. - Removed blinking when forms are loaded or saved. - Now updates the code recovery data when a form is first opened. - Corrected an issue in setting a Listview column attribute font size. - Removed errant PROFILER instruction in SelectAll routine. - Corrected the Tools menu in the integrated layout mode. - Corrected issues when starting the Designer with the screen maximized. - Added support for the breakpoint, tracepoint, and watch functions when loaded by the SunIDE. - Added the "Close All Except" File menu function. ------------------------------------------------------------------------------- SUNCS21.OCX - Modified to support PL/B language syntax changes for MPI operations. - Added commands to allow multiple selected lines of PL/B code to be commented or uncommented in a single command action. ------------------------------------------------------------------------------- EDITOR.PLC - Modified shortcut menu to allow breakpoint, tracepoint, and watch debug functions when called from SunIDE and the debug mode is "integrated". - Added Comment/Uncomment Selection functions to the shortcut menu. - Added Go To Label selection to the shortcut menu when called from SunIDE and a valid reflection file exists. ------------------------------------------------------------------------------- PROFILER.PLC - No changes ------------------------------------------------------------------------------- SCHEMAEDITOR.PLC - Added SQLTYPEs for VarChar2 and VarChar2_T which is only used by Oracle. ------------------------------------------------------------------------------- DBEXPLORER.PLC - No changes. -------------------------------------------------------------------------------