Date: 12-02-2016 Subject: RELEASE 9.9A Runtime Files These release notes pertain to the following programs or files: PLBCON 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 6) PLBCONET 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 6) PLBNET 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 6) PLBWEBSRV 9.9Aa 02 Dec 2016 9,9,1,101 (Processed Server) PLBWEBSRVT 9.9Aa 02 Dec 2016 9,9,1,101 (Threaded Server) PLBWIN 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 6) PLBCON5 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 5) PLBCONET5 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 5) PLBNET5 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 5) PLBWIN5 9.9Aa 02 Dec 2016 9,9,1,101 (ComCtl 5) PLBNETSUP.DLL 9.9Aa 02 Dec 2016 9,9,1,101 Required for PLBNET PLBWSEC.DLL 9.9Aa 02 Dec 2016 9,9,1,101 Req'd PLBWIN/PLBNET DBGIFACE 9.9Aa 02 Dec 2016 PLBCMP 9.9Aa 02 Dec 2016 PLBDBUG 9.9Aa 02 Dec 2016 PLBEQU.INC 9.9Aa 11 Nov 2016 ........ EMBEDINI 9.9 28 Oct 2016 9,9,0,500 EMBEDINI64 9.9 28 Oct 2016 9,9,0,500 HEXDUMP 9.9 28 Oct 2016 9,9,0,500 HEXDUMP64 9.9 28 Oct 2016 9,9,0,500 MAKECLI 9.9 28 Oct 2016 9,9,0,500 MAKECON 9.9 28 Oct 2016 9,9,0,500 MAKECONET 9.9 28 Oct 2016 9,9,0,500 MAKEDEF 9.9 28 Oct 2016 9,9,0,500 MAKEMFD 9.9 28 Oct 2016 9,9,0,500 MANAGECE 9.9 28 Oct 2016 9,9,0,500 OBJMATCH 9.9 28 Oct 2016 9,9,0,500 OBJMATCH64 9.9 28 Oct 2016 9,9,0,500 ODBCINST64 9.9 28 Oct 2016 9,9,0,500 PLBCGI 9.9 28 Oct 2016 9,9,0,500 PLBCLICON 9.9 28 Oct 2016 9,9,0,500 (ComCtl 6) PLBCLIENT 9.9 28 Oct 2016 9,9,0,500 (ComCtl 6) PLBCLINET 9.9 28 Oct 2016 9,9,0,500 (ComCtl 6) PLBDSIGN 9.9 28 Oct 2016 9,9,0,500 PLBSERVE 9.9 28 Oct 2016 9,9,0,500 (Processed Server) PLBSERVET 9.9 28 Oct 2016 9,9,0,500 (Threaded Server) SUNAAMDX 9.9 28 Oct 2016 9,9,0,500 SUNAAMDX64 9.9 28 Oct 2016 9,9,0,500 SETGUID 9.9 28 Oct 2016 9,9,0,500 SUNINDEX 9.9 28 Oct 2016 9,9,0,500 SUNINDEX64 9.9 28 Oct 2016 9,9,0,500 SUNLS 9.9 28 Oct 2016 9,9,0,500 SUNMOD 9.9 28 Oct 2016 9,9,0,500 SUNMOD64 9.9 28 Oct 2016 9,9,0,500 SUNSORT 9.9 28 Oct 2016 9,9,0,500 SUNSORT64 9.9 28 Oct 2016 9,9,0,500 WININST 9.9 28 Oct 2016 9,9,0,500 PLBCLICON5 9.9 28 Oct 2016 9,9,0,500 (ComCtl 5) PLBCLIENT5 9.9 28 Oct 2016 9,9,0,500 (ComCtl 5) PLBCLINET5 9.9 28 Oct 2016 9,9,0,500 (ComCtl 5) ODSBAC32.DLL 9.9 28 Oct 2016 ODSBAC64.DLL 9.9 28 Oct 2016 SA_DLL32.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWADO.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWADO25.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWADO28.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWMSQL.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWODBC.DLL 9.9 28 Oct 2016 9,9,0,500 SUNWSRV.DLL 9.9 28 Oct 2016 9,9,0,500 ADMEQU.INC 9.9 28 Oct 2016 PLBMETH.INC 9.9 28 Oct 2016 PLBCLI.ZIP 9.9 28 Oct 2016 9,9,0,600 (ComCtl 6) PLBRUN.ZIP 9.9 28 Oct 2016 9,9,0,600 (ComCtl 6) *============================================================================== Notes for DOCUMENTATION: - In the PL/B Language Reference manual in the 'SETPROP' instruction 99Aa section, make the following changes: 1. Change the instruction format as follows: (1) [label] SETPROP {object},{property}: [({index})][={value}][,{property}[={value}...]] (2) [label] SETPROP {object1},*{property}: [({index})][={value}][,*{property}[={value}...]] Where: {object1} Required. A previously created NETOBJECT, NETCONTROL, CONTROL, CONTAINER, AUTOMATION object, a pointer to any of these objects, or a COLLECTION that contains any of these objects. 2. Change the Note (1.) to read as follows: Note (1.) The {object} must have been previously defined and created. When using the format (1), the {object} can be any GUI object except for a NETOBJECT, NETCONTROL, CONTROL, CONTAINER, or AUTOMATION object. When using the format (2), the {object1} should be a NETOBJECT, NETCONTROL, CONTROL, CONTAINER, AUTOMATION, or a COLLECTON that contains these objects. 3. Change the Note (11.) to read as follows: Note (11.) Any properties available for a NETOBJECT are found in the class library description as specified by the CLASS identification string. All properties must be specified using the '*' syntax format (2) or a format as described under the NETOBJECT description notes. - In the PL/B Lanuguage Reference manual under the 'TYPE' instruction, 99Aa make the following changes: A. Change the TYPE values table in Note (2.) to remove the following PLB Data Type items: 'PROFILE' 'EQUCMDLIN' 'EQUATE' 'RECORD' 'RECORDEF' B. Under the TYPE values table in Note (2.), add this statement. "The PLB data definitions 'EQUATE', 'PROFILE', 'RECORD', and 'RECORD DEFINITION' are ONLY used when compiling a PLB program. These data definitions CAN NOT be used as the {var} for the TYPE instruction because they DO NOT exist as data variables in the UDA of a PLB program." - In the PL/B Language Reference manual under the 'RECORD and RECORDEND' 99Aa section, change the Notes as follows: Change Note (11.) to read as follows: 11. "A ROUTINE, LROUTINE, FUNCTION, or LFUNCTION expecting a pointer to a RECORD as a parameter must pass in a pointer to a RECORD. Attempting to call the routine using a RECORD variable will result in an F05 runtime error. In addition, the ROUTINE, LROUTINE, FUNCTION, or LFUNCTION will not have any knowledge of the structure of the incoming RECORD." Change Note (12.) to read as follows: 12. "A pointer of this type can be used with any instruction that supports variable lists." - In the PL/B Language Reference manual, change the 'Index' link named 99Aa '%RECORDLABLES' to be '%RECORDLABELS'. *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBWEBSRV (HTML\JS\CSS) - Modified to support 9.9 changes. plbwebbasic.css 9.9 161028 plbwebbasic.js 9.9 161017 plbwebtvcssinfo.html 9.9 161028 ------------------------------------------------------------------------------- PLBWEBSRV - Added a new keyword named 'PLBWEB_SSL_PROTOCOL={0|1|2|3}'. This keyword 99Aa can be used to set the SSL minimum protocol version to be used. The keyword values are defined as follows: Value SSL Protocols Allowed are: 0 SSLv3, TLSv1.0, TLSv1.1, or TLSv1.2 1 (Default) TLSv1.0, TLS1.1, or TLSv1.2 2 TLSv1.1 or TLSv1.2 3 TLSv1.2 Note: If the 'PLBWEB_SSL_SELFSIGNED=ON' is being use in the 'plbwebsrv.ini' file, the PLBWEB_SSL_PROTOCOL keyword is ignored and the minimum SSL protocol version SSLv3 is used. - Modified to allow a PWS suspended child task to keep a Data Manager 99Aa connection open until the child task is terminated. Keep in mind that a PWS child task is suspended when the client\browser stops communicating with the PWS server. This change is implemented to allow a 'Plbwebcli' client to continue executing a PLB program with a Data Manager connection after a mobile device awakes from an extended sleep state. - The PWS server has been modified to allow SSL accept logon operations 99Aa to occur concurrently. This change is implemented to improve the performance and to support the new SSL IP blacklist operations. By default the PWS server allows up to 50 concurrent SSL logon threads. The new PLBWEB_SSL_ACCEPT_MAX keyword can be used to allow from 1 to 100 SSL logon threads. - Blacklist IP support has been added to the PWS server to close any logon 99Aa socket that matches an IP address found in the current blacklist. The blacklist IP support is configured\implemented to support both non-SSL IP filtering and SSL socket operations. The basic blacklist operations are implemented: 1. Pre-load a blacklist file that defines a set of IP addresses to reject when immediately detected. This is available for both non-SSL and SSL blacklist support. 2. Monitor current blacklist IP addresses to reject and track accept logon attempts accessing the PWS server. 3. New PWS commands '-br', '-bd', and '-bl' have been added to manage the PWS blacklist operations. 4. The non-SSL support is ONLY enabled when the appropriate blacklist keywords named PLBWEB_BLACKLIST_FILE and PLBWEB_BLACKLIST_REPORT are declared in the 'plbwebsrv.ini' configuration file. 5. The SSL blacklist support is ALWAYS enabled to detect and monitor malicious SSL logon attempts which could disrupt PWS SSL logon operations. The new keywords named PLBWEB_SSL_BLACKLIST_FILE and PLBWEB_SSL_BLACKLIST_REPORT can be optionally used to allow the PWS administrator to define the blacklist files to be used. If these keywords are not used, the PWS uses default pre-defined blacklist file names. The SSL blacklist support dynamically detects SSL accept logons that take an excessive amount of time to perform the required SSL accept operations to finish the SSL connection. 6. These new keywords are now supported for the blacklist implementation. PLBWEB_BLACKLIST_FILE PLBWEB_BLACKLIST_REPORT PLBWEB_SSL_BLACKLIST_FILE PLBWEB_SSL_BLACKLIST_REPORT PLBWEB_SSL_ACCEPT_TIMEOUT PLBWEB_SSL_ACCEPT_MAX PLBWEB_SSL_LOCKOUT_MAX Please note the following: I. New 'plbwebsrv.exe' commands to manage\report blacklist operations: plbwebsrv -br (reset blacklist) This command causes the PWS server to clear all of the current blacklist data. See the 'non-SSL' and 'SSL' descriptions for specific details on the reset blacklist operation. plbwebsrv -bd (dump blacklist) This command causes the PWS server to dump the current PWS blacklist data into a dump file with the data format expected\used when pre-loading blacklist data. See the 'non-SSL' and 'SSL' descriptions for specific details on the dump blacklist operation. The data in the dump file has a format which is the same as expected when a blacklist is pre-loaded. The data format can be partial or exact IP addressing using this format: nnn.nnn.nnn.nnn //Exact IP address nnn.nnn.nnn. //Partial IP address nnn.nnn. //Partial IP address nnn. //Partial IP address Example: 112. 156.112. 192.168.1.22 192.168.1.23 192.168.1.5 plbwebsrv -bl (output a blacklist listing) This command causes the PWS server to output the current PWS blacklist data into a report\listing file. See the 'non-SSL' and 'SSL' descriptions for specific details on the listing blacklist operation. The data in the listing file has a format to give the blacklist IP address and the current usage count of the blacklist IP. The format is the listing output data is as follows: 1 Locked I/P Address 112. has 0 hits 2 Locked I/P Address 156.112. has 0 hits 3 Locked I/P Address 192.168.1.12 has 11 hits 4 Error I/P Address 192.168.1.22 has 2 hits 5 Locked I/P Address 192.168.1.23 has 0 hits 6 Locked I/P Address 192.168.1.5 has 0 hits Where: 'Locked' - Indicates that the IP address(s) are locked out and not allowed to make a connection to the PWS server. 'Error' - Indicates that the IP address(s) have caused a logon accept failure at least 1 time. However, the IP is not locked out. II. Blacklist for non-SSL socket accept operations: The non-SSL blacklist support is ONLY enabled when the PLBWEB_BLACKLIST_FILE keyword is declared in the 'plbwebsrv.ini' configuration file settings. If this keyword DOES NOT exist in the PWS INI, the PWS server DOES NOT enable non-SSL blacklist monitoring. When the non-SSL blacklist monitoring is enabled, the PWS performs the following operations: 1. The file specified by the PLBWEB_BLACKLIST_FILE keyword is used to pre-load a user defined IP blacklist when the PWS starts. If this keyword is not specified in 'plbwebsrv.ini' configuration, the PWS DOES NOT start\use the non-SSL IP blacklist filtering. If the PWS options '-br' or '-bd' is executed, this keyword file is used for non-SSL support. PLBWEB_BLACKLIST_FILE={[path]+filename} 2. The file specified by the PLBWEB_BLACKLIST_REPORT keyword is used to specified the output file that receives the non-ssl IP blacklist when the PWS command option '-bl' is executed. PLBWEB_BLACKLIST_REPORT={[path]+filename} 3. When a non-SSL logon occurs, the PWS matches the new accept logon peer IP to the current IP blacklist being used. If the new logon IP is found on the IP blacklist, the connection is immediately closed before any TCP\IP communications are attempted. 4. The new PWS command options '-br', '-bd', and '-bl' can be used to reset, dump, or list the current non-SSL blacklist IP addresses only when the PLBWEB_BLACKLIST_FILE and\or PLBWEB_BLACKLIST_REPORT keywords are used. Keywords: PLBWEB_BLACKLIST_FILE={[path]+filename] This keyword file specifies the filename used to pre-load the blacklist IP addresses used for non-SSL IP filtering. If this keyword is not used, the PWS DOES NOT perform any blacklist IP filtering. PLBWEB_BLACKLIST_REPORT={[path]+filename] This keyword file specifies the filename used to output the current non-SSL blacklist IP addresses being used for non-SSL IP filtering along with the usage\activity count for the IP. PWS commands used when PLBWEB_BLACKLIST_FILE and PLBWEB_BLACKLIST_REPORT keywords are used: plbwebsrv -br (reset blacklist) plbwebsrv -bd (dump blacklist) plbwebsrv -bl (output a blacklist report) III. Blacklist for SSL socket operations: The SSL blacklist support is ALWAYS enabled to detect and monitor malicious\unexpected SSL logon attempts which can disrupt PWS SSL logon operations. There are two new keywords named PLBWEB_SSL_BLACKLIST_FILE and PLBWEB_SSL_BLACKLIST_REPORT that optionally can be used to allow a PWS administrator to define the SSL blacklist file which contains blacklist IP addresses to be filtered. If these keywords are not used, the PWS uses default pre-defined blacklist file names as follows: 'plbwebsrv_ssl_blacklist.txt' 'plbwebsrv_ssl_blacklist_report.txt' The PWS performs the following operations for the SSL blacklist monitoring: 1. The SSL blacklist support dynamically detects SSL accept logons that take an excessive amount of time to perform the required SSL accept operations to finish the SSL connection. 2. The file specified by the PLBWEB_SSL_BLACKLIST_FILE keyword is used to pre-load and output an IP blacklist when the PWS starts. If this keyword is not specified in 'plbwebsrv.ini' configuration, the PWS uses the default file name 'plbwebsrv_ssl_blacklist.txt' to pre-load and\or receive the dumped blacklist IP addresses. If the PWS option '-br' or '-bd' is executed, the current blacklist data can be reset or dumped using the current blacklist IP data file. PLBWEB_SSL_BLACKLIST_FILE={[path]+filename} 2. The file specified by the PLBWEB_SSL_BLACKLIST_REPORT keyword is used to specified the output file that receives the SSL IP blacklist report when the PWS command option PWS command '-bl' is executed. PLBWEB_SSL_BLACKLIST_REPORT={[path]+filename} 3. When a SSL logon occurs, the PWS matches the new accept logon peer IP to the current SSL IP blacklist being used. If the new logon IP is found on the IP blacklist and the usage count executes the maximum allowed attempt count, the connection is immediately closed before any SSL TCP\IP communications are attempted. 4. The new PWS command options '-br', '-bd', and '-bl' can be used to reset, dump, or list the current SSL blacklist IP addresses when the PWS server is running. 5. The PWS server always dumps SSL blacklist data when the server shuts down. 6. Dynamic Blacklist Filtering is always enabled as follows: a. If the PWS SSL logon detects excessive time in a ssl_accept, the 1) This time can be configured in seconds using the PLBWEB_SSL_ACCEPT_TIMEOUT keyword. 2) When a timeout occurs and the SSL IP logon timeout has occurred an excessive number of times, the SSL IP address is added to the SSL IP blacklist. 3) The PWS server always dumps the SSL IP blacklist when the PWS is shutdown. b. The number of active ssl_accepts are limited to to restrict the number of SSL logon threads that can be executed concurrently. By default the PWS server limits to 50 concurrent SSL logon operations. The PLBWEB_SSL_ACCEPT_MAX keyword can be used to set the limit from 1 to 100 concurrent SSL logons. c. When an SSL IP LOCKOUT occurs and it becomes permanent on the SSL IP blacklist, an error is logged and a admin MAIL message is sent when it is configured. Keywords: PLBWEB_SSL_BLACKLIST_FILE={[path]+filename] This keyword file specifies the filename used to pre-load and\or output the SSL blacklist IP addresses used for IP filtering. If this keyword is NOT used, the PWS server server defaults to use the file named 'plbwebsrv_ssl_blacklist.txt' when pre-loading or dumping IP filtering data. PLBWEB_SSL_BLACKLIST_REPORT={[path]+filename] This keyword file specifies the filename used to output the current SSL blacklist IP addresses along with the usage\activity count for the IP. If this keyword is NOT used, the PWS server defaults to use the file named 'plbwebsrv_ssl_blacklist_report.txt'. PLBWEB_SSL_ACCEPT_TIMEOUT={seconds} This keyword file specifies the elapsed time out given in seconds to wait when an SSL logon accept connection is being made. If this timeout occurs, the IP is either added or updated in the SSL blacklist data. The {seconds} valid range is: minimum 10 seconds and maximum of 600 seconds. If this keyword is not used, the PWS server defaults to use 60 seconds. PLBWEB_SSL_ACCEPT_MAX={acceptmax} This keyword specifies the maximum number of concurrent SSL accept logons. If this keyword is not used, the PWS server defaults to allow 50 concurrent SSL accept logons. The {acceptmax} valid range is: minimum 5 and maximum 100. PLBWEB_SSL_LOCKOUT_MAX={lockoutmax} This keyword specifies the maximum number of SSL IP logon accept timeout events that can occur before a specific IP address is added to the SSL blacklist. After a SSL peer IP address is added to the SSL blacklist, that SSL IP address is immediately closed upon detection until the IP address is removed from the SSL blacklist by the PWS administrator. An SSL IP address can ONLY be removed by editing the SSL blacklist data file as defined by the PLBWEB_SSL_BLACKLIST_FILE keyword or the default file being used. If this keyword is not used, the PWS server defaults to allow a maximum of 5 SSL logon accept errors. The {lockoutmax} valid range is: minimum of 1 and the maximum is unlimited. PWS commands used for SSL blacklist are: plbwebsrv -br (reset SSL blacklist) plbwebsrv -bd (dump SSL blacklist) plbwebsrv -bl (output a SSL blacklist report) - Modified the PWS to capture and log information if a GPF\SEGV error 99Aa occurs in the web server processing which controls the communications and interface to the browser clients. With this change, GPF\SEGV information is logged into in files named 'plbweb_nnnn.gpf' where the 'nnnn' identifies the id of the failing thread or process. Note: 1. This change resolves an issue where the PWS LOGON would start rejecting logon accept requests if the PWS web server processing encountered a GPF\SEGV error. In this case, the PWS server would start logging the following error multiple times: "Accept on socket failed (10038)" - Corrected a problem where a 'DESTROY COLLECTION' instruction could cause 99Aa memory loss. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLBWEBSRV (Windows) - Modified the 'SETPROP COLLECTION,*VISIBLE={0|1}' instruction to allow 99Aa properties to take affect when a collection ONLY contains normal GUI objects and it DOES NOT include NETOBJECT, NETCONTROL, CONTROL, CONTAINER, or AUTOMATION objects. Recommendations with 9.9A changes: 1. The 'SETPROP COLLECTION, PROPERTY={value}' instruction syntax should be used when the COLLECTION contains ONLY normal GUI objects like BUTTON, EDITTEXT, STATTEXT, ...etc. 2. The 'SETPROP COLLECTION, *PROPERTY={value}' instruction syntax MUST be used when the COLLECTION contains object types of NETOBJECT, NETCONTROL, CONTROL, CONTAINER, and AUTOMATION. WARNING: In this case, any normal GUI objects in this same COLLECTION are IGNORED and ARE NOT changed for the *PROPERTY. 3. As changed by the 9.9A patch release version, the 'SETPROP COLLECTION, *PROPERTY={value}' instruction syntax can change\take affect for normal objects in the COLLECTION ONLY if the collection DOES NOT include a NETOBJECT, NETCONTROL, CONTROL, CONTAINER, or AUTOMATION object. WARNING: This 9.9A change is ONLY being made to allow programs compiled after 9.5B to properly execute using the 'SETPROP COLLECTION, *PROPERTY={value}' instruction when a COLLECTION ONLY contains normal GUI objects that DO NOT include NETOBJECT, NETCONTROL, CONTROL, CONTAINER, or AUTOMATION object types. Example: A BUTTON S STATTEXT COL COLLECTION ... CREATE A... CREATE S... ... LISTINS COL, A, S ... . Note the following instruction: . . 1. The following instruction worked prior to 9.5B. . . 2. The following instruction stopped working with 9.5B . changes. . . 3. The following instruction works with 9.9A as LONG . as the COL collection DOES NOT include a NETOBJECT, . NETCONTROL, CONTROL, CONTAINER, or AUTOMATION object. SETPROP COL, *VISIBLE=1 //Worked prior to 9.5B change. //Works after 9.9A change. ... . Note the following instruction: . . 1. The following instruction works with all runtime . versions. . SETPROP COL, VISIBLE=1 . ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV - Modified the CHAIN instruction to clear the debugger TP (Trace Point) 99Aa table being used by the character debugger. This change corrects an indeterminate\GPF error that could occur after a CHAIN of a program while debugging with debugger TP variables being used. - Corrected a problem where the GETFILE of an XFILE was erroneously 99Aa reporting that an XFILE was opened after it had implicitly been closed when its parent XFILE was closed. Example to reproduce the 'GETFILE XFILE' problem: . People XFILE Person XFILE SEQ FORM "-1" . OPEN People,"test.xml" READ People,SEQ;PERSON=Person ..... . At this point, both People and Person are OPEN XFILE variables! . CLOSE People ..... . When the 'People' XFILE is closed, the children XFILE variables . to 'People' are implicitly closed. Therefore, the 'Person' . XFILE is implicitly closed. ..... . The following 'GETFILE Person' instruction should clear the ZERO . flag. . GETFILE Person //ZERO flag should be cleared! IF ZERO DISPLAY "Zero...Person XFILE is opened!" ELSE DISPLAY "Not Zero...Person XFILE is closed!" ENDIF . ............................................................... . 'test.xml' data file . John Smith James Jones ------------------------------------------------------------------------------- PLBCMP - Corrected a problem where the DTYPE compiler directive reported invalid 99Aa label type values for the labels of the ADMIN, DBSTATEMENT, VAR, and SNDFILE data variables. With this 9.9A compiler change, the Labels for these data variable types are generated correctly as follows: Data Variable Base Data Type ADMIN 73 (0x49) DBSTATEMENT 74 (0x4A) VAR 99 (0x63) SNDFILE 68 (0x44) - Corrected a problem where the DTYPESUB compiler directive did not set 99Aa the correct values for INTEGER data variables. Prior to this change the DTYPESUB INTEGER value was alway set to be zero. With this 9.9A change the DTYPESUB INTEGER type value is the size of the INTEGER (i.e. 1, 2, 3, 4, or 8). - Corrected a problem where a RECORD pointer used as the first parameter of 99Aa a FUNCTION might not be restored properly when the FUNCTION ended. In this scenario, the first parameter RECORD pointer could point to an unexpected RECORD if the FUNCTION called itself iteratively such that the first parameter was not being restored when the FUNCTION ended. - Corrected a compiler bug where the FUNCTION parameter variables might 99Aa exclude a RECORD pointer which would cause an unexpected F05 error when the FUNCTION was called. This compiler bug was caused by a 9.8B compiler change that fixed a different FUNCTION parameter list problem using RECORD variables. Example of Error: Rec RECORD Name1 DIM 10 Name2 DIM 10 RECORDEND . RecPtr RECORD ^,Rec . RecVal RECORD Value1 DIM 10 Value2 DIM 10 RECORDEND . RecValPtr RECORD ^, RecVal . X XFILE . CALL Func USING RecPtr, RecValPtr, X //F05 error! SHUTDOWN ... Func FUNCTION Names RECORD ^ Values RECORD ^ xPtr XFILE ^ ENTRY . DEBUG . FUNCTIONEND . ------------------------------------------------------------------------------- PLBDBUG - Modified the character debugger to reset the debugger TP table entries 99Aa when a CHAIN operation is executed in a debug session. ------------------------------------------------------------------------------- DBGIFACE - Corrected an O105 error when the Gui debugger was invoked using the 99Aa Sunide. ------------------------------------------------------------------------------- PLBEQU.INC - Modified the $T_INTEGER(n) type equate values to properly reflect the 99Aa PLB TYPE instruction as follows: $T_INTEGER EQU 0x0108 ;True type for variable in UDA $T_INTEGER1 EQU 0x0108 ;Integer 1 True type for variable in UDA $T_INTEGER2 EQU 0x0208 ;Integer 2 True type for variable in UDA $T_INTEGER3 EQU 0x0308 ;Integer 3 True type for variable in UDA $T_INTEGER4 EQU 0x0408 ;Integer 4 True type for variable in UDA $T_INTEGER8 EQU 0x0808 ;Integer 8 True type for variable in UDA - Removed the following TYPE instruction equate values: 99Aa $T_PROFILE EQU 0x007B ;True type for variable $T_EQUCMDLIN EQU 0x007C ;True type for variable $T_EQU EQU 0x007D ;True type for variable $T_RECORD EQU 0x0104 ;True type for variable $T_INTEGERARR1 EQU 0x0108 ;Integer 1 array $T_RECORDEF EQU 0x0204 ;True type for variable $T_INTEGERARR2 EQU 0x0208 ;Integer 2 array $T_INTEGERARR3 EQU 0x0308 ;Integer 3 array $T_INTEGERARR4 EQU 0x0408 ;Integer 4 array $T_INTEGERARR8 EQU 0x0808 ;Integer 8 array - Added the equate value types generated for the compiler 'DTYPE(label)' 99Aa directive that can be used EQUATE and %IF conditional compilation directives. See the PLBEQU.INC table of equates formatted as '$DT_{data|object}'. Example: $DT_VARLIST EQU 0x0004 ;True type for variable compiled $DT_INTEGER EQU 0x0008 ;True type for variable compiled $DT_FORM EQU 0x0010 ;True type for variable compiled $DT_FILELIST EQU 0x0014 ;True type for variable compiled ... etc ... -------------------------------------------------------------------------------