You are on page 1of 55

READMESP.txt Progress OpenEdge 10.

1A02 Service Pack ALL Platforms Readme RELEASE NOTES AND INSTALLATION INSTRUCTIONS ALL PLATFORMS for PROGRESS Service Pack 10.1A02 and WebSpeed Service Pack ** Please make sure you shut down any instances of PROGRESS that you have running before installing this Service Pack. If you do not, you may receive messages indicating that some files could not be copied on top of other files (because they are locked\in use by another process). ** SHARED MEMORY VERSIONS OF LOCAL CLIENT & SERVER If your client and server are installed on the same physical machine and have different levels installed, you may experience shared memory problems. For more information about this issue, refer to Progress Solution(s); P123, "What Type of Connection is Possible from Client to Server when the Progress versions differ?" P13987, "What causes shared memory version errors 1178 and 1423?" SYSTEM INFORMATION: Platform: ALL Service Pack Version: 10.1A02 Warning Messages for Storage Area Limits Bug: 20050729-029 ============= When the address space in a storage area is totally exhausted, a database crash will occur. In the past, some crashes have not proven recoverable due to large transactions processed during part of crash recovery. A change has been made to the RDBMS to warn of approaching address limits, and to ensure crash recovery can proceed. The change causes WARNING messages to be printed to the database logfile at the points where 80% of the address space is consumed, and again at 90% of address space utilization. These are warnings, and not fatal errors. Processing is NOT allowed to consume 100% of a storage area now. Instead, a database will crash short of the 100% point so that space reserved for crash recovery can be utilized to handle the transactional portions of recovery, i.e. recovery should perform correctly. For combinations of small block sizes (1024 and 2048) and large numbers of records per block (256 and 128) 1GBytes of space is reserved. For all other combinations, 5GBytes for recovery is reserved. The sequence of events seen in the logfile is thus: 2146204160 06:10:06 WARNING: Area: 51 extent TONOPAH has reached the 80% threshold for block usage - current block hiwater 1716963328 22:07:04 WARNING: Area: 51 extent TONOPAH has reached the 90% threshold for block usage - current block hiwater 1931583744 07:10:02 SYSTEM ERROR Area: 51 extent TONOPAH has exceeded the maximum Page 1

READMESP.txt number of blocks per area - extend: 2146201034 maximum 2146204160 Please also refer to prior information provided regarding the "statparse" tool, a free utility that can be used routinely to monitor storage area use. ***************************************************************************** Object Oriented 4GL Enhancements ---------------------------------------------------1. Change to the behavior of the TYPE-OF function -------------------------------------------------------------------------The TYPE-OF function is used to determine if an object reference is of a specific type. It takes an object reference and a type name as arguments. In 10.1A the type name argument was defined as a character expression. Therefore both character variables and character literals were valid arguments. In 10.1A01 the type name argument has changed to be consistent with type name fields throughout the language. This means that character variables will no longer be valid arguments to the TYPE-OF function and will generate a compiler error. Type names will not need to be quoted unless they contain embedded spaces. Also, the compiler will verify at compile time that the type name refers to a known class and will generate a compiler error it does not. 2. Changes to XREF -----------------------------The XREF option on the COMPILE statement generates a listing of cross-reference information between procedures and classes, and the objects referenced in them. This option will be more fully supported in 10.1A01 for classes in that more detailed information will be available for references to OO4GL features. The following is an excerpt from the table in the Progres 4GL Reference that lists the reference types and object identifiers (found in the entry for the COMPILE statement under the XREF option). It includes the additional information that has been added for OO4GL support. Reference Types Object Identifiers ---------------------------------------------------------------------------------| ACCESS | { [database.] table field [WORKTABLE] } | | {SHARED variable} | | {PUBLIC-DATA-MEMBER class-name:data-member-name} | | {INHERITED-DATA-MEMBER class-name:data-member-name} ---------------------------------------------------------------------------------| CLASS | class-name,[INHERITS inherited-class-name ...], | [IMPLEMENTS | | | interface-name ...], [USE-WIDGET-POOL],[FINAL] ---------------------------------------------------------------------------------| CONSTRUCTOR | {PUBLIC | PROTECTED} ,,, constructor-name, void, | [parameter1 | | | [,parameter2] ... ] ---------------------------------------------------------------------------------| CREATE | { [database.] table [WORKTABLE] } | | { {DATA-MEMBER | INHERITED-DATA-MEMBER } | | class-name:table} ---------------------------------------------------------------------------------| DATA-MEMBER | {PUBLIC | PROTECTED} , [TEMP-TABLE | BUFFER | QUERY | | DATASET | DATASOURCE], data-member-name ---------------------------------------------------------------------------------| DELETE | { [database.] table [WORKTABLE] } | | { {DATA-MEMBER | INHERITED-DATA-MEMBER } | | class-name:table} Page 2

