APPX Server 3.5.2 Release Notes


APPX 3.5 Release Notes

Important Notes

  • These release notes are for patch level 3.5.2. Items fixed as part of patch 3.5.1 are marked in green and items fixed as part of patch 3.5.2 are marked in red. These are ECR #4421#4438,#4439#4443#4421#4490#4491.
  • This patch (3.5.2) contains important corrections relating to the treatment of partial date fields. You should review these release notes to understand the problems which are addressed by this patch.
  • *** IMPORTANT UPGRADE NOTE *** If you are upgrading from a 3.4 version, you MUST remove ALL of the EM and DBG files for ALL applications, including the 00/0* applications.
  • Some new Application Design Toolbox utilities have been added to do more analysis on design components of an application. These have been added to a Source Analysis Menu which can be found on the Toolbox menu from the Application Design menu. See related ECRs #2910, #3021.
  • Some enhancements and changes have been made to the Application Locking rules APPX uses to allow application authors to lock their products. See related ECRs #3618, #4261, #4262, #4263, #4290.
  • Tracking who has a record held is now a little easier. You have an option to track this by User ID. See related ECR #4281.
  • Several Java Client enhancements and fixes have been made for this release. Some highlights are: ILF Syntax Coloring, Image Editor cleanup, Listboxes for Scans on Token fields, and more. See related ECRs #4264, #4265, #4272, #4276, #4334, #4335.


  • Under Unix, an "interrupt" signal (often mapped as Control-C) will allow cancellation of processes, for which "User Cancel OK?" is specified as "Y" in an OUTPUT or UPDATE's Additional Attributes. (#1952)
  • The "EM" control, used to localize executable modules, now works in Unix. To use it,
    • Set an FMS Group "Path" to point to your Application Design source file directory.
    • Use "1) FMS Controls" to redirect Executable Modules to a local directory.

    Example: Set the FMS Group's Path to "/appx34/data", and its FMS Control to "EM=/appx35/data".

    (See related ECR #3456.) (#3386)

  • APPX would accept a date of 00/00/00 but not treat it as blank (IE, if compared against a blank date in a query, it would not match). This would only occur when all fields of the date were 0's. If even one contained a valid month, day or year, APPX would not accept the entry. This has been corrected. You can no longer enter a date of all zeros. Note that this was accomplished with a change to the format of an EM so you MUST have a new EM for the fix to take effect.(#3684)
  • The "Browsable" field on the Disposition screen has had it's help text made more descriptive.(#4087)
  • When attempting to change Security Code Y/N flags across multiple Security Profiles, the Security Codes editor could silently fail to save changes on any profile after the first one edited. This has been corrrected. (#4196)
  • When displaying a report to the screen, if you attempted to PAN beyond the left margin the display could unexpectedly end. This has been corrected. (#4252)
  • You can now instruct AppxIO to track lock holders on a file-by-file or FMS Group basis. Include the text 'track locks' in an FMS control string and APPX will record extra information in the file whenever a record is locked. There is a performance penalty when you use this flag (two extra i/o operations per successful read w/ hold) so you may want to apply this flag selectively. The three character user-id will be displayed whenever Appx waits for than 10 seconds for a lock. Note that Appx will not wait for the PCF in an input process so you will not see the user-id in an input process unless you have an ILF READ,BEG READ, or READNEXT statement in the process. On Unix systems, you will still see a process ID if you don't use 'track locks'. There is no performance penalty for this. (#4281)
  • APPX would give you a "Date Invalid" message, if you tried to blank out the contents of a date field that had a portion of its date masked out. For example, of you had a date stored as CC thru DD, with the Century masked out by a system or item date mask of "06/05/07" (excluding the 08 for "CC"), then the INPUT processor wouldn't allow you to erase a previously entered date.(#4301)
  • When the connection is lost between an APPX client and server, the server could start consuming all available CPU time, and the client end would appear to hang. Under 3.5, when a client/server connection is lost, the server will exit (after releasing all locks and closing all files)(#4330)
  • Sometimes, using the Oracle interface, you can coerce the operating system into starting up a second copy of APPX connected to your terminal. This has been corrected. (#4339)
  • When using the AppxODBC driver from Visual Basic, the initialization function was being called more than once, resulting in poor performance. This has been corrected. (#4341)
  • The Auto-commit flag is not properly set in the ODBC interface when connecting to MS SQL Server. To enable it you must set the APPX_ODBC_AUTOCOMMIT environment variable to '1' before running APPX. (#4345)
  • While running a scrolling input process, if another user deletes your current record, and you switch modes from 'Inquire' to 'Change', you would receive an error message "Attempting to free freed memory", followed shortly by a hard crash. This has been corrected. (#4361)
  • 3.5.1: The pivot logic added (probably in release 3.4) was not supposed to have an effect unless you define an APPX_PIVOT_YEAR. That was not the case, but has been corrected. 3.5.1: Also, the pivot logic has been changed so that IF and DATE BTW statements will pivot both operands if either operand is missing a century (but contain a year). The pivot logic is completely disabled by default. You must set APPX_PIVOT_YEAR to a value between 1 and 99 if you want dates to pivot. 3.5.2: The IF and DATE BTW statements will only pivot the operands if both operands contain a YY component. (#4421)
  • As of 3.4 we have hardcoded a LOGIC 'Y' value in the ILF for the 0apps INPUT CHILD (OPT) process (and maybe other places). This does not let EMs compile when running in another language. This has been fixed so that EMs will build correctly. (#4438)
  • If you run thru opt/99 or 4)Test Database, and get a runtime error in ILF (such as a zerodivide: "Error - Overflow Error"), the engine will take you to the offending ILF code, and give you the appropriate error message. Under 3.4, it would do this whether you had Application Designer (or System Administrator) rights, or not. Under 3.5, if you don't have Appl Designer or SysAdmin rights, it will give you the error message (at some point), but not display the ILF where the error occurred. This has now been fixed so that it works as it did in 3.4 (#4443)

  • Some users would like to be able to pivot input items without pivoting ILF code. Appx now supports this ability. If you want masked date items to pivot, you can set the environment variable APPX_PIVOT_ITEMS to a number between 1 and 99 (the value indicates which year to pivot around). If you want to pivot ILF statements, you must set the environment variable APPX_PIVOT_YEAR to a number between 1 and 99. Note that you can set *either* APPX_PIVOT_ITEMS or APPX_PIVOT_YEAR to pivot input items. APPX_PIVOT_YEAR controls ILF pivoting. (#4490)

  • The SET DAY command can return the incorrect day-of-week if you do not supply a century. Prior to release 3.5, SET DAY would assume a century of '19'. Release 3.5.1 assumed a century of '00' (unless you had APPX_PIVOT_YEAR defined, in which case the year would be pivoted to produce a century). With release 3.5.2, SET DAY will assume the *current* century (unless you have APPX_PIVOT_YEAR defined, in which case the year will be pivoted to produce a century). (#4491)
  • Designer

    • If a Domain referenced by a Field had it's name changed (or the Domain was deleted), then any Fields which referred to that Domain would display a blank Domain name. This has been corrected. The invalid Domain name will be displayed, and an error reported if enter is pressed.(#2532)
    • Some utilities to detect orphaned design elements have been added to APPX. These can be found in Application Design by going to "3-Utilities", "6-Toolbox", "20-Source Analysis Menu", "1-Orphan Detection". See the help text for more information. (#2910)
    • "Verify All References" has been added. This will run a special version of Cross Reference All, but will only list design elements that are 1) Referenced but not defined or 2) Defined but not referenced. You can find this in "Application Design", "Toolbox", "Source Analysis Menu".(#3021)
    • The "Security Profile Cross-Reference List", available from the "Security" Menu, now displays an explanation of and an optional child to archive the security codes. (#3084)
    • When a field referred to a SAME AS Domain, the field's "Descriptive" and "Column Heading" fields were not being displayed. They now are displayed and editable if the domain's corresponding fields are empty. This is the same behavior that occurs if a field refers to a regular Domain.

      When editing a SAME AS Domain, the "Descriptive" and "Column Heading" fields were not being displayed. They now are displayed, but protected since a SAME AS Domain is a local clone of a foreign domain.

      When editing a SAME AS Domain, the "Add'l Attributes" option was incorrectly displaying. It has been made not applicable, since the values will be assumed from the foreign domain to which it refers. (#3107)

    • When Application Locks, available from Application Parameters, are entered or changed, the application will now be automatically encrypted based on the new lock values. This feature is to provide software developers with the capability to restrict run-time and design access in the licensing of their APPX applications. (#3618)
    • Restructuring a file no longer produces a Verify log. (#4150)
    • Making any change to the "Token Table" for a Token field, or the "Validation Table" for an Alpha or Format field, did not update the Audit Information of the Field or the File. A corresponding change to a Domain, did not update the Audit Information of the Domain. This has been corrected. Audit Information (User & Date Added/Changed) are now updated in each of these cases. (#4206)
    • When specifying a "Use Query" Process for a Child, APPX will now generate an error if the PCF of the query is not the same as the PCF of the Child. (#4238)
    • Application Locks, available from Application Parameters, can now only be entered or changed if the specific lock is currently present and valid in the APPX system registration. Also, if the "Design Xfer Out" lock is not present and valid in the system registration, then none of the lock fields will be editable. Application Locks are used by software developers in the licensing of their APPX applications. (#4261)
    • Design transfer out of an application that is locked with the "Design Xfer Out / Export" lock will now be permitted if the source and destination applications both have the same "Design Xfer Out" and "Application Design" locks.

      Design transfer into an application that is locked with the "Design Xfer In / Import" lock will now be permitted if the source and destination applications both have the same "Design Xfer In", "Design Xfer Out" and "Application Design" locks.

      This is part of a solution to provide software developers the capability to distribute patches to their APPX applications. (See also #4263) (#4262)

    • The option, "Apply Patch With Design Transfer", has been added to the Design File Management Menu. This is part of a solution to provide software developers the capability to distribute patches to their APPX applications. (See also #4262) (#4263)
    • A GOSUB statement that did not specify an application id would not be found by a Cross Reference of the subroutine process to which it referred. This has been corrected. GOSUB's will now be handled more intelligently by Cross Reference. If no matching LABEL is found in the event point, a GOSUB with a blank application id will be treated with an assumed id of the application in which it is found. Conversely, if a matching LABEL is found, a GOSUB with an application id specified will be treated with an assumed id of blank (and thus will not appear in Cross Reference results). (#4275)
    • Cross Reference can fail to find ILF references that it should find if the references are in another application and the application has different application locks than the application you are currently in. This has been corrected. (#4284)
    • Sometimes the interactive cross reference would not jump to the correct statement in the event point. This has been corrected. It should now initially position correctly. Note that if changes are made in the event point while still inside the interactive cross reference, subsequent attempts to jump to a statement in that event point may not position correctly until cross reference is rerun.(#4286)
    • When encrypting an application, an ILF comment that went to the end of the line would lose the last two characters. This has been corrected. (#4290)
    • Processing Data Dictionary work fields was updating the audit info date changed, but failed to update the user changed. This has been corrected. (#4293)
    • The Cross Reference printed output now includes the Application Id for each reference. (#4300)
    • When SCANing against a 0SA (System Administration) file, in order to access System Administration values in Read-Only mode, and your current application's version number was other than '00', the SCAN would fail. (#4332)
    • On the Cross Reference printed output, for a Cross Reference All, the "*" indicating "Referenced but not defined" was incorrectly showing at times when it should not have been. This has been corrected. (#4333)
    • A NAVIGATE API subroutine process has been added to Application Design. This is for developers who want to add "navigate" functionality to their applications. This is what is done by Interactive Cross Reference to "jump" to the design editor for a specific design component. See application 1EX/00, Subroutine, NAVIGATE API (EXAMPLE) for information. (#4346)
    • You can now control which records will be included in a Dynamic Index by setting the field, --- INCLUDE RECORD, in the "Post PCF Read" event point. To allow the record to be included set the field to "Y", to exclude the record set the field to "N". (#4360)
    • Several items were fixed regarding the "Security Profile Cross Reference List", which is available from the "Security" Menu.
      • Security Codes below 1000 were not listed if they were entered with leading zeros.
      • If multiple profiles were selected, the list would not start each one on a new page.
      • Archiving security codes for all applications was not initializing the archive file (SECRARCV) prior to archiving.
      • When editing a "Security Profile", the optional child to "View Uses of This Code" was not working properly if invoked multiple times within the same session. (#4375)

  • 3.5.1: The pivot logic added (probably in release 3.4) was not supposed to have an effect unless you define an APPX_PIVOT_YEAR. That was not the case, but has been corrected. 3.5.1: Also, the pivot logic has been changed so that IF and DATE BTW statements will pivot both operands if either operand is missing a century (but contain a year). The pivot logic is completely disabled by default. You must set APPX_PIVOT_YEAR to a value between 1 and 99 if you want dates to pivot. 3.5.2: The IF and DATE BTW statements will only pivot the operands if both operands contain a YY component. (#4421)

  • In some instances, it is possible to receive a "You are not licensed for more designers" in error. This can happen starting with 3.5 when a designer session aborts without ending normally. It does not happen all the time - only in very unusual circumstances. Release 3.5.1 does not count ghost processes when determining license usage. (#4439)


    • When defining a File System Group's FMS Path, you can now specify explicit directory locations and redefine filenames. Previously, APPX only allowed entry of the physical location of a tree starting-point, from which the location of the actual datafile is derived.

      If the FMS Path attribute contains a "$", the explicit directory/filename is used. If there is no "$" in the Path specification, the original tree starting-point scheme is used.

      You can also use these variables in Database Mgmt File Spec's "Optional Path", and in the "EM=" clause of an FMS control string (to redirect EMs):

      • $(root) APPXPATH
      • $(ap) application Id
      • $(type) {Data, Struct, ...}
      • $(uid) 3 char APPX UserID
      • $(ver) version
      • $(engine) (ex: "3.5")
      • $(user) OS user name
      • $(db) database
      • $(endian) 'risc' or 'intel'
      • $(pid) OS process ID
      • $(file) 8 char filename
      • $(host) hostname (IP Addr)
      • $(scope) stack depth



    • The environment variable "APPX 0SA PATH" (used to redirect the location in which APPX looks for $APPXPATH/0SA System-Administration files) now works in Unix versions of APPX. (See related ECR #3386.) (#3456)
    • A syntax error in the appx submit script could cause an error about "NICENESS" when submitting a background job. This has been corrected. (#4146)
    • Performing a CALL to ,RT IMPORT CGIDATA in a process could cause the process to seg fault, if run normally rather than by a web server. (#4266)
    • APPX now supports two new Predefined fields:

      These PDFs may be used to pass information to the print and background spoolers. (#4310)

    • The APPX license server was performing two functions that may cause record locking problems and therefore USAGE file corruption problems. Every few minutes it would wake up and (among other things) validate the USAGE file and clean up "ghost" entries. A "ghost" is a record of a process which no longer exists and which did not clean up after itself properly. These steps are also occuring every time a new license is acquired or forfeited, so performing them in the license server is redundant. These two functions can be re-enabled by defining the following environment variables.


    • If your installation is licensed for the Extended Documentation Facility, an option for it can now be made available on the Documentation Management Menu. (#4326)


    • Restructuring a file which was stored as an Oracle table, could result in the failure to create indexes. This has been corrected. (#4191)
    • When using 3rd party RDBMS backends (Oracle, Sybase, SQL Server), you have greater control over how APPX stores null (or blank) dates within the RDBMS. See ECR #4321 for a detailed explanation of the new APPX_RDBMS_NDK environment variable and how it is used.(#4321)

    GUI Client

    • The ILF Rules buttons were not showing BOLD nor completely covering the option numbers on the screen. (#4264)
    • Fixes to the Java Client ILF Editor:
      • Buttons did not show correctly on the bottom line of the editor.
      • The font was changed to fixed pitch.
      • "===" is no longer changed into 3D bars.
      • The Search and Search/Replace fields are now visible.
      • Syntax is now color coded.


    • Typing in the Java client drew vertical black lines between each character typed. This has been corrected. (#4272)
    • The Java Client's IMAGE editor has been cleaned up. (#4276)
    • The Java Client should have an About dialog box to show some important information like the current Java Client version and the server process id. (#4334)
    • The Java Client should present a SCAN on a token field as a dropdown listbox. (#4335)