Date: 01-09-2015 Subject: RELEASE 9.7A Runtime Files These release notes pertain to the following programs or files: EMBEDINI 9.7A 09 Jan 2015 9,7,1,500 EMBEDINI64 9.7A 09 Jan 2015 9,7,1,500 HEXDUMP 9.7A 09 Jan 2015 9,7,1,500 HEXDUMP64 9.7A 09 Jan 2015 9,7,1,500 MAKECLI 9.7A 09 Jan 2015 9,7,1,500 MAKECON 9.7A 09 Jan 2015 9,7,1,500 MAKECONET 9.7A 09 Jan 2015 9,7,1,500 MAKEDEF 9.7A 09 Jan 2015 9,7,1,500 MAKEMFD 9.7A 09 Jan 2015 9,7,1,500 MANAGECE 9.7A 09 Jan 2015 9,7,1,500 OBJMATCH 9.7A 09 Jan 2015 9,7,1,500 OBJMATCH64 9.7A 09 Jan 2015 9,7,1,500 ODBCINST64 9.7A 09 Jan 2015 9,7,1,500 PLBCGI 9.7A 09 Jan 2015 9,7,1,500 PLBCLICON 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBCLIENT 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBCLINET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBCON 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBCONET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBDSIGN 9.7A 09 Jan 2015 9,7,1,500 PLBNET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) PLBSERVE 9.7A 09 Jan 2015 9,7,1,500 (Processed Server) PLBSERVET 9.7A 09 Jan 2015 9,7,1,500 (Threaded Server) PLBWEBSRV 9.7A 09 Jan 2015 9,7,1,500 (Processed Server) PLBWEBSRVT 9.7A 09 Jan 2015 9,7,1,500 (Threaded Server) PLBWIN 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6) SETGUID 9.7A 09 Jan 2015 9,7,1,500 SUNAAMDX 9.7A 09 Jan 2015 9,7,1,500 SUNAAMDX64 9.7A 09 Jan 2015 9,7,1,500 SUNINDEX 9.7A 09 Jan 2015 9,7,1,500 SUNINDEX64 9.7A 09 Jan 2015 9,7,1,500 SUNLS 9.7A 09 Jan 2015 9,7,1,500 SUNMOD 9.7A 09 Jan 2015 9,7,1,500 SUNMOD64 9.7A 09 Jan 2015 9,7,1,500 SUNSORT 9.7A 09 Jan 2015 9,7,1,500 SUNSORT64 9.7A 09 Jan 2015 9,7,1,500 WININST 9.7A 09 Jan 2015 9,7,1,500 PLBCLICON5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBCLIENT5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBCLINET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBCON5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBCONET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBNET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) PLBWIN5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5) ODSBAC32.DLL 9.7A 09 Jan 2015 ODSBAC64.DLL 9.7A 09 Jan 2015 PLBNETSUP.DLL 9.7A 09 Jan 2015 9,7,1,500 Required for PLBNET PLBWSEC.DLL 9.7A 09 Jan 2015 9,7,1,500 Req'd PLBWIN/PLBNET SA_DLL32.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWADO.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWADO25.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWADO28.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWMSQL.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWODBC.DLL 9.7A 09 Jan 2015 9,7,1,500 SUNWSRV.DLL 9.7A 09 Jan 2015 9,7,1,500 DBEXPLORER.PLC 9.7A 09 Jan 2015 DBGIFACE.PLC 9.7A 09 Jan 2015 DESIGNER.PLC 9.7A 09 Jan 2015 EDITOR.PLC 9.7A 09 Jan 2015 PLBCMP.PLC 9.7A 09 Jan 2015 PLBDBUG.PLC 9.7A 09 Jan 2015 PROFILER.PLC 9.7A 09 Jan 2015 SCHEMAEDITOR.PLC 9.7A 09 Jan 2015 SUNIDE.PLC 9.7A 09 Jan 2015 WATCH.PLC 9.7A 09 Jan 2015 ADMEQU.INC 9.7A 09 Jan 2015 PLBEQU.INC 9.7A 09 Jan 2015 PLBMETH.INC 9.7A 09 Jan 2015 PLBCLI.ZIP 9.7A 09 Jan 2015 9,7,1,600 (ComCtl 6) PLBRUN.ZIP 9.7A 09 Jan 2015 9,7,1,600 (ComCtl 6) *============================================================================== Notes for DOCUMENTATION: - In the PL/B Language Reference manual under the 'IO using SQLite' section, change the 'element_count' description for the 'sun_columns' table to read as follows: element_count "This column is a number that gives the number of sequential fields assigned to this PL/B field definition. The minimum allowed value is one (1). If the element_count value is greater than one, this value corresponds to a PL/B array with an array element count of this size. The SQL data type for this column is 'integer'" - In the PL/B Web Server Reference manual, change the PLBWEB_DEFAULT keyword description to read as follows: PLBWEB_DEFAULT={ [ PlcProgName | WebPageName] } This keyword specifies the default PLB program name or a HTML webpage file to be executed when a PL/B Web client initiates a logon request that does not have anything specified in the URL logon request string. If this keyword is not specified or this keyword is assigned to be null, the PL/B Web Server runtime locates and executes the ‘answer.plc’ applying the normal PL/B Answer\Master concept. Note: 1. The {PlcProgName} program name MUST include the extension and the name is case sensitive. 2. The {PlcProgName} program name can begin with a relative sub-directory to the OS directory specified by the PLBWEB_PROGRAM_ROOT keyword. The {PlcProgName} cannot contain a fully qualified OS path. 3. If the PLBWEB_PROGDD keyword is set to an ‘off’ state, the {PlcProgName} may not contain any path information. Otherwise, the program may not be executed. When the PLB_PROGDD keyword is set to ‘off’, this configuration prevents unsolicited probing by malicious logon requests. 4. Alternatively, the PLBWEB_DEFAULT can specify the file name of a Web Page that is to be downloaded to a client browser when a PL/B Web client initiates a logon request that does not have anything specified in the URL logon request string. Example: PLBWEB_DEFAULT=demo.html PLBWEB_DEFAULT=index.html - In the PL/B Runtime Reference manual under the 'PLB_FNC Keyword' description, add notes as follows: Note: 1. If the PLB_FNC keyword is not used, the default behavior of a Windows runtime is to convert the file names to lower case. 2. If the PLB_FNC keyword is not used, the default behavior of a Linux\Unix runtime is to leave file names unmodified resulting in case sensitive file names. - In the PL/B Language Reference manual under the 'TITLE Property' note descriptions, change the following notes to read as follows: "Note: 7. When using the PL/B Web Server, the TITLE property is supported for all PL/B objects as normally expected. However, the TITLE property for a WINDOW object is restricted to only be shown in a WINDOW that has a titlebar. The WINDOW object with a WINTYPE of $MODAL and $MODELESS have a titlebar which allows the TITLE property data string to be shown. For all other WINDOW WINTYPE values, the TITLE property is not shown since there is titlebar." - In the PL/B Language Reference under the 'Menu Special Characters' descriptions, add a notes section with the following note: "Note: 1. When using the PL/B Web Server, there is no support for Menu special characters. All special characters are removed from PL/B menu strings and ignored." - In the PL/B Language Reference under the 'CREATE COMBOBOX' notes, change the following note description: "Note: 3. If {menu} is specified by a character string contained in a character variable or character literal, special characters are allowed that help define the menu. However, when using a PL/B Web server runtime, all {menu} special characters are removed and ignored without being displayed." - In the PL/B Language Reference manual under the 'COPYFILE' notes, change the following description: Note: 27. When using the PL/B Web Server, server side only copies are supported. In Addition, the COPYFILE instruction can be used to copy files from a client browser system that have been selected by an end-user 'File Upload' selection dialog. See the BUTTON 'BUTTONTYPE=$FILEINPUT' property for details for allowing client browser side file selections by an end-user. The {source} file name contains a leading '!' character to indicate that the source file is located on the client browser system. The {source} must be the file name returned by the BUTTON 'GetFileItem' method. 28. When using the PL/B Web Server, a special COPYFILE {source} file name syntax has been implemented to provide a file array index. The file array is created when an end-user selects multiple files to be uploaded using the 'File Upload' selection dialog. In this scenario, a file array index is required to identify which file is to be copied. The file array index syntax is described as follows: {source} file array syntax: !(nnn)(filename) Where: '!' is required to identify that the source file is located on the client browser system. (nnn) is a zero-based index decimal value. (filename) must be the file name returned by the BUTTON 'GetFileItem' method. Example of 2 file selected by end-user: COPYFILE "!(0)image.jpg", "c:\temp\image0.jpg" COPYFILE "!(1)image.jpg", "c:\temp\image1.jpg" Note, that is some client browser environments there is NO underlining file directory structures like for an IPAD. In this case, selected files by an end-user can be returned by the client browser with the same filename which is NOT unique for each file name selected. - In the PL/B Language Reference manual under the 'LoadXMLFile Method' section make the following changes to the Notes: Note: 7. A return value of zero (0) indicates success. Failures return one of the values described as follows: Value Meaning ... 1 A write operation has already been started 2 Unable to create specified XML file 3 Unable to open specified XML file 4 Unable to create XML parser 5 Out of memory 6 Attempt to write an attribute on an closed element 7 Tag name too long 8 Invalid tag name 9 XML data too large 10 XML file too large for memory area 11 File write error 12 Internal state error 13 No element open 14 Internal state error 15 Attribute not open 16 Error detected parsing XML data file. 200 Unable to retrieve XML file from Application Server 201 The ListView has no Columns or there is insufficient memory to process Columns. - In the PL/B Language Reference manual under the 'SaveXMLFile Method' section make the following changes to the Notes: 1. Replace the current Note (2.) with the current Note (9.). 2. I want to eliminate the reference to the I83 error. - In the PL/B Language Reference manual under the 'ALERT' instruction section change the following notes: Note: 7. For multi-line alert messages, a 0x7F character separates lines within the text by replacing the 0x7F with an appropriate character sequence applicable for the client UI: Windows - 0x7F is replaced a CR followed by a LF character sequence. Client Browser - 0x7F is replaced by a "
" tag sequence. 10. The alert message is limited to a length of 255 characters. This 255 character limit includes the expanded 0x7F character sequences as described in Note (7.) above. - In the PL/B Language Reference manual under the 'REPOSIT' instruction section, add the Note (4.) as follows: Note: 4. The {offset} value is larger than '0x3fffffffffffffff', the {offset} maximum of '0x3fffffffffffffff' is used. This maximum limit is being applied to avoid unexpected OS errors due to OS limitations. Notice, if the {offset} is a FORM variable with a negative value, the FORM variable is converted to an integer value which is used as the absolute file position. Therefore, on a 32-bit platform, a FORM variable with a '-1' value converts to a 32-bit integer value of '0xFFFFFFFF'. Likewise, on a 64-bit platform, a FORM variable with a '-1' value converts to a 64-bit integer value of '0xffffffffffffffff'. - In the PL/B Language Reference manual under the 'HTTP' instruction section, make the following changes for the Note (3.): 1. Modify the *FLAGS $HTTP_FLAG_RAW_RESULT to read as follows: " 0x00000020 - $HTTP_FLAG_RAW_RESULT -The entire unedited response received for a HTTP request is returned in the result. (9.5B) In this case, the PL/B runtime does not process nor interpret any of the Web Server response." 2. Modify the *HTTPLENGTH option to read as follows: "a Numeric Variable that returns the value as specified by the 'Content-Length:' field that is returned in the HTTP header. If the value to be stored in the {nvar} is too large and must be truncated, the OVER flag is set. This option is ignored when the *FLAGS $HTTP_FLAG_RAW_RESULT is used." 3. Modify the *HTTPRESULT option to read as follows: "a Character String Variable that only receives the result that was sent by the web server as a response to the HTTP command. A normal expected result may be a string '200 OK'. The EOS flag is set if the data stored into the {svar} is too large and it has to be truncated. This option is ignored when the *FLAGS $HTTP_FLAG_RAW_RESULT is used." 4. Modify the *HTTPTYPE option to read as follows: "a Character String Variable that only receives the result that was sent by the web server as a response to the HTTP command. A normal expected result may be a string '200 OK'. The EOS flag is set if the data stored into the {svar} is too large and it has to be truncated. This option is ignored when the *FLAGS $HTTP_FLAG_RAW_RESULT is used." - In the PL/B Language Reference manual under the 'CREATE PICT' section, change the Note (6.) table to include the following: 0x5 - JPG - In the PL/B Language Reference manual under the 'CUSTOMFORMAT Property' section, change the following: A. Change the Note (5.) to read as follows: "Date and time format elements are replaced by the actual date and time. They are defined by the following groups of characters as required by the Windows OS DateTimePicker control:" B. Add a Note (6.) which reads as follows: "Date elements are replaced by the actual date. They are defined by the following groups of characters as required by the jQuery Datepicker Widget control:" "Date elements are replaced by the actual date. They are defined by the following groups of characters when executing using the PL/B Web Server. In this case, these date elements are automatically translated from Windows OS formats to jQuery Datepicker Widget control formats." Element Description These date format string sequences are the same as expected for the Windows OS DateTimePicker control. These format string fields are translated to the format string fields expected for the jQuery DatePicker control when using the PL/B Web Server. d - The one or two-digit day. dd - The two-digit day. Single-digit day values are preceded by a zero. ddd - The three-character weekday abbreviation. dddd - The full weekday name. M - The one or two-digit month number. MM - The two-digit month number. Single-digit values are preceded by a zero. MMM - The three-character month abbreviation. MMMM - The full month name. yy - The last two digits of the year (that is, 1996 would be displayed as "96"). yyyy - The full year (that is, 1996 would be displayed as "1996"). Not translated for PL/B Web Server EDITDATETIME object: If these character sequences are specified\exist in the 'CUSTOMFORMAT' format string, they are not translated and they remain in the format string sent to the client browser jQuery DatePicker control. h - The one or two-digit hour in 12-hour format. hh - The two-digit hour in 12-hour format. Single-digit values are preceded by a zero. H - The one or two-digit hour in 24-hour format. HH - The two-digit hour in 24-hour format. Single-digit values are preceded by a zero. m - The one or two-digit minute. mm - The two-digit minute. Single-digit values are preceded by a zero. t - The one-letter AM/PM abbreviation (that is, AM is displayed as "A"). tt - The two-letter AM/PM abbreviation (that is, AM is displayed as "AM"). C. Add a Note (7.) which reads as follows: "When using the PL/B Web Server, the CUSTOMFORMAT property is not supported when the PL/B EDITDATETIME FORMAT property is set to $DTFORMATTIME." - In the PL/B Runtime Reference Manual, change the I72 error description to read as follows: I72 Simple COPYFILE I72 Error: "When using the simple syntax form, the error sub code is the OS code values as described in the 'I/O Error Sub-codes' section for additional error subcode information." Enhanced COPYFILE I72 Error: "When using the complex (enhanced) syntax, error subcodes provide additional information as follows: 1: Unable to open the {source} file. 2: ...etc" - In the PL/B Runtime Reference Manual, change the Notes to read as follows: Note 7. Value Keyword The third state is... 0 $ON disabled. 1 $OFF enabled 2 $AUTOTRISTATE enabled auto mode Note 9. 9. When the AUTO TRISTATE mode is being used, the CHECKBOX object is set to a style which causes the Windows OS to automatically change that CHECKBOX states to 'checked', 'indeterminate', and 'unchecked' by user click actions. This automatic state change by the Windows OS always occurs and is reflected before any PLB user event is executed. Therefore, the PLB user program does not have to track and change the CHECKBOX states. - In the PL/B Runtime Reference manual under the 'M(MailSend) Errors' section, add the following error information: Mnn Value Operand 20 *OPENSSL option. 21 *ERRORLIST option. 22 *STARTTLS option. sss 50 Email Server 220 Ready not received after 'STARTTLS' command. - In the PL/B Language Reference manual under the MAILSEND instruction add the following *STARTTLS option in the Note (3.). Note: 3. *STARTTLS - This option is used to invoke a SMTP extension to use TLS (Transport Layer Security) which provides private and authenticated communications. This option first accesses an email server using unsecured communications to received the server configuration. If the server configuration is set to support STARTTLS, the MAILSEND establishes a SSL secured connection before continuing to send the email message. The *OPENSSL and the *STARTTLS options CAN NOT be used in the same MAILSEND instruction. - In the PL/B Language Reference manual under the 'Click Event' section, add the following Note (9.). Note: 9. The Click Event is generated for a DATALIST object when a left mouse click action or when a keypress action ( up arrow, down arrow, left arrow, right arrow, home, end, page-up, or page-down ) is taken. Also, the event modifier value for the Click Event is set to a value of zero when a left mouse click action generates the event. The event modifier value is set to a value of 1 if the Click Event was generated by a keypress action. - In the PL/B Language Reference manual, add the RUNTIME object description as follows: ----------------------------------------------------------------------- RUNTIME PLB Web Only, 9.7A The RUNTIME instruction provides access to the web server allowing a program to retrieve information about the runtime environment. To define a RUNTIME, use the following statement format: (1) [label] RUNTIME [%] (2) [label] RUNTIME (arraysize) (3) [label] RUNTIME ^ (4) [label] RUNTIME ^,{target} (5) [label] RUNTIME ^(arraysize) (6) [label] RUNTIME ^(arraysize),({target}),...,({target}) (7) [label] RUNTIME Where: label Optional. A Program Execution Label. % Optional. Denotes the item as being GLOBAL. arraysize Required. An integer decimal constant, CONST variable, or EQUATEd value indicating the number of array items. ^ Optional. Denotes the item as being a POINTER. target Required. The name of a previously defined data item of the same type. Flags Affected: NONE Note the following: 1. The RUNTIME object represents the server's runtime component. 2. There are no properties for a RUNTIME object. 3. There are no events for a RUNTIME object. 4. There are no GUI PL/B instructions other than GUI methods that are used with a RUNTIME object. Events: NONE Properties: NONE Methods: GetDir Method (RUNTIME) See description below for Details - In the PL/B Language Reference manual in the VARIANT section, change the Note (5.) to read as follows: Note: 5. When using the PL/B Web Server, this object is created and supported as a server side object. This object is NOT available nor used at the client browser. - In the PL/B Language Reference manual in the SetItemState Method (LISTVIEW) section, modify the Note (1.) to include the following description after the state value table: "When using the PL/B Web Server, only the LVIS_FOCUSED and LVIS_SELECTED state values are supported. Any other LVIS state values are meaningless and not used." - In the PL/B Language Reference manual in the GetItemState Method (LISTVIEW) section, modify the Note (1.) to include the following description after the state value table: "When using the PL/B Web Server, only the LVIS_FOCUSED and LVIS_SELECTED state values are supported. Any other LVIS state values are meaningless." - In the PL/B Language Reference manual in the GetItemState Method (LISTVIEW) section, modify the Note (1.) to make the LVIS_CUT and LVIS_DROPHILITED descriptions to read as follows: Value Constant The item ... 0x4 LVIS_CUT is marked for a cut-and-paste operation. 0x8 LVIS_DROPHILITED is highlighted as a drag-and-drop target. - In the PL/B Language Reference manual in the GetNextItem Method (LISTVIEW) section, modify the Note (1.) to include the following description after the state value table: "When using the PL/B Web Server, only the LVIS_FOCUSED and LVIS_SELECTED state values are supported. Any other LVIS state values are ignored and not used." - In the PL/B Language Reference manual in the GetStringWidth Method (LISTVIEW) section, add the Note (5.) to read as follows: "Note: 5. When using the PL/B Web Server, the 'GetStringWidth' method is not supported and the {return} value is always zero." *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBSERVE, PLBSERVET (WINDOWS) - Modified to allow the PLBCS_DEFAULTCWD setting to detect and initiate retry logic when a UNC path is being used and a network error occurs. This works around a problem where the PLBCS_DEFAULTCWD keyword was not taking affect when a UNC path was used and the PLBSERVE\PLBSERVET runtimes were automatically being started as a Windows Service after a reboot. - Modified to output a 'd3' log entry to reflect the current PLBCS_DEFAULTCWD keyword setting. - Modified to output a 'd3' log entry to identify the current child type as being 'process' or 'threaded'. ------------------------------------------------------------------------------- PLBSERVE(WINDOWS) - Corrected a problem where the PLBCS_DEFAULTCWD was not being used in a child process as expected. ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - The following HTML, JS, and CSS files have been changed in the 9.7A release. These files MUST be updated to be consistent with PLBWEBSRV server changes for the 9.7A release. plbwebclose.html plbwebstart.html plbwebbasic.js plbwebctls.js ------------------------------------------------------------------------------- PLBWEBSRV (Windows) - Modified the PL/B Web Server to support the VARIANT object. In this case, the VARIANT object is ONLY created and used at the server. ------------------------------------------------------------------------------- PLBWEBSRV - Added support for the BACKSTYLE property for the GROUPBOX, SHAPE, and STATTEXT objects. With this change, the TRANSPARENT background style is now supported for these objects. - Modified the PL/B Web Server to support the VARIANT object. In this case, the VARIANT object is ONLY created and used at the server. - Modified the PICT object to support the BACKSTYLE property. This change was made to allow an image with a transparent image to be rendered properly on the client browser. - Added 'SSL' support for the PL/B Web Server. The SSL support requires a SSL certificate that must exist and available at the system where the PL/B Web Server is executing. SSL Certificate General Description: "SSL Certificates are small data files that digitally bind a cryptographic key to an organization’s details. When installed on a web server, it activates the padlock and the https protocol (over secured port) and allows secure connections from a web server to a browser. Typically, SSL is used to secure credit card transactions, data transfer and logins, and more recently is becoming the norm when securing browsing of social media sites." PL/B Web Server SSL Keywords: PLBWEB_SSL_ADDRESS={ ip | url[:portnum] } (Required if SSL used) This keyword is required to create a secured listening socket to be created for the PL/B Web Server that allows PL/B Web clients to logon and execute PL/B programs using a SSL connection. The {portnum} is optional and defaults to a value of ‘8082’ if it is not specified. This secured listening socket connection requires that the HTTPS protocol messages are to be used by industry standard Web Browsers. Example: PLBWEB_SSL_ADDRESS=127.0.0.1 Uses default port number of 8082. PLBWEB_SSL_ADDRESS=0.0.0.0:8082 Uses current server system IP address and sets the port number to 8082. PLBWEB_SSL_ADDRESS=192.168.1.106:8082 Used current system IP addresses and sets the port number to 8081. Note: 1. Both the PLBWEB_SSL_ADDRESS and PLBWEB_ADDRESS keywords can be specified together in the same PLBWEBSRV INI configuration file. When both keywords are specified, two logon listening sockets are created where one is used for secured socket connections and the other is used for unsecured socket connections. Each of these listening sockets must have a different\unique port number. 2. If only one keyword is specified as PLBWEB_ADDRESS or PLBWEB_SSL_ADDRESS, only one listening socket is created to provided either unsecured or secured socket connections. 3. The Sunbelt PWS server is a standard web server just as Apache or IIS and as such no data encryption or compression is done by default. This is same as if you were using an HTML form and interfacing to a web server. If you desire an secure connection, you must use SSL which the Sunbelt PWS supports when the PLBWEB_SSL_ADDRESS is configured. PLBWEB_SSL_DEFAULT={ [program.plc | page.html] } (Optional) This keyword is optional and has the same functional description as the PLBWEB_DEFAULT keyword. If the PLBWEB_SSL_DEFAULT keyword is specified, then it defines the default behaviors for the SSL secured logon channel. However, if this keyword is not specified, the PWS uses the setting of the PLBWEB_DEFAULT keyword if it is being used. PLBWEB_SSL_ROOT={ OsPath } (Optional) This keyword is optional and has the same functional description as the PLBWEB_ROOT keyword. If the PLBWEB_SSL_ROO keyword is specified, then it defines the behaviors for the SSL secured logon channel. However, if this keyword is not specified, the PWS uses the setting of the PLBWEB_ROOT keyword if it is being used. PLBWEB_SSL_CERTFILE={certfile} (Optional) This keyword is optional and is used to specify the file name of a SSL certificate used to qualify the PL/B Web Server when using a SSL secured logon channel. If this keyword is not specified in the PL/B Web Server INI configuration file, the PWS defaults to a SSL certificate file named 'cacert.pem'. When this keyword is specified, the {certfile} can be assigned as a file name only that must exist in the current working directory of the PWS. In addition, the {certfile} can be assigned as a file name with an OS full path or a partial OS path relative to the current working directory of the PWS. PLBWEB_SSL_KEYFILE={keyfile} (Optional) This keyword is optional and is used to specify the file name of a SSL certificate key(s) used to support the SSL operations for the PL/B Web Server when using a SSL secured logon channel. If this keyword is not specified in the PL/B Web Server INI configuration file, the PWS defaults to a SSL certificate key file named 'privkey.pem'. When this keyword is specified, the {keyfile} can be assigned as a file name only that must exist in the current working directory of the PWS. In addition, the {keyfile} can be assigned as a file name with an OS full path or a partial OS path relative to the current working directory of the PWS. Notes: 1. When the PL/B Web Server is configured to provide a SSL secured logon channel, a server SSL certificate MUST be provided and available on the system executing the PWS. 2. A Windows PL/B Web Server requires access to the 'ssleay32.dll' to provide a SSL secured logon channel. If the 'ssleay32.dll' can be found and loaded by the PWS runtime, the PWS runtime terminates immediately without starting. Most Unix\Linux OS systems come with OpenSSL installed, therefore the Unix\Linux PL/B Web Server is statically linked so the OS can automatically load the OpenSSL libraries when the PWS runtime is loaded by the OS. 3. To support PL/B development of PWS applications, a self-signed certain may be generated and used during the development period. In this case, one of the following scenarios can be used to generate a SSL self-signed certificate: A) Use the 'openssl' command and execute the following commands in a Windows command shell. Please note that the 'openssl.exe' may already exist on a user's system in a directory like 'c:\openssl\bin'. Otherwise, the 'openssl.exe' command may need to be downloaded from 'https://www.openssl.org'. "openssl genrsa -our privkey.pem 2048" "openssl req -new -x509 -key privkey.pem -out -out cacert.pem -days 1095" B) As an alternate, the user can go to the following link and get a self-signed certificate. "http://www.selfsignedcertificate.com/" 4. To obtain a server SSL certificate that is NOT self-signed, the user should contact their Internet Service Provide. - Modified the PL/B Web Server to support the BUTTONTYPE property for a BUTTON object to allow a PWS only button type of '$FILEINPUT' or value 3 to be used. The 'BUTTONTYPE=$FILEINPUT' is used to create BUTTON object that automatically invokes a client browser 'File Upload' selection dialog. This selection dialog allows an end user to select file(s) that can subsequently be retrieved\copied from the client browser environment to the PWS server using a PL/B COPYFILE instruction. - Modified the BUTTON object to support a CHANGE event that is generated when a 'BUTTONTYPE=$FILEINPUT' is being used and an end-user has made a selection from the client browser 'File Upload' selection dialog. Note: 1. The CHANGE event for a BUTTON object is ONLY generated when executing under a PL/B Web Server and a file has been selected by an end-user using the client browser 'File Upload' selection dialog. For this event; the event character is always 0x20; the event result is always 0; and the event modifier is always 0. 2. When this CHANGE event for a BUTTON object is processed, the PL/B logic can use the BUTTON 'GetFileCount' and 'GetFileItem' methods to retrieve the end-user file selection information. - Modified the BUTTON object to support 3 new methods named 'GetFileCount', 'GetFileItem', and 'SetFileOptions' that can be used when executing under the PL/B Web Server. These methods are described as follows: ............................................................... . GetFileCount Method for BUTTON . The GetFileCount method can be used to retrieve the number of files that have been selected by an end-user using a BUTTON 'File Upload' selection dialog for a client browser. This method only returns a file count when executing using the PL/B Web Server. Otherwise, this method always returns a value of zero. The method uses the following format: [label] {object}.GetFileCount GIVING {return} Where: {label} is an optional Program Execution Label. {object} is a required BUTTON object to be accessed. {return} is a Numeric variable that returns the file selection count. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is always cleared. 2. The ZERO flag is set to be TRUE when the return value is zero. Otherwise, the ZERO flag is set to false when a non-zero value is returned. 3. The OVER flag is set to be TRUE if the {return} variable is too small to store that value without being truncated. 4. This method is only returns a file selection count when executing using the PL/B Web Server. ............................................................... . GetFileItem Method for BUTTON . The GetFileItem method can be used to retrieve the file names that have been selected by an end-user using a BUTTON 'File Upload' selection dialog for a client browser. This method only returns file selection names when executing using the PL/B Web Server. The method uses the following format: [label] {object}.GetFileItem GIVING {return}: USING [*Index=]{index}: [*Flags=]{flags} Where: {label} is an optional Program Execution Label. {object} is a required BUTTON object to be accessed. {return} is a Character String variable that returns the file selection information. {index} is a Numeric variable or decimal number that is a zero-based index into an array of file selection of files being retrieved. This method parameter is required. {flags} is a Numeric variable or decimal number whose value provides bit mask values that are used to identify the type of data being retrieve for a given file selection. This method parameter is required. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set if the {return} Character String variable to too small to retrieve the file selection data. 2. The ZERO flag is always cleared. 3. The OVER flag is always cleared. 4. If the {flags} bit mask value is zero, the {return} Character String variable is returned as a NULL variable. Otherwise, the {flags} bit mask values are described as follows: Flag Values Description 0x00000001 Return the file name of selection. 0x00000002 Return the file type of selection. 0x00000004 Return the file size of selection. Any combination of these bit values can be used. If multiple bit mask values are specified in the {flags} value, the data fields (name, type, size) are separated by a '|' delimiter and returned in the {return} variable. Example: but.GetFileItem GIVING S$CMDLIN USING 0, 5 . . S$CMDLIN could contain: . . filename.ext|2048 . ............................................................... . SetFileOptions Method for BUTTON . The SetFileOptions method can be used to set the specific options to be used by the client browser 'File Upload' selection dialog which can be invoked using a BUTTON object with the 'BUTTONTYPE=$FILEINPUT' type. This being only takes affect when executing using the PL/B Web Server. The method uses the following format: [label] {object}.SetFileOptions GIVING {return}[: USING [*Filter=]{filter}][: [*Flags=]{flags}] Where: {label} is an optional Program Execution Label. {object} is a required BUTTON object to be accessed. {return} is a Numeric Variable whose value is always set to a zero value. {filter} is a Character String variable or literal that contains a filter string that is applied by a client browser 'File Upload' selection dialog to restrict the end-user file selections. This method parameter is optional. {flags} is a Numeric variable or decimal number whose value provides bit mask values that are used control behaviors that are applied to the client browser 'File Upload' selection dialog. This method parameter is optional. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is always cleared. 2. The ZERO flag is always set. 3. The OVER flag is always cleared. 4. The {flags} bit mask values are described as follows: Flag Values Description 0x00000000 Restrict to select only one file. 0x00000001 Allow multiple files to be selected. 5. The optional {filter} string can be specified to restrict the selection criteria to be applied by the client browser 'File Upload' selection dialog. The {filter} string can be specified as a comma delimited list of MIME types as described for the 'accept' attribute of a HTML tag. See the following browser link for more details on acceptable MIME types that can be use: http://www.w3schools.com/tags/att_input_accept.asp Example of {filter} MIME Types: FileSel.SetFileOptions Using *Filter="" - Reset to NOT use any filtering. FileSel.SetFileOptions Using *Filter="image/png" - Set the filter to png images only. MOVE "image/gif,image/jpeg,image/png", S$CMDLIN FileSel.SetFileOptions Using *Filter=S$CMDLIN - Set the filter to images with gif, jpeg, and png types. FileSel.SetFileOptions Using *Filter="image/*" - Set the filter to all image types. - Support to allow a COPYFILE instruction to be executed under the PL/B Web Server has been implemented to allow end-user selected files to be copied from a client browser system to the PWS server. Due to security constraints implemented by client browser environment, ONLY files selected by an end-user using a 'File Upload' selection dialog controlled by a browser can be copied from the client system. Therefore, changes to allow a 'BUTTONTYPE=$FILEINPUT' property have been implemented for a BUTTON to allow end-user file selections at a client browser that can then be copied from the client system to the PWS system using the COPYFILE instruction. - Modified the RUNTIME object to support a method named 'GetDir' that allows directories used by the runtime to be returned to the PL/B program. ............................................................... . GetDir Method for RUNTIME object . The GetDir method can be used to retrieve the directories that are currently in use for a PL/B runtime. This method has been added to support COPYFILE execution in the PL/B Web Server environment. The method uses the following format: [label] {object}.GetDir GIVING {return}: USING [*Type=]{dirtype} Where: {label} is an optional Program Execution Label. {object} is a required RUNTIME object to be accessed. {return} is a Character String variable that receives the current directory name and path being used by the RUNTIME object for the specified {dirtype} value. {type} is a Numeric variable or decimal number that identifies the specific RUNTIME directory type to be returned in the {return} Character String variable. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set TRUE if the {return} Character String variable is too small to receive the directory data without being truncated. 2. The ZERO flag is always cleared. 3. The OVER flag is always cleared. 4. The {dirtype} values define the type of directory information to be returned: Type Values Description 0 The current working directory is returned. 1 The directory specified by the PLBWEB_PROGRAM_ROOT keyword is returned. If this keyword is not specified, the {return} variable is returned as a NULL variable. 2 If a client browser logs on using a SSL connection, this directory is used to support that connection. The directory specified by the PLBWEB_SSL_PROGRAM_ROOT is returned when it exists. If the PLBWEB_SSL_PROGRAM_ROOT does not exist, the PLB_PROGRAM_ROOT keyword is returned. 3 The directory specified by the PLBWEB_ROOT keyword is returned. If this keyword is not specified, the {return} variable is returned as a NULL variable. 4 If a client browser logs on using a SSL connection, this directory is used to support that connection. The directory specified by the PLBWEB_SSL_ROOT keyword is returned if it exists. If the PLBWEB_SSL_ROOT does not exist, the PLBWEB_ROOT keyword is returned. - Modified the CLIENT object to support a method named 'GetState' that can be used to return state flags that reflect the current execution environment being used for the client browser. ............................................................... . GetState Method for CLIENT object . The GetState method can be used to retrieve the current state information being used for the client browser environment. The method uses the following format: [label] {object}.GetStat GIVING {return}: USING [*StateMask=]{mask} Where: {label} is an optional Program Execution Label. {object} is a required CLIENT object to be accessed. {return} is a Numeric variable that is returned as a value of 1 or 0. {mask} is a Numeric variable or decimal number whose value identifies a bit mask where each bit corresponds to a client state flag. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is always cleared. 2. The ZERO flag is set TRUE if the {return} value is zero. Otherwise, the ZERO flag is set to FALSE. 3. The OVER flag is always cleared. 4. The {return} value of 1 is returned when all states for all {mask} state flags are 1. Also, note that a value of 1 is returned if the {mask} has a value of zero. A {return} value of 0 is returned when any one state corresponding to a {mask} state flag is zero. 5. The {mask} bit values define the state flags to be returned. Mask Values Description 0x00000000 When there are no state flags specified, the {return} value is always returned as a value of 1. 0x00000001 This state flag identifies when a client is logged on using a SSL connection or not. - Modified the CLIENT object to support a method named 'GetLocation' that retrieves client browser latitude and longitude coordinates. These coordinates can be used be used to map the location of the client browser connected to the PL/B Web Server. ............................................................... . GetLocation Method for CLIENT object . The GetLocation method can be used to retrieve the client browser latitude and longitude coordinates. These coordinates are returned in a delimited character string. The method uses the following format: [label] {object}.GetLocation GIVING {return}[: USING [*Options=]{options}] Where: {label} is an optional Program Execution Label. {object} is a required CLIENT object to be accessed. {return} is a Character String variable that receives latitude and longitude coordinates where they are separated by a comma delimiter. {options} is a Numeric variable or decimal number that identifies behavior flags for this method. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is set TRUE if the {return} Character String variable is too small to receive the location coordinates. 2. The ZERO flag is always cleared. 3. The OVER flag is always cleared. 4. There are no special {options} behavior bit values defined at this time. 5. The latitude and longitude coordinates are returned as ASCII number character strings separated by a comma delimiter. format: {latitude},{longitude} Example data format: NN.nnnnnnnnnnnnnnn,MM.nnnnnnnnnnnnnnn 37.006708599999996,-92.98609249999999 Example Program Logic: Panel PANEL AllData DIM 300 Html DIM 300 . CREATE PANEL=... ACTIVATE PANEL . Client.GetLocation Giving AllData . Cmatch AllData To "E" If Not Equal Pack Html1 Using "" Endif . Panel.InnerHtml Using Html ... - The ALERT instruction has been modified to replace any 0x7F characters in the {message} body data with a "
" element when executing under the Plb Web Server. - Modified the LISTVIEW 'LoadXmlFile' method to return a result of '200' when there is a problem accessing the input '.xml' file under the Application Server. Also, a return error result value of '201' is now generated when the 'Options' $LV_XMLRD_USECOLUMNS bit value is being used and there are no columns in the LISTVIEW or there is insufficient memory to process existing columns. See the PL/B Language Manual 'LoadXMLFile Method' Note (7.) for a description of all possible error results. - Modified the PICT object to support the AUTOSCALE, SCALE, PICTSIZEH, and PICTSIZEV properties. - Modified the EDITNUMBER and EDITDATETIME (time) control to support the change event when the spin control is used. - Corrected a SETPROP problem where the Red and Blue components of a RGB value used for the BGCOLOR, BDRCOLOR, and FGCOLOR properties were being reversed when executing under a Plb Web Server runtime. - Corrected a problem for the LISTVIEW method named 'SaveXmlFile' when processing columns. This problem was preventing the creation of the '.xml' file and the 'SaveXmlFile' method was returning an error value of '8' as a symptom. - Corrected a memory leak\loss problem in the PWS child tasks for the the mini-server. - Corrected a problem where the GROUPBOX was attempting to show a title when there was NO title to be shown. - Corrected a problem where docking of an object was NOT occurring for the ACTIVATE and DEACTIVATE of an object. - Corrected a problem where the GETITEM for a COMBOBOX object was not working and did not return any data. - Corrected a problem where a STATTEXT was showing extra '&' characters characters using SETPROP TEXT and SETITEM instructions. - Corrected a problem where a Modal Dialog WINDOW could be made visible during a FORMLOAD operation unexpectedly. This correction REQUIREs an updated 'plbwebctls.js'. - Corrected a problem where a MODAL WINDOW could cause an unexpected O105 error on exit from a LOAD event generated by a FORMLOAD. - Corrected a problem where a WINDOW object using the 'WINPOS=$MAXIMIZE' property did not fill the client browser viewport with the background color of the WINDOW object. - Corrected a problem where the WINDOW HEIGHT and WIDTH properties did not properly change the client browser viewport size. In addition, the HEIGHT property did not take into account a MENU if it is being used. This could cause an unexpected height to be set for the client browser viewport. - Corrected a potential GPF when using a MODAL dialog. - Corrected a problem where the 'SQLITE;;' driver was not implemented for the DBCONNECT instruction. This problem was causing an unexpected D201 error. - Corrected DATALIST issues where the methods named 'GetFirstSel', 'GetNextSel', and 'GetSel' were not using zero-based indices for selections. - Corrected a GPF problem that would occur when a COMBOBOX object was created with a NULL {menu} string. Example of GPF: cb COMBOBOX index FORM 1 . CREATE cb=1:10:1:20, "Test", "", VISIBLE=1 //Caused GPF! - Corrected a problem where special control characters in a COMBOBOX {menu} string were being displayed in the combobox items. These special control characters are now removed\ignored. - Corrected a problem where the 'System Color Constants' ($BTNFACE, ...etc) did not work. This problem existed for all color properties. - Corrected a problem where a SHAPE object for a rectangle did not have a border. - Corrected a problem where the BGCOLOR property for the Modeless and Modal WINDOW objects did not work. - Corrected a problem where the EDITDATETIME 'Calendar' was coming up under the window of a MODAL or MODELESS WINDOW object that contained the EDITDATETIME object. - Corrected a problem where the $CHANGE event was not working as expected for the EDITDATETIME object when selecting a date from the object 'Calendar'. - Corrected a problem where a LISTVIEW 'LoadXMLFile' method could cause a GPF error. - Corrected a GPF error that could occur if a SHUTDOWN instruction was executed while a MODAL WINDOW was the current active window. - Corrected LISTVIEW object problems where the Click and Double Click events did not work. - Corrected a problem where the EDITNUMBER background and foreground colors did not work. - Corrected a problem where the EDITNUMBER default border was not being setup\presented properly giving an unexpected object size. - Corrected a problem where the EDITTEXT border usage was not working properly resulting in an unexpected object size. - Corrected a problem where the EDITTEXT SelectAll method did not work. - Corrected a problem where the EDITNUMBER STATIC and READONLY properties did not get applied. - Corrected a problem where a LABELTEXT object using the MULTILINE property did not honor embedded CR and LF characters in the TEXT data stream. - Corrected a problem where the EDITNUMBER was being clipped such that the right side border was not being shown. - Corrected a problem where the LISTVIEW 'GetNextItem' method did not work and was always returning a value of '-1'. - Corrected a problem where the 'GETITEM TABCONTROL, 0, nvar' instruction was returning an invalid value. - Modified the LISTVIEW line item focus to better distinguish when the LISTVIEW has the focus or not. If the LISTVIEW does not have the focus, a lighter shade color is used for the dashed rectangle and background highlight color when applicable. - Corrected a problem where a horizontal or vertical line was not being shown on the browser client. - Corrected a problem where the LINE object was not appearing for a horizontal or vertical line. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLBWEBSRV (Windows) - Corrected a problem where a REPOSIT using a negative FORM {offset} value would generate an 'I08 subcode 5 WINERR: 0x83' when executing a runtime built with 64-bit platform support. It should also be noted that a FORM variable value for the {offset} is first converted to a 64-bit integer value. With this change, any runtime built with 64-bit platform support will limit the {offset} integer value (after any conversion) to a maximum of hex '0x3fffffffffffffff' or decimal '4,611,686,018,427,387,903'. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV - Updated the runtimes to use the latest SQLite version 3.8.7. - Added support for a new keyword for SQLIO operations that specify a SQL command that is sent to initialize a SQL Database engine when a SQLIO connection occurs. The SQL initialization command is sent exactly as specified by the user string assigned to the keyword. The SQLIO initialized keyword includes the name of the database being connected. The new keyword is formatted as follows: Formats: PLB_SQLIO_INIT={SqlCommand} //Uses 'Default' database PLB_SQLIO_INIT_dbname ={SqlCommand} //Uses user 'dbname' database Where: 'dbname' Is the name of the database as specified in the Sun_Sqlio_Databases table or the static default database name of "Default" when the '_dbname' is not used in the keyword name. Example: PLB_SQLIO_INIT={SqlCommand} PLB_SQLIO_INIT_UserDatabase={SqlCommand} {SqlCommand} Is an SQL database initialization string as specified by the end-user. The end-user is responsible for ensuring that the {SqlCommand] syntax is correct and can be accepted by the SQL Database being connected for SQLIO operations. Warning: 1. The SQLIO operations are implemented to execute SQL statements to simulate PL/B native IO. Successful simulation depends on expected behaviors and SQL expression processing for a Database Engine. 2. The SQLIO operations are NOT implemented to replace PL/B DBxxxxx statements and associated behaviors. 3. If the SQLIO initialization keywords are used resulting in unexpected SQL table behaviors, the PL/B developer and end-user are responsible for unexpected PL/B IO simulation behaviors. Sunbelt will not modify the SQLIO PL/B IO simulation algorithms to accommodate unexpected SQL table behaviors caused by a user specified SQLIO initialization command. - Modified the MAILSEND trace output to use a date format of YYYY-MM-DD to be more consistent for international viewing. - Added Ansi encoding for built-in font tables to correct alignment problems using *RIGHT and *CENTER controls when national characters are being used for Sunbelt PDF output. - Modified the '-d3' logging to include the JPEG version. - Added a new keyword named 'PLB_SQLIO_SCOPEID={on|off}' which can be specified in the runtime INI configuration to force the PL/B runtimes to use the SQL Server 'SCOPE_IDENTITY' function to get the last IDENTITY value inserted into an IDENTITY column in the same scope. It has been reported that the PL/B SQLIO FPOSIT operation could return an invalid IDENTITY value when using the Microsoft Server with multiple PL/B user and non-PL/B user applications are changing the same SQL table. When the 'PLB_SQLIO_SCOPEID' keyword is NOT being used or set the OFF, the PL/B runtimes use the SQL Server 'IDENT_CURRENT' identity value which may rarely return the unexpected value. When the 'PLB_SQLIO_SCOPEID' is set to ON, the PL/B runtimes use the SQL Server 'SCOPE_IDENTITY' function to fetch the last identity value that is ONLY applicable for the current user scope and session. - Added a new keyword named 'DO8BITATTRCONV={dnumnvar}' for the GETMODE and SETMODE instructions. This keyword can be used to force the *COLOR control for a KEYIN\DISPLAY to process the input color mask as an 8-bit value that is converted to a 16-bit runtime attribute. This keyword is provided to allow use of 8-bit *COLOR values that allow legacy programs to execute without having to be changed. - Added a new option named *STARTTLS to the MAILSEND instruction. This option can be used to cause the MAILSEND to use the TLS ( Transport Layer Security ) to access an Email Server. - Corrected a Sunbelt PDF problem where a normal font without bold\italic could cause the font to be used with a wrong attribute such as oblique or black. - Corrected a problem where the MAILSEND was generating an extra empty between the message header and the message body. This extra empty line was resulting in a blank line at the beginning of an email message body. - Corrected a problem where the PRINT *TAB print control value was being limited to a value of 255. This restriction could cause unexpected results if the *TAB value was larger than 255. This change allows the PRINT *TAB value to be limited to 512 for the print column position. ------------------------------------------------------------------------------- PLBWIN, PLBNET, ALL GUI CLIENTS - Modified the PICT object to detect and convert JPG CMYK images into a RGB bitmap. This allows a CMYK JPG to be displayed using the PICT object. - Modified the CHECKBOX object to support an automatic Tristate mode. This Tristate mode invokes a Windows OS checkbox style that causes the checkbox control states to be changed automatically by the Windows OS without requiring any execution of PLB instructions. See the PL/B Language Reference Manual for more details. - Added a new optional parameter named 'HWND={dnumnvar} to the ChooseColor method for the COLOR object. The HWND parameter allows the PLB program to specify a Windows HWND to define the owner Window for the color dialog. These methods are described as follows: ............................................................... . ChooseColor Method for COLOR . The ChooseColor method creates a color dialog that allows the user to select a color for a COLOR object. The method uses the following format: [label] {object}.ChooseColor GIVING {return} USING [*Flags=]{flag}[: [*Hwnd=]{hwnd}] Where: label Optional. A Program Execution Label. object Required. A COLOR object that has been created. return Optional. A Numeric Variable that indicates the success or failure of the method. flags Required. A Numeric Variable or decimal number that specifies a bit map value that initializes the dialog box. hwnd Optional. A Numeric Variable or decimal number that specifies the HWND handle a Window that is to be the owner of the Choose Dialog Window. - Added a new optional parameter named 'HWND={dnumnvar} to the ChooseFont method for the FONT object. The HWND parameter allows the PLB program to specify a Windows HWND to define the owner Window for the choose font dialog. These methods are described as follows: ............................................................... . ChooseFont Method for FONT . The ChooseFont method activates a Windows Font Dialog that allows a user to select a font for use in a program. The method uses the following format: [label] {object}.ChooseFont [[GIVING {return}][USING: [*Flags=]{flags}][: [*HDC=]{hdc}][: [*SIZEMIN=]{min}][: [*SIZEMAX=]{max}][: [*COLOR=]{color}]]: [*HWND=]{hwnd}]]] Where: label Optional. A Program Execution Label. object Required. A WINDOW object that is accessed. return Optional. A Numeric Variable that receives zero if the font was selected without error. A non-zero value is returned when an error occurs for the font selection. flags Optional. A Numeric Variable or decimal number that specifies a bit map value for state flags that can be applied to control some aspects of the Font Dialog. hdc Optional. A Numeric Variable or decimal number that specifies a Windows handle for a printer device context as returned using the GETFILE HDC keyword instruction. min Optional. A Numeric Variable or decimal number that specifies the minimum font size presented in the font dialog. max Optional. A Numeric Variable or decimal number that specifies the maximum font size presented in the font dialog. color Optional. A COLOR object that has been previously created. hwnd Optional. A Numeric Variable or decimal number that specifies the HWND handle a Window that is to be the owner of the Font Dialog Window. - A new method named 'PreventKeyClickEvent' has been added for a DATALIST object. This method can be used to prevent any Click Events for a DATALIST object that normally occur when keypress actions occur using the 'up arrow', 'down arrow', 'left arrow', 'right arrow', 'home', 'end', 'page up', or 'page down' keys. These methods are described as follows: ............................................................... . Method PreventKeyClickEvent for DATATLIST . The PreventKeyClickEvent method allows the Click Event as generated by key actions for a Datalist to be enabled or disabled under program control. The method uses the following format: [label] {object}.PreventKeyClickEvent GIVING {return}: USING [*Value=]{value} Where: label Optional. A Program Execution Label. object Required. A DATALIST object that has been created. return Optional. A Numeric Variable that is always returned as 0. value Required. A Numeric Variable or decimal number that identifies whether the key action Click Event for the DATALIST is to be enabled or disabled. Flags Affected: EOS, OVER, ZERO Note: 1. The {return} value is always returned as a value of zero. The ZERO flag is always set. The EOS and OVER flags are always cleared. 2. When the input {value} parameter is zero, the DATALIST Click Events caused by end-user key action is disabled. When the input {value} is non-zero, the DATALIST Click Events caused by end-user key actions is enabled. 3. This method can be used to implement a DATALIST item selection behavior where ONLY mouse actions can be used to generate Click Events by an end-user. ------------------------------------------------------------------------------- PLBCMP - Added a new keyword named 'DO8BITATTRCONV={dnumnvar}' for the GETMODE and SETMODE instructions. This keyword can be used to force the *COLOR control for a KEYIN\DISPLAY to process the input color mask as an 8-bit value that is converted to a 16-bit runtime attribute. This keyword is provided to allow use of 8-bit *COLOR values that allow legacy programs to execute without having to be changed. - Modified to allow the BACKSTYLE property to be compiled for a PICT object. The BACKSTYLE property is ONLY used when executing with a PL/B Web Server. - Corrected a problem where the RPRINT instruction would cause an unexpected compiler error. This problem was caused by 9.7 changes to the compiler. ------------------------------------------------------------------------------- PLBDBUG - Modified the character debugger to eliminate use of the 'SETMODE *OPENABS' mode for opening '.sdb' files when the DBGIFACE GUI debugger interface is being used. This change is to improve the DBGIFACE GUI debugger performance when '.sdb' files are being loaded over a WIndows OS Network shared drive. - Modified to allow the GUI Watch to work properly when debugging a program using the PL/B Web Server. ------------------------------------------------------------------------------- PLBEQU.INC - Updated for 9.7A release. ------------------------------------------------------------------------------- PLBMETH.INC - Updated for 9.7A release. ------------------------------------------------------------------------------- DESIGNER.PLC - Added a trap to catch file creation error for the designer user objects file (designer.uo). - Corrected the test web form object file name during testing. - Corrected the BrowseForFolder value in the Options dialogs to specify directories only for backup files and web form testing. - Added checks to ensure each forms internal type indicator is consistent with the form type requested during Opens. - Added logic to set the form types of backup files opened based on the internal type indicator. - Corrected initial position of a form when using a UNITS property value other than pixel. - Modified design grid to support a maximum grid spacing of 99 pixels. - Disabled selection of Windows System Colors when working with a WebForm. - Corrected properties supported by Web Form in the definitions file. - Added the Tools/Verify Event Registrations diagnostic function. - Corrected addition of ActiveX objects to support multiple controls per file. - Corrected an error and enhanced the operation of the shortcut menu function Examine Control. - Corrected placement of design form when open an existing web form. - Moved the loading of the toolboxes and the included loading of controls to after the determination of a copy of the designer was already active. - Added a New Web Form From Template selection to the File/New menu. - After double-clicking an object on the design form that has existing code, the source window is opened and positioned to the first non-readonly line, and the window takes focus. - Corrected object double-click detection when no objects are selected. - Added an option to the Tools/Options/Code/Name page to disable the removal of empty event routines on Saves. - Corrected an XML Read Error that could occur after a Save All operation. - Corrected clipboard handling when changing from one form type to another. - Added logic to automatically register any orphaned event routines. - Added option to control automatic registration of orphaned event routines. - Corrected positioning during pasting operations. - Corrected marking of event code when the event label had been truncated to 32 by the runtime. - Modified the filters for the add new picture resource dialog. - Corrected an issue in the remove empty code routine that would fail to recognize a non-empty block with a specfic matching value. - Modified the open and new form logic to better determine the type of form being edited based on values reported by the runtime. - Corrected two issues regarding the deletion of object array elements. ------------------------------------------------------------------------------- EDITOR.PLC - Now removes the editor recovery file when exiting and not saving changes. - Added a NORECOVERY option to prevent execution of the editor recovery logic. - Corrected some alert messages. - Correct the Cancel logic when closing a project and an open file has pending modifications. - Corrected the character case of calls to VARTYPE. - Corrected an error in ReplaceAllInSelection that would incorrectly replace a match that was not in the selection. ------------------------------------------------------------------------------- SUNIDE.PLC - Added an editor no recovery option to the IDE settings. ------------------------------------------------------------------------------- SUNCS21.OCX - Corrected an issue in the editor control that would cause a hang in the FindText routine when the edit buffer was empty. ------------------------------------------------------------------------------- SCHEMAEDITOR.PLC - Version Update Only. ------------------------------------------------------------------------------- DBGIFACE.PLC (Graphical Debugger) - Version Update Only. ------------------------------------------------------------------------------- PROFILER.PLC - Version Update Only. ------------------------------------------------------------------------------- WATCH.PLC - Version Update Only. ------------------------------------------------------------------------------- DBEXPLORER.PLC - Version Update Only. -------------------------------------------------------------------------------