READMESP.txt ---------------------------------------------------------------------------------| DELETE-INSTANCE | class-name ---------------------------------------------------------------------------------| DESTRUCTOR | PUBLIC ,,, destructor-name, void ---------------------------------------------------------------------------------| INTERFACE | interface-name ,,, ---------------------------------------------------------------------------------| INVOKE | class-name:method-name ---------------------------------------------------------------------------------| METHOD | {PUBLIC | PROTECTED}, [OVERRIDE], | | [FINAL], method-name, return-type, [parameter1 [,parameter2] ... ---------------------------------------------------------------------------------| NEW | class-name ---------------------------------------------------------------------------------| REFERENCE | { [database.] table [field] [WORKTABLE] } | | {SHARED variable} | | { [ DATA-MEMBER | INHERITED-DATA-MEMBER] | | class-name:table [fieldI] } ---------------------------------------------------------------------------------| SEARCH | { [database.] table {index | RECID | WORKTABLE | TEMPTABLE | | [WHOLE-INDEX] 1 } | | | { [DATA-MEMBER | INHERITED-DATA-MEMBER} | | class-name:table { index | RECID | WORKTABLE | TEMPTABLE} | | [WHOLE-INDEX] 1 } ---------------------------------------------------------------------------------| UPDATE | { [database.] table field [WORKTABLE] } | | {SHARED variable} | | {PUBLIC-DATA-MEMBER class-name:data-member-name } | | {INHERITED-DATA-MEMBER class-name:data-member-name} ---------------------------------------------------------------------------------3. Allowing data members with the same name as a class in the hierarchy ---------------------------------------------------------------------------------In 10.1A it was not valid to have a method in a class hierarchy that had the same name as any class in the hierarchy. In 10.1A01 this restriction is lifted. It is now valid to have a method in a class, or declared in an interface, that has the same name as another class anywhere in the hierarchy. ***************************************************************************** Save Key Events =============== This service pack provides a feature for OpenEdge 10.1A that will save key database events to a database table. This information is useful for analyzing production problems and issues. Having information in a database table has advantages over just writing the information out to the log file because the log file can be easily truncated and with a new feature to be added in V10.1A, it can be truncated online. While administrators will have the ability to delete records in the key events table, they will need to write a 4gl or SQL program to do so. All key events that are recorded in the key events table will have messages written to the database log file. A process scrapes the log file periodically and place these messages into a new table in the schema area. The following key database events are stored: Page 3

READMESP.txt Database startup time and values of all startup parameters used --------------------------------------------------------------Each database startup parameter used to start the broker will be stored as one record in the table. Database shutdown time ---------------------The record written to the table will include that date and time of the database shutdown. High water mark --------------we record the high water mark at each database startup. Date and time of lock table overflows ------------------------------------The record written will include the date and time of the lock table overflow. Date and time of database utilities ----------------------------------dbtool - start and end date\time probkup - start and end date\time, location and size of backup file(s). procopy - start and end date\time, source database and location, target location. prolog - date\time promon resolve limbo transaction - date\time, transaction id and action (commit\abort) prorest - start and end date\time, location of backup file(s). prostrct: add - date\time and extents (names, locations) added buildbd - date\time create - date\time and extents (names, locations) created remove - date\time and extents (names, locations) removed reorder - date\time repair - date\time and extents (names\locations) in structure file unlock - date\time and options (-extents or none) proutil: 2phase begin - date\time and options (-crd, -tp) 2phase end - date\time 2phase modify - date\time and options (-crd, -tp) 2phase recover - date\time bigrow - start and end date\time, number of clusters and options (-r) bulkload - start and end date\time, file name\location and options (-yy, -B) conv910 - date\time convchar convert - date\time, codepage convfile convert using - date\time, file name\location, table name\location dbauthkey - date\time disableauditing - date\time dump - start and end date\time, table name, directory name, and options (-index) dump specified - start and end date\time, table name, field name, operator, field value, directory name EnableLargeFiles - date\time Page 4

o o o o o o o

READMESP.txt Enableauditing - date\time idxbuild - start and end date\time, and options (all\table\area, -T, -SS sort file, -TB, -TM, -B, -SG) idxcheck - start and end date\time idxcompact - start and end date\time, table name, index name, compaction degree idxfix - start and end date\time, menu choices and options (table, index) idxmove - start and end date\time, table name, index name, area name load - start and end date\time, file name and options (build indexes, -TB, -TM, -T dir name, -SS sort file) mvsch - date\time rcodekey - date\time tablemove - start and end date\time, table name, table area, index area truncate area - start and end date\time, area name truncate bi - start and end date\time, and options (-G, -bi, -biblocksize) updatevst - date\time o rfutil: aimage off - date\time aimage begin - date\time aimage end - date\time aimage extent empty - date\time, extent number, pathname aimage extract - start and end date\time, ai extent, output file aimage new - date\time aimage truncate - start and end date\time, -aiblocksize size mark backedup - date\time roll forward - start and end date\time, ai file name, endtime, endtrans, -B, -r roll forward retry - start and end date\time, ai file name, endtime, endtrans, -B, -r sqldump - start and end date\time, user name, code page, table name(s) sqlload - start and end date\time, user name, code page, table name(s), log file name, maxrows, -F

o o

Date and time force option was used to access database -----------------------------------------------------The record written to the table will include the date and time of the forced entry.

Date, time and details of last dbrpr run ---------------------------------------The record written to the table will include the date and time of the last dbrpr run, as well as the menu commands chosen. Since there are no messages currently written to the log file indicating what dbrpr options were chosen, these new messages will need to be created. Date and time of proutil -EnableKeyEvent or -DisableKeyEvent -----------------------------------------------------------The record written to the table will include the date and time that the database was enabled or disabled for saving key events. This will alert us that the database was potentially opened by a previous version of OE should the key events table contain records showing a disable key event record followed by an enable key event record. Date and time of last protrace generation ----------------------------------------The record written to the table will include the date and time of the last protrace. If possible, a new message to the database will print out name and Page 5

READMESP.txt location of the file. This would certainly benefit customers like EarthLink. Since there are no messages currently written to the log file indicating when and where a protrace was generated, these new messages will need to be created. A new meta-schema table, _keyevt, was added to the default\empty meta-schema. That table has the following fields: Date and time (down to millisecond and including GMT timezone value) field of when the key event occurred. Process ID of the process that recorded the message Thread ID of the process that recorded the message Message number User number User type Message text. The new table will be added on an existing (pre 10.1A) database when a new option, -EnableKeyEvents, is run using proutil. The proutil -EnableKeyEvents option will create the schema table and add a bit to the feature mask to the database. The proutil -DisableKeyEvents will not delete the table, but it will remove the bit from the feature mask in the database. For more information, see the Save Key Database Events Web paper at http:\\www.progress.com\products\documentation\openedge_web_papers\index.ssp

***************************************************************************** Please ensure that you start OpenEdge Architect with -clean argument after service pack installation

After installing the OpenEdge Architect service pack or any 3rd party plug-in, you may get errors when you access certain functions like DB Navigator, or new functionality may not be accessible. To prevent these errors, it is important that you launch OpenEdge Architect with the -clean argument.

The -clean argument forces OpenEdge Architect to re-read all of the installed plug-in definitions rather than using its cached representation. It is therefore recommended to use the -clean argument at start-up for every one of your workspaces after any installation change including the service packs. Please note that using -clean increases the start-up time; so it is not recommended that this option be used when not necessary.

1. Modify the properties of the OpenEdge Architect launch menu and at the end of the Target, add a space followed by the -clean argument. i.e. <OpenEdge Install>\oeide\eclipse\eclipse.exe -vm "<OpenEdge Install>\jre\bin\javaw.exe" -clean (Where <OpenEdge Install> designates the OpenEdge installation directory) 2. Start OpenEdge Architect and switch to each of the workspaces that you are using. Page 6

READMESP.txt 3. You can now remove the -clean argument from the properties. ***************************************************************************** Character Debugging support --------------------------In the 10.1A01 SP we have added support for debugging character applications. The development of GUI and character applications is essentially the same with the difference being that the appropriate runtime (character or GUI) is selected in the preference pages. The debugging of GUI applications is done through the Debugger perspective and the functionality for this is documented in the existing OpenEdge documentation. For character application debugger support, it will follow exactly the same process for debugging GUI applications and is done using the OpenEdge Debugger perspective. All functionality that is documented for GUI debugging will apply and be used for support of character debugging.

Bug #20060221-012 Change catalog search page to have editable combo box -----------------------------------------------------------------------The current search page in the Catalog component has a grid control which has a drop down combo box in one of the cells that lets you select annotations to use as the search criteria. In the 10.1A release this combo box was not editable so if you wanted to select the proper annotation you would have to scroll through the list to pick the appropriate annotation. We have changed the combo box to now be editable so that a user can type the annotation in instead of scrolling through the list in the drop down portion of the combo box. The reason for making this change is that if a user has a large number of annotations to select from it would make it difficult to find and select the right annotation.

Bug #20060228-012 Dropped support for Progress runtime before 10.1A release --------------------------------------------------------------------------In the 10.1A release if a user had a previous version of the Progress runtime installed on their machine, the OpenEdge Architect detect this and allow the user to specify a non 10.1a runtime when they created a new project. Using previous versions of the Progress runtime would not give the user all of the full functionality of the 10.1a runtime. This feature will now change this functionality to specifically not allow a user to be able to select a runtime that is previous to 10.1a. As new releases of the Progress runtime are developed it is expected that we will allow selection of different runtimes. This feature can be seen in two places, in the wizard for creating a new project there is a page that allows you to select a specific runtime. This will show a combo box if multiple runtimes are detected. This new change will not show any runtimes that are before 10.1a. If 10.1b, and 10.1a with 10.1a01 is installed on a system, a user would expect that they would see both the 10.1b and the 10.1a runtime listed in a drop down combo box. The other area that a user would see exactly the same functionality, is if they selected an existing project in the treeview and select properties from the context menu, they also have an option to select the runtime. This will function exactly as described above.

Bug #20050812-031 Code Outline View Enhancements -----------------------------------------------The Code Outline view has been enhanced with the following functionality: 1. A new Toolbar button has been added that opens a dialog for adding\removing elements from the outline view by using filters. There will be several filters defined and more can be added later as needed. Page 7

READMESP.txt 2. A new decorator is applied to certain elements of the outline view that will allow the user to easily see which elements are external (i.e include file references) and require a different action to select them. 3. The behavior of how outline elements are selected has changed slightly. External elements, such as include file references, now require a double-click to be opened in their own editor window. Elements local to the file being edited can still be selected with single-click.

Bug #20051018-031 Enhancements to the command line interface to the Meta Catalog --------------------------------------------------------------------------------This feature is an enhancement to the command line interface of the Catalog component in the OpenEdge Architect. The command line feature of Meta Catalog could only recognize projects with a default directory structure, i.e. a like-named project directory relative to the workspace. The Meta Catalog has been enhanced to now handle projects with a directory structure non-relative to the workspace. The catalog.xml configuration file has been changed to store the root path of the project.

***************************************************************************** In Open Edge 10.1A, table columns defined in OpenEdge SQL have default 4GL format values which are identical to those created by the OpenEdge Data Dictionary tool. Thus, columns created by SQL will have the same default 4GL format as columns created by 4GL tools. Note that SQL can create columns with the CREATE TABLE statement and with the ALTER TABLE statement. In both cases, as described above, the default 4GL format value for a column will be the same as that created by 4GL tools. In earlier releases of OpenEdge SQL, the 4GL format value for a created column was set to a value derived from its datatype, size, and other attributes. That is no longer done, as of Open Edge 10.1A. To override the default 4GL format, use the PRO_FORMAT attribute on the SQL CREATE TABLE or ALTER TABLE statements. ***************************************************************************** Protecting audit data ===================== To improve the security of your audit data and prevent uncontrolled access to it, Bug 20060126-035 is fixed in Release 10.1A01. This note details the possible auditing states, including deactivated, which is new in this service pack. This note also details the behavior changes to the PROUTIL ENABLEAUDITING and PROUTIL DISABLEAUDITING commands due to the deactivated state. Auditing states --------------There are three possible states for your database with respect to auditing: - Enabled ? In an enabled state, access to the database is restricted and tracked by auditing: Page 8

READMESP.txt - Clients and servers from earlier releases (10.0B and prior) cannot start or connect to the database. - Audit privileges of current (10.1A and forward) clients are validated before granting access to the audit data, protecting your data from unauthorized access. - Database and application activity is audited according to active auditing policies. - Disabled ? In a disabled state, access to the database is not restricted by auditing: - Clients and servers from earlier releases (10.0B and prior) can start and connect to the database. - Access to the audit data by current (10.1A and forward) clients is disallowed. - Audit privileges of current (10.1A and forward) clients are not validated. - Database activity is not audited. - Deactivated ? In a deactivated state, access to the database is restricted by auditing: - Clients and servers from earlier releases (10.0B and prior) cannot start or connect to the database. - Access to the audit data by current (10.1A and forward) clients is disallowed. - Audit privileges of current (10.1A and forward) clients are not validated. - Database activity is not audited. Enabling and disabling auditing ------------------------------To improve the security of your audit data, enabling and disabling auditing requires that the audit data tables be empty. - Enabling auditing Use the following command to enable auditing on your database: proutil db-name -C enableauditing area Area-Name [indexarea Index-Area-Name ] [deactivateidx ] When you enable your database for auditing, your database can be in one of two possible states: auditing is disabled (or has never been previously enabled) or auditing is deactivated. If your database has auditing disabled, successfully enabling the database results in the following message: Auditing has been enabled for database db-name. (12479) If your database has auditing deactivated, successfully enabling the database results in the following message: Auditing has been activated If your database is disabled, your audit data tables must be empty for auditing to be successfully enabled. If your audit data tables are not empty, the following error message is displayed: Auditing can not be enabled because auditing data tables are not empty. (13650) - Disabling auditing Use the following command to disable auditing on your database: proutil db-name -C disableauditing Page 9

READMESP.txt If a database has data in the audit data tables, _aud-audit-data and _aud-audit-data-value, when the command is issued, the database is deactivated rather than disabled. The following message is displayed when auditing is deactivated: Auditing was not fully disabled because auditing data tables are not empty. (13647) Auditing has been deactivated, no additional auditing records will be recorded. (13649) To fully disable auditing, the _aud-audit-data and _aud-audit-data-value tables must be empty. The following procedure provides the steps to disable auditing on a database that currently has auditing deactivated. 1. Activate auditing with PROUTIL ENABLEAUDITING. Because the database is deactivated, issuing PROUTIL ENABLEAUDITING has the effect of activating auditing. Empty the audit data tables. Use your audit archiving tools or PROUTIL AUDITARCHIVE to remove the data from the _aud-audit-data and _aud-audit-data-value tables. Note: Not all audit records are deleted by PROUTIL AUDITARCHIVE. For example, if your audit policies audit the execution of AUDITARCHIVE, you will need to use another method to remove all the data from the audit data tables. 3. Disable auditing with PROUTIL DISABLEAUDITNG. Because the audit data tables are empty, auditing is completely disabled. When auditing is successfully disabled, the following message is displayed: Auditing has been disabled for database db-name. (12490)

2.

***************************************************************************** Building a master catalog The procedure in the OpenEdge Architect online help for building a master catalog is incorrect. The OECATALOG utility's -build option will not create a catalog database. The -build option only populates the tables with data. NOTE: A master catalog runs against a separate set of code files on a server or in a separate workspace on the local system. For example, a master catalog might run against the files in a source code management tool. Remember that a project?s name is the name of the directory where the files are located. The directory structure within the project folders in both places, your workspace and the files for the master catalog, must be identical. The following procedure outlines how to set up a master catalog on a server without manually editing XML files: 1. Create an empty database and database server on the server. The first task is to create an empty database to hold the master catalog: a. Start a PROENV session on the machine where you want the master catalog. b. Create a directory to hold the master catalog. c. Use the PRODB utility to create an Empty database in that directory. Page 10

READMESP.txt d. Create a database server with the appropriate connection parameters for the master catalog using the Progress Explorer. e. Start the database server. 2. Run the New Catalog wizard. The next task is to add the Meta Catalog schema to the empty database: a. Start an OpenEdge Architect session on your local machine in a workspace that has no catalogs defined. b. Choose File?New?Other. The New dialog box appears. c. Choose OpenEdge?Meta Catalog?Meta Catalog and click Next>. The Create Meta Catalog wizard appears. d. Enter the empty database?s name for the Meta Catalog name and click Next>. e. Click Next> on the next page. You have already created the database. f. On the Meta Catalog Connection page, enter the connection information for the empty database and click Next>. g. Continue creating the catalog definition as usual. h. When you have set all the options correctly for your master catalog, deselect the Load content from selected projects toggle and click Finish. Your master catalog now has the Meta Catalog tables. 3. Transfer the catalog definition from your local machine to the server.

Before you can use the OECATALOG utility on your master catalog, you need a catalog definition file for it: a. Choose Windows?Preferences. The Preferences dialog box appears. b. Choose OpenEdge?Meta Catalog. The Meta Catalog browse appears. c. Click Export All. d. Save the catalog definition file with a unique name. e. Copy the catalog definition file to the master catalog?s directory on the server. You now have a master catalog database and a catalog definition file for it. You can now use the OECATALOG utility to populate and rebuild it as needed. Note that the master catalog does not contain any data yet, because the content builders have not run against the source files yet. ***************************************************************************** 20060425-012: ------------OpenEdge Architect will fail to start and the following Eclipse error message may be returned with shared installations of OpenEdge Architect (i.e. User with Administrator privileges installs OpenEdge Architect and a common user logs in and attempts to start OpenEdge Architect). Eclipse Error: An error has occurred. See the log file [OpenEdgeInstallLocation]\oeide\eclipse\configuration\<new number with each error.log>. To workaround this issue, there are two alternatives: 1. Run the Eclipse session logged in with Administrator privileges at least once in order for the configuration directories to be created. Page 11

READMESP.txt This is documented in the following link: http:\\help.eclipse.org\help31\index.jsp?topic=\org.eclipse.platform.doc.isv\referen ce\misc\multi_user_installs.html

- OR -

2.

Run the common user Eclipse session with the Eclipse -configuration runtime option. This will change the configuration directory to the path specified by the -configuration parameter.

i.e. [OpenEdgeInstallLocation]\oeide\eclipse\eclipse.exe -vm "C:\OpenEdge\jre\bin\javaw.exe" -configuration "c:\<local writable path>"

***************************************************************************** OpenEdge 10.1A considerations for ADM2 and Dynamics applications deployed on 64-bit platforms As you know, OpenEdge 10.1A will introduce 64-bit natural alignment of r-code for 64-bit platforms. Depending on the platform and on the application?s code this change will have a positive impact on r-code performance when operating on 64-bit platforms, when compared to 32-bit r-code running on 64-bit platforms (Progress V9 and OpenEdge 10.0A\B). For the purposes of this document we will refer to this functionality as ?64-bit r-code?. OpenEdge 10.1A 64-bit r-code will not be portable to 32-bit platforms and vice versa. 64-bit r-code needs to be generated (compiled) with a 4GL compiler on a 64-bit platform, and 32-bit r-code needs to be generated (compiled) with a 4GL compiler on a 32-bit platform. This means that 64-bit platforms will only be able to run r-code compiled on a 64-bit platform. All other areas of the product will continue to adhere to the OpenEdge 10 portability rules. Compatibility and connectivity are not impacted (see Note 2 below). Customers need to be aware that this change will impact their ADM2 or Dynamics applications if they need to deploy them on 64-bit platforms. Their use cases, including the corresponding packaging and compilation of the relevant application components on each case are: Note that we are considering use cases where the deployments are on UNIX or Linux, because Windows 64-bit is not available. The use cases for deployments on Windows 32-bit are not impacted. 1) ADM2 application with no ADM2 customizations, to be deployed to UNIX, Linux 32-bit platforms - Customer builds app with OpenEdge Studio or OpenEdge Architect. Customer compiles app with _progres on Windows and moves application code and shipped adm2 code to deployed machines. This is what is done today. 2) ADM2 application with ADM2 customizations, to be deployed to UNIX, Linux 32-bit platforms - Customer builds app with OpenEdge Studio or OpenEdge Architect. Page 12

READMESP.txt Customer compiles app and customizations with _progres on Windows and moves application code and customized, compiled adm2 code to deployed machines. This is what is done today. 3) ADM2 application with no ADM2 customizations, to be deployed to UNIX, Linux 64-bit platforms - Customer builds app with OpenEdge Studio or OpenEdge Architect. Customer moves application to OpenEdge Development Server on 64-bit machine to compile it. Customer moves their compiled app and tty\adm2 (from OpenEdge Development Server) code to deployed machines. 4) ADM2 application with ADM2 customizations, to be deployed to UNIX, Linux 64-bit platforms - Customer builds app with OpenEdge Studio or OpenEdge Architect. Customer moves application and customizations to OpenEdge Development Server on 64-bit machine for compilation. Customer moves their compiled app and customized, compiled adm2 code to deployed machines. 5) Progress Dynamics application with no Dynamics customizations, to be deployed to UNIX, Linux 32-bit platforms - Customer builds app with OpenEdge Studio. Customer compiles app with _progres on Windows and moves application code and shipped tty\dynamics code to deployed machines. This is what is done today. 6) Progress Dynamics application with Dynamics customizations to be deployed to UNIX, Linux 32-bit platforms - Customer builds app with OpenEdge Studio. Customer compiles app and customizations with _progres on Windows and moves application code and customized, compiled dynamics code to deployed machines. This is what is done today. 7) Progress Dynamics application with no Dynamics customizations, to be deployed to UNIX, Linux 64-bit platforms - Customer builds app with OpenEdge Studio. Customer moves application to OpenEdge Development Server on 64-bit machine to compile it. Customer moves their compiled app and tty\dynamics (from OpenEdge Development Server) code to deployed machines. 8) Progress Dynamics application with Dynamics, customizations, to be deployed to UNIX, Linux 64-bit platforms - Customer builds app with OpenEdge Studio. Customer moves application and customizations to OpenEdge Development Server on 64-bit machine for compilation. Customer moves their compiled app and customized, compiled dynamics code to deployed machines. NOTES: 1. Progress recommends that in all cases customers copy their application?s source code and compile on a development platform consistent with the deployment one, according to r-code portability rules. The only configuration where this recommendation is optional is for non 64-bit-platform application?s code that have no UI references, that is, for 32-bit code without UI references that needs to be deployed on 32-bit platforms, for example batch jobs only or processes that run on the AppServer that do not have UI references 2. Networking connectivity and compatibility (e.g. client\server, n-tier) are not impacted. The OpenEdge Release 10 compatibility rules apply, for example: 32-bit client products can connect\access to 64-bit server products. IMPORTANT CONSIDERATIONS: A. Customers must use the same versions of OpenEdge Studio and OpenEdge Development Server to build their application and to compile them for deployment. Page 13

READMESP.txt For example, building an ADM2 application with 10.1A and compiling it with 10.1A01 OpenEdge Development Server will not supported (reasons include that 10.1A01 Service Pack may include ADM2 changes --- ie. bug fixes). There is no change as this has always been the case: r-code within a major release is compatible but our recommendation is to recompile if the customer?s application relies on changes included in higher minor releases, maintenance releases, or service packs. B. Should customers require TFIXes for ADM2 or Dynamics bugs, they must request them (also) for any OpenEdge Development Server product on the 64-bit platforms they need to compile for deployment on 64-bit platforms.

