Date: 07-07-2017 Subject: RELEASE 9.9B Runtime Files These release notes pertain to the following programs or files: PLBCON 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 6) PLBCONET 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 6) PLBNET 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 6) PLBWEBSRV 9.9Bc 07 Jul 2017 9,9,2,103 (Processed Server) PLBWEBSRVT 9.9Bc 07 Jul 2017 9,9,2,103 (Threaded Server) PLBWIN 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 6) PLBCON5 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 5) PLBCONET5 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 5) PLBNET5 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 5) PLBWIN5 9.9Bc 07 Jul 2017 9,9,2,103 (ComCtl 5) PLBNETSUP.DLL 9.9Bc 07 Jul 2017 9,9,2,103 Required for PLBNET PLBWSEC.DLL 9.9Bc 07 Jul 2017 9,9,2,103 Req'd PLBWIN/PLBNET ........ PLBCLICON 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 6) PLBCLIENT 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 6) PLBCLINET 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 6) PLBSERVE 9.9Bb 16 Jun 2017 9,9,2,102 (Processed Server) PLBSERVET 9.9Bb 16 Jun 2017 9,9,2,102 (Threaded Server) PLBCLICON5 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 5) PLBCLIENT5 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 5) PLBCLINET5 9.9Bb 16 Jun 2017 9,9,2,102 (ComCtl 5) ........ PLBCMP 9.9Ba 19 May 2017 ........ EMBEDINI 9.9A 21 Apr 2017 9,9,1,500 EMBEDINI64 9.9A 21 Apr 2017 9,9,1,500 HEXDUMP 9.9A 21 Apr 2017 9,9,1,500 HEXDUMP64 9.9A 21 Apr 2017 9,9,1,500 MAKECLI 9.9A 21 Apr 2017 9,9,1,500 MAKECON 9.9A 21 Apr 2017 9,9,1,500 MAKECONET 9.9A 21 Apr 2017 9,9,1,500 MAKEDEF 9.9A 21 Apr 2017 9,9,1,500 MAKEMFD 9.9A 21 Apr 2017 9,9,1,500 MANAGECE 9.9A 21 Apr 2017 9,9,1,500 OBJMATCH 9.9A 21 Apr 2017 9,9,1,500 OBJMATCH64 9.9A 21 Apr 2017 9,9,1,500 ODBCINST64 9.9A 21 Apr 2017 9,9,1,500 PLBCGI 9.9A 21 Apr 2017 9,9,1,500 PLBDSIGN 9.9A 21 Apr 2017 9,9,1,500 SUNAAMDX 9.9A 21 Apr 2017 9,9,1,500 SUNAAMDX64 9.9A 21 Apr 2017 9,9,1,500 SETGUID 9.9A 21 Apr 2017 9,9,1,500 SUNINDEX 9.9A 21 Apr 2017 9,9,1,500 SUNINDEX64 9.9A 21 Apr 2017 9,9,1,500 SUNLS 9.9A 21 Apr 2017 9,9,1,500 SUNMOD 9.9A 21 Apr 2017 9,9,1,500 SUNMOD64 9.9A 21 Apr 2017 9,9,1,500 SUNSORT 9.9A 21 Apr 2017 9,9,1,500 SUNSORT64 9.9A 21 Apr 2017 9,9,1,500 WININST 9.9A 21 Apr 2017 9,9,1,500 ODSBAC32.DLL 9.9A 21 Apr 2017 ODSBAC64.DLL 9.9A 21 Apr 2017 SA_DLL32.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWADO.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWADO25.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWADO28.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWMSQL.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWODBC.DLL 9.9A 21 Apr 2017 9,9,1,500 SUNWSRV.DLL 9.9A 21 Apr 2017 9,9,1,500 DBGIFACE 9.9A 21 Apr 2017 PLBDBUG 9.9A 21 Apr 2017 ........ ADMEQU.INC 9.9A 21 Apr 2017 PLBEQU.INC 9.9A 21 Apr 2017 PLBMETH.INC 9.9A 21 Apr 2017 PLBCLI.ZIP 9.9A 21 Apr 2017 9,9,1,600 (ComCtl 6) PLBRUN.ZIP 9.9A 21 Apr 2017 9,9,1,600 (ComCtl 6) *============================================================================== Notes for WARNINGS: - The 'PlbWebCli' offline support requires a 9.9Bc PWS server and a 9.9Bc 99Bc 'PlbWebCli' App client which is restricted to specialized beta testing at this time. *============================================================================== Notes for DOCUMENTATION: - In the PL/B Language Reference manual under the 'PDF PRTOPEN Notes' 99Ba section, add the following description for a new *FLAGS bit mask value: PDF__FLAGS_NO_JPEG_COMP EQU 1024 (0x0400) When this bit is turned on, the Sunbelt 'pdf:' output does not generate compressed 'jpeg' images when outputing a PICT object to the PDF file. Turning this bit on causes the PCT object image to be output using BMP image data. - In the PL/B Language Reference manual under the 'InnerHtml Method (PANEL) 99Ba section, make the following changes: 1. Remove the 'PLB Web Only). 2. Modify the Note (4.) to include a new value 0x2 to support an 'url' reference. Value Meaning... 0x2 This bit value allows the {htmlpage} string to be specified as a valid 'url' reference. This bit value can be used in the Plbwin, Plbnet, Plbserve, and Plbwebsrv runtimes. 3. Add the new Note (9.) described as follows: 9. In addition to the PL/B Web Server, this method is available for all Windows PL/B runtimes to allow Html to be rendered into a normal PANEL object window. This method is implemented using the Windows OS 'IWebBrowser2' interface for the Windows PL/B runtimes. - In the PL/B Web Server reference, change the 'PLBWEB_APP_SUPPORT Keyword' 99Ba section as follows: From: PLBWEB_APP_SUPPOER={on|off} To: PLBWEB_APP_SUPPORT={on|off} - In the PL/B Web Server reference, add the 'PLBWEB_USE_UI99A' keyword to 99Ba 'Server Configuration Keywords' section as follows: PLBWEB_USE_UI99A={on|off} By default this keyword is 'off' for the PL/B Web Server. This keyword can be set to 'on' to cause the PL/B Web Server runtime to load 'http_root\plbwebstart99A.html' to the client browser which invokes the use of the 'jquery-ui' support used by the PWS 9.9A and earlier runtime versions. Example: PLBWEB_USE_UI99A=on - In the PL/B Web Server reference manual in the 'Considerations' section, 99Ba remove the 'SETWTITLE' from the Note (1.). - In the PL/B Language Reference manual, in the 'SETWTITLE' instruction, 99Ba change the Note (4.) to read as follows: "4. When using the PL/B Web Server, the 'SETWTITLE' instruction sets the client browser title for the viewport tab where the PLB program is being executed." - In the PL/B Language Reference manual under the 'EXECUTE' instruction, 99Bb add a Note (21.) as follows: "21. When using the EXECUTE instruction in a PLBCLIENT/PLBSERVE application, this instruction does not execute at the client and does not show any command shell windows at the client. In this case, the EXECUTE instruction is only executed on the Application Server side." - In the PL/B Language Reference manual under the 'BATCH' instruction, 99Bb add a Note (10.) as follows: "21. When using the BATCH instruction in a PLBCLIENT/PLBSERVE application, this instruction does not execute at the client and does not show any command shell windows at the client. In this case, the BATCH instruction is only executed on the Application Server side." - In the PL/B Language Reference manual under the 'FindItem Method (LISTVIEW)', change the Note (1.) to read as follows: "The search is done using only the first column and must match the beginning of the string or the string exactly. The search is case insensitive." - In the PL/B Language Reference manual under the 'PICT' section, modify 99Bb the Notes as follows: Modify Note (3.) to read as follows: "3. Seven different image formats are supported including BMP, PCX, DCX, JPEG, GIF, TIFF and PNG. For JPEG files, only the JFIF format is supported." Add a new Note (9.) that reads as follows: "9. The PNG image is the only image that supports 'Transparent' colors. The PNG transparent color support is implemented as follows: a. When the PNG color types include a default background color type, this image default background color is used to replace image full transparent pixels encountered as the image is converted into a PICT DIB image. b. When the PNG color types include a default background color type, the PICT 'BACKSTYLE=$TRANSPARENT' property can be used to force the PICT BGCOLOR background color to be used to replace image full transparent pixels encountered as the image is converted into a PICT DIB image. The PICT 'BACKSTYLE=$TRANSPARENT' property is ONLY used for PNG images and it is ignored for ALL other image formats. c. When the PNG color types DO NOT include a default background color type, the PICT BGColor property value is used to replace the PNG image full transparent pixels that are encountered as the image is converted into a PICT DIB image. 99Bc d. PNG 'partial transparent' composite image merging is supported. 99Bc e. PNG Adam7 interlacing is not supported when the PNG color bit depth is less than 8 bits. In this case, an O103 object error is expected when the PICT is being created. - In the PL/B Language Reference manual, add a Note (4.) to the 99Bb 'BACKSTYLE Property' section that reads as follows: "4. When a PICT object is used in a program executed with a Windows OS runtime (i.e. PLBWIN, PLBNET, or PLBCLIENT), the BACKSTYLE property ONLY takes affect when a CREATE operation for the PICT object using a PNG image is executed. See the PICT object notes for more details for PNG images." *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - Modified to support 9.9A changes. plbwebbasic.css 9.9Ac 170228 plbwebbasic.js 9.9Ba 170515 plbwebctls.js 9.9Ac 170302 plbwebmob.js 9.9Ab 170301 Support jQuery Mobile plbwebtvcssinfo.html 9.9 161028 plbmobstart.html 9.9B 170428 Support jQuery Mobile plbwebstart.html 9.9B 170428 plbwebstart99A.html 9.9A 170428 - Modified the PWS server to use the new version of the 'jquery' and 99Ba 'jquery-ui' support functions. New jquery file versions used by 9.9B PWS are: jquery 3.2.1 jquery-ui 1.12.1 The 'http_root' files have been changed to incude the following: http_root/css 'ui112' sub-directory http_root/js 'ui112' sub-directory jquery-1.12.4.min.js jquery-3.2.1.min.js - When the 'PLBWEB_USE_UI99A=on' keyword is used in the 'plbwebsrv.ini' 99Ba configuration file, the PWS runtime renders the 'http_root\plbwebstart99a.html' to the client browser during the client logon process. This causes the 'jquery' version use by 9.9A and earlier PWS versions to be used. ------------------------------------------------------------------------------- PLBWEBSRV - Modified the SETWTITLE instruction to cause the client browser tab 99Ba title to be changed under program control. - Modified the PWS DATALIST, LISTVIEW, and TREEVIEW sorted output to be 99Ba consistent with the Windows OS controls. Note: When using a PWS DATALIST, this sort change only applies to the virtual PWS DATALIST object which is the default. If the 'PLBWEB_VDATALIST=off' keyword is used, all sorting behaviors are controlled by the client browser(s) for the HTML SELECT objects. - Added a new keyword named 'PLBWEB_USE_UI99A={on|off}'. When this 99Ba keyword is not used, the default is the same as 'off'. When this keyword is set to be 'on', the PL/B Web Server runtime loads 'http_root\plbwebstart99A.html' to the client browser whick invokes the use of the 'jquery-ui' support used by the PWS 9.9A and earlier runtime versions. - Added a new keyword named 'PLBWEB_VDATALIST_SORT={0|1}' that can be used 99Bb to force the SORTED property of a PWS DATALIST to enforce specialize Windows OS sorting linguistic rules. Please note the following: 1. The PLBWEB_VDATALIST_SORT keyword is NOT used if the keyword 'PLBWEB_VDATALIST=OFF' is being used. In addition, the PLBWEB_VDATALIST_SORT keyword is NOT used when the PWS server is executed on a Linux\Unix OS system. 2. By default ( i.e. PLBWEB_VDATALIST_SORT=0 ), the virtual PWS DATALIST applies case insensitive binary sorting of all characters when the SORTED property is turned on. Sorting in this manner gives consistent results for all PWS server platform types being used. 3. When the 'PLBWEB_VDATALIST_SORT=1' keyword setting is used, the virtual PWS DATALIST applies specialized Windows OS linguistic sorting rules when the SORTED property is turned on. This means that sorted PWS DATALIST items depend on the specific language rules used by the Windows OS where the PWS server is executing. - Modified the PWS LISTVIEW 'FindItem' to be consistent with the Windows 99Bb OS LISTVIEW behavior where the searching is performed in a case insensitive manner. - Added the 'GetWebId' method to the PWS FLOATMENU, MENU, and SUBMENU 99Bc objects. - Added a new method named 'AppStatusBar' for the CLIENT object which can 99Bc the mobile device OS statusbar found at the top of the 'PlbWebCli' App viewport. This method is do not take affect unless the 'PlbWebCli' App is being used. ............................................................... . AppStatusBar' Method for CLIENT Object . The AppStatusBar method can be used to control a mobile device OS statusbar the may exist at the top of the 'PlbWebCli' App viewport. This method only takes affect when a mobile device OS statusbar exists on an iOS, Android, or Windows RT phone mobile device. Otherwise, this method is ignored when it is execute. See this link for more information on this cordova plugin: https://github.com/apache/cordova-plugin-statusbar The method uses the following format: [label] {object}.AppStatusBar GIVING {return}: USING [*Mode=]{mode}[: [*BACKCOLOR=]{backcolor}] Where: {label} is an optional Program Execution Label. {object} is a CLIENT object that has been previously Required declared. {return} is a Numeric Variable that always returns the pass or fail values. {MODE} is a Numeric Variable or decimal number that Required specifies a value that gives the action to be executed for the mobile device OS statusbar. {backcolor} is a Character String Variable or string Optional literal that specifies the background color of the mobile device OS statusbar. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set when the {return} value is zero which indicates that the method execution was successful. The ZERO flag is clear if the {return} value is not zero which indicates that the method execution failed. 2. The OVER flag is set to TRUE if the {return} variable is too small to receive the numeric result. 3. The {return} pass\fail values are defined as follows: Error Value Comment 0 - The method executed successfully. 1 - Cordova is not supported. 2 - The method failed and extended error information can be retrieved using the CLIENT 'AppExtendedError' method. 4. The {mode} value is a numeric bitmask value that specifies the operation(s) to be executed for the mobile device OS statusbar. The {mode} values can be a combination of one or more of the following: Mode Value Actions AppStatusBarHide EQU 1 Hide the mobile device OS statusbar. AppStatusBarShow EQU 2 Show the mobile device OS statusbar. By default, the mobile device OS statusbar is visible at the top of a 'PlbWebCli' App. AppStatusBarOverlayOff EQU 4 This is the default mode implemented by the 'PlbWebCli' App. The mobile device OS statusbar does not overlay the 'PlbWebCli' viewport. AppStatusBarOverlayOn EQU 8 When this mode is set, the mobile device OS statusbar overlays the 'PlbWebCli' viewport. AppStatusBarDefault EQU 16 Set the default foreground color of the presentation for the mobile device OS statusbar. The default depends on the mobile device OS being used. AppStatusBarLightContent EQU 32 This mode enables a light foreground color type used by the mobile device OS statusbar. 5. The {backcolor} is a Character String Variable or string literal that specifies the background color of the mobile device OS statusbar. The {backcolor} string values can be specified in either one of the following formats: Format One: A hex string declared as '#RRGGBB'. Format Two (Color names are case sensitive!): A name of the background color used: black darkGray lightGray white gray red green blue cyan yellow magenta orange purple brown 6. Example Instructions using 'AppStatusBar' Client CLIENT . Client.AppStatusBar Using AppStatusBarHide . Client.AppStatusBar Using 0, *BackColor="cyan" . Client.AppStatusBar Using 0, *BackColor="##FFFFFF" - The Sunbelt PL/B Web Client App(s) have been modified to support a user 99Bc 'offline' mode where the 'plbwebcli' client loads a user web app that contains a HTML body, CSS file, and JavaScript file from the local persistent storage to only run on the mobile device. In this case, the user web app can run without any internet or network connection to a PWS server. Note the following: 1. Once the user web files ( html, css, javascript ) are loaded, the Plbwebcli client starts the user web app by executing a javascript function named 'programStart' which must be included in the user provided javascript routines. Example of a user 'programStart' function: function programStart() { $("#btem").on("click", function() {processDir(LocalFileSystem.TEMPORARY);} ); $("#bper").on("click", function() {processDir(LocalFileSystem.PERSISTENT);} ); $("#bfil").on("click", function() {writeSampleFile();}); $("#bonl").on("click", function() { location.replace("plbappload.html");}); $("#bflv").on("click", function() {viewFile();}); $("#bflr").on("click", function() {removeFile();}); $("#bwrt").on("click", function() {writeFile();}); $("#desktop").pagecontainer("change", "#main", { transition: "flip" }); } 2. When the user web app is completed, it can return to the main PlbWebCli page as follows: a. Execute the following JavaScript operation: location.replace("plbappstart.html"); b. As second option is to restart\run a PL/B program assuming that the mobile device has an internet or network connection to get access to PWS server. Without changing any session variables, the 'plbappload.html' page can be loaded and the last PL/B program will be re-run. location.replace("plbappload.html"); By changing the following session variables and then load\execute the 'plbappload.html' page causes another PL/B program to be loaded and executed. sessionStorage.plbAddr = elAddr.value; sessionStorage.plbProg = elProg.value; sessionStorage.plbCid = elCid.value; sessionStorage.plbOpt = elOpt.value; location.replace("plbappload.html"); 3. There are two flavors provided for the 'plbwebcli' offline mode. a. One flavor has jQuery mobile support. b. Another flavor does no have jQuery mobile support. 4. The user web app files (html, css, and javascript files) can be moved to the mobile device using the CLIENT object 'AppDownLoad' method. For Example: ..... . In this case, all of the user ( html, css, and javascript ) . files have been placed in a directory accessible by the . PWS server as follows: . . "c:\sunbelt\http_root\offline" . . t1.css - Sample user css file . t1.html - Sample user html file . t1.js - Sample user javascript file . userdata.json - Sample JSON data used by user . web app. . . The Client.AppDownLoad method moves the files to the . mobile device persistent storage path referenced as . follows: . . "cdvfile://localhost/persistent" . CL CLIENT . Cl.AppDownLoad Using "offline/t1.css": "cdvfile://localhost/persistent/t1.css" Cl.AppDownLoad Using "offline/t1.html": "cdvfile://localhost/persistent/t1.html" Cl.AppDownLoad Using "offline/t1.js": "cdvfile://localhost/persistent/t1.js" Cl.AppDownLoad Using "offline/userdata.json": "cdvfile://localhost/persistent/userdata.json" 5. The PL/B Web Server CLIENT object has been modified to provide the following new methods used to support the 'Plbwebcli' client offline mode installation and administrative operations. These new CLIENT methods can only be executed in a PL/B program executed from a 'Plbwebcli' client that is connected to a PWS server. AppInstallOffLine This CLIENT method is used to add or remove entries from the 'plbwebaddr.txt' file. This file is located in the mobile device persistent storage path. AppSetOffLine This CLIENT method is used to invoke the html/css/js program to execute when the current PL/B program executes a SHUTDOWN instruction or when 'plbwebcli' goes offline. AppDirAdd This CLIENT method is used to create a path on a mobile device. The new path is create either in the temporary or persistent storage used for the 'Plbwebcli' App. AppDirDel This CLIENT method is used to remove a path from a mobile device. The path to be removed must exist in the temporary or persistent storage used for the 'Plbwebcli' App. AppDirGet This CLIENT method is used to retrieve one or more file or path names from a mobile device. The file\path names return must exist in the temporary or persistent storage used for the 'Plbwebcli' App. AddJs This method loads Javascript code from a file and evaluates\executes custom javascript code in the file. This method allows the bulk loading of multiple Javascript functions. Then any functions loaded by AddJs can be used\executed using the JsRun method or the API instruction. JsRun The JsRun method can be used to run JavaScript at the client browser within the 'plbwebbasic' JavaScript runtime instance. ............................................................... . AppInstallOffLine Method for CLIENT Object . The AppInstallOffLine method can be used to add or remove entries from the 'plbwebaddr.txt' file. This file is located in the mobile device persistent storage path. This method is implemented to allow 'Plbwebcli' client buttons to be configured so they can be used to start 'Plbwebcli' offline user web apps. The method uses the following format: [label] {object}.AppInstallOffLine GIVING {return}: USING [*NAME=]{name}: [*HTML=]{html}[: [*CSS=]{css}][: [*JS=]{js}][: [*OPTIONS=]{flags}] Where: {label} is an optional Program Execution Label. {object} is a CLIENT object that has been previously Required declared. {return} is a Numeric Variable that always returns the pass or fail values. {name} is a Character String Variable or string Required literal that is used for the name\text of the 'Plbwebcli' button that starts the offline user web app. {html} is a Character String Variable or string Required literal that specifies the file name of a HTML file located in the persistent storage of a mobile device. This HTML file is associated with the 'Plbwebcli' offline button being installed. {css} is a Character String Variable or string Optional literal that specifies the file name of a CSS file located in the persistent storage of a mobile device. This CSS file is associated with the 'Plbwebcli' offline button being installed. {js} is a Character String Variable or string Optional literal that specifies the file name of a file that contains JavaScript and is located in the persistent storage of a mobile device. This JavaScript file is associated with the 'Plbwebcli' offline button being installed. {flags} is a Numeric Variable or decimal number that Optional specifies a bit mask value that can be used to control the behaviors of this method. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is always set when the {return} value is zero which indicates that the method execution was successful. The ZERO flag is clear if the {return} value is not zero which indicates that the method execution failed. 2. The OVER flag is set to TRUE if the {return} variable is too small to receive the numeric result. 3. The {html} parameter contains the file name of a HTML file that has been previously downloaded into the persistent storage on a mobile device. The contents of the HTML file need only contain the HTML contents a web page. The and tags are not included in the HTML file data. The HTML file can also include JavaScript