Date: 03-02-2026 Subject: RELEASE 10.8A Runtime Files These RELEASE notes pertain to the following programs or files: EMBEDINI 10.8A 02 Mar 2026 10.8.1.500 EMBEDINI64 10.8A 02 Mar 2026 10.8.1.500 HEXDUMP 10.8A 02 Mar 2026 10.8.1.500 HEXDUMP64 10.8A 02 Mar 2026 10.8.1.500 MAKECLI 10.8A 02 Mar 2026 10.8.1.500 MAKECON 10.8A 02 Mar 2026 10.8.1.500 MAKECONET 10.8A 02 Mar 2026 10.8.1.500 MAKEDEF 10.8A 02 Mar 2026 10.8.1.500 MAKEMFD 10.8A 02 Mar 2026 10.8.1.500 MANAGECE 10.8A 02 Mar 2026 10.8.1.500 OBJMATCH 10.8A 02 Mar 2026 10.8.1.500 OBJMATCH64 10.8A 02 Mar 2026 10.8.1.500 ODBCINST64 10.8A 02 Mar 2026 10.8.1.500 PLBCGI 10.8A 02 Mar 2026 10.8.1.500 PLBCLICON 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBCLIENT 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBCLINET 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBCON 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBCONET 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBNET 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) PLBSERVE 10.8A 02 Mar 2026 10.8.1.500 (Processed Server) PLBSERVEA 10.8A 02 Mar 2026 10.8.1.500 (Processed Server) PLBSERVET 10.8A 02 Mar 2026 10.8.1.500 (Threaded Server) PLBWEBSRV 10.8A 02 Mar 2026 10.8.1.500 (Processed Server) PLBWEBSRVA 10.8A 02 Mar 2026 10.8.1.500 (Processed Server) PLBWEBSRVT 10.8A 02 Mar 2026 10.8.1.500 (Threaded Server) PLBWIN 10.8A 02 Mar 2026 10.8.1.500 (ComCtl 6) SUNAAMDX 10.8A 02 Mar 2026 10.8.1.500 SUNAAMDX64 10.8A 02 Mar 2026 10.8.1.500 SETGUID 10.8A 02 Mar 2026 10.8.1.500 SUNINDEX 10.8A 02 Mar 2026 10.8.1.500 SUNINDEX64 10.8A 02 Mar 2026 10.8.1.500 SUNLS 10.8A 02 Mar 2026 10.8.1.500 SUNMOD 10.8A 02 Mar 2026 10.8.1.500 SUNMOD64 10.8A 02 Mar 2026 10.8.1.500 SUNSORT 10.8A 02 Mar 2026 10.8.1.500 SUNSORT64 10.8A 02 Mar 2026 10.8.1.500 WININST 10.8A 02 Mar 2026 10.8.1.500 PLBNLD.DLL 10.8A 02 Mar 2026 10.8.1.500 PLBNETSUP.DLL 10.8A 02 Mar 2026 10.8.1.500 Required for PLBNET PLBWSEC.DLL 10.8A 02 Mar 2026 10.8.1.500 Req'd PLBWIN/PLBNET ODSBAC32.DLL 10.8A 02 Mar 2026 ODSBAC64.DLL 10.8A 02 Mar 2026 SA_DLL32.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWADO.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWADO25.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWADO28.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWMSQL.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWODBC.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWSRV.DLL 10.8A 02 Mar 2026 10.8.1.500 SUNWSRV64.DLL 10.8A 02 Mar 2026 10.8.1.500 Required for Sundm64 DBGIFACE 10.8A 02 Mar 2026 PLBCMP 10.8A 02 Mar 2026 PLBDBUG 10.8A 02 Mar 2026 SUNDEBUG 10.8A 02 Mar 2026 ADMEQU.INC 10.8A 02 Mar 2026 PLBEQU.INC 10.8A 02 Mar 2026 PLBMETH.INC 10.8A 02 Mar 2026 PLBRUN.ZIP 10.8A 02 Mar 2026 10.8.1.600 (ComCtl 6) *============================================================================== Notes for some NEW Items: - The new AIOBJECT introduces integrated Artificial Intelligence (AI) capabilities into the PL/B Language. It provides a streamlined, runtime-managed interface to external AI services without requiring developers to implement low-level HTTP, JSON, or API handling. The AIOBJECT enables access to OpenAI and Gemini AI models for text, image, audio, and data analysis operations. Note: 1. The AIOBJECT is supported in the PLBSERVEA, PLBWEBSRVA, PLBWIN, and PLBCON runtimes. These runtimes include a dedicated WebView2-based thread responsible for secure communication between the PL/B application and the supported AI engines. Other PL/B runtimes do not support the AIOBJECT interface. 2. The object provides a simple method-based and event-driven programming model: Methods: Initialize Question Response Event: $Answer — generated when an AI response is available. *============================================================================== Notes for DOCUMENTATION: - In the 'PL/B Runtime Reference' manual, add the following error 'O156' description to the 'O (Object) Errors' section: O156 A bad access error occurred performing an operation on a VARIANT object when using/expecting a variant array type. - In the 'PL/B Language Reference' manual, add a new JSONDATA object method named 'GetDouble' which is described as follows: *---------------------------------------------------------------------- GetDouble Method (JSONDATA) The GetDouble method gets the numeric value for a JSONDATA field and returns it as a user defined formatted string. The numeric value being returned is based on the type of value for the JSONDATA field being accessed. This method uses the following format: [label] {object}.GetDouble [GIVING {return}] USING [*NAME=]{name}: [*FORMAT=]{format}[: [*INDEX1=]{index1}][: [*INDEX2=]{index2}][: [*INDEX3=]{index3}] Where: label Optional. A Program Execution Label. object Required. A JSONDATA object previously declared. return Optional. A Character Variable that returns the output JSON value as a string with the format specified by the user input format. If an error occurs while retrieving the JSON value, the Character Variable is returned as a NULL variable. name Required. A Character String Variable or literal that specifies a JSON field name for a JSONDATA object. format Required. A Character String Variable or literal that specifies the format to be used for the return string. index1 Optional. A Numeric Variable, decimal number, or Numeric expression that defines the first index of a JSON array that is being accessed. index2 Optional. A Numeric Variable, decimal number, or Numeric expression that defines the second index of a JSON multi-dimensioned array that is being accessed. index3 Optional. A Numeric Variable, decimal number, or Numeric expression that defines the third index of a JSON multi-dimensioned array that is being accessed. Flags Affected: EOS, OVER, ZERO Notes: 1. The EOS flag is set if the output JSON string is truncated because the {return} variable is too small. 2. The ZERO and OVER flags are always cleared. 3. The {return} value that is returned as a formatted string is determined by the JSON field value type being accessed. The JSON field value types are defined as follows: Type Return Value $JSF_TYPE_OBJECT (1) Returns the number of fields in the json object. $JSF_TYPE_ARRAY (2) Returns the number of elements in the array. $JSF_TYPE_INTEGER (3) Returns the field integer value. $JSF_TYPE_DOUBLE (4) Returns the whole digits value. Decimal digits are not returned. $JSF_TYPE_STRING (5) Returns the length of the JSON field string. $JSF_TYPE_BOOLEAN (6) Returns the value of one for a 'true' value. If the value is 'false', the return value is zero. $JSF_TYPE_NULL (7) Returns the value of zero. 4. The {format} string is the same as the common 'sprintf' formats used for a 'C' double value. The {format} string formats are described as follows: Format Output Style Notes %f Fixed-point decimal Default is 6 digits after decimal %.nf Fixed-point decimal The 'n' value specifies the number specifying number of decimal digits. If the 'n' of decimal digits value is larger than 6, the output decimal digits can be indeterminate. Example: ( %.2f ) %e or %E Scientific notation Lowercase 'e' vs uppercase 'E' for exponent. %g or %G Shortest representation Chooses between '%f' and '%e' (fixed or scientific) depending on the magnitude; trims trailing zeros Here are some example 'GetDouble' outputs: Format Precision Value Output Returned {format} %f %f 12345.6789 12345.678900 default %f %.2f 12345.6789 12345.68 %f %.10f 12345.6789 12345.6789000000 %e %e 12345.6789 1.2345678e+04 default %e %.3e 12345.6789 1.235e+04 %E %.3E 12345.6789 1.235e+04 %g %g 312345.6789 312346 default %g %.5g 312345.6789 3.1235e+05 %G %.5G 312345.6789 3.1235e+05 Example for JSONDATA 'GetDouble' Method: . oJson JSONDATA . cFmt CONST "9" dFmtArr DIM 6(cFmt) dFmt INIT "%f;%.2f;%.10f;%e;%.3e;%.3E;%g;%.5g;%.5G" nFmtNdx FORM "0" dString DIM 65 . names DIM 1024 result FORM 10 nameArr DIM 25(cFmt) . jsonString init "{#"test1#":12345.6789,": "#"test2#":12345.6789,": "#"test3#":12345.6789,": "#"test4#":12345.6789,": "#"test5#":12345.6789,": "#"test6#":12345.6789,": "#"test7#":312345.6789,": "#"test8#":312345.6789,": "#"test9#":312345.6789}" . EXPLODE dFmt, ";", dFmtArr . oJson.Parse Giving result Using *JSON=jsonString IF ( result != 0 ) DISPLAY "Error...Do 'oJson.SyntaxError'" STOP ENDIF . oJson.GetNames Giving names Using names . EXPLODE names, ",", nameArr . FOR nFmtNdx, 1, cFmt . oJson.GetDouble Giving dString: Using *Name=nameArr(nFmtNdx): *Format=dFmtArr(nFmtNdx) . DISPLAY *LL, nameArr(nFmtNdx)," ==> ",dString . REPEAT . DISPLAY *W15 5. If an error occurs, the JSONDATA object method 'SyntaxError' can be used to retrieve that last error that was generated - In the 'PL/B Language Reference' manual, modify the Note (2.) in the 'SetAsString Method (DATETIME)' to include the following: %s seconds since 1970-01-01 - In the 'Sunbelt Data Manager' manual, the 'Mapped Drives Support' section needs to be updated to include the 'username' and 'password' parameters. The descriptions for these parameters are the same as described in the 'PL/B Application Server' manual. - In the 'PL/B Language Reference' manual, modified the 'TESTLABEL' instruction description to include the support for a string variable or a string literal that specifies the name of a subroutine or FUNCTION name to be tested. Make the changes as follows: The TESTLABEL instruction validates an execution LABEL pointer or the name of a subroutine/FUNCTION. The instruction has one of the following formats: (1) [label] TESTLABEL {exeptr} (2) [label] TESTLABEL {funcname} Where: label Optional. A Program Execution Label. exeptr Required. A previously declared execution LABEL pointer. funcname Required. A previously declared Character String Variable or string Literal containing the name of a subroutine or FUNCTION to be tested. Flags Affected: OVER Note the following: 1. Using the format (1), the OVER flag is set if the {exeptr} LABEL is empty or if the {exeptr} LABEL code address is not valid for any of the currently loaded program including all load modules. 2. If the format (2) is being used, the TESTLABEL instruction automatically loads and resolves all external routines in the load module if the load module is not previously loaded. In this case, the OVER is set and the error is stored in the S$ERROR$ variable if the load module causes an error when it being loaded. 3. Using the format (2), the OVER flag is set if the name of the subroutine or FUNCTION cannot be found for the specified load module. In this case, the OVER is set and an error is stored in the S$ERROR$ variable. 4. Using the format (2), the OVER flag is set and a 'C15 99' error occurs indicating and unexpected error for the SWAP instruction. - Add the 'AIOBJECT' object description to the 'PL/B Language Reference' manual as follows: AIOBJECT 10.8A, PLBCMP GUI Only The AIOBJECT object provides server side access to the OpenAI and Gemini AI models. This will allow PL/B applications to perform data analysis, text/image/audio generation, analyze images, and analyze files, The declaration syntax of a AIOBJECT object is as follows: (1) [label] AIOBJECT [%|^][arraysize] (2) [label] AIOBJECT ^,{target} (3) [label] AIOBJECT ^(arraysize),({target}),...,({target}) Where: label Optional. A Data 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 AIOBJECT object is implicitly created when a method is executed. 2. The AIOBJECT object can be used in a DESTROY instruction. 3. Requires a runtime that contains WebView2 support. The supported executables are plbwin.exe, plbcon.exe, plbwebsrva.exe, and plbservera.exe. 4. Support files are located in plbai_html directory and must be located in the same directory as the runtime command. 5. The AIOBJECT supports the Initialize, Question, and Response methods. 6. The AIOBJECT supports the $ANSWER event. When this event occurs the Response method can be used to obtain any information returned. See Also: Object Definitions ................................................... The AIOBJECT methods are described as follows: *---------------------------------------------------------------------- Initialize Method (AIOBJECT) The Initialize method is used to create a runtime Web View AI thread. This AI thread contains the required functions to interface with the supported AI engines using the PL/B AIOBJECT object. This method uses the following format: [label] object.Initialize [GIVING {nvar}] USING *Model={model}: *Key={key}[: *Instructions={instructions}] Where: label Optional. A Program Execution Label. object Required. A AIOBJECT object previously declared. return Optional. A Numeric Variable that returns a success or fail value. Model Required. A Character String Variable or literal that specifies a supported AI engine being accessed/used. Key Required. A Character String Variable or literal that specifies the API private key required to access/use the AI engine. This key is a secret credential that lets your AIOBJECT make requests to OpenAI’s or Gemini's models. Instructions Optional. A Character String Variable or literal that specifies string data to describe the expected behavior of the AI engine when answering the PL/B input questions. Flags Affected: EOS, OVER, ZERO Notes: 1. The ZERO flag is set to TRUE when the 'return' value is zero used to indicate that the method executed successfully. The ZERO flag is set to FALSE when the 'return' value is not zero indicating that the method execution failed. 2. The OVER flag is set TRUE if the 'return' variable is too small and cannot contain the 'return' value without being truncated. Otherwise, the OVER flag is set to FALSE. 3. The EOS flag is always cleared. 4. To get an OpenAI API key for the {key} parameter, sign up for a developer account at platform.openai.com, navigate to the "API keys" section in the dashboard, and click "Create new secret key". Copy the key immediately and store it securely, as it will not be displayed again. 5. To get a Gemini API key for the {key} parameter, visit Google AI Studio, sign in with your Google account, and click "Get API key" on the left menu. Select "Create API key" in a new or existing Google Cloud project to generate your key, which can be used for accessing Gemini models. 6. The optional {instruction} parameter can contain the behavior rules used by the AI engine when answering the input questions using the AIOBJECT. This parameter gives the model high-level instructions on how it should behave while generating a response, including style, formatting, and examples of correct responses. These instructions will be used by the Question method. 7. The error values returned in {return} are defined as follows: Error Description 0 No error. 1 Memory allocation error. 2 No key. Key must be specified. 4 No model. Model must be specified. 1nn This is a Windows OS Web View startup error. Verify that the Web View is installed on the Windows OS system being used. *---------------------------------------------------------------------- Question Method (AIOBJECT) The Question method is used to make an inquiry to an OpenAI or Gemini model using the associated PL/B AIOBJECT object. This method uses the following format: [label] {object}.Question [GIVING {return}] USING [*Input=]{input}][: [*Body=]{body}] Where: label Optional. A Program Execution Label. object Required. An AIOBJECT object previously declared. return Optional. A Numeric Variable that returns a success or fail value. input Required. A Character String Variable or literal that specifies a question which is submitted to the AI engine. body Optional. A Character String Variable or literal that specifies string data to describe the expected behavior of the AI engine when answering the PL/B input questions. Flags Affected: EOS, OVER, ZERO Notes: 1. The ZERO flag is set to TRUE when the 'return' value is zero used to indicate that the method executed successfully. The ZERO flag is set to FALSE when the 'return' value is not zero indicating that the method execution failed. 2. The OVER flag is set TRUE if the 'return' variable is too small and cannot contain the 'return' value without being truncated. Otherwise, the OVER flag is set to FALSE. 3. The EOS flag is always cleared. 4. The {input} parameter contains the question to be sent to the OpenAI or Gemini model 5. The optional {body} parameter can contain API specific JSON to be added to the AI request. This allows the program to use any custom features that a specific model might provide. 6. The error values returned in {return} are defined as follows: Error Description 1 Memory allocation error. 2 No key. Key must be specified. 3 A previous question is still being processed. 4 No model. Model must be specified. 5 Unknown model name is being used. Example 1: MyAI.Question Using "What are some other names for red ?" Example 2: GptQuest.SetString Using "reasoning.effort","low" GptQuest.SetString Using "input[0].role","developer" GptQuest.SetString Using "input[0].content","Talk like a pirate." GptQuest.SetString Using "input[1].role","user" GptQuest.SetString Using "input[1].content": "Are semicolons optional in JavaScript?" GptQuest.GetString Giving aiQuestion MyAI.Question Using "",aiQuestion *---------------------------------------------------------------------- Response Method (AIOBJECT) The Response method is used to obtain the returned JSON data from last successful OpenAI or Gemini AI operation. This method uses the following format: [label] {object}.Response [GIVING {return}] Where: label Optional. A Program Execution Label. object Required. An AIOBJECT object previously declared. return Optional. A Character Variable that returns the output JSON string. If an error occurs while generating the JSON output string, the Character Variable is returned as a NULL variable. Flags Affected: EOS, OVER, ZERO Notes: 1. The EOS flag is set if the output JSON string is truncated because the {return} variable is too small. 2. The ZERO and OVER flags are always cleared. 3. The JSON data for a OpenAI AI operation contains much information, and is described in the on-line OpenAI API documentation. Most PL/B programs will only need to use the field output[1].content[0].text to retrieve the generated text. 4. The JSON data for a Gemini AI operation contains much information, and is described in the on-line Gemini API documentation. Most PL/B programs will only need to use the field candidates[0].content.parts[0].text to retrieve the generated text. 5. The JSONDATA object can be used to process the returned data. Example 1: MyAI.Response Giving jsonData MyJson.Parse Using jsonData MyJson.GetString Giving answerData Using "output[1].content[0].text" Example 2: MyAI.Response Giving jsonData MyJson.Parse Using jsonData MyJson.GetString Giving answerData: Using "candidates[0].content.parts[0].text" *---------------------------------------------------------------------- $Answer Event The $Answer event is generated using a PL/B AI runtime. This event is generated when a result is available from a successful Question method Note the following: 1. This event is only registered for the AIOBJECT object using the EVENTREGISTER instruction. 2. This event is implemented to indicate a successful completion of a .OpenAI or Gemini AI operation. 3. The PL/B program can use the Response method.to obtain the returned JSON data. 4. The $Answer event is referenced using an event value of thirty-seven (37). - Add the ADMIN_MAIL_STARTTLS keyword to the 'Sunbelt PL/B Web Server' and the 'Sunbelt PL/B Application Server' manuals as follows: ADMIN_MAIL_STARTTLS Keyword ---------------------------------------------------------------------- ADMIN_MAIL_STARTTLS={on|off} This optional keyword is used to invoke a SMTP extension to use TLS (Transport Layer Security) which provides private and authenticated communications. This keyword causes the first access to an email server to use unsecured communications to receive the server configuration. If the server configuration is set to support STARTTLS, the mail send operation establishes a SSL secured connection before continuing to send the email message. NOTE: The ADMIN_MAIL_STARTTLS keyword is NOT used when the 'ADMIN_MAIL_SSL=ON' keyword is used. *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- All Sunbelt Products - Updated Copyright for 2026. ------------------------------------------------------------------------------- Sunbelt GitHub Updates - This GitHub link has 'sunbelt-plb-samples' as follows: https://github.com/KcsDev1982/sunbelt-plb-samples - Updated the 'sunbelt-plb-samples' to include the following: Google Calendar Samples Added new basic samples PowerShell Scripts to remake Shortcuts Updated the AI and basicsamples Samples for the DATASET video Added new Gemini Example Added new AI sample using Responses API Added Linux support script to check Linus 'shared library' support ------------------------------------------------------------------------------- PLBSERVE - Added the 'ADMIN_MAIL_STARTTLS={on|off}' keyword to allow the SMTP extension to use TLS (Transport Layer Security). This keyword is only used when the 'ADMIN_MAIL_SSL' keyword is not used or is set to 'off'. See the 'Documentation Section' for more details. ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - Modified to support 10.7A changes. plbwebbasic.css 10.7A 250120 plbwebipad.css 10.6B 240409 plbwebbasic.js 10.7A 250226 plbwebctls.js 10.7A 250122 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 - Added the 'ADMIN_MAIL_STARTTLS={on|off}' keyword to allow the SMTP extension to use TLS (Transport Layer Security). This keyword is only used when the 'ADMIN_MAIL_SSL' keyword is not used or is set to 'off'. See the 'Documentation Section' for more details. - Modified to properly return Modal Dialog ACTIVATE errors which could cause indeterminate GPF errors. This behavior could occur when a program executed a STOP, SHUTDOWN, or CHAIN when a Modal dialog is currently active. - Modified to correct the possibility of generating an unexpected '500' internal error when a Windows OS creates a named pipe. ------------------------------------------------------------------------------- PLBWIN, PLBCLIENT - Added UNC support to WebView initialization. ------------------------------------------------------------------------------- PLBWIN, PLBSERVE, PLBSERVEA, PLBWEBSRV, PLBWEBSRVA (Windows) - Added support for the AIOBJECT. See the Documentation section for the details. Here is an overview of the AIOBJECT object. AIOBJECT Events: $ANSWER EQU 37 Properties: None Methods: Initialize GIVING {nvar} USING *Model={svarslit}: *Key={svarslit}: *Instructions={svarslit} Optional Question GIVING {nvar} USING *Input={svarslit}: *Body={svarslit} Optional Response GIVING {svar} ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV - Modified the JSON object method 'Parse' so to provide the column offset is reported when a Json parsing error occurs. - Added a JSON object method named 'GetDouble'. This method can be used to retrieve and return a JSON number value as a formatted string. See the Documentation description for more details. - Modified the DATATIME 'SetAsSring' method 'FORMAT' parameter to include the following format: %s seconds since 1970-01-01 - Modified the TESTLABEL instruction to support an input of a Character String Variable or a string Literal that contains the name of a subroutine or a FUNCTION. In this case, the TESTLABEL determines if the load module can be accessed and if the subroutine/FUNCTION name is valid. If there is an error, the TESTLABEL sets the OVER flag and the error is put into the S$ERROR$ variable. - Modified the DMAKE operation to improve the execution performance to eleminate unnecessary logic that caused excessive execution time. This modification resolves long execution times when a very large number of DMAKE instructions are performed over and over in a program. - Corrected a problem where the indices for a VARIANT array where being processed from the high index to the low index. This problem was causing an undocumented error O156. - Fixed the JSON object method 'GetNames' so a binary zero is NOT stored into the return DIM variable. - Corrected a problem where the 'READ XFILE, {key}; ...' would not use an INTEGER variable for the {key} to perform a sequential read operation. - Corrected a problem where the enhanced math instructions could cause a FORM destination to be corrupted. This problem could occur if the Windows OS result for the math operation has more than 32 whole digit characters. This problem is corrected for the following PL/B math instructions: COSH, EXP, LOG, LOG10, POWER, SINH, and SQRT - Corrected a where a Dynamic NCHAR was being initialized to have an invalid byte size. Example: MyVar NCHAR ^4 // 4 UTF-8 characters requires 16 bytes - Corrected a GPF problem when parsing an unterminated Json quoted string. ------------------------------------------------------------------------------- PLB(LINUX) - Added 'checklib' Linux script that can be used to verify the Linux 'shared libraries' required for the PL/B Linux binary executables. - Updated the Linux 'suninst' installation script to verify that the Linux OS has the 'shared libraries' installed/available to run the PL/B binary executables. ------------------------------------------------------------------------------- PLBCMP - Modified DFREE\DRELEASE\$SFREE to support enhanced arrays. - Added the AIOBJECT object. - Added the JSONDATA object which is an alias for the JSON object. The JSONDATA object is exactly the same as the JSON object. This change is made to allow improved PL/B AI Assistance between a PL/B JSONDATA object and the general reference to the Json text-based format representing structured data. ------------------------------------------------------------------------------- PLBDBUG - Modified to identify the JSONDATA and AIOBJECT objects. ------------------------------------------------------------------------------- PLBEQU.INC - Added $ANSWER event. ------------------------------------------------------------------------------- PLBMETH.INC - Added ALOBJECT, $ANSWER event, JSONDATA GetDouble method. ------------------------------------------------------------------------------- SUNIDE.PLC - Corrected main window positioning when executing and debugging with the Hide behavior option set. - Now hides the Designer windows during debugging when the Designer is a loadmod and the Hide behavior is set. - The main window splitter positions are now maintained separately between editing and debugging modes. - Corrected issues with saving and restoring the current working directory. - Corrected the files tab control behavior when a large number of files open. - Corrected an F02 when closing the right peek window. - Modified the project folder support to allow specification of a physical directory. - Modified bookmarks to allow navigation by the active editor, open files, or the selected program. - The default path is now shown in the toolbar and is updated when folders with physical directories defined are selected. - Added a bookmark window to allow visualizing and maintaining the defined bookmarks. - The bookmarks and breakpoints windows are now updated as source files are modified. - Added a total build time for the Build All function. - The label section area of the main toolbar now indicates the selected program name. - Individual folders may now be archived. - Corrected watching of array variables when debugging. - Bookmarks added from the build or find listviews now update the bookmark window correctly. - Corrected the position of the bottom peek window close and promote buttons. - Corrected an error when closing all bottom peek windows. - Modified the Events window to show the object name if not a JQuery event. - Modified autosizing of the tracepoint, bookmarks, and watch listviews to not show information of no value to the user. - Corrected retrieval of bookmarks when changing programs. - Minor corrections involving the Bookmark listview resizing. - Now shows bookmarks tab or window when bookmarks change. - Eliminated bookmark and watch list flashing as bookmarks where added. - Added Program Specific Bookmarks behavior option. - Corrected a project file corruption issue. - Added support for a bookmark navigation by active editor, open files, and program files. ------------------------------------------------------------------------------- DESIGNER.PLC - Added SetVisibility external routine for the IDE allowing the Designer windows to be hidden and restored when using the IDE's integrated debugger. - Corrected issues with obtaining the current working directory. - Corrected issues with the bookmark functions. Designer bookmarks are not currently saved by the ide. - Corrected Designer generated code to no longer set the Attribute Column property when no columns exist. - Corrected the setting of the Outline window grouping selection to "No grouping". - Added a "Show Names Only" to the Outline window display option. - Modified the No Default Code option to prevent external label call. ------------------------------------------------------------------------------- SUNCS21.OCX - Updated version to 10.8. - Added AIOBJECT, and JSONDATA syntax and methods. -------------------------------------------------------------------------------