Date: 07-02-2007 Subject: RELEASE 9.2 Runtime Files These release notes pertain to the following programs or files: EMBEDINI 9.2 02 Jul 2007 9,2,0,0 MAKECLI 9.2 02 Jul 2007 9,2,0,0 MAKECON 9.2 02 Jul 2007 9,2,0,0 MAKEDEF 9.2 02 Jul 2007 9,2,0,0 PLBCLICON 9.2 02 Jul 2007 9,2,0,0 PLBCLIENT 9.2 02 Jul 2007 9,2,0,0 PLBCLINET 9.2 02 Jul 2007 9,2,0,0 PLBCON 9.2 02 Jul 2007 9,2,0,0 PLBDSIGN 9.2 02 Jul 2007 9,2,0,0 PLBNET 9.2 02 Jul 2007 9,2,0,0 PLBSERVE 9.2 02 Jul 2007 9,2,0,0 PLBWIN 9.2 02 Jul 2007 9,2,0,0 SETGUID 9.2 02 Jul 2007 9,2,0,0 SUNAAMDX 9.2 02 Jul 2007 9,2,0,0 SUNINDEX 9.2 02 Jul 2007 9,2,0,0 SUNMOD 9.2 02 Jul 2007 9,2,0,0 SUNSORT 9.2 02 Jul 2007 9,2,0,0 ODSBAC32.DLL 9.2 02 Jul 2007 PLBWSEC.DLL 9.2 02 Jul 2007 9,2,0,0 SA_DLL32.DLL 9.2 02 Jul 2007 9,2,0,0 SUNWADO.DLL 9.2 02 Jul 2007 9,2,0,0 SUNWODBC.DLL 9.2 02 Jul 2007 9,2,0,0 SUNWMSQL.DLL 9.2 02 Jul 2007 9,2,0,0 SUNWSRV.DLL 9.2 02 Jul 2007 9,2,0,0 DBGIFACE 9.2 02 Jul 2007 DESIGNER 9.0 02 Jul 2007 EDITOR 9.2 02 Jul 2007 PLBCMP 9.2 02 Jul 2007 PLBDBUG 9.2 02 Jul 2007 SUNIDE 9.2 02 Jul 2007 WATCH 9.2 02 Jul 2007 SUNCS21 9.2 02 Jul 2007 ADMEQU.INC 9.2 02 Jul 2007 PLBEQU.INC 9.2 02 Jul 2007 PLBMETH.INC 9.2 02 Jul 2007 *============================================================================== Notes for some NEW Items: - New NETOBJECT data construct used for .NET objects. - PLBNET runtime that is a .NET executable. This runtime is available in a new product called Visual PL/B.NET. - PLBCLINET client that is a .NET executable. This runtime is available in a new product called Client Windows.NET. - The SUNFM File Manager has been replaced by the SUNDM Data Manager. - %ASSEMBLY compiler directive. - SetHScrollPos and SetVScrollPos methods for PANEL and WINDOW objects. - PLBSERVE for Windows OS creates child processes and is not limited to the 2 gig total process space is previous versions were. - LoadXmlFile method for LISTVIEW/TREEVIEW loads XML data from DIM. - Auto-load DIM allocates memory dynamically when DIM is used in program. - Added mapped drive support for PLBSERVE, PLBWIN, and SUNDM. - Modified SETFOCUS for WINDOW object to change focus to next/prior GUI object based on TABID sequence. - All help files have been modified to use the compiled html help format (.chm). All programs that link to help have been modified to use the new .chm files when they are present. The .hlp format files are still available on our web site. *============================================================================== Notes for WARNINGS: - The DBCONNECT instruction was modified to always clear a FILEPI. - The PRTCLOSE instruction has always cleared a FILEPI when one parameter was specified. However, a FILEPI was not being cleared when a PRTCLOSE instruction had two or more parameters specified. Now, the PRTCLOSE instruction always clears a FILEPI regardless of the number of parameters specified. - If a user application uses a Global Variable in the variable list for a LROUTINE or ROUTINE instruction, then the Global Variable data reference can become corrupted. This problem was caused by a compiler change made in patch release 8.7B. For this case the PL/B program should be recompiled using a 9.2 compiler. - Starting with patch release 9.1A, the PLBCON, PLBWIN, and PLBCLIENT modules do not execute under Windows 95. In addition, the 9.2 PLBNET and PLBCLINET modules do not execute under Windows 95. As a general statement for the Sunbelt products, execution under the Windows 95 OS is not guaranteed. - The execution behavior of a LROUTINE/ROUTINE instruction for a static auto-load DIM variable has been changed for any program compiled with a 9.2 PLBCMP compiler. See problem description for static auto load DIM variable below. *============================================================================== The following files have been changed as follows: ------------------------------------------------------------------------------- PLBSERVE - Modified the Application Server to provide start, restart, and terminate icons that are available as resources. - Added a log message to give the current Logon User Name that starts the Application Server. - The log file name format for PLBSERVE has been modified to support a leading '#' control character. When a leading '#' character is specified, then the log file startup causes any new log entries to be appended to the end of a currently existing log file. Example of PLBSERVE.INI log name entry: PLBCS_LOGNAME=#lt.log In this case, the current logfile named 'lt.log' is used. If the 'lt.log' exists when the server is started, then any new log data is appended to the end of the exists log file. - The log file name format for PLBSERVE has been modified to support an embedded control named '@T' or '@t'. This new control is replaced with the current clock time in the log file name. This new control can be used in addition to other file name controls. Example of PLBSERVE.INI log name entry: PLBCS_LOGNAME=lt@D_@T.log In this case, the current logfile name includes the current date and time as part of the log file name. This gives a unique log file name that should never conflict with any previously existing log files. The log file name could resolve to a name like: "lt070620_110823.log" - Modified the PLBSERVE '-i' option to allow a logon user account and password to be specified for an NT Service that is created. This change allows Logon ownership for the Application Server process and optional mapped drives. Formats of '-i' command line option: '-i' - Create an NT Service for the server and the Logon user account is the Windows OS 'Local System' account. '-il' - Create an NT Service for the server and the Logon user account is the Windows OS 'Local Service' account. '-in' - Create an NT Service for the server and the Logon user account is the Windows OS 'Network Service' account. 'i=UserName;Password' - Create an NT Service for the server and the Logon user account is a current user logon and password that has been created for the system where the server NT Service is created. The username and password is authenticated. If they are bad or do not exist, then the NT Service is not created. An appropriate Windows Error Code is provided when an error occurs. Note: 1. The 'Local System' logon account is a Windows OS built-in service logon that is global to all users on a workstation. Any mapped drives added for the 'Local System' logon are visible to any users that are logged on to the workstation. However, any mapped UNC network drives added under the 'Local System' can not be managed by any logged on users. In addition, a mapped UNC network drive can cause possible conflicts. This is documented as expected behavior by the Windows OS documentation. 2. The 'Local Service' logon account is a Windows OS built-in service account. This logon account restricts privileges to provide access to the local system. Any mapped drives using this logon account are not visible to any normal users logged on to the server system. 3. The 'Network Service' logon account is a Windows OS built-in service account. This logon account allows privileges that allow process to access a network beyond the scope of the local server system. Any mapped drives using this logon account are not visible to any normal users logged on to the server system. 4. Normal user logon accounts can be used for an NT Server and any mapped drives are not visible to any other users logged on to the server system. - Added mapped drive support for the Windows version. A new section named '[mapdrives]' can be added to the PLBSERVE INI file. Mapped drive assignments can be specified in the mapdrives section. The PLBSERVE runtime uses the mapped drive settings to redirect either network drives or local DOS drives. Format: {drv}:=[~]{redir} Where: {drv} - Drive device letter ( a to z ) inclusive. {redir} - Drive device redirection string. This string can be a UNC path or a DOS drive path. [~] - Optional character before the {redir} string to prevent removal of the {drv}. Example of section in INI file: [mapdrives] f:=c:\temp g:=\\server\sharename\directory h:=~c:\sunbelt i:=~\\server\sharename\directory Notes: 1. When the {redir} string start with the '\' character, then the redirection string identifies a network UNC path name. In this case, the {drv} is redirected as a network drive. If the {drv} already exists, then the mapped drive redirection does not occur and no changes are made. 2. When the {redir} string is a DOS drive path string, then the mapped drive redirection is executed as a local DOS drive device. In the {drv} already exists, then the mapped drive redirection does not occur and no changes are made. The local DOS drive substitution is NOT support for the Windows 95, 98, and ME OS versions. The mapped drives are ignored for these Windows version. 3. The mapped drives redirection support can be used to declare drive specifications when an NT service is started. This is the original intended use for mapped drives. 4. By default, the runtime removes the {drv} mapped drive when the runtime process is terminated. If the '~' character is specified as the leading character before the {redir} string, then the runtime DOES NOT remove the {drv} when the runtime process is terminated. 5. When the application server starts the mapped drives are logged and the mapped drives are logged when the server terminates. - Added a new keyword named 'PLB_OSIDLETIME={ms}' has been added to cause the runtime to return unused execution time to the Windows OS when file IO operations are waiting on file locks. See the PLBWIN runtime description for this keyword. The description for the PLBWIN runtime applies to each child thread that executes under the PLBSERVE runtime. This keyword ONLY applies to the Windows OS runtimes. - Corrected a problem where the ADMIN child thread data was not being cleared when some user logon or termination errors occurred. This problem would cause child thread data to be appear in the WATCH utility after a child thread was terminated. ------------------------------------------------------------------------------- PLBCLINET- This client is a fully functional PL/B client that includes additional support for a new NETOBJECT PL/B data type. This client can only be executed under the Windows .NET Framework runtime. PLBCLINET requires at least Windows .NET version 2.0. See the PLBNET description for specific details for the implementation of .NET objects using the PL/B NETOBJECT variable. ------------------------------------------------------------------------------- PLBCLIENT- The normal PLBCLIENT INI setup for the PLB_MULTISERVER keyword usage PLBCLICON is to start with the PLBCS_HOSTNAME and then provide additional PLBCS_HOSTNAMEnn keywords for each additional server to be accessed. The PLBCS_HOSTNAMEnn keywords start with 'PLCS_HOSTNAME1' and continue sequentially up to a maximum of 'PLBCS_HOSTNAME39'. If the PLBCS_HOSTNAME is not found then an error is reported using the PLBCLIENT error dialog. Example of Plbclient INI file for PLB_MULTISERVER 3 servers: [environment] PLBCS_MULTISERVER=ON PLBCS_HOSTNAME=192.168.0.1 PLBCS_PORTNUM=3933 PLBCS_HOSTNAME1=192.168.0.1 PLBCS_PORTNUM1=13933 PLBCS_HOSTNAME2=192.168.0.1 PLBCS_PORTNUM2=23933 ------------------------------------------------------------------------------- PLB(UNIX)- PLBSERVE(UNIX) - In release 9.1D, there was a problem that could cause an IFILE operation to fail for some logic sequences. This problem was caused by changes made in the 9.1D release and the problems were corrected in the release 9.1E. Example: OPEN IFILE... READ IFILE,KEY;; ;Ok READKS IFILE;Data ;Ok . UPDATE IFILE;NewData ;Premature Failure with an OVER flag! ------------------------------------------------------------------------------- PLBWIN - Modified the READ XFILE instruction to set the EOS flag when the PLBSERVE input data size is too large for a program DIM or FORM variable. PLB(UNIX) In these cases, the EOS flag is set when any data file is truncated. - Modified the processing for the auto load DIM pointers to only allocate a DIM pointer when the variable is first used in a PL/B program. With this change the auto load DIM pointers are not allocated when the PLC program is loaded. Therefore, there are no wasted memory allocations used for auto load DIM pointers that are never used in a program. Example: . . In this example, the 'B' pointer is not used. Therefore, . there is never any memory allocated for the 1000 byte . variable. . . Also, the memory allocation for the 'A' variable only . occurs when the variable first used in the program. . A DIM ^100 ;Auto load DIM pointer B DIM ^1000 ;Auto Load DIM pointer C INIT "Test" . MOVE C,A ;'A' DIM is allocated when 1st used. . DISPLAY "A:",*LL,A - Modified the processing for the static auto load DIM variables to only allocate them when the variable is first used in a PL/B program. With this change the auto load DIM variables are not allocated when the PLC program is loaded. Thus, there is no wasted memory allocations used for auto load DIM variables that are never used in a program. Also, note that the PLBCMP compiler has been modified to give a complication error when a static auto-load DIM variable is encountered in an instruction that uses a pointer as a destination. Example: . . Also, the memory allocation for the 'B' variable only . occurs when the variable first used in the program. . B DIM 1000000 ;Auto Load DIM variable C INIT "Test" . MOVE C,B ;'B' DIM is allocated when 1st used. . DISPLAY "A:",*LL,A - Corrected a problem for a READ XFILE instruction where the OVER flag was being set when a FORM variable was being overflowed because the input data size was larger than the FORM variable. The OVER flag should not be set in this case. See the new EOS flag changes for the READ XFILE. - Corrected a problem where the WHEREISLAST instruction would give indeterminate results when the logical string for the {search} variable did not start with a formpointer value of one. In some cases, this problem caused the {result] value to be invalid and in other cases the problem could cause a GPF/SEGV error. - Corrected a problem where an invalid error message was being reported when an '.SDB' file could not be found for a CHAIN operation and 'PLB_DYNAMICLOADMOD=ON' was being used. This invalid error message would be displayed in the PLBDBUG display window if a dynamic Load Module was loaded when the CHAIN operation was executed. - Corrected a problem where the EXPLODE instruction would give indeterminate results when the data contained character values larger than 0x7F. - Corrected a GPF error that could occur after a C09 subcode 20 error when there were load modules currently loaded. - Modified the runtime to correct a problem when a Global Variable was specified in a LROUTINE/ROUTINE variable list. This runtime change is implemented to allow proper behavior Global Variable data referencing as described in the PLBCMP compiler section below. - Corrected a GPF error for the STOREADR instruction when a pointer and VARLIST variables were used in the variable list. Example of Error: DATA INIT "TEST" . PTR DIM ^ . VARL LIST aPTR DIM ^ bPTR DIM ^ LISTEND . NDX FORM "2" . STOREADR DATA,NDX,PTR,VARL . DISPLAY "aPTR:",aPTR . KEYIN "HIT ENTER TO EXIT:",S$CMDLIN - Corrected a problem where the LOADADR and STOREADR instructions were giving a F05 error when the first operand for the instructions was an array with a variable index. Example of Error: NDX FORM "2" ARR DIM 10(3),("D1"),("D2"),("D3") . PNDX FORM "3" PTR DIM ^(3) . STOREADR ARR(NDX), PNDX, PTR(1),PTR(2),PTR(3) . LOADADR PTR(NDX), PNDX, ARR(1),ARR(2),ARR(3) . ------------------------------------------------------------------------------- PLBNET - This runtime is a fully functional PL/B runtime that includes additional support for a new NETOBJECT PL/B data type. This runtime can only be executed under the Windows .NET Framework runtime. PLBCLINET requires at least Windows .NET version 2.0. The Windows .NET Framework is composed of two basic components: 1. A program runtime environment is provided that allows .NET applications to be executed. This execution environment is required to execute the PLBNET runtime. 2. In addition, the .NET Framework provides a class library that provides a pre-coded set of solutions that include a large number of programming components. The components are referenced as namespace levels that may required multiple levels to identify a specify .NET class. Descriptions for specific class library components are available at the Microsoft Web Site with the following URL address: "http://msdn2.microsoft.com" Once at this Web Site, then select the 'Library' tab. This links to the 'MSDN Library' site. Now, follow the MSDN Library information tree to get to a .NET class library as follows: <.NET Development>