FAQs: * How does this affect the Dynamics 4GL static code generator? Customers will have to compile any generated code (*.pgen) that needs to run on the 64-bit machine themselves. However, bear in mind that the only objects that can be generated that run on the server are SDOs. All the other objects are be visual objects, and thus will only run on the Win32 platform. SDOs will need to be compiled for BOTH Win32 and the 64-bit platform, since the SDO runs on both the client and server. The existing tool will help with the compilation on Win32, but compilation on the server will need to be done manually by the customer. * How do I know which Dynamics files to compile for my 64-bit AppServer platform? The Deploy Static Objects tool has the ability to produce a listing file of all the files that are packaged into a Deployment produced by the tool. The listing file is specified in the UI before the deployment starts building. If no listing file is specified, then the listing will not be produced. A default value is provided by the tool, and is for a file called 'listing.log' in the session's temporary directory. The listing file consists of the following fields, tab-delimited: - File name - Relative path - Deployment type - Design-only flag * If you want to deploy to a 64-bit platform and you generate static code for your Dynamic objects, how do you deploy this static code? Since it can only be generated via the Appbuilder (?) and you cannot run 32-bit r-code on a 64-bit platform, is this functionality removed? The functionality remains. The AppBuilder (and all the generation tools) produce normal ABL code. In some circumstances the tool will also compile that code (there are toggles for this in the AppBuilder and 4GL Generator\PGEN), but there is nothing preventing manual compilation of the code. The thing to remember is that any application code (whether that's the customer's application itself, or changes to Dynamics\ADM2) needs to be compiled by the customer on the relevant platform. * Can a distributed application run 32-bit and 64-bit simultaneously? I mean a 32-bit client application calling 64-bit code in the AppServer platform? Page 14

READMESP.txt Yes. 32-bit clients (e.g. Win32) can call 64-bit Application Servers. 2 above.

See Note

* I have Provision Plus or OpenEdge Studio or OpenEdge Architect; What do I need to do to be able to compile my source code on a 64-bit platform? These products include Development Server. The Development Server includes the language compiler. You need to contact your Account Manager or Progress? Customer Service and ask for a ?trade-in? of such Development Server for a Development Server on the 64-bit UNIX\Linux platform of your choice. * I don't want to compile my application for UNIX, Linux 64, can I still deploy on UNIX, Linux 64? Yes, you need to use the OpenEdge 32-bit products which run on UNIX, Linux 64 Operating Systems and hardware. Keep in mind that running the OpenEdge 32-bit products on such platforms will not allow you to take advantage of Very Large Memory (VLM). * I have done customizations to the ADM2 or Progress Dynamics. to do? What do I need

You need to copy your code from the Windows development environment, to the 64-bit UNIX\Linux machine, and compile it with OpenEdge Development Server (see previous question).

***************************************************************************** 20060509-008: ------------If you are using OpenEdge 10.1A01 with Sonic7.0 and trying to add ESB container to MQ container manually, it will give an error. The following steps shows the problem and the workaround: 1. Install Sonic broker and ESB. 2. Create an ESB container using SMC. 3. Create MQ container using SMC. 4. Add ESB container to MQ container. It works fine. 5. Install OE 101A01. 6. Create another ESB container using SMC. 7. Create another MQ container using SMC. 8. Add ESB container to MQ container and it gives an error. "The value 'ESBcontainer (\ESB containers)' is not a valid configuration element. 9. There is a work around to this problem. Run seed.sh from $ESB_HOME\bin and make sure that MQ container is running. Once you run seed.sh, ESB container can be added successfully to MQ container. ***************************************************************************** Special Note about Oracle and HP Itanium: ----------------------------------------In order to support Oracle on HP Itanium, the base Oracle version needs to be 10.1.0.4. ***************************************************************************** Page 15

READMESP.txt Bug # 20060331-034: =================== The default format for the TIME datatype changed in the ODBC DataServer product starting in version 10.1A02 and 10.1B. Initially it was defined as a 6 character string: FORMAT "x(6)" but it has been changed to a default format of: FORMAT "99:99:99" In addition, it is acceptable to pass a character string containing a time value from the 4GL to a connected ODBC DataServer as a 6-byte umdelimited value or as a 5-8 byte delimited string value. The format of the TIME column received must be hours, minutes and then seconds. i.e HH:MM:SS. The only delimiter that is supported is the colon (:) character. Spaces or other whitespace characters are not allowed to exist in the character string representing a TIME column. ***************************************************************************** Bug # 20061006-015: =================== Compilation error with format '!' for CHARACTER and a numeric initial value. If a CHARACTER variable is defined with FORMAT using '!' and an INITIAL value that contains non-letter characters then there will be a compile time error that the INITIAL value must be a letter. The following error message is generated: ** Character <char> at position <n> must be a letter. (631) This is the correct behavior. *****************************************************************************

BEFORE INSTALLING THIS SERVICE PACK: 1. Read through the entire INSTALLATION INSTRUCTIONS before proceeding. 2. Make sure you read the "End User Product License Agreement" included at the end of these notes. You are agreeing to its terms and conditions by installing this Service Pack. 3. Log in as "Administrator" or as a user with Admin privileges. If you do not know the Administrator password for your system, check with your system administrator. 4. Make sure the "DLC" environment variable is set to the directory that contains the PROGRESS installation you want to Service Pack. If the "DLC" variable has not been set then enter one of the following commands to set it: Shell ------sh, ksh csh Commands (assume "\dlc" is PROGRESS directory) ---------------------------------------------DLC=\dlc ; export DLC setenv DLC \dlc

5. Shut down all PROGRESS processes for the installation you are going to install this Service Pack on. Check with your system administrator Page 16

READMESP.txt if you do not know how to shut down PROGRESS. INSTALLATION INSTRUCTIONS: The 10.1A Service Pack installation has been engineered to offer you two key functions: * The option to create a backup of existing files * The ability to install only those files relevant to your license. The Service Pack installation will ask if you want to backup existing files. If you choose to create a backup, you will have the option of changing or accepting the default backup location, and the backup will be created for only those files that are about to be updated via the Service Pack. The Service Pack installation will then determine what Progress 10.1A license(s) have been installed. Based on that information, the install will unpack from the Service Pack archives, only the files that are relevant for the license(s) installed. The end of the installation presents the option to review the Service Pack README file (this file) and the SP(n)-log.txt file which contains a list of files installed and backed up if a backup was executed. If you choose not to view these files at the end of the installation, they are saved in your 10.1A Install directory and can be viewed later. STARTING THE SERVICE PACK INSTALLATION -------------------------------------UNIX: ----** If you have downloaded the Service Pack image, unpack the image to its own directory. If you have received the Service Pack on CD-ROM, mount the CD to your cdrom drive. From a directory other than the Service Pack cdimage directory, issue the following command: <path-to-Service-Pack-image-directory>\setup.exe NT: --** If you have downloaded the Service Pack image, unpack the image to its own directory. If you have received the Service Pack on CD-ROM, insert the CD CD-ROM drive. into the

Using Windows Explorer, go to the Service Pack directory, and double-click on the 'Setup' icon to begin the installation. SILENT and BATCH INSTALL ------------------------------------------Silent or batch install is available for service packs on Windows and UNIX. Windows ------------Page 17

