Date: 02-28-2006 Subject: RELEASE 9.1 Runtime Files Files included with this release are: EMBEDINI 9.1 28 Feb 2006 9,1,0,0 MAKEDEF 9.1 28 Feb 2006 9,1,0,0 MAKECLI 9.1 28 Feb 2006 9,1,0,0 MAKECON 9.1 28 Feb 2006 9,1,0,0 ODSBAC32.DLL 9.1 28 Feb 2006 PLBCLICON 9.1 28 Feb 2006 9,1,0,0 PLBCLIENT 9.1 28 Feb 2006 9,1,0,0 PLBCON 9.1 28 Feb 2006 9,1,0,0 PLBDSIGN 9.1 28 Feb 2006 9,1,0,0 PLBSERVE 9.1 28 Feb 2006 9,1,0,0 PLBWIN 9.1 28 Feb 2006 9,1,0,0 PLBWSEC.DLL 9.1 28 Feb 2006 9,1,0,0 SA_DLL32.DLL 9.1 28 Feb 2006 9,1,0,0 SETGUID 9.1 28 Feb 2006 9,1,0,0 SUNAAMDX 9.1 28 Feb 2006 9,1,0,0 SUNINDEX 9.1 28 Feb 2006 9,1,0,0 SUNMOD 9.1 28 Feb 2006 9,1,0,0 SUNSORT 9.1 28 Feb 2006 9,1,0,0 SUNWADO.DLL 9.1 28 Feb 2006 9,1,0,0 SUNWMSQL.DLL 9.1 28 Feb 2006 9,1,0,0 SUNWODBC.DLL 9.1 28 Feb 2006 9,1,0,0 SUNWSRV.DLL 9.1 28 Feb 2006 9,1,0,0 PLBCMP.PLC 9.1 28 Feb 2006 PLBDBUG.PLC 9.1 28 Feb 2006 WATCH.PLC 9.1 28 Feb 2006 ADMEQU.INC 9.1 28 Feb 2006 PLBEQU.INC 9.1 28 Feb 2006 PLBMETH.INC 9.1 28 Feb 2006 *============================================================================== Notes for some NEW Items: - Added file replication to SUNFM. - Added RUNNAME property for every GUI object. - Added FILE/AFILE/IFILE array support. - Added new instructions FPOSITA and REPOSITA. - Added *CLIPTEXT control for PRTPAGE. - Added support for PLBCS_SINGLEUSE keyword at PLBSERVE server. - Added new instruction named MAILSEND. - SUNFHSYS.DLL and SUNFHDLL.DLL are NOT used for the 9.1 release. *============================================================================== The following files have been changed as follows: ------------------------------------------------------------------------------- PLBSERVE - Modified the runtime child connection logic to prevent the connection count from going negative. This change is being made to prevent the possibility of a problem where no users could logon because the maximum connection count was exceeded. - Modified the application server to provide logon child count data to the ADMIN services. This information is provided via the ADMGETINFO instruction to determine the largest server child count since the server has started. - Corrected a problem where some logon message error responses might be lost. If an error response was lost, then the client would give a generic error message instead of the true reason for a connection failure. ------------------------------------------------------------------------------- PLBSERVE - Modified the server to support the PLBCS_SINGLEUSE keyword when PLBCLIENT it is specified in the PLBSERVE INI file. The format of the PLBCS_SINGLEUSE keyword is the same a currently document for the PLBCLIENT usage. When the PLBCS_SINGLEUSE is specified with a non-zero client limit value, then the following processing is applied to the PLBCLIENT clients that access the server. 1. The version of the PLBCLIENT client MUST be a version 9.1 or later. Otherwise, a bad version message occurs when a client attempts to logon to a server. 2. The PLBSERVE server rejects a client logon when the number of current PLBCLIENT processes at a workstation exceed the current PLBCS_SINGLEUSE limit specified at the server. 3. If a PLBCLIENT logon is rejected by the server because of the PLBCS_SINGLEUSE limit has been exceeded, then the PLBCLIENT activates the last visible PLBCLIENT process that was found in the Windows OS active window list. This is consistent with the processing for the PLBCS_SINGLEUSE keyword that may be set in a PLBCLIENT INI file. 4. If PLBCS_SINGLEUSE keyword in the PLBSERVE INI can be reset or disabled when a 'PLBSERVE -r' reset license command is executed. Appropriate messages are logged when the PLBCS_SINGLEUSE keyword setting is changed. 5. When the PLBSERVE server rejects a client logon because the PLBCS_SINGLEUSE limit has been exceeded, then the following message is logged in the PLBSERVE log file: "Workstation clients exceed PLBCS_SINGLEUSE setting! (Child Task NOT STARTED!)" 6. The PLBCS_SINGLEUSE can be used at either the client or server. Also, this keyword can be used on both sides at the same time. The client side setting of PLBCS_SINGLEUSE can be more restrictive than the server side. However, if the client side limit is larger than the server setting, then the server side limit always applies. 7. The format of the PLBCS_SINGLEUSE keyword is as follows: Format: PLBCS_SINGLEUSE=on - Only allow a single instance of the PLBCLIENT at the client workstation. PLBCS_SINGLEUSE=nnn - Allow 'nnn' instances of the PLBCLIENT to be executed a the same time at the client workstation. - Corrected a problem where SPLOPEN to 'COM1:' did not work. ------------------------------------------------------------------------------- PLBWIN - Modified the GETMODE instruction to support 7 new keywords that PLBSERVE retrieve memory usage information for a program memory and global PLB (UNIX) memory as follows: *CURPROGMEM={nvar} This keyword returns the current program memory size that is being used for the main program and all loadmod programs that are loaded. *MAXPROGMEM={nvar} This keyword returns the maximum memory size available to load a main program and loadmod programs. *CURGLOBMEM={nvar} This keyword returns the current global memory size being used in the global memory space. *MAXGLOBMEM=(nvar} This keyword returns the maximum global memory size available for program use. *HIGHPROGMEM={nvar} This keyword returns the highest program memory size that has been used since the first PL/B program was started. The return value is a high water mark value for the *CURPROGMEM values. *HIGHHEAPMEM={nvar} This keyword returns the highest runtime heap memory that has been used since the first PL/B program was started for a PLBSERVE Windows runtime. The return value is a high water mark value. *HIGHLOCALMEM={nvar} This keyword returns the highest runtime local memory that has been used since the first PL/B program was started. The return value is a high water mark value. - Modified the GETFILE to support a new keyword named 'CURFIELDS={svar}' for a XFILE. The CURFIELDS keyword retrieves a comma delimited list of field tag names that are defined for the current record in a recordset that has been read. Please note that the CURFIELDS keyword gives the field tag names for the current record in a recordset. Also note, that the FIELDS keyword gives the accumulated union of all of the field names for all of the records accessed in a recordset. - Modified the runtimes to support AFILE, FILE, and IFILE array variables. - Added two new instructions named FPOSITA and REPOSITA. These instructions are implemented for the AFILE file variable to allow the AAM index position to be saved using the FPOSITA and to be restored using the REPOSITA. ------------------------------------------ FPOSITA Instruction The FPOSITA instruction retrieves the current index position for an AFILE file variable. It uses following format; [label] FPOSITA {afile},{pos} Where: label Optional. A Program Execution Label. afile Required. A previously defined and opened AFILE variable whose current index position is returned. pos Required. A previously defined Character String Variable that receives the current index position data for the {afile} file variable. Flags Affected: None Note the following: 1. All of the data stored into the {pos} data variable is required to be provided to the REPOSITA instruction to re-establish the AAM index current position. This allows the READKG or READKGP instructions to be performed without having to execute a READ AAM with key instruction. 2. The data stored into the {pos} is composed of two basic sets of components. The first set of components is the basic parameters required to reset the AAM index position. The second set of components found in the {pos} data is the user key data strings that is in use for the AFILE when the FPOSITA instruction is executed. The size of the {pos} is determined by the size of the two sets of components. The size of the first set depends on the operation system where the runtime is being executed. The size of the second set of key data depends on the user application keys that are in use when the FPOSITA is executed. The size of {pos} can be calculated as follows: possize = indexsize + keysize1 + keysize2...+ keysizeN Where: indexsize - This is the size of the AAM index data that is required to restore the AAM index position. This size depends on the OS where the runtime is executed. Windows runtimes - 24 bytes keysize1 - This is the size of the first user key string plus one. keysize2 - This is the size of the second user key string plus one. keysizeN - This is the size of the Nth user key string plus one. Example: . . The MINIMUM size of AAMPOS is calculated as . follows when using a Windows runtime and the . key as shown: . . size = 24 + 7 = 31 . AAMPOS DIM 31 AFILE AFILE KEY1 INIT "01XABC" . OPEN AFILE... . READ AFILE,KEY1;S$CMDLIN FPOSITA AFILE,AAMPOS 3. An I29 error can occur for the execution of the FPOSITA instruction. The following subcodes help identify the specific problem. I29 subcodes: 20 - The AAM index position data received from a SUNFM file manager is too large for the FPOSITA output variable. Under normal circumstances this error should never occur. 21 - The output index DIM variable is too small for the FPOSITA data. 99 - The SUNFM file manager that is being accessed for the AFILE does not support the FPOSITA and REPOSITA instructions. ------------------------------------------ REPOSITA Instruction The REPOSITA instruction uses the AAM index position data as returned by FPOSITA instruction to set the current AAM index file variable position. This allows the READKG and READKGP instructions to execute and retrieve the next appropriate record after the REPOSITA instruction is executed. The instruction format is a follows: [label] REPOSITA {afile},{pos}[,{key}[...]] Where: label Optional. A Program Execution Label. afile Required. A previously defined and opened AFILE variable whose current index position is being restored. pos Required. A previously defined Character String Variable that contains the FPOSITA data that is used to restore the current AAM index position for the {afile} file variable. key Optional. One or more previously defined Character String Variables or VARLISTs of Character String Variables that contain specific key data used reset the current AAM index position. Flags Affected: None Note the following: 1. The data in the {pos} Character String Variable must contain data returned by a FPOSITA instruction. Otherwise, an I29 error occurs. 2. If the {key} data variables are provided, then this key data replaces the key data in the {pos} variable before the AAM index position is reset. 3. The format of the {key} data is the same as for READ AFILE instruction. 2. An I29 error can occur for the execution of the REPOSITA instruction. The following subcodes help identify the specific problem. I29 subcodes: 40 - Key data is required. 41 - The input AAM index position data is too small and can not be used to restore the AAM index position. 42 - Key data must be provided. This is an internal error and should not occur under normal circumstances. 43 - The input AAM index position data variable can not be a NULL variable. 44 - The input AAM index position data variable is corrupted. This is an internal error and should not occur under normal circumstances. 99 - The SUNFM file manager that is being accessed for the AFILE does not support the FPOSITA and REPOSITA instructions. - Modified the GETFILE to support a new keyword named 'FPOSITASIZE={nvar}' for an AFILE. The FPOSITASIZE keyword retrieves the current minimum size required for the {pos} Character String variable in the FPOSITA instruction. Please note that the FPOSITASIZE size can vary depending on the current AAM keys that were used for the last AFILE IO operation. - Modified the runtimes to support a new keyword named PLB_FMALTIP. This keyword is used to specify the IP/URL addresses for the SUNFM servers that a client runtime is to use when an application opens a managed file. The order of the IP/URL addresses specifies the order from left to right that is to be used when connecting to a network of SUNFM servers. The format for this keyword is: PLB_FMALTIP={first}[|{second1}[|{second2}[...|{secondN}]]] Where: {first } - This is the IP/URL for the first SUNFM server that an application attempts to connect access. This {second1} - This is the IP/URL for the next SUNFM server that a runtime attempts to connect to when the {first} server can not be accessed. {secondN} - This is the IP/URL for the next SUNFM server that a runtime attempts to connect to when the previous {secondX} serve can not be accessed. - Modified the GETMODE and SETMODE instructions to support a new keyword named '*FMALTIP={svar}'. The *FMALTIP keyword data string has the same format and functionality as the PLB_FMALTIP INI keyword described above. - Corrected a problem where two WRITE operations for a data size less than 256 bytes executed under a TRANSACTION could cause the data output to be corrupted. This problem would occur when the second WRITE operation was executed at a file offset of 256 bytes from the start of the first WRITE operation. - Modified the PREP IFILE operation to perform a Windows OS file commit operation after the ISI header has been written. This works around a problem where the ISI could be truncated when the ISI/TXT files existed on a Win95/98/ME system and they were being accessed via a network-shared drive. This is a Windows OS network problem when the files were written via a network-shared drive. The truncated header in this case would cause an I60 error to occur when the ISI was subsequently used. The PLB logic that caused the truncated ISI header is demonstrated as follows: Example: IFILE IFILE IFILE1 IFILE . ERASE "x60.txt" ERASE "x60.isi" . PREP IFILE,"x60","x60","1-5","10" OPEN IFILE1,"x60" . WRITE IFILE;"1234567890" . WRITE IFILE1;"ABCDEFGHIJ" ;I60 Error!!! . STOP - Modified the OPEN XFILE operation to allow a XML file and schema to be opened in a READ Only mode. The MODE option has been modified to support a bit definition that causes the files to be opened in READ only mode as follows: Keyword Value Meaning XFILE_OPENREADONLY 0x00000100 Open XML and schema in READ Only - A new instruction named MAILSEND has been added for the PLB language. This instruction allows a PLB user application to send an e-mail message with associated attachments. Format: MAILSEND {outgoing},{sendto},{sendfrom},{subject}: {message}[,{options}] Where: {outgoing} This operand is required and it contains the SMTP outgoing mail server name (URL) or IP address. This operand is a {svarlit} variable. {sendto} This operand is required and it contains the e-mail address(es) of the recipients. This operand is a {svarlit} variable. The data provided for this operand can be a single e-mail address or it can be multiple e-mail addresses that are separated by a comma character. {sendfrom} This operand is required and it contains the e-mail address of the sender. This operand is a {svarlit} variable. The data provided for this operand can be a single e-mail address. {subject} This operand is required and it contains the subject for the message. This operand is a {svarlit} variable. {message} This operand is required and it contains the message body to be sent. This operand is a {svarlit} variable. The default message type used for the message body is text/plain. The optional *TYPE keyword can be used when another message body subtype is to be specified. {options} The parameters that follow the required operands are optional and can be specified in any order using keywords as follows: *ATTACHMENT={svarlit} This optional parameter specifies one or more file names that identify the files to be sent with the e-mail message as attachments. When more than one file name is specified, then the semi-colon ';' character is used to separate the file names. *BCC={svarlit} This optional parameter specifies the e-mail address(es) of the Blind Copy recipients. This parameter can contain one or more recipient addresses. If more than one e-mail recipient is specified, then a comma ',' character is used to separate the e-mail addresses. *CC={svarlit} This optional parameter specifies the e-mail address(es) of the Copy recipients. This parameter can contain one or more recipient addresses. If more than one e-mail recipient is specified, then a comma ',' character is used to separate the e-mail addresses. *ERROR={svar} This optional parameter specifies a Character String variable that is to receive any error information caused by the MAILSEND instruction. If this parameter. is not specified, then any error information is stored into the S$ERROR$ variable. *PASSWORD={svarlit} This optional parameter specifies the password to be used for the login to the {outgoing} e-mail server. *PORT={dnumnvar} This optional parameter specifies the port number to be used when logging on to the {outgoing} e-mail server. If this parameter is not specified, then the default port number of '25' is used. *TIMEOUT={dnumnvar] This optional parameter specifies the timeout value to be used when communicating with the {outgoing} e-mail server. If this parameter is not specified, then the default timeout of '60 seconds' is used. There are no restrictions placed on the TIMEOUT values used. *TRACE={svarlit} This optional parameter specifies the file name to be created and used to store all data messages sent and received when communicating with the {outgoing} e-mail server. Note that a trace file over written for a given MAILSEND instruction. *TYPE={dnumnvar} This optional parameter is used to specify the body Content-Type to be used for the e-mail message. The {dnumnvar} value can be one of the following values: 0 - The Content-Type is text/plain with the character set of us-ascii specified. The e-mail body is a simple text message. 1 - The Content-Type is text/html. The e-mail body is in HTML format. 2 - The Content-Type is text/richtext. The e-mail body is in a richtext e-mail format. The RFC 1341 describes this simple subtype. 3 - The Content-Type is text/plain with the character set of iso-8859-1 specified. The e-mail body is a simple text message. Any other values are considered invalid and the default value of zero is used. *USER={svarlit} This optional parameter specifies the username to be used for the login to the {outgoing} e-mail server. Flags affected: ZERO, EOS ZERO If this flag is set to be TRUE, then the MAILSEND instruction was executed successfully. If this flag is set to be FALSE, then the MAILSEND instruction failed. In this case, any error information is stored into S$ERROR$ or the *ERROR data variable. EOS If this flag is set to be TRUE, then the error variable is too small to contain all of the error information and some error information has been truncated. Otherwise, this flag is set to be FALSE. Notes: 1. When an error occurs during the execution of the MAILSEND instruction. Then any error data is stored into the S$ERROR$ or svar variable specified by the *ERROR keyword. The error information is stored using one of the following formats: "Mnn Subcode: sss or "Mnn Subcode: sss OsError: ooo" Where: Mnn - This field specifies the operand in the MAILSEND instruction that is related to error being reported. The 'nn' value identifies the operands/options as follows: 01 - *ATTACHMENT option 02 - *BCC option 03 - *CC option 04 - *ERROR option 05 - *PASSWORD option 06 - *PORT option 07 - *TIMEOUT option 08 - *USER option 09 - reserved 10 - reserved 11 - reserved 12 - *TRACE option 13 - *TYPE option 80 - {outgoing} operand 81 - {sendto} operand 82 - {sendfrom} operand 83 - {subject} operand 84 - {message} operand sss - The field value specifies a subcode that is used to qualify the error that has occurred. The following subcode values can be given. 31 - Insufficient memory! 32 - Unable to create TRACE file! 33 - Did not receive ready message from the e-mail server during the logon process. 34 - Invalid e-mail server response for a QUIT action. 35 - Invalid e-mail server response when OK response expected. 36 - Invalid e-mail server response for an OPEN command to start a connection. 37 - Invalid e-mail server response from server after sending the e-mail message data header. 38 - The e-mail server rejected the {sendfrom} e-mail address. 39 - The e-mail server AUTH login is not available when using the *USER/*PASSWORD settings. 40 - Invalid e-mail server response to a AUTH LOGIN command. 41 - The *USER name has been rejected. 42 - The e-mail server did not send a PASSWORD response while processing the *PASSWORD option. 43 - The *PASSWORD option is invalid. 44 - Recipient e-mail address. 45 - Unable to open attachment. 46 - Error while reading attachment file. 60 - Error accessing library used for socket support. For the Windows OS this means that an error has occurred while accessing the WS2_32.DLL or the WSOCK32.DLL. 61 - Unable to resolve the {outgoing} e-mail server URL/IP address. 62 - Unable to create a socket when connecting to the {outgoing} e-mail server. 63 - Unable to connect a socket during the logon process to access the {outgoing} e-mail server. 70 - Error occurred while sending a message to the {outgoing} e-mail server. 80 - Error occurred while receiving a message from the {outgoing} e-mail server. 81 - Timeout occurred while waiting to receive a message from the {outgoing} e-mail server. 82 - Socket error occurred during a receive operation. 83 - Lost connection while waiting for a socket receive operation. 84 - Receive select error has occurred while waiting to receive a message. ooo - The 'ooo' value is an OS specific error code. Under UNIX this code is an appropriate errno value. Under Windows this code is a Windows error code. Example: Out INIT "www.outgoing.com" From INIT "Me@sunbelt-plb.com" To INIT "Someone@sunbelt-plb.com" Subject INIT "Test Mail Message" Body INIT "Hello World!" CC INIT "one@sunbelt-plb.com,two@sunbelt-plb.com" . MAILSEND Out, From, To, Subject, Body . MAILSEND Out, From, To, Subject, Body, *CC=CC . MAILSEND Out, From, To, Subject, Body, *CC=CC: *ERROR=S$CMDLIN, *TIMEOUT=5 - Corrected a problem where a MFD file could destroyed when a FILE, AFILE, or IFILE prep was executed using the MFD file and the PLB_PREPUSEIP keyword is being used. - Modified the XML header keyword output from "utf-8" to be "UTF-8". This corrects a problem on some XML parsers. ------------------------------------------------------------------------------- PLBWIN - A new property named 'RUNNAME={svarslit}' has been added for all GUI objects. The RUNNAME property can be set using to a user defined string name when it is specified in a CREATE or SETPROP instruction. The GETPROP instruction can be used to retrieve the current RUNNAME property string value. Notes: 1. Two new PLBCMP compiler directives named %RUNNAMEON & %RUNNAMEOFF have been added to allow the RUNNAME property to be automatically assigned to the GUI object data label reference in a CREATE instruction. If the RUNNAME property is explicitly specified in a CREATE instruction, then it takes precedent over the compiler directive operation. - Modified the WINPOS property for a WINDOW object to support new position values for Maximize (4) and Minimize (5) when a WINDOW is activated. - Added a new control named '*CLIPTEXT=t:b:l:r:{varlit} for a PRTPAGE instruction. This control is provided to clip/restrict the {varlit} text output to the rectangle specified by the 't', 'b', 'l', and 'r' page position parameters. By default the {varlit} text output is left justified in the clipping rectangle unless the *ALIGNMENT control is used. Any data output outside the bound of the clipping rectangle is clipped/truncated. The *ALIGNMENT control can be used to control the {varlit} text output in the clipping rectangle as follows: *ALIGNMENT=*{CENTER|DECIMAL|LEFT|RIGHT} CENTER In this case, the {varlit} text is split in half. The left half of the {varlit} text is output to the left of the center point for the clipping rectangle. The right half of the {varlit} text is output to the right of the center point for the clipping rectangle. Text is clipped/truncated from the beginning and ending of the data when the size of the data is too large to fit in the clipping rectangle. DECIMAL In this case, the {varlit} text data is centered around a decimal point that exists. The decimal point is positioned to the center of the *CLIPTEXT clipping rectangle. If the {varlit} text data does not contain a decimal point, then the {varlit} data is right justified to the center of the clipping rectangle. Text is clipped/truncated from the beginning and ending of the data when the data can fit in the clipping rectangle. LEFT In this case, the {varlit} text data is left justified in the clipping rectangle. If the *ALIGNMENT is not used for the *CLIPTEXT control, then this the default justification used for the {varlit} text data. The text data can be clipped/truncated at the end of data. RIGHT In this case, the {varlit} text data is right justified in the clipping rectangle. Text is clipped/truncated from the beginning of the data when the size of the data is too large to fit in the clipping rectangle. - Modified the *ALIGNMENT control for the PRTPAGE instruction to allow a {dnumnvar} variable to be used as follows: Format: *ALIGNMENT=*{DECIMAL|LEFT|RIGHT|CENTER}|{dnumnvar} Note: 1. If the {dnumnvar} syntax format is used, then the alignment values are defined as follows: DECIMAL = 1 LEFT = 2 (Default) RIGHT = 3 CENTER = 4 2. If the {dnumnvar} value is invalid, then the default alignment value for 'LEFT' is used. - Modified the GETINFO instruction to support a FONT object output for the FONTS keyword. The FONTS description is changed as follows: FONTS the available Windows fonts. The {dest} may be a DATALIST object, FONT object, or a string variable. If the {dest} is a FONT object or a string variable, the default font is returned. If the {dest} is a FONT object and the PRINTER={pfile} is not used, then the default font of the MAINWINDOW is returned. If the {dest} is a FONT object and the PRINTER={pfile} is used, then the current printer font for the {pfile} is returned. Note, that the PRINTER {pfile} must be opened with a PRTOPEN instruction to have data returned. - Corrected a problem where a second fastevent was dispatched while a first fastevent was being processed when a SETFOCUS instruction was executed. This could cause indeterminate program execution. One symptom of this problem might be a U01 error. - Corrected an O108 error that would occur when a font file resource was being used with the following font string format: " '>c:\temp\c39h12l3.tff.C39 High 12pt LJ3' " - Modified the PREP IFILE operation to perform a Windows OS file commit operation after the ISI header has been written. This corrects a problem where the ISI could be truncated when the ISI/TXT files existed on a Win95/98/ME system and were being accessed via a network-shared drive. - Corrected a problem with PATH EXIST that would always return an OVER condition if the specified path ended with a '/' character. ------------------------------------------------------------------------------- PLBCMP - Modified the GETFILE instruction to support the CURFIELDS={svar} keyword. - Modified the FILE/AFILE/IFILE file variables to be able to declare an array format as follows: [label] file [({arraysize},...,{arraysize})][{parm}] [label] file [*][({arraysize},...,{arraysize})][{parm}] [label] file [%][({arraysize},...,{arraysize})][{parm}] [label] file [%%][({arraysize},...,{arraysize})][{parm}] [label] file [^][({arraysize},...,{arraysize})][,({target})] Where: file Required. This operand can be a FILE, AFILE, or IFILE file variable. arraysize Optional. An Integer decimal constant, CONST variable or equated value indicating the number of array items. parm Optional. This parameter is the same as documented for the FILE/AFILE/IFILE file variables. target Optional. This parameter is the same as documented for the FILE/AFILE/IFILE file variables. Note: 1. A AFILE/IFILE file variable array can be declared within a FILELIST/FILELISTEND declaration. Examples: FILEARR FILE (2) BUFFER=1024 $3 INTEGER 1,"3" . OPEN FILEARR(2),"TEST2" PREP FILEARR($3),"TEST3" - Corrected a problem where a compilation error would occur when compiling a RETURN instruction with a comment as follows: RETURN ;Comment - Corrected a problem where a RECORD declaration as an input parameter for a FUNCTION would cause a GPF error when the FUNCTION was called during program execution. ------------------------------------------------------------------------------- PLBDSIGN - Modified the WINPOS property for the WINDOW object to support a Maximize and Minimize position. ------------------------------------------------------------------------------- UTILITY - Modified the Windows OS utilities for SUNAAMDX, SUNINDEX, and SUNSORT to support the PLB_FNC keyword. This allows file names to be forced to a lowercase or mixed case when they are created. - Modified the PLB_FNC support for the utilities to support a 'MIXED' value. When the 'MIXED' string value is specified, then the SUNAAMDX, SUNINDEX, and SUNSORT utilities DO NOT change the case for the filenames as specified by the user command line. ------------------------------------------------------------------------------- ADMEQU.INC - Added the $ADMITEMSRVPROGMEM, $ADMITEMSRVHEAPMEM, $ADMITEMSRVLOCALMEM, and $ADMITEMSRVCHILDCOUNT equates. ------------------------------------------------------------------------------- PLBEQU.INC - Updated the object types. - Added $MAXIMIZE and $MINIMIZE equates. - Added PANEL object for CLIPCTRL property. - Added STATUSBAR and TOOLBAR equates that were missing. ------------------------------------------------------------------------------- SUNWODBC.DLL- Corrected a problem where a DBDISCONNECT could cause a GPF error to occur. ------------------------------------------------------------------------------- ADMIN - The ADMGETINFO data has been modified to include the following data items for the application server. $ADMITEMSRVPROGMEM = 117 This ADMIN server data item retrieves the largest program memory size used by one of the clients that has connected to the application server. This value is a high water mark value and it never decreases. The returned value in this case can be used to help determine the largest setting required for a the runtime command line '-m' or '-mv' options. $ADMITEMSRVHEAPMEM = 118 This ADMIN server data item retrieves the largest heap memory size used by one of the clients that has connected to the application server. This value is a high water mark value and it never decreases. $ADMITEMSRVLOCALMEM = 119 This ADMIN server data item retrieves the largest local memory size used by one of the clients that has connected to the application server. This value is a high water mark value and it never decreases. $ADMITEMSRVCHILDCOUNT = 120 This ADMIN server data item retrieves the largest logon child count since an application or file manager server has started. This value is a high water mark value and it never decreases. ------------------------------------------------------------------------------- SUNIDE - Added trap for potential I11 error during CLEAN process. - Corrected email address in error dialog. - Improved startup time. - Corrected communications compression problem. - Added Remode debugging capability. On the system with the program to be debugged, the port number must be specified. It is this specification that tells the debugger to use the remote capabilities. The default is 24240 and can be defined in either the UET or .INI file. Example: PLBDBG_PORTNUM=24240 On the system with the GUI debugger, set the IP address and port number. The IP address is the address of the system running the program to be debugged. The Port number defaults to 24240 if not specified. The variable must be set in the UET and cannot be in the .INI file. Example: PLBDBG_HOST=192.168.2.10:24240 Start the GUI debugger with the following command: plbwin dbgiface It will alert you when to start the program to be debugged. When prompted, start the program to be debugged as you normally would when debugging: plbwin -d program. Click "Ok" to let the GUI debugger know the program is running. If the GUI debugger is not able to establish a connection within 30 seconds, the character debugger will initialize on the system running the program to be debugged and the client GUI debugger will terminate. ------------------------------------------------------------------------------- WATCH - Added support for new ADMIN counters specified above. -------------------------------------------------------------------------------