APPX 4.1.a Release Notes
Run-time
- ( #2824 ) An input process that did not have a PCF could not be run in Recovery Processing. If the process or any other process in its process family requested a modification log, an error message ("can't locate pcf cap") would appear. This has been corrected so that an input process without a PCF can now run in recovery processing.
- ( #4604 ) APPX will now only attempt to lookup and display user IDs for record locks if the track locks FMS control is set for the file.
- ( #5680 ) When a record was locked, user was getting a "held by" message with a large number in place of a Process ID or User ID:
Waiting for lock held by session -2147483565 in I:\...\ORDER2.dat
If "Track Locks" is specified (ecr #5432), the "Waiting for lock" message specifies the User ID holding the record. If not, the message specifies the Process ID holding the record.
- ( #6408 ) When running a query more than once within the same job, you could get the error message "Can't scratch work file" if the PCF of the query was large and the set of selected records was large enough to overflow a memory-based sort. This has been corrected - large result sets should no longer cause this error message to appear.
- ( #6508 ) A memory leak existed in the Appx EM loader. If an EM was found in the EM cache, it was validated. If the validation failed, the new EM was loaded, but the original (invalid) EM remained in the cache. When the new EM was written into cache, an 'already-on-file' occurred and the new EM could have been lost. This has been corrected so that EMs will load and validate properly.
- ( #6527 ) The Appx/Sybase interface was not converting a numeric field correctly when the field contained more than 12 digits. This has been corrected so that numeric fields of more that 12 digits convert properly.
- ( #6528 ) The Appx/Sybase interface was not converting date key segments correctly. This has been corrected so that date key segments convert properly.
- ( #6529 ) The Appx/Sybase interface would occasionally fail to create all indexes when a table was created. This has been corrected so that all required indexes are properly created.
- ( #6530 ) The AppxODBC Server tried to execute File Level Event Points on both ends of an AppxNET connection. The client side crashed because not enough of the engine had been initialized. It was determined that logically the client end of an AppxNet connection should not be firing File Level Event Points. Those event points should only be fired on the server where the data lives. So, we now only fire File Level Event Points on the AppxNet server and this bug no longer exists.
- ( #6531 ) Prior to 4.1.a, an AppxNET connection would stay connected until the client session ended. Starting with 4.1.a, an AppxNET connection is torn down when the last file that uses that connection is closed. If you find that this is a performance penalty, you can set APPX PERSIST NETIO to force net connections to be persistent.
- ( #6534 ) You can now SCAN for ODBC and DB2 data sources on the FMS attributes screen.
- ( #6574 ) When copied from 4.1.3. to 4.1.6, 4.1.9, or 4.1.a, an INPUT process could get an 'Invalid Resource ID type (32)' error. This has been corrected so that the error no longer displays and the process will run properly.
- ( #6630 ) When using PASS and RECEIVE to pass a field from one routine to another, if the field was NOT shared, a memory leak occurred. This has been corrected so that no memory is leaked in this case.
- ( #6642 ) SCAN'ing an ODBC Data source from FMS Group maintenance could generate a random failure. The SCAN completed successfully, but some time later, one of two Appx threads could have crashed (depending on system load and timing). This has been corrected so that scanning for ODBC data sources no longer causes this condition.
- ( #6663 ) When submitting a process to background on the AS/400, the background job ran to completion, but the process never exited. After finishing the job, the background process hung (consuming all available CPU time). This has been corrected so that background processes now exit properly on the AS/400 platform.
- ( #6673 ) The GCS product registration is no longer required on any platform. The Graphical Client interface is now automatically enabled as part of the base Appx license.
- ( #6681 ) Setting the APPX FAKE TIME environment variable can result in incorrect date values. This failure was caused by an uninitialized variable so the failure is random - in most cases, the correct date is used; in a few cases, an incorrect date is used. This has been corrected.
Designer
- ( #2826 ) Ending a Subroutine that had been called via a GOSUB command with an END command rather than RETURN would cause what appears to be a memory leak. This problem also occurred when calling a Subroutine which was defined by a LABEL within the Event Point. When "END"ing from a subroutine in this way, Appx failed to clear the RETURN stack (that is the memory area which is used to store the pointer back to the calling GOSUB statement). This caused the process to slowly increase its RESIDENT memory. (It was very noticeable in large QUERY, UPDATE & OUTPUT processes.)
This has been corrected but there is a related ECR 6678 that also details a similar memory leak. If the related ECR has not been fixed, you will still see memory being consumed and you will probably want to make sure you have the proper RETURN statements where needed.
- ( #2948 ) Token fields in query select records now work properly. Token tables associate alphanumeric token values with numeric token IDs. The token value is displayed to the user, but the token ID is actually stored in data files. When a token field is used in either an Enduser Selection or Designer Selection, designers can now enter token values on the right side of the selection, and the selections will function properly when the query executes.
- ( #6211 ) A SET statement that refers to a field in 0AD, 0LA, 0DB, or 0SA can cause the error "can't open element file - system directory record is missing" at the time the process is compiled.
This error only occurs if the SET statement is contained in an application whose version is something other than '00'. One or both of the fields referenced in the SET statement must be a group header in order for the error to occur.
This has been corrected.
- ( #6328 ) 4.1.a now lets you access the first 32K of an ODBC memo field. Appx has a per-field limit of 32K and a per-record limit of 32K. If a memo field has more data than fits into a field, Appx truncates the data (unless the user does a read with hold, in which case it should give an error).
Rules:
1) Memo fields (in Access®, SQL Server®, Oracle, ...) can be arbitrarily long.
2) Appx alpha fields can be a max. of 32K.
3) When we READ long RDBMS data into a short Appx field, we silently truncate (there wouldn't be any way to manipulate the data in an Appx field).
4) When we READ with hold, implying that you might REWRITE, we generate an error, preventing possible data loss in the database.
- ( #6532 ) The RDBMS interfaces would occasionally fail to interpret END AT constraints properly resulting in garbage being sent to the RDBMS server. This has been corrected so that END AT constraints are interpreted properly.
- ( #6533 ) The Unix flavors of Appx now support the unixODBC driver manager. You should be able to connect Appx to MySQL, PostgreSQL and other Unix-based RDBMS packages. You must install the unixODBC driver manager (www.unixodbc.org) and the appropriate ODBC driver for your backend database.
- ( #6640 ) The --- STATUS CODE pdf is already being set by any I/O statement that returns a T/F flag. If the statement returns a 'F', --- STATUS CODE is set to a token that reveals he cause of the error.
The BEG/END READ statements should also set the --- STATUS CODE pdf.
Enhancement
- ( #6631 ) The current Appx print script ran very slowly on the AS/400, taking 3 minutes to queue a single report. Each time Appx Print ran a command that was not a built-in shell function, it would start up a new AS/400 shell environment. This has been corrected by moving the Appx Print functionality into an Appx subroutine that runs instead of Appx Print on the AS/400.
External
- ( #5258 ) When stopping and attempting to restart the appxd and WinAppxD connection managers, the connection manager port was not being released until all running Appx Client and AppxNet sessions had ended. This resulted in an error "can't bind local address" and appxd/winappxd would refuse to restart. This has been corrected so that when appxd/winappxd is trying to restart, it is able to gain access to the port address even though there are still active client connections.
- ( #5391 ) Prior to this release, exporting and importing a WIDGET design file could corrupt the Font Scale on some widgets. This was a problem with our data dictionary definition of this field in our WIDGET file. This has been corrected.
Important Note: This incorrect definition also exists within the WIDGET structure files for all of the applications on an existing system . For this fix to be applied to all of your current applications, you must remove and re-create the WIDGET structure files for your apps. To do this, for each application on your system, you must:
1) Remove the WIDGET structure file: $APPXPATH/VV/AAA/Struct/WIDGET.dat where VV is the version and AAA is the appl ID. FMS override paths will effect this location.
!!! Make sure you are removing the WIDGET.dat file from your Struct directory and not your Data directory. Also do not remove the Struct/WIDGET.dat files from the $APPXPATH/00/0* directories. They have already been updated and your system may not run without them.
2) Run APPX and select System Admin -> Databases/Appl -> Design File Mgmt.
3) Enter the Appl ID and Version.
4) Run File Selection and pick the WIDGET file.
5) Run Create Files. It should say File Already Exists for the WIDGET file.
- ( #6088 ) Appx now supports files up to 4GB in size on HP/UX, AIX, and Solaris platforms. All other Unix/Linux platforms are currently limited to 2GB files. The Windows® platform is also limited to 2GB files.
GUI Client
- ( #6615 ) The backspace key did not function in the java client in the Image Editor. This has been fixed so that the backspace key does work in the Image Editor again.
- ( #6616 ) Client side printing did not work properly when two reports printed back to back in the same job. The first report was not printed and the second report printed twice. This has been corrected so that multiple reports generated from the same job are correctly printed at the client printer.