READMESP.txt A normal (nonsilent) installation will prompt you for required information with dialog boxes. The silent install will not prompt for input. It will read the required information from a response file, typically named setup.iss. You must create the setup.iss file before running a silent install. To create the setup.iss file, run the install and record the user inputs as follows: drive:\setup.exe -r -f1c:\<path-to-file>\setup.iss Alternately, you can manually create a setup.iss file. The following sample provides the default responses to an initial service pack install: [InstallShield Silent] Version=v7.00 File=Response File [File Transfer] OverwrittenReadOnly=NoToAll [{0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-DlgOrder] Dlg0={0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdWelcome-0 Count=4 Dlg1={0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-Service Pack Backup Directory Dialog-0 Dlg2={0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdShowInfoList-0 Dlg3={0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdFinish-0 [{0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdWelcome-0] Result=1 [{0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-Service Pack Backup Directory Dialog-0] _nSPBackup=1 _sSPBackupDir=C:\Progress\OpenEdge\SPBackup Result=1 [{0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdShowInfoList-0] Result=1 [{0ABCE27E-C0A2-4EE5-987F-9E8B78E2D8CE}-SdFinish-0] Result=1 bOpt1=0 bOpt2=0 To perform a silent install, issue the following command: drive:\setup.exe -s -f1c:\<path-to-file>\setup.iss [-f2c:\<path-to-file>\setup.log] If you choose to create a log file, the contents of a successful silent install will be as follows: [InstallShield Silent] Version=v7.00 File=Log File [ResponseResult] ResultCode=0 UNIX ---A normal (interactive) installation will prompt you for required information with dialog boxes. A batch install will not prompt for input. It will read the required information from an installation ini file. By default, the batch install will look for the file install.ini in your current directory. You must create the .ini file before running a silent install. If no .ini file is found, the installation will fail. The following is a sample ini file: Page 18

READMESP.txt [Service Pack] ProgressInstallDir=\usr\OpenEdge\101A\dlc ReInstall=1 Backup=1 BackupDir=\usr\OpenEdge\101A\SP_Backup BackupOverwrite=1 To perform a batch install, issue the following command: <path-to-service-pack>\proinst -b <path-to-file>\install.ini -l <path-to-file>\<logfile.log> If no filename is specified with the -l switch, a default of install.log will be used. If no directory is specified for the -l switch, the install will use the first of the following environment variables found: TMP, TEMP, TMPDIR. RECOVERING PREVIOUS INSTALLATION -------------------------------If you created a backup during the Service Pack installation, you can restore your installation to its original state if so desired. Because the backup saves the files just prior to installing the Service Pack it is possible only to return to that point. If multiple Service Packs have been installed, it is not possible to roll back through each service pack unless backups have been saved for each installation in separate directories. Each backup would have to be restored in the reverse order from which they were installed. To restore your 10.1A installation to its original state prior to installing the Service Pack, do the following: UNIX: cd <path-to-backup-directory> cp -R * <101A-install-directory> NT: Using Windows Explorer, navigate to the <Progress-install-dir>\<SPBackup-dir>. Choose Edit->Select All, and choose Edit->Copy. Go to <Progress-install-dir> and choose Edit->Paste. This will recursively copy the files saved in the backup to your 10.1A installation directory, thereby restoring the DLC area to its original state prior to installing the Service Pack. =========================================================================== Using International Components for Unicode (ICU) causes PROGRESS to hang -----------------------------------------------------------------------The use of International Components for Unicode (ICU) collation in the Progress Database is now supported on the HP-UX-64 and HP-UX IA64 platforms. The HP-UX-64 platform requires the following patch to have this functionality working: PHSS_30966 1.0 ld(1) and linker tools cumulative patch. =========================================================================== Unable to connect to a Stateless or State-free AppServer on SuSE SLES 9 Page 19

READMESP.txt ----------------------------------------------------------------------Error: Unspecified error ... disconnecting client (8091) To resolve this problem: (as root) cp -p \etc\hosts \etc\hosts.orig edit \etc\hosts and comment out or remove the ipv6 entries. See Progress Solution ID# P96686 (Knowledge Base) for more information =========================================================================== WebClient Assembler ------------------If you have installed OpenEdge (with or without this Service Pack) on top of Progress 9.1D, and you plan to use the WebClient Assembler, you must copy $DLC\bin\psccab.dll to "Program Files\Common Files\Progress Software" =========================================================================== BASE64 options removed from COPY-LOB statement ---------------------------------------------The BASE64 options have been removed from the convert-phrase in the COPY-LOB statement. You can convert large object data to and from a specified code page; however, you cannot convert large object data to or from base64. Use the following convert-phrase syntax to specify the character conversion behavior between the source and target objects: { [ SOURCE CODEPAGE codepage-name ] [ TARGET CODEPAGE codepage-name ] } If you compile a 4gl procedure containing a COPY-LOB statement with the BASE64 option, OpenEdge generates a compile-time error. If you run a 4gl procedure containing a COPY-LOB statement with the BASE64 option, that was compiled in 10.0B, OpenEdge generates a run-time error. =========================================================================== Support for GB18030 code page ----------------------------OpenEdge now supports the GB18030 code page and its conversion to and from Unicode. The GB18030 code page is required for any software application sold in China. The GB18030 code page is a multi-byte code page, consisting of one-, two-, and four-byte characters, that extends the GB2312 code page and includes all characters defined in Unicode. Unlike most multi-byte code pages that OpenEdge supports, you cannot use the lead byte of multi-byte characters in the GB18030 code page to determine the character's length. OpenEdge uses the ICU (International Components for Unicode) library to convert characters between the GB18030 code page and Unicode within the OpenEdge GUI client. OpenEdge supports the GB18030 code page, primarily, for file input and output. More specifically, you can use the GB18030 code page: - In settings for the -cpstream, -cplog, and -cpprint startup parameters. - With any 4GL CONVERT SOURCE\TARGET phrase that applies to files. For example: Page 20

READMESP.txt INPUT FROM gb.txt CONVERT SOURCE "GB18030". COPY-LOB FROM FILE gb.txt TO myunicodeclob CONVERT SOURCE CODEPAGE "GB18030". - With the ASC, CHR, and CODEPAGE-CONVERT functions (but if used as the target code page of CHR or CODEPAGE-CONVERT, you cannot use the resulting character or character string in the 4GL). - With file input and output in the SQL products. You cannot use the GB18030 code page: - In other 4GL statements (not listed above). - As a CLOB or LONGCHAR code page. - In settings for the -cpinternal, -cpterm, -cprcodein, or -cprcodeout startup parameters. - As a database code page. - With the PROUTIL <db> -C CONVCHAR CONVERT command (although it can be used for CONVCHAR ANALYZE). =========================================================================== Using non-English local and Explorer\AdminServer -----------------------------------------------If 10.0B is configured with a non-English locale, the admin server will not connect via Progress Explorer. To 1. 1. 2. 3. work around this issue: Back up your existing JavaTools.properties file in $DLC\properties. Edit the JavaTools.properties file. Find the section labeled [Progress Explorer]. In classpath, replace !{value-of:Common.classpath} with $DLC\java\progress.jar,$DLC\java\messages.jar 4. Save the file. 5. Start the admin server. 6. Launch Progress Explorer and connect. =========================================================================== Enterprise Database - Failover Clusters --------------------------------------New Required Parameter ---------------------Databases enabled for Failover Clusters, are required to have an additional parameter in their database parameter file. Cluster-enabled databases must include "-cluster protected". Databases that are cluster-enabled but do not have the "-cluster protected" parameter in their .pf file will not start. Databases that are not cluster-enabled will ignore the -cluster parameter. Enabling a Database for Failover Clusters ----------------------------------------Databases enabled for Failover Clusters using PROCLUSTER <database> ENABLE now contain a flag indicating whether the database is cluster-enabled or not. If you have databases that are currently cluster protected, use the following procedure to re-enable them for Clusters using the OpenEdge Page 21

READMESP.txt 10.0B03 product: 1. If the database is running, shut it down with PROCLUSTER <database> STOP. 2. Disable the database for Failover Clusters with PROCLUSTER <database> DISABLE. 3. Edit the database parameter file and add the parameter "-cluster protected". 4. Re-enable the database for Failover Clusters with PROCLUSTER<database> ENABLE. Databases that are cluster-enabled but do not have the "-cluster protected" parameter in their .pf file will not start. Databases that are not cluster-enabled will ignore the -cluster parameter. Deleting a Cluster-enabled Database ----------------------------------Prior to deleting a cluster-enabled database, it must first be disabled. The following steps describe how to delete a cluster-enabled database: 1. Disable Failover Clusters for the database with PROCLUSTER <database> DISABLE. 2. Delete the database with PRODEL <database>. Note: On some platforms, including IBM AIX and HP UX, the mounted volume group that contains the database is dismounted after Failover Clusters is disabled. Ensure that the volume group is mounted before you attempt to delete the database, on these platforms. Restoring a Cluster-enabled Database -----------------------------------When restoring a cluster-enabled database to a new physical location, such as another machine or directory, the target database's Failover Cluster status must be manually reset. The following steps describe how to reset the cluster status of a restored database: 1. 2. PROREST <target-database> <backupfile.bak> PROSTRCT CLUSTER <target-database> CLEAR

After the status of the restored database has been cleared, you can then enable it using the PROCLUSTER command. Shutting Down a Cluster-enabled Database ---------------------------------------PROCLUSTER <database> STOP must be used to shutdown a Cluster-enabled database. This command correctly informs the cluster manager that the database is being properly shutdown. This in turn prevents the cluster manager from interpreting the shutdown as a database failure. Do not shutdown the database using PROSHUT or the AdminServer via Progress Explorer. PROSTRCT CLUSTER <database> CLEAR --------------------------------Page 22

READMESP.txt The command PROSTRCT CLUSTER <database> CLEAR is available in case PROCLUSTER database DISABLE does not function correctly due to problems with the cluster manager software. The command will reset flags in the database to indicate that it is not enabled for Failover Clusters. Starting a Cluster-enabled Database with the AdminServer -------------------------------------------------------Beginning in this release, you can start a cluster-enabled database with the AdminServer. For details, see the white paper in the Failover Clusters section on the PSDN web site. =========================================================================== =========================================================================== ADE Issues: ----------1. Bug: 20051202-011 The Smart Filter Instance Property Dialog ability datasource directly when designing a Filter Window does not work for DataViews. The Dataview needs to as a filter-target in the design window to be able Instance Properties. 2. Bug: 20041209-008 The following APIs are marked as deprecated in the ADM2 treeview container, adm2\tvcontnr.p: calcNewTreeSize getCurrentTreeFrame treePackDone They are being marked as deprecated because they are no longer used by the framework; these APIs are still usable for the time being, but they will be removed from the ADM2 source at some point in the future. Any references to these APIs should be removed to prevent errors when this happens. 3. Bug: 20050801-020 The ManualAssignQuerySelection and ManualSetQuerySort properties and their setters and getters are to be DEPRECATED in OpenEdge 10.1A. The properties probably never had any usage and are not referenced or used by any framework code. ======================================================================== Dynamics Issues --------------Dynamics Migration and Upgrade Requirements There were no Repository data updates between 10.1A01 and 10.1A02 and thus no new release was created for 10.1A02. To upgrade to 10.1A02 from 10.1A, simply run the DCU as normal. As with 10.1A01, migrations directly to 10.1A02 from 2.1Bx or 10.0Bx are not supported. It is necessary first to migrate to 10.1A, then upgrade to 10.1A02. Page 23 to start the for pass-thru be added temporarily to edit the Filter

READMESP.txt The supported migration paths to 10.1A are from 2.1B01 and 10.0B03 only. These migrations must use an OpenEdge 10.1A installation without any service packs added. =========================================================================== GUI Issues ---------Startup Parameter For SCREEN-VALUE Behavior With Empty Combo-Box Value A new startup parameter called Screen Value Mode (-scrvalmode) has been introduced to specify the mode in which the SCREEN-vALUE attribute indicates that the selected item of a Combo-Box is empty. Starting with Release 10.0, the SCREEN-VALUE attribute for a combo-box returns the Unknown value (?) if the selected item in the list is empty. The startup parameter -scrvalmode has been introduced to allow programmers to optionally retain the behavior from previous versions. Usage of the startup parameter is: -scrvalmode <n> Where <n> indicates the SCREEN-Value mode. Valid modes are: 1 - If the selected item in the combo-box list is empty, the SCREEN-VALUE attribute for the combo-box returns the empty string (""). Note that if no item in the combo-box is selected, the SCREEN-VALUE attribute returns the Unknown value (?). In either case, the INPUT-VALUE attribute returns the empty string (""). 3 - The same as mode 1, with the following exception: if the SCREEN-VALUE attribute for the combo-box returns the Unknown value (?), the INPUT-VALUE attribute also returns the Unknown value (?).

=========================================================================== .NET Samples missing steps -------------------------1. The 'readme.txt' file contained in the <installDir>\src\samples\dotnet\GetCustOrders is missing the first step: Run ProxyGen (Start->Programs->OpenEdge->Proxy Generator) a) Open the file ..\AppService\GetCustOrders\CustOrders.xpxg b) Select File->Generate and press OK. This will generate the .NET proxy dll in c:\Progress\OpenEdge\src\samples\dotnet\GetCustOrders\CustProxy.dll If your install directory is different than c:\Progress\OpenEdge, change the Output dir on the Generate dialog to: <installDir>\src\samples\dotnet\GetCustOrders\ Page 24

2.

READMESP.txt The readme.txt file contained in the <installDir>\src\samples\dotnet\OrderInfo is missing the first step: Run ProxyGen (Start->Programs->OpenEdge->Proxy Generator) a) Open the file ..\AppService\OrderInfo\OrderInfo.xpxg b) Select File->Generate and press OK. This will generate the .NET proxy dll in c:\Progress\OpenEdge\src\samples\dotnet\OrderInfo\OrderInfo.dll If your install directory is different than c:\Progress\OpenEdge, change the Output dir on the Generate dialog to: <installDir>\src\samples\dotnet\OrderInfo\

=========================================================================== ProDataSet Release Notes -----------------------BLOB\CLOB changes not always tracked If a BLOB or a CLOB field is the only field changed in a dataset record when TRACKING-CHANGES = TRUE, no before-image of the record is created in the before-image temp-table, and consequently the changes will not be recognized by the SAVE-ROW-CHANGES, ACCEPT-CHANGES, or REJECT-CHANGES methods. If other record fields are also changed in addition to a BLOB or a CLOB field, then the before-image of the record is created, and the changes are processed correctly. =========================================================================== ProDataSet Enhancemants made to OpenEdge 10.0B Service Packs -----------------------------------------------------------1. New behavior of COPY-DATASET method -------------------------------------In prior releases, the COPY-DATASET method would fail if the source and target datasets had a different number of temp-tables. With the 10.0B Service Packs, datasets with different numbers of temp-tables can be used with the COPY-DATASET method, without specifying any of the new parameters. The COPY-DATASET method will begin trying to copy the temp-tables from source to target in the order that they were defined or added in the two datasets. As soon as it encounters a pair that does not have matching schemas, it puts out an error message and terminates the operation. But if the source or target dataset has extra temp-table(s) at the end of the dataset, the COPY-DATASET succeeds because the unpaired tables will be ignored. 2. New Parameters for COPY methods ? replace-mode, loose-mode, current-only, pairs-list -------------------------------------------------------------COPY-DATASET and COPY-TEMP-TABLE methods have four new positional, optional parameters: replace-mode, loose-mode, pairs-list and current-only. (Pairs-list and current-only apply only to COPY-DATASET). Replace-mode, loose-mode and current-only are logical, and pairslist takes a character expression. Page 25

READMESP.txt <target-dataset-handle>:COPY-DATASET(<source-dataset-handle>, [,appendmode [,replacemode, loosemode [,pairslist [, current-only] ] ] ] ] ) <target-buffer-handle>:COPY-TEMP-TABLE((<source-buffer-handle>, [,appendmode [,replacemode [,loosemode ] ] ] ) Replacemode defaults to FALSE. If replacemode is TRUE, there must be a unique primary index on each target member table, because for every record in the source table, Progress will try to find the corresponding record in the target table, through the targets unique primary index. If the corresponding record is not found in the target table, the source record is used to create a new target record. If the record is found in the target, the source record will overlay it. If the target record has a BEFORE-TABLE row, the row is left in place. When replacemode is TRUE, it does not matter if appendmode is TRUE or FALSE. The target table(s) will not be emptied. Loosemode defaults to FALSE which means individual source and target tables must have the exact same schemas. If loosemode is TRUE on the COPY-DATASET method, the behavior applies to each temp-table copy for the dataset members. If loosemode is TRUE when it applies to a buffer, Progress looks for some existing mapping between the two buffers from some previous ATTACH-DATA-SOURCE. If there is no ATTACH-DATA-SOURCE between the two buffers, the copy will be done matching column names and only copying those columns that appear in both target and source, without requiring matches of indexes or column order\number. Pairslist only applies to COPY-DATASET. If the pairslist is given, the copy will happen between ONLY those member tables given in the pairslist. The pairslist is a comma-separated list of target, source tables to be copied, such as: ttabA1,ttabB4,ttabA2,ttabB3". If the pairslist is not given, the tables are copied in the order that they were defined or added in the two datasets. If one set is longer than the other, the unpaired tables will be ignored. Current-only defaults to FALSE. Current-only only applies to COPY-DATASET. If Current-only is TRUE, it causes the current buffer contents of all DataSet buffers to be copied to the target DataSet. It will only copy the record currently in the buffer. Users may have to set the AUTO-SYNCHRONIZE attribute set to TRUE or perform the SYNCHRONIZE( ) method to ensure that the contents of each buffer is what is wanted. (For a temp-table, users can use a single BUFFER-COPY statement or method to do this.) 3. GET-CHANGES option to include parents ---------------------------------------The GET-CHANGES method has a new positional, optional parameter: get-parent-mode. Get-parent-mode is logical. change-handle:GET-CHANGES(original-handle [, get-parent-mode ] ) Page 26

READMESP.txt Get-parent-mode defaults to FALSE. If get-parent-mode is TRUE, then the parent, grand-parent, etc. records for any created, changed or deleted record will also be copied into the change dataset. If the copied parent record has no change of its own, there will be no before-image for the parent record, and its row-state will be 0 or UNKNOWN. If the original record was deleted, Progress can still look for its parent records through the original records before-table row. There is no error or warning raised if the parent record is not found. The parent record may not be found either because the parent was never in the original dataset, or has been deleted from the original dataset. No attempt is made to find REPOSITION parents. 4. Option to MERGE-CHANGES and MERGE-ROW-CHANGES to include more rows --------------------------------------------------------------------The MERGE-CHANGES and MERGE-ROW-CHANGES methods have a new positional, optional parameter: copy-all-mode. Copy-all-mode is logical. change-handle:MERGE-CHANGES(original-handle [, copy-all-mode ]) change-handle:MERGE-ROW-CHANGES( [ original-handle [, copy-all-mode]]) Copy-all-mode defaults to FALSE. In either MERGE-CHANGES or MERGE-ROW-CHANGES, if you pass copy-all-mode as TRUE, then any "extra" records from the after change table(s) that were created there because of an earlier GET-CHANGES with get-parent-mode, or because the user manually created them, will get copied back to the original table(s) during the merge, even though their row-state is 0 or UNKNOWN. Using copy-all-mode to get server-side modified or added rows back into the original DataSet requires that there be a unique index on the temp-table containing those rows, because there is no before-table row from the original DataSet to use to identify the corresponding row in the original DataSet. 5. New KEYS attribute on BUFFER and DATA-SOURCE ----------------------------------------------charvar = <buffer-handle>:KEYS charvar = <data-source-handle>:KEYS( [ buffer-sequence-number] ) The KEYS attribute is read-only. If the buffer-sequence-number is not specified, the default is the first buffer. What querying the KEYS attribute returns: * If the specified buffer has a KEYS phrase (a comma-separated list of keys) from a DATA-SOURCE definition that can be used, it will return that. * If there was no KEYS phrase associated with the specified buffer, then it returns the comma-separated list of components from the unique, primary index. * If the buffer has no unique, primary index and no KEYS phrase, Page 27

READMESP.txt then it returns the string "rowid". 6. New DATA-SOURCE-COMPLETE-MAP attribute on BUFFER --------------------------------------------------charvar = <buffer-handle>: DATA-SOURCE-COMPLETE-MAP The DATA-SOURCE-COMPLETE-MAP attribute is read-only. If ATTACH-DATA-SOURCE has been run on the buffer, this attribute returns a comma-separated list of field pairs, showing which fields in the dataset temp-table buffer are associated with which fields in the table's corresponding data-source. If no ATTACH-DATA-SOURCE has been run on the buffer, the attribute returns UNKNOWN (?). sample output: "ttcust.custnum,Customer.cust-num,ttcust.name,Customer.Name, ttcust.salesrowid,rowid(Salesrep)" There will be an entry for every field in the temp-table, with the corresponding field in the data-source. The field names are qualified with the table name for both the dataset and the data-source. There may be a rowid(tablename) reference. There may be subscripts for array fields that have been mapped explicitly through their subscripts: "ttsales.month-quota[3],sales.month-quota[3]" or an array field may be mapped as a unit.. "ttsales.month-quota,sales.month-quota" 7. New RESTART-ROWID and NEXT-ROWID attributes on DATA-SOURCE ------------------------------------------------------------<data-source-handle>:RESTART-ROWID ( buffer-sequence-number | buffer-name ) Buffer-sequence-number must be an INTEGER that represents the sequence number of the desired buffer. Buffer-name must be a CHARACTER expression that evaluates to the name of a buffer in the data-source object. If no buffer-sequence-number or buffer-name is given, the attribute defaults to the first buffer. The RESTART-ROWID attribute is read-write. unknown (?). The default is

If the user sets the RESTART-ROWID, any subsequent FILL using that data-source will open the data-sources query, and then try to reposition the query to the rowid given. <data-source-handle>:NEXT-ROWID ( buffer-sequence-number | buffer-name ) Buffer-sequence-number must be an INTEGER that represents the sequence number of the desired buffer. Buffer-name must be a CHARACTER expression that evaluates to the name of a buffer in the data-source object. Page 28

READMESP.txt If no buffer-sequence-number or buffer-name is given, the attribute defaults to the first buffer. The NEXT-ROWID attribute is read-write. The default is unknown (?).

The NEXT-ROWID is set by PROGRESS whenever a FILL is done. If the FILL completes the source query selection without running into a BATCH-SIZE limitation, NEXT-ROWID is set to UNKNOWN. If the FILL runs into a BATCH-SIZE limitation, NEXT-ROWID is set to the rowid of the next record in the selection for that source buffer. If there are multiple source buffers for a single dataset row, then one NEXT-ROWID attribute is set for each of them. It is expected that the user will save these rowid's in a context and pass them back to the client who can then pass them on to the server that supplies the next batch. Like LAST-BATCH, NEXT-ROWID is intended for a temp-table that is either at the top of a dataset relation hierarchy, or has at most one parent record at each level above the buffer that it applies to. If there is a need to capture NEXT-ROWID for multiple sets of dependent records during the FILL, then an event will be needed -- most likely an AFTER-ROW-FILL of the parent level which can then store NEXT-ROWID in an array in a context, or in the parent temp-table record as a hidden field etc. NEXT-ROWID is read\write because users may want to set NEXT-ROWID themselves if they are not using FILL, but are reading the source from a flat file or some other non-4GL database source. 8. FILL behavior with RESTART-ROWID attribute --------------------------------------------When the FILL method is executed in the 10.0B Service Packs on a data-source with one buffer, Fill will open the data-sources query. Then it will check to see if the <data-source-handle>:RESTART-ROWID has a value other than ? . If it has another value, FILL will try to reposition the data-sources query to that rowid. If the reposition is successful, FILL will proceed with the fill operation. If the reposition is not successful, FILL will put out an error message, set the RESTART-ROWID to unknown (?), and continue the FILL from the top of the query at the current level. If the <data-source-handle>:RESTART-ROWID is ?, FILL will proceed with the fill operation without repositioning the query. When the FILL method is executed in 10.0B Service Packs on a data-source with more than one buffer, FILL will open the data-sources query. Then it will check the <data-source-handle>:RESTART-ROWIDs beginning with the top-most level of the join ( the buffer whose sequence-number is 1) and working downward. If the top-most <data-source-handle>:RESTART-ROWID is ?, FILL will proceed with the fill operation without repositioning the query. If the top-most <data-source-handle>:RESTART-ROWID is not ?, FILL continues to examine the <data-source-handle>:RESTART-ROWIDs in sequence order. As soon as it finds a RESTART-ROWID equal to ?, it stops examining RESTART-ROWIDs and tries to reposition the query with the rowids that it has. If the reposition is successful, FILL will proceed with the fill operation. If the reposition is not successful, FILL will put out an error message, set the RESTART-ROWID to unknown (?), and continue the FILL from the top of the query at the current level. Page 29

READMESP.txt If for any reason the specified RESTART-ROWID is not valid (possibly because it belongs to a child of a different parent than the current one), the rowid is ignored and the FILL starts back at the first row satisfying the selection criteria or the Data-Relation. An error message results but the FILL continues. You can put NO-ERROR on the FILL to suppress the message, or allow it to go harmlessly into the server-side error log. The NEXT-ROWID attribute is set by Progress for each Data-Source at the end of a FILL to signal to the application what the rowid of the next row to be retrieved at that level is. Normally the application code will store this value (perhaps in a context temp-table in the DataSet), send it to the client, and pass it back as an INPUT parameter to the next FILL request. The server code supporting the FILL request will set RESTART-ROWID at that level and do the next FILL. Two separate attributes are required. NEXT-ROWID is set by Progress to provide information to the application. RESTART-ROWID is never set by Progress. If the user sets RESTART-ROWID, it is an instruction to FILL to start the next fill at that level. Neither attribute is marshaled between server and client. 9. New REPLACE FILL-MODE -----------------------<buffer-handle>:FILL-MODE = REPLACE. There will be a new FILL-MODE in addition to MERGE, APPEND and EMPTY. This new mode is REPLACE. Replace looks up every record to be filled first to see if it is already in the dataset. If the record is in the dataset, it is replaced. If the record is not there, a new one is created. Tables being filled with the FILL-MODE REPLACE must have a unique index, or an error message is put out and the FILL terminates. 10. Performance\Resources Impact -------------------------------Two of the methods described in this document will have slower performance than other choices based on a user-controlled choice. If FILL( ) is executed with FILL-MODE = REPLACE, all the extra target DataSet reads necessary to do the replaces will affect the performance of the FILL operation. If COPY-DATASET( ) is executed with the parameter REPLACEMODE = TRUE, all the extra target DataSet reads necessary to do the replaces will affect the performance of the COPY-DATASET operation. =========================================================================== Temp-table Performance Enhancements for OpenEdge 10.0B Service Packs -------------------------------------------------------------------1. New Client and Appserver startup option, -ttmarshal -----------------------------------------------------In order to reduce network traffic for temp-table schemas passing between clients and Appservers, we are introducing a new startup option, -ttmarshal, and a new SCHEMA-MARSHAL property for temp-tables. Page 30

READMESP.txt This new startup option is for the client, appserver, webspeed and any other 4gl-capable executable. -ttmarshal n where n 0 1 2 3 4 is a number from 0 to 4 meaning: -- ignore this option -- min-schema-marshal for static temp-tables -- min-schema-marshal for all temp-tables -- no-schema-marshal for static temp-tables -- no-schema-marshal for all temp-tables

If you specify a non-zero value for this option, the normal full marshalling for temp-tables will be suppressed and less data will be marshaled according to the value given. If any particular table has the SCHEMA-MARSHAL property (or NO-SCHEMA-MARSHAL or MIN-SCHEMA-MARSHAL) explicitly set, then the table property overrides the session startup option. No-schema-marshal means that no field or index information is sent over the network. This is legal only if the receiving side is static, or is dynamic with a pre-existing temp-table definition. If the receiving table is dynamic with an unknown temp-table definition, then an error will result. In addition, no error checking is possible in these cases, since no field information is sent to allow it, so the user must be very certain that the two tables, receiving and sending, match. Min-schema-marshal never produces errors and is legal in all configurations. But since it sends labels, formats, help messages and validation expressions as UNKNOWN, it can cause the appearance of a dynamic unknown receiving table to be missing these things. If the receiving table already has a definition, it will make no difference at all. There will also be complete error-checking, since the field names, datatypes and extents are sent. 2. New temp-table object property, SCHEMA-MARSHAL ------------------------------------------------This property is character and read\write and allows you to specify what type of schema marshalling you want for the table it applies to. This specification will override any specification given in the -ttmarshal startup option. The default for this property is UNKNOWN which causes the default or session level behavior. The default marshalling for a temp-table is to marshal everything (FULL). temp-table-handle:SCHEMA-MARSHAL [ = char-expression ] char-expression is an expression evaluating to UNKNOWN, or one of the following: MIN NONE FULL -- corresponds to MIN-SCHEMA-MARSHAL -- corresponds to NO-SCHEMA-MARSHAL -- corresponds to the default FULL schema marshal

There are already two logical temp-table properties that control this same marshalling property. They are NO-SCHEMA-MARSHAL and MIN-SCHEMA-MARSHAL. They can be used interchangeably with SCHEMA-MARSHAL and will be gradually deprecated, so that in the future temp-table-handle:MIN-SCHEMA-MARSHAL = true. Page 31

READMESP.txt will become temp-table-handle:SCHEMA-MARSHAL = MIN. If multiple explicit schema marshal properties are set, the last non-unknown one wins, and overrides the session -ttmarshal setting. =========================================================================== FATHOM 3.0A Service Pack Release Notes -------------------------------------1. Upgrading from Fathom version 2.1A to Fathom 3.0A. -------------------------------------------------Fathom 3.0A can be installed to work with Progress 9.1D, Progress 9.1E or OpenEdge 10.0B. Fathom is required to use different files when it is installed against Progress than when it is installed against an OpenEdge release. The files that need to be different are contained in zip files. The zip files are in directories named either 91 or 100 located in the Fathom directory tree. The following installed Fathom directories contain the zip file directories. <fathom>\db <fathom>\src <fathom>\jspwork <fathom>\jars The files to be used are normally selected and unzipped for Fathom towards the end of the Fathom installation procedure. This selection and unzipping occurs correctly when doing a clean install of Fathom 3.0A. When performing an upgrade from an earlier version of Fathom, the unzip is not being performed. This is a problem because at the end of the upgrade the files needed by Fathom 3.0A will not be available. Fathom will fail to operate correctly attempting to use the older files that have been left behind from the earlier install. After installing an upgrade the files need to be manually unzipped before starting Fathom. When the installation completes, unzip the appropriate set of files depending on whether it is a Progress or an OpenEdge installation. Set default to each of the listed directories. With appropriate privileges set, unzip the files in either the 91 (Progress) or the 100 (OpenEdge) directories. For example, if Fathom is working with an OpenEdge install: cd <fathom>\db unzip 100\db.zip cd <fathom>\src unzip 100\rcode.zip cd <fathom>\jspwork unzip 100\jspwork.zip cd <fathom>\jars unzip 100\jars.zip 2. Upgrading from Fathom version 2.1A to Fathom 3.0A when there are spaces in the Fathom install path. -----------------------------------------------------------------------------Page 32

READMESP.txt On Windows, Fathom 3.0A will fail to run if there are spaces in the install path. This problem was not corrected until the Fathom 3.0A02 service pack. When upgrading to Fathom 3.0A from a Fathom 2.1A install that contains spaces in the path, the following sequence should be followed. 1. 2. 3. 4. 5. the upgrade can then be completed. 3. Applying this Fathom 3.0A Service Pack. ---------------------------------------Refer to the above note about the need to unzip the files following an upgrade install. There is the same problem when laying down a Fathom service pack. The unzip does not occur although the service pack can contain updated zip files that need to be applied. In the case of the Fathom 3.0A Service Pack, it is just the files in jspwork that changed since Fathom 3.0A. Providing that the correct Fathom 3.0A files are already in place, unzipping the 3.0A jspwork zip file will suffice. cd <fathom>\jspwork unzip 100\jspwork.zip =========================================================================== =========================================================================== =========================================================================== ISSUES ADDRESSED IN THIS SERVICE PACK: Issue Number Product Component ------------ -------------------20061006-016 GUI Issues 20061004-008 Project-Based IDE Description ---------------------------------------Error 4517 raised when setting READ-ONLY while creating a dynamic browse If the PROPATH string length for a project exceeds certain value (between 3000-4000 bytes), the OpenEdge runtime may become disconnected from the OpenEdge Architect session. Web Services client crashes when you have multiple server handles and you delete one (or more of them) and then run requests on one of the other server handles that had not been deleted SQL-92: Passing Array Column Parameters generates a "Value can not be converted to requested type" error. Some client principal attributes are Page 33 Perform the upgrade installation. Unzip the appropriate Progress or OpenEdge files as noted above. Apply this Fathom Service Pack. Unzip the appropriate Progress or OpenEdge files as noted below. Start the AdminServer and use the Fathom console to complete the upgrade.

Step 3 above will allow Fathom to operate when there are spaces in the path and

20061003-049 Web Services Out

20060926-035 SQL-related products

20060926-016 Security

READMESP.txt lost when 32-bit client talks to 64-bit appserver. 20060921-038 DSM API layer When audit has to record the change to more than 1 record, the second continuation record has a duplicate continuation-seqence and it will not show up when read. This is a regression. 10.1a clients will be able to conect remotely to 10.1b servers where the large index key feature has been enabled. This can result in the 10.1a client generating an index too large message (11353) for update operations involving indexed columns or delete operations. This error rarely occurred prior to this 10.1a\10.1b incompatiblity. Without this fix the 10.1a client generates the above message followed by a SYSTEM ERROR (127) that causes the client to generate a stack trace and then exit. This fix will cause the 10.1a client to rollback the transaction when the key too large error occurs instead of core dumping and exiting. There will be an additional msgd that says "Index delete operation failed for rowid <rowid>" and the transaction will rollback. When code is run from the editor perspective, focus remains on the editor and cannot be given to the code that the developer runs. Use of setJMSReplyTo in a jms\jmssession.p fails with the 9293 error When a folder is opened in a separate window (Context Menu in Resources view, Open in New Window), the creation of new file using the wizard would not have a container (project) specified The File Wizard dialog may not open if a project is not selected. AppServer Networking layer cannot properly connect to a database with more that 1024 extents. The Web Service client crashes when passing a Boolean value. Unknown value "?" is returned when reading properties from a message part of a multipart message in 4GL-toJMS SonicMQ Adapter Some SQL-92 queries fail with Internal Error 2 on a UTF-8 database which is Page 34

20060920-041 4GL Layer

20060920-026 Editing Perspective

20060919-003 4GL-to-JMS SonicMQ Adapter 20060918-034 Project-Based IDE

20060918-009 Project-Based IDE 20060911-031 AppServer

20060911-008 Web Services Out 20060911-006 4GL-to-JMS SonicMQ Adapter

20060908-006 SQL-92 Server Bugs

READMESP.txt using a non-basic collation. 20060901-029 DB manager interface 32 bit clients connecting to an auditing enabled 64 bit database do not get logged in the audit table _aud-audit-data. Multi CA certificates are not being accepted during the handshake of a Progress client to an SSL enabled server causing the error 9318 to be displayed. If READ-XML fails while trying to update a temp-table field, the errors are not displayed as they should when read-mode is "merge". Error 3306 compiling code in 10.1A 64 bit platforms The AVAILABLE-FORMATS attribute of the CLIPBOARD System Handle fails to return the PRO_MULTIPLE format. MD5 encryption errors causing Fathom Remote containers to go offline When using catalog definitions from 10.1a, the Catalog Preferences page do not open. Client may randomly crash when processing an asynchronous AppServer request The scatter factor reported by tabanalysis was incorrectly calculated for type II storage areas. Web Service client causes a memory leak during connect\disconnect. Fix incorrect _StorageObject records for some word indexes. Error in property (serverASKActivityTimeout)in the ubroker.properties for 10.1B beta causes AppServers to do not start when using a ubroker.properties from 10.1A. When starting an admin server on a AIX machine using IBM HACMP cluster and specifying -host, the RMI interface does not become fully bond to the host.Fixed problem where remote database agents were unexpectedly terminating after an AdminServer restart. A child Dataview is erroneous repositioned to the first record on save of a parent record even if dataAvailable mode is not "SAME". Page 35

20060831-020 Security

20060831-018 XML

20060830-034 4GL Layer 20060830-002 4GL Layer

20060829-019 Database Agent 20060828-020 Catalog

20060825-019 AppServer

20060825-018 DB - database utilities 20060825-016 Web Services Out 20060823-013 DB - multi-volume utilities 20060821-019 Admin Service

20060821-016 Database Agent

20060821-013 Graphical runtime rendering (ADM)

READMESP.txt 20060818-011 DB - recovery manager Enable or Disable auditing\largekeys\64bitsequence\.. are not rollforwarded as per missing notes within the AI, resulting intarget and source databases having not the same features or capabilities. Lookup turns blank, even if the option to blank out invalid values is unchecked, when a date value not available in the looked up table is entered. Class methods do not receive the correct parameter when it is the result of the REPLACE function due to the parameter list for the REPLACE function being reversed by the compiler. Database server processes randomly terminate with memory violation (49) if auditing is enabled Change in the lookup API are using the displayField event to refresh the lookup causing loss of functionality in applications that had rowDisplay hook logic that relied on the lookups and linked fields already having their data, since the "displayField" is published after the call to the rowDisplay custom hook, When using r-code compiled outside the OpenEdge Architect, a message indicating that the no debug info is available for the source file is displayed, even though, the source code is available to the project. The startup of the AI Management daemon fails if the target directory name is too long. Grandchild DataViews on page 0 with visual target on hiddeen page do not get correct data when grandparent retrieves another batch. Use of REPLACE function cause GPF if source-string is a LONGCHAR and to-string was larger than from-string and there was more than 100 occurrences of the from-string. Performance problem when replication server is unable to flush ai buffers when database service queue is full. The AI Queue\Buffer is limited to 1024 (using -pica). When this queue fills up, performance problems follow as Page 36

20060817-001 Graphical runtime rendering (ADM)

20060815-035 OO 4GL

20060815-012 Product Bug

20060815-003 Graphical runtime rendering (ADM)

20060810-048 Debugger

20060809-030 Rollforward Utility

20060808-027 Graphical runtime rendering (ADM)

20060808-023 Datatype

20060808-009 FHA Replication Server 20060808-007 FHA Replication Server

READMESP.txt Replication is unable to acknowledge notes. 20060807-029 SQL-related products SQL-92 query performs a full table scan when looking for a non existing value of a field that is indexed as primary unique. INITIAL attribute value for a temp-table field with character format ":9" init ": 0" returns the initial value incorrectly as :: Trying to create static viewers from Static SDO's that were registered in the repository with the .w in the name results in error 293 and 193. SQL query where an index, with more than 10 key components is a a possible access path, causing it to choose a non-optimal index or choose a table scan to access that table and resulting in poor performance. When setting dlc into any of the scripts such as wsaman, wsaconfig or fmconfig, $DLC will be used if it is already set else use the default installation directory. Some windows with SDO's that have Foreign fields defined have filters that need to have clear requests applied twice before they take effect TreeView with DataView loses current record and batch when 'More' node is clicked. Client crash when using ADD-INDEX-FIELD for an index that failed to be added or that doesn't exist. The DBAware property is used to identify whether running datasource instances are DataView or SDO. This may cause problems in application that has set DBAware to FALSE in TT based SDOs as a way to avoid deploying the _cl file or to avoid running the dynsdo on clients. If a ProDataSet contains two data-relations based on the same parent fields, and those fields make up a unique index, READ-XML and READ-XMLSCHEMA will fail while verifying an XML Schema for the ProDataSet against the Progress definition, and will produce errors 13081 and 13033. The methods will also create an incorrect dynamic Progress definition based on the XML Schema. Page 37

20060807-003 4GL Layer

20060806-002 Tools \ Utilities

20060804-039 Query Results and Optimization

20060804-023 Admin Service

20060804-002 Graphical runtime rendering (ADM)

20060803-038 Graphical runtime rendering (ADM) 20060802-017 4GL Layer

20060731-022 Graphical runtime rendering (ADM)

20060731-004 ProDataSets

20060728-001 Utilities

READMESP.txt If you have Large Files enabled for your database and are using OpenEdge Replication, transitioning and failover will fail with error 9818. User-defined functions incorrectly allow VOID returns types and calls to routines that do i\o blocking. Client crash with error 5174 when working with a word-indexed temp-table where there is no database involved. When an AppServer request ends with RETURN ERROR, the next request sent to the same AppServer agent will cause the AppServer agent to crash. Multithreaded SQL servers will core dump on occasion due to running out of stack. A memory overwrite occurs on the server when executing queries that are prepared statements Service Pack 1 of 10.1B included support for Sonic 7.0. As part of this support, the installation program connects to your Sonic domain manager to query the version of Sonic in use. Due to a bug in this program, the timeout to connect to the domain manager is unreasonably short. This causes timeout errors in some cases, causing specific configuration of the Sonic 7.0 environement to not occur. This can be seen in Sonic ESB Explorer. Under Services, if it lists OpenEdgeSrvType instead of Open Edge Services, this configuration did not occur. Blank lines in code when generating ProDataset from .dgm A child Viewer doesn't disable "Add" when the grand parent isn't available and the child SDO has a multi component foreign key and the application is running over an Appserver connection. Setting logical values to blank for DisplayedFields of a SmartViewer returns error 87, "Input value: <input> should be <yes\no>. (87)" It is possible to lock the incorrect table when running index fix Database restored (after "prorest") from a "probkup" run with option "-norecover" fails to restart due to "SYSTEM ERROR: Attempt to read block xxxxx which does not exist" during the redo phase of crash recovery. Page 38

20060727-013 OO 4GL

20060726-014 4GL Layer

20060724-019 4GL Layer

20060724-001 Product Bug 20060721-012 Open Edge SQL

20060721-004 Product Bug

20060721-003 Tools for Business Logic 20060718-004 Graphical runtime rendering (ADM)

20060718-001 Graphical runtime rendering (ADM)

20060714-007 DB - lock manager 20060714-002 DB - recovery manager

READMESP.txt 20060713-021 DB - recovery manager 20060713-007 Graphical runtime rendering (ADM) 20060712-014 Product Bug This bug caused cluster reuse too often. This could cause a database down and failure to complete crash recovery. Translating dynamic containers generates error RY-21 due to erroneous container width calculation. Progress broker fails to start in a multi broker environment where the primary broker type is SQL, this happens only after Auditing has been enabled. The SQL aggregate functions return wrong results when a subquery is used. If an AppServer response to an openclient application is exactly 25000 bytes, the application will throw an exception with error (7189) e.g. Stream protocol error tag = 82. (7189) or Stream protocol error tag = 8. (7189) 4GL-JMS API getBytesCount() returns 0 when called against a bytesMessage part of a Multipart Message. Unable to rebuild indexes on databases that have had their character map changed to utf-8 If a browser has only one record in it after filtering, error is given trying to export to excel. UPDATE STATISTICS statement execution writes the computed statistics to the periodically during execution. If a database has very large tables (over 100 million rows), this may tie up a considerable amount of BI file resources, and possibly make the BI file grow substantially. As a workaround, apply UPDATE STATISTICS to individual tables in individual transactions. Get index statistics independently of default statistics, rather than together. Dynamic temp table buffer handle gets dereferenced when the procedure defining a shared temp table is deleted. WebSpeed agents crashes with memory violation (49) when trying to lock an already locked record on Oracle INSTANTIATING-PROCEDURE attribute does not return expected handle Page 39

20060712-001 Query Results and Optimization 20060711-031 Open4GL DynamicAPI

20060711-020 4GL-to-JMS SonicMQ Adapter 20060711-015 DLL Issues

20060711-001 Graphical runtime rendering (ADM) 20060710-013 SQL-92 Server Bugs

20060710-009 4GL Layer

20060710-005 4GL Layer

20060706-022 4GL Layer

20060706-011 Database Repair

READMESP.txt Online probkup restored database fails to open with errors: Invalid before image version number found in bi file. (9971) This is a version 0 bi file. (9972). Using the ForcedExit Private-data feature to close a window gives error (565), (91) and (7366) Session crashes when using a buffer as input parameter in a query. Database hangs due to blocked Replication Server, pmAllocateMsg reported in protrace file. Database auxiliary process status remains "Not Running" when monitoring scripted database. Client canceling operation wiht F4 or ESC cause 4GL client session to get error 49 and crash. It also causes index corruption that appears only for SQL-92 clients. When AI is ended a message indicating that the database is not enabled for AI Management is logged. The message should not be logged. Under certain circumstances, duplicate index keys are created for prodataset temp-tables if the table is updated while tracking-changes = yes. This can cause queries to return an incorrect number of results, or cause unique index violations (error 132) in unexpected places. A client session can make a limited number of connections and disconnection to a state-free AppServer before it fails. Revoke causes hang if user does no have privileges Incorrect sorting of audit time data when passing UTC midnight Unable to grant access for a SQL-92 client when the table name has 32 characters. Progress Replication will terminate on Solaris 10 Zone machines. Database shuts down with a partial error and a protrace file is generated when the maximum user-addressable blocks per area limit is reached. Page 40

20060705-022 Graphical runtime rendering (ADM) 20060704-007 4GL Layer 20060704-003 Product Bug

20060703-009 Product Bug

20060703-003 4GL Layer

20060703-002 Rollforward Utility

20060630-001 ProDataSets

20060629-011 4GL Layer

20060629-008 Authorization 20060627-003 Auditing 20060626-025 Authorization

20060626-021 PROGRESS Porting Issues 20060623-012 DB - block manager

READMESP.txt 20060621-016 SQL Server MS SQL Server DataServer: The self service 4GL client terminates with error 6227 when creating buffer for a table . A user with no access permissions on the _file and _index metaschema tables of a database, and who is prohibited from dumping definition (.df) files of that database, can dump an incremental definitions (delta.df) file of the database if they first connect to the database and then set an empty database as the working database. When reporting database information via dbkey order in dbrpr, some dbkeys may be skipped. The replication source database could potentially hang if there is a large number of rfutil commands executed in a very short period of time. Opening a large project in 10.1A01 takes 15 to 20 minutes to open. No entry in lg file or under promon that -pica in use String(<integer>,"HH:MM AM") returns different value if value is greater than 86400. OpenEdge session crashes on calling a Belgian eID ActiveX control method. When defining a multiple fields Logic, 4GL code dataset diagram relation-fields relation based on using Tools for Business generated for the will have the in the wrong order.

20060621-015 Data Dictionary

20060621-012 Database Repair

20060621-009 FHA Replication Agent

20060621-007 Product Bug 20060621-002 Product Bug 20060619-016 4GL Layer

20060619-008 Controls 20060619-006 Tools for Business Logic

20060616-001 Tools \ Utilities 20060615-005 DB - database utilities 20060615-004 DB - database utilities 20060614-006 Auditing

Appbuilder does not save extended Dynamic SmartDataViewer changes Data corruption when a decimal field is added to the audited table. Negative decimal values should be stored with a proper sign in the audit system tables. When a single OE client connects to multiple OE Databases with auditing in a single database only, login events are recorded for each database in the single audited database. Database options are not being enabled after running conv910 and enabling auditing. Page 41

20060612-014 DB - database utilities

20060609-014 OO 4GL

READMESP.txt Some entries for private temp-table and dataset fields appear in XREF output when they should not Number of processors are displayed incorrectly on Linux systems ODBC connection fails when database has ICU-UCA collation with error: [DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Server rejects connection on attach. WRITE-XMLSCHEMA generates an incorrect prodata:decimals attribute for DECIMAL fields with the default DECIMALS value of 10. GFP when compiler try to processes a CAN-FIND function call that refers to a private temp-table. Opening and saving windows with multiple OCXs on multiple frames corrupts the code of the window. When opening a SmartDataBrowser that is linked to a SmartDataObject but not initially opening the query, if a Search Field is used then the query does open. "When a window, that also contains FLAT buttons, is first realized, there is no widget that can receive the FOCUS. Then, during the execution any widget, like for example, a field, is enable at runtime, Progress does not automatically apply the FOCUS to the enable field. " Audit records are created for fields that have changed in a table marked to be audited, even if the field itself is not meant to be audited. ODBC\JDBC clients that send invalid connection properties to the OESQL server will receive an error. The clients should receive a warning status Adm2\tvcontnr.p references dynlaunch.i instead of launch.i Transaction UNDO cause error "SYSTEM ERROR: Index in for recid could not be deleted. (1422)". Memory violation or Segmentation violation on rollforward with function rlaiApplyNote() in the stack. A container with Dataviews that is launched from a standards Dynamics menu will give an error complaining about Page 42

20060609-009 Product Bug 20060607-011 ODBC Driver

20060606-006 ProDataSets

20060605-022 4GL Layer

20060605-021 Tools \ Utilities

20060605-007 Graphical runtime rendering (ADM)

20060602-015 GUI Issues

20060602-013 Auditing

20060601-015 SQL-92 Server Bugs

20060601-010 Tools \ Utilities 20060601-003 4GL Layer

20060531-013 DB - recovery manager 20060531-007 Graphical runtime rendering (ADM)

READMESP.txt duplicate requests if attempted launched a second time. 20060531-006 ProDataSets In specific cases, if a temp-table in a prodataset is updated while tracking-changes = true and indexed fields are modified, the record can not be found using the new field values. Server crash as the user tries to use 0-length double-quoted identifiers in OESQL. Keyword rejected with error 7566 even when using double quote. No clear error message when the database cannot be opened due to unsupported DB features enabled within another environment, as per "enableseq64" for example. Generating code for temp-table diagrams created in Tools for Business Logic 10.1a fails due to a new attribute included in 10.1a01 that was not present in 10.1a. The DataContainer only passes the optional application context for the first table\Dataview of the request A search condition between different datatypes causes a SQL query to abort with error 7498. Open Client connections receive error 7203 under heavy load. When the client raises this error, the AppServer it was connected to goes into an unrecoverable state. The "Run as TTY" option from the drop-down run button in OpenEdge Architect was not calling the proper operating system commands to start a new TTY session which resulted in the "Run as TTY" option not starting a new OpenEdge TTY session. using -ucc with QAD, char fields seems to byte count and not column count Temp table always outputs case-sensitive for dragged tables A findRowWhere that need to go to the server to retrieve data will not position correctly and not refresh targets. prostrct addonline can result in Memory violation errors if Larage Files are Page 43

20060531-005 Open Edge SQL

20060531-004 Open Edge SQL 20060530-011 DB manager interface

20060530-008 Tools for Business Logic

20060530-001 Graphical runtime rendering (ADM) 20060526-002 SQL-92 Server Bugs

20060523-003 AppServer

20060523-001 Project-Based IDE

20060522-008 Unicode Character Client 20060522-003 Tools for Business Logic 20060519-015 Graphical runtime rendering (ADM)

20060519-007 DB - multi-volume utilities

READMESP.txt enabled. 20060517-003 Graphical runtime rendering (ADM) 20060516-008 Graphical runtime rendering (ADM) If you sort columns in a parent DataView all links to child Dataviews will remain disabled. When selecting the child node of a treeview, the first time the child node is selected any associated visual objects are blank. If another node is selected this displays correctly. If the original node is then selected again, then this now displays correctly too. "prostrct list" crashes when run against a database with 64bit dbkeys. When a DataView find fails then it never goes to the server for another batch or find and therefore the retrieval of new batch won't work Child Dataview data is included in parents service request also when their OpenOnInit is set to NO. On Win32 platforms, running OS-COMMAND many times while using INPUT THROUGH or OUTPUT THROUGH will eventually cause the following error: ** Unable to open file: <file-name>. Errno=24. (98) This will also happen when running OS-COMMAND from a Win32 AppServer, regardless of whether it is using INPUT THROUGH or OUTPUT THROUGH. prostrct add online needs to allow new areas to be added when ai is enabled. Database shuts down abnormally with a Bus Error (48) when -Bp on interactive clients is exhausted. F5 fails to refresh a SmartDataBrowser with a DataView as its data source The record option for creating a response file for the silent install does not work in the service pack. You cannot add or modify comments in a Dynamics Web session when the owning record has an object id key field An instance of progress.lang.object cannot be deleted. Unable to start AdminServer after changes in hostname and IP address of the server. Error 40 may occur when loading data Page 44

20060515-022 Prostrct command 20060511-029 Graphical runtime rendering (ADM)

20060511-028 Graphical runtime rendering (ADM) 20060511-015 Application Server

20060511-013 DB - multi-volume utilities 20060510-018 Product Bug

20060510-005 Graphical runtime rendering (ADM) 20060509-022 Service Pack Install Issues 20060509-014 Web runtime rendering 20060505-013 OO 4GL 20060504-014 Product Bug

20060503-008 Data Dictionary

READMESP.txt from auditing tables using the Data Administration or Data Dictionary tool. 20060503-007 Internationalization The German "" character is not treated equal to the "ss" character in the ICU-DE__PHONEBOOK collation. ALERT-BOX widgets disappear sometimes under WINDOW or DIALOG-BOX widgets when using third party applications. Trying to check syntax causes the client to crash when compiling against an Oracle Schema Holder Enabling Replication fails if the database is online. When mutliple users are inserting records to the same object in a type II storage area at the same time, there is a possibility that the storage area can grow in excess of the acrual space needed to complete the operation. Online replication failback can fail with error 10830 and -252. 7351 error when entering the find\filter feature on an SDO that has extent fields in the queried table State-free Java OpenClient applications might get OutOfMemory errors making large numbers of requests, when configured to use a large connection pool and a short connectionLifetime. Error "Can't find file *.r. running prolib utility with option with wildcards (such depending on the properties in the directory. (1905)" when the -add as *.r) of the files

20060503-006 4GL Layer

20060428-023 Oracle DataServer

20060428-006 Utilities 20060426-014 Cluster

20060426-004 Product Bug 20060425-002 Graphical runtime rendering (ADM) 20060424-013 Open4GL DynamicAPI

20060421-014 4GL Layer

20060419-013 Web Services Out 20060414-015 OO 4GL

Examples for SOAP encoded arrays generated by bprowsdldoc are incorrect. Attempting to compile a method invocation on SESSION:FIRST-OBJECT core dumps if there are no objects yet created. Invoking DYNAMIC-FUNCTION in a QUERY-PREPARE( ) predicate expression using THIS-PROCEDURE or TARGET-PROCEDURE crashes the session. An AS\400 DDS Defined file that contains a TIME field can not be created or updated but can only be queried. Cannot assign the unknown value to a public data member from outside the Page 45

20060407-026 4GL Layer

20060331-034 DB2 DataServer

20060331-016 OO 4GL

READMESP.txt class. If you have a PUBLIC class member (variable) and try to assign it the NULL value directly, you get error 143. 20060331-009 Tools for Business Logic 20060330-010 DB - multi-volume utilities 20060329-026 Framework\dev env. deployment services 20060329-022 Web Services Out 20060329-011 ODBC Driver 20060328-004 SQL-92 Server Bugs Temp Table Component Before table property toggle is a logical The some option of idxcheck may not work in all circumstances. Unable to share the same physical connection to the AppServer when two different partitions. Web Service client causes memory leaks during CONNECT and DISCONNECT. ODBC warnings This bug prevented non-DBA users from accessing databases via SQL if the database has a non-basic collation. Table definition not complete (7675) error when loading a SQL file generated by the SQLSCHEMA utility. Running a UTF-8 batch client results in error 557 Unable to install server plugin Plugin.SMDatabase when Adminserver is started. Code generated for a dataset diagram will contain excess data-relation definitions with blank relation-fields() phrases. This will happen for diagrams created using the code-to-model tool. TTY runtime fails to start with java errors Feature bit options such as enable auditing should be crash recoverable. An incremental dump (.df) file doesn't contain differences on character fields that are case-insensitive in the meta-schema. This bug addresses an issue where the OESQL server exits abruptly when certain options appear in startup.pf. While connected to Oracle 10, calling a subshell causes the Progress session to hang. Ctrl-C during a query processing may cause error 784 and disconnect from database Page 46

20060324-018 Tools \ Utilities

20060321-010 Internationalization 20060309-038 Product Bug

20060308-017 Tools for Business Logic

20060308-004 Project-Based IDE 20060302-022 Rollforward Utility 20060301-002 Data Dictionary

20060222-006 ODBC Driver

20060215-049 Oracle DataServer

20060214-025 4GL Layer

READMESP.txt 20060125-007 Product Bug 20060111-003 FHA Replication Agent 20051215-010 Debugger Proquiet nolock does not list ai sequence number in database log. Can not transition agent if recovery backup is specified. R-code compiled outside the OE Architect IDE does not work with the OE Architect IDE Debugger before recompiling it again. Error 3071 occurs. The href in SOAP responses are not being dereferenced properly. DataView FIND requests (findRowWhere and findRow) passes the find criteria merged with the current querystring and beginning with "FOR EACH" to the Service Adpater's Request parameter while it only need to pass "WHERE <find criteria>" A Dataview that is child of another DataView in a different prodataset does not detect when the parent retrieves its data, for example at start up or when reading a new batch and will do its own unnecessary appserver call. updateTableviaSDO fails with error 293 using static SDO's registered with a .w extention AdminServer fails to start using -host with proadsv on a Cluster IBM HACMP environment Fill-In is not cleaned up correctly when using UTF-8. Characters remain visible on screen. They are not stored in the database Fathom Replication synchronization can't be performed after replication target database is restarted. Larger work-tables in 10.1A causes the performance to be drastically slower. Font size is not correct for Terminal size 8 font Fathom Replication Agent fails with "ASSERT FAILURE: tmClearTxnTable: losing high order bits of rlGetMaxActiveTxs". The value of the startup parameter -lkhash Has been increased to 142 million. COMBO-BOX with an empty value returns an empty string when querying for Page 47

20051201-032 Web Services Out 20051122-047 Graphical runtime rendering (ADM)

20051116-005 Graphical runtime rendering (ADM)

20051107-021 Framework and dev environment services 20051026-005 Admin Service

20051018-003 4GL Layer

20050928-001 FHA Replication Agent 20050622-018 4GL Layer 20050425-005 4GL Layer 20050418-005 DB - transaction manager 20050301-020 DB - lock manager

20041126-003 4GL Layer

READMESP.txt SCREEN-VALUE in 9.1x. In 10.0x, it returns unknown (?). 20040220-017 Service Pack Install Issues The backup dialogue box did not disappear during the process data phase during the SP installation with backup option.

=========================================================================== PROBLEM REPORTING If you encounter problems with the installation of the Service Pack, or with the Progress product as a result of installing the Service Pack, please contact Progress Technical Support at www.progress.com. THE PAPER COPY OF THE READMESP SUPERSEDES THE FILE INCLUDED ON THE MEDIA. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ End User Product License Agreement ("Agreement") CAUTION: BY INSTALLING THE SOFTWARE OR ENTERING THE CONTROL CODES YOU ACKNOWLEDGE YOUR UNDERSTANDING AND ACCEPTANCE OF THE FOLLOWING TERMS AND CONDITIONS. PLEASE CAREFULLY READ THESE TERMS AND CONDITIONS BEFORE INSTALLING THE SOFTWARE OR ENTERING THE CONTROL CODES. IF YOU DO NOT AGREE WITH THEM, PROMPTLY RETURN THE SOFTWARE, DOCUMENTATION, AND ALL COPIES THEREOF TO PROGRESS SOFTWARE CORPORATION OR THE SUPPLIER FROM WHICH IT WAS ACQUIRED FOR A FULL REFUND OF THE LICENSE FEES, IF ANY, PAID FOR THE SOFTWARE. 1. Scope of License 1.1 Subject to the terms and conditions contained herein, Progress Software Corporation ("PSC") grants to you ("User") a perpetual (unless otherwise terminated as provided herein) non-exclusive, non-transferable, limited license to use the software product(s) for which valid control codes have been issued by PSC or identified on the license addendum (individually referred to herein as "Product" or collectively as "Products") and related manuals in written or electronic form ("Documentation"). User's use of the Products and Documentation shall be limited to internal use within User's organization and all such use shall be in accordance with the provisions and limitations set forth in Exhibit A and the license addendum accompanying the Products. If User receives a Product in conjunction with a software application provided by a third party, the Product may only be used with or as part of such software application. 1.2 User may not transfer, sell, assign or otherwise convey this Agreement, the Products and\or Documentation, by operation of law or otherwise, to any other party. User may not sell, rent, license, or grant sublicenses, leases, or other rights in the Products or Documentation to others or otherwise allow the Products to be accessed by another party. This Agreement automatically terminates if User novates, assigns or otherwise transfers possession of any copy of the Products, Product Updates or Documentation to another Page 48

READMESP.txt party or purports to do the same. User shall have no right to use the Products to provide time sharing services or act as or operate a service bureau or provide subscription or hosting services for others. 1.3 For purposes of this Agreement a "Product Update" shall mean any update, service packs patch and\or new release that PSC furnishes generally to its technical support customers in accordance with PSC's then-current maintenance and support policies and fee requirements. A Product Update replaces part or all of a Product or Product Update previously licensed to User and shall terminate such previously licensed Product or Product Update to the extent replaced by the Product Update. Product Updates shall be subject to the terms and conditions of the license agreement accompanying the Product Update or failing that the current version of this Agreement. 1.4 For Products that contain Java Technology, the following provisions apply: Java Platform Interface In the event that User creates any Java-related API and distributes such API to others for applet or application development, User must promptly publish an accurate specification for such API for free use by all developers of Java-based software. User may not modify the Java Platform Interface ("JPI", identified as classes contained within the "java" or "sun" package), by creating additional classes within the JPI or otherwise adding to or modifying the classes in the JPI. Java software technology is not designed or intended for use in on- line control of aircraft, air traffic, aircraft navigation or aircraft communications; or in the design, construction, operation or maintenance of any nuclear facility. User will not use or, if applicable, redistribute the Java software technology for such purposes. PSC AND ITS LICENSORS EXPRESSLY DISCLAIM ANY LIABILITIES, REPRESENTATIONS OR WARRANTIES (EITHER EXPRESS OR IMPLIED) FOR SUCH USE. 1.5. For Products that contain technology of RSA Security, Inc., the following provisions apply: User agrees not to remove, alter or destroy any proprietary, trademark or copyright notices placed upon or contained within the RSA software, user manuals or any related materials or documentation. User acquires no rights of any kind in or to any RSA trademark, trade name, logo or product designation under which the RSA software was or is marketed and shall not make any use of the same for any reason. 1.6 The Products, including any files therein, are subject to the terms and conditions of this Agreement. Where those files contain a reference to the POSSENET Public License, Page 49

READMESP.txt then the same shall be disregarded and this Agreement shall apply in relation thereto. 2. Progress Software's Rights 2.1 The Products and Documentation are proprietary products of PSC or its licensors, and are protected by copyright law. By virtue of this Agreement, User acquires only the nonexclusive right to use the Products and Documentation and does not acquire any rights of ownership in the Products, Documentation or the media upon which they are embodied. PSC or its licensors, shall at all times retain all right, title, and interest in the Products, Documentation and the media. 2.2 PSC may terminate this Agreement by written notice if User defaults in the performance of any provision of this Agreement and fails to cure such default to the satisfaction of PSC within ten (10) days after such notice. Within five (5) days after termination of this Agreement for any reason, User will return to PSC or destroy all copies of the Product and Documentation and certify in writing to such return or destruction of all copies of the Product and Documentation. This remedy shall not be exclusive and shall be in addition to any other remedies which PSC may have under this Agreement or otherwise. 3. Non-Disclosure; Copies; Alterations User acknowledges that the Products are the valuable proprietary and trade secret information of PSC or its licensors. User shall (i) limit use and disclosure of the Products to its employees, its consultants, and its consultants who agree to be bound by the terms of this Agreement; (ii) not provide or disclose any of the Products to another party; and (iii) take all reasonable precautions to maintain the confidentiality of the Products. User agrees not to cause or permit the reverse engineering, disassembly, copying, or decompilation of the Products, except to reproduce machine-readable object code portions for backup purposes and installation of new releases, under penalty of license termination but not exclusive of any other remedies. If the Products are licensed to User for use in a country which is a member of the European Community, User may reverse engineer and\or decompile the Products to the extent that sufficient information is not available for the purpose of creating an interoperable software program (but only for such purposes and to the extent that sufficient information is not provided by PSC upon written request). Furthermore, User is not restricted in a country which is a member of the European Community from observing, studying or testing the functioning of the Products solely in order to understand the ideas and principles which underlie any element of the Products. User may copy the Products for installation and archival purposes only. User is permitted to make one archival copy to be used only in the Page 50

READMESP.txt event that the original media is damaged beyond use. All copies of the Product shall bear the original and unmodified intellectual property rights markings that appear on or in the Products. User may not copy nor allow others to copy the Products or any Product Update for any other purpose. User agrees not to remove any product identification, copyright notices, or other notices or proprietary restrictions from the Products. 4. Limited Warranty PSC warrants that the materials of both the Product media and Documentation are not defective and that the software is properly recorded on the media. If either the media (such as the diskettes, cartridges, CD-ROMs, and magnetic tapes) or the Documentation is physically defective, PSC will replace it free of charge during the ninety (90) day warranty period. User's remedy is limited to return of the media and\or Documentation to the supplier or to PSC for replacement. This Limited Warranty is in effect for claims made within ninety (90) days from the date of initial shipment, or download if applicable, of the Product and Documentation from Progress site. PSC warrants that it has the right to license the Products. PSC will defend User against any claim based on an allegation that a Product infringes a U.S. patent or copyright, but only if PSC is notified promptly in writing of such claim and is given sole control of the defense thereof and all related settlement negotiations relating thereto. Notwithstanding the foregoing, PSC shall not be liable to User for any claim arising from or based upon the alteration or modification of any of the Products. THE LIMITED WARRANTY SPECIFIED IN THIS SECTION 4 SETS FORTH ALL WARRANTIES AND REPRESENTATIONS PROVIDED BY PSC TO USER WITH RESPECT TO THE PRODUCTS. SUCH LIMITED WARRANTY IS PROVIDED SOLELY BY PSC AND NOT PSC'S LICENSORS. EXCEPT FOR THE LIMITED WARRANTY PROVIDED BY PSC TO USER PURSUANT TO THIS SECTION 4, NEITHER PSC NOR ITS LICENSORS, NOR ANY OF THEIR RESPECTIVE SUPPLIERS, MAKE ANY EXPRESS WARRANTIES OR REPRESENTATIONS RELATING TO THE PRODUCTS OR ANY SERVICES RELATED THERETO, AND FURTHER, TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, DISCLAIM ALL IMPLIED WARRANTIES AND REPRESENTATIONS INCLUDING BUT NOT LIMITED TO ALL IMPLIED WARRANTIES AND REPRESENTATIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT WITH RESPECT TO THE PRODUCTS AND ANY SERVICES RELATED THERETO. For example, PSC does not warrant that there are no discrepancies between the Products and the Documentation, nor that errors cannot arise during the use of the Products. Without limiting the foregoing warranty disclaimers, User acknowledges that if the Product or Products licensed to User hereunder contain IBM\s XML Parser for C++, then such IBM technology is licensed to User 'AS IS' without warranty of any kind, whether express or implied. Neither PSC Page 51

READMESP.txt nor IBM assumes any liability for any claim that may arise regarding the use of such IBM technology. THE LIMITED WARRANTY SPECIFIED IN THIS SECTION 4 GIVES THE USER SPECIFIC LEGAL RIGHTS, AND MAY ALSO IMPLY OTHER RIGHTS WHICH VARY FROM STATE TO STATE. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, AND DO NOT ALLOW A LIMITATION ON HOW LONG ANY IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATIONS MAY NOT APPLY. No PSC employee, supplier, or agent is authorized to make any modification or addition to this warranty. 5. Limitation of Liability TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE LIABILITY OF PSC, IF ANY, FOR DAMAGES RELATING TO ANY PRODUCT AND\OR SERVICE SHALL BE LIMITED TO THE ACTUAL AMOUNTS PAID BY USER FOR SUCH PRODUCT AND\OR SERVICE. PSC'S LICENSORS AND THEIR SUPPLIERS SHALL HAVE NO LIABILITY TO USER FOR ANY DAMAGES SUFFERED BY USER OR ANY THIRD PARTY AS A RESULT OF USING THE PRODUCTS OR DISTRIBUTING ANY PORTION THEREOF, OR AS A RESULT OF ANY SERVICES RELATING THERETO. NOTWITHSTANDING THE FOREGOING, IN NO EVENT SHALL PSC, ITS LICENSORS, OR ANY OF THEIR RESPECTIVE SUPPLIERS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, ANY COMMERCIAL DAMAGES OR LOSSES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OR INABILITY TO USE THE PRODUCTS, OR ANY PORTION THEREOF, OR ANY SERVICES, EVEN IF PSC, ITS LICENSORS AND\OR ANY OF THEIR RESPECTIVE SUPPLIERS HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATIONS MAY NOT APPLY. EACH EXCLUSION OF LIMITATION IS INTENDED TO BE SEPARATE AND THEREFORE SEVERABLE EXCLUSION. 6. Export Administration 6.1 User agrees to comply fully with all relevant regulations of the United States Department of Commerce and with the United States Export Administration Act to assure that the Products and Documentation are not exported or re-exported in violation of United States law. Further, User shall not directly or indirectly export or re-export any Product, Documentation, or the direct product thereof without first obtaining PSC's written approval. 6.2 THE RSA SOFTWARE AND TECHNOLOGIES LICENSED UNDER THIS AGREEMENT ARE SUBJECT TO UNITED STATES EXPORT CONTROL LAWS AND REGULATIONS WHICH RESTRICT EXPORTS, REEXPORTS AND DISCLOSURES TO FOREIGN PERSONS OF CRYPTOGRAPHIC ITEMS AND ARE ALSO SUBJECT TO CERTAIN FOREIGN LAWS WHICH MAY RESTRICT THE EXPORT, REEXPORT, IMPORT AND\OR USE OF SUCH ITEMS. PERFORMANCE OF THIS AGREEMENT IS EXPRESSLY MADE SUBJECT TO ANY EXPORT LAWS, REGULATIONS, ORDERS OR OTHER RESTRICTIONS IMPOSED BY THE UNITED Page 52

READMESP.txt STATES OF AMERICA, OR BY ANY OTHER COUNTRY OR GOVERNMENTAL ENTITY ON THE RSA SOFTWARE, PRE-RELEASE SOFTWARE OR OF INFORMATION RELATING TO EITHER. NOTWITHSTANDING ANY OTHER PROVISION OF THIS AGREEMENT TO THE CONTRARY, LICENSEE SHALL NOT IMPORT, EXPORT, OR REEXPORT, DIRECTLY OR INDIRECTLY, ANY RSA SOFTWARE OR PRE-RELEASE SOFTWARE OR INFORMATION PERTAINING THERETO TO ANY COUNTRY OR FOREIGN PERSON TO WHICH SUCH IMPORT, EXPORT, OR REEXPORT IS RESTRICTED OR PROHIBITED, OR AS TO WHICH SUCH COUNTRY, GOVERNMENT OR ANY AGENCY THEREOF REQUIRES AN EXPORT LICENSE OR OTHER GOVERNMENTAL APPROVAL AT THE TIME OF IMPORT, EXPORT, OR REEXPORT WITHOUT FIRST OBTAINING SUCH LICENSE OR APPROVAL. LICENSEE UNCONDITIONALLY ACCEPTS FULL RESPONSIBILITY FOR LICENSEE'S COMPLIANCE WITH THESE REQUIREMENTS. 7. U.S. Government Restricted Rights This Product is a "commercial component," as this term is defined in 48 C.F.R. 2.101, consisting of "commercial computer software" and "computer software documentation," as such terms are defined in 48 C.F.R. 252.227-7014(a)(1) and 48 C.F.R. 252.227-7014(a)(5), respectively, and used in 48 C.F.R. 12.212 and 48 C.F.R. 227.7202, as applicable, and all as amended from time to time. Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202, and other relevant sections of the Code of Federal Regulations, as applicable, and all as amended from time to time, all U.S. Government entities acquire this product only with those rights set forth in this license agreement accompanying this Product. 8. Records Inspection User shall maintain books and records in connection with User's actions under this Agreement. Such records shall include at a minimum the number of licenses purchased and being used by User. PSC may, at its expense, audit the records of User to ensure compliance with the terms of this Agreement, bundle, install, enable and utilize automated license tracking, management, and\or enforcement solutions with PSC Products, which User may not disrupt nor alter and may also require User to demonstrate the accuracy of those records. All audits shall be conducted during regular business hours at User's offices and shall not interfere unreasonably with User's activities. If any audit reveals that User has underpaid license and\or maintenance fees to PSC, User shall be invoiced for such underpaid fees based on PSC's list price in effect at the time the audit is conducted. If the underpaid fees are in excess of five percent (5%) of the license fees paid by User, then User shall pay PSC's reasonable costs of conducting the audit. 9. Miscellaneous THIS AGREEMENT IS THE COMPLETE AGREEMENT BETWEEN THE PARTIES WITH RESPECT TO THE PRODUCTS Page 53

READMESP.txt AND SUPERCEDES ANY OTHER AGREEMENT, COMMUNICATION OR ADVERTISING ORAL OR WRITTEN, SIGNED OR UNSIGNED, WITH RESPECT TO THE PRODUCTS. To the extent there are any terms and conditions contained in User\s purchase order or other documentation supplied by User ("User Documents"), the terms and conditions contained in the User Documents shall be deemed to be stricken and the terms and conditions of this Agreement shall govern. This Agreement has been drawn up in English at the express wish of the parties. Le pr'sent contrat a 't' r'dig' en anglais -- la demande expresse des parties. Except as otherwise expressly set forth herein, this Agreement is governed by the laws of the Commonwealth of Massachusetts, without regard to its choice of law principles, and without regard to the provisions of any state Uniform Computer Information Transactions Act or similar federal or state laws or regulations. The parties expressly disclaim the application of the United Nations Convention on Contracts for the International Sale of Goods. If this Product is acquired outside the United States local law may apply. EXHIBIT A Depending on each of the Products licensed, your license grant is subject to the following descriptions and use restrictions: I. LICENSE MODEL Registered Client Based Licenses A Registered Client is defined as a Client Device authorized to use or access PSC's client or server products, regardless of whether the products are actively being used at any given time. A Client Device is any machine or device associated with a person or process either of which could use or access PSC server or client product. Client Devices include, but are not limited to, whether or not operated by humans or non-human devices, workstations, personal computers, PDA devices, cellular phones, printers, scanners, laptops, automated controls, background jobs, and batch processes. The counting method is as follows: Server Products: If a Registered Client has the ability to use or access a server product, it must be licensed. The licensed user count for Products running or installed on a server must be at least equal to the total number of Registered Clients that can access, connect to, or use the server product and\or Registered Clients that can run a Product or application that can access, connect to, or use the server product. Client Products: If a Registered Client has the ability to use or access a client product, it must be licensed. All client devices with a product running or installed must be licensed as a Registered Client. If a client product is installed on a server the licensed user count must be at least equal to the total number of Registered Clients that can access, connect to, or use the Page 54

READMESP.txt Product and\or Registered Clients that can run a Product or application that can access, connect to, or use the Product. CPU-Based Licenses If a Product is licensed on a per CPU basis, each CPU that can run a Product must be licensed. If additional CPUs are added, additional licenses must be purchased so that the number of CPUs licensed is the same as the number of CPUs that can run the server product regardless if one or more CPU may be idle for any period of time. Machine-Based Licenses If a Product is licensed on a per machine basis, each machine using or accessing the Product must be licensed. Certain server products are licensed to a specific machine for a flat fee per machine, regardless of number of CPUs in or Registered Clients connecting to the licensed machine. A license must be purchased for each machine running the Product. II. ADDITIONAL USE PARAMETERS

Disaster Recovery Licenses A Product licensed for Disaster Recovery, including without limitation, failover and standby, shall be used for the sole purposes of application recovery in the event a system fails or crashes or the application or database files become corrupt. OpenEdge R10 12.17.03

Page 55

You might also like