APPX Server 3.3 Release Notes

Important Notes

  • The FMS Types for relational databases have changed - please see ECR #3121.

  • This release adds support for Dynamic Indexes - please see ECR #3845.

  • The VERIFY statement has been added to verify the contents of a file, record, or field - see ECR #1050.

  • Appx now supports dynamic linking on all platforms. You can now add functions to Appx without having to relink. Static linking is still supported but you should plan on changing to dynamic linking (it's much easier). See the man pages for 'dlopen' ( or 'shl load' under HPUX ) for information or how to construct code which can be dynamically linked.

  • Appx nows comes prelinked for RDBMS support. This means that you should not have to link a new engine just to talk to an RDBMS. The prelinked engine is called appx.prelinked and has been linked to the following

    • Oracle for HPUX, Unixware, and Solaris.
    • Sybase for HPUX and Solaris.
    • ODBC for Windows®.


  • This release includes some tools which you may find helpful in Year-2000 conversion efforts.

  • This release includes the first version (1.0) of our new Java Client for APPX - please see ECR #4013.

  • APPX would like to thank a select group of beta testers that put in an extra effort to help us test this release.

    • Cesar A. Williams, Intermark Systems
    • Mohan, CAYLX Europe
    • SWS EDV Software Service GmbH
    • Tom Plassman, Worthington Schools



  • Pseudo-blanks are no longer displayed when an item is non-modifiable. (# 35)
  • If you have a FORMAT field as a record selection criteria in a QUERY, APPX runtime produces an incorrect subset of records that are supposed to pass the Record Selection Criteria. (It's possible to get a "No Lines Were Output" for OUTPUTs that use QUERYs with Record-Selection on a FORMAT field.) This has been fixed for release 3.3.0 (#2408)
  • If the designer specifies no End User or Designer Selections when building a QUERY which runs in foreground, then the background processes following and using this QUERY fail (silently, to the end user) because APPX can't open all the QUERY files. This has been fixed for release 3.3.0 (#2463)
  • APPX now correctly sorts negative numbers. (#2537)
  • If a file contains a field with a data lookup defined to a non-existent field, and that file is used as the PCF for an output process, the output will generate a compile time error. The error message generated was "Element Record Not Found", and was not helpful in diagnosing the problem. This error message has been changed to "Invalid Data Lookup specifications - Source Missing". If option-2, "View Error Detail" is then selected, the offending field name is identified. (#2551)
  • If SCAN statements were coded for the same field to more than one file, APPX was only permitting one file to actually be scanned. This has been corrected. There remains, however, a limit of four files that can be scanned in this manner. (#2976)
  • The presence of a "group character" (",") in the mask of a numeric field in an input process was sometimes causing the decimal positons of the number to be corrupted. This has been corrected. (#3038)
  • Automatic Data Lookups now include the file descriptive from the data dictionary. Instead of getting an error message "Not on File", APPX will now generate a "Customer Not on File" message. (#3213)
  • A parent record which is protected from deletion by a "Delete Protect" field could still have child records deleted. This has been corrected. (#3269)
  • The "View Disposition" screen, accessible as option-1 while viewing a report on screen, will no longer give the incorrect error message that print mode of "HOLD is not valid on Unix Systems". (#3701)
  • DATE ADD operations upon a date of 12/30/99 were sometimes returning incorrect results. This has been corrected. (#3745)
  • On "Record Selection" screen, when executing a query, the editability of the relational operator and the right hand field will be respected for initial positioning of the cursor. The Option-2, "Value/Blank" would occasionally not function on certain selection lines. This has been fixed. (#3754)
  • When doing division operations with the CALC statement, incorrect overflow errors could occur if a large number (10 or more) of decimal positions were necessary. This has been corrected. The CALC and COMPUTE statements now share similar division logic. (#3777)
  • In input processes ERROR and WARNING statements are now suppressed in inquire mode. (#3786)
  • Some occurrences of the error "RT.C.3009 - Bad scan read" have been cleaned up and will no longer occur. (#3791)
  • APPX 3.3 includes a dynamic key feature. A user can create a new key path in any input process at runtime. When the process is NOT in key entry mode, you can position the cursor to a field and press the SELECT ACCESS PATH option. That field will then be added to the dynamic key and a message in the status area will indicate this. Pressing SELECT ACCESS PATH again on this field will toggle the key to descending order for this field. You can build up a multi-field key by repeating this process on multiple fields. The dynamic key is built the next time a record is read from the PCF. It's a good idea to go into key entry mode after selecting the fields. The dynamic key will not reflect records added by another user after the key was built - you can rebuild the dynamic key if you need an up-to-date view. You can also programmatically build a dynamic key. See the text of this ECR on the APPX website or contact APPX for details. (#3845)
  • When an error log is produced (from an Update process) the contents of the primary key of the PCF record are included on the report. If the primary key contains tokenized fields, the tokens could contain garbage characters (or incorrect tokens). This has been corrected. (#3854)
  • If you execute multiple SCAN statements in Option Intercept and the sources are different, the SCAN can return garbage and can return that garbage in the wrong field. This has been corrected. (#3858)
  • The print on screen display has been expanded. It can now display up to 36 print lines per screen (the old maximum was 20). To take advantage of this you have to set your terminal (or terminal emulator) to display more than the default of 24 lines. Many other APPX screens (including process editors and ILF editor) will utilize a taller terminal window also. See text of ECR #3298 for more information. (#3864)
  • A "Browsable" feature has been added to the print on screen display. When running a report, answer "Y" to the disposition fields "Display on Screen" and "Browsable". Then when the report is displayed to the screen, you can position your cursor to a record and press Option-33. APPX will then invoke the "default process" for the output's PCF file and position to the record that your cursor was on. (#3866)
  • SCROLL DOWN is now disallowed in Add Mode. This eliminates an improperly handled error condition which could result in a crash on some platforms. (#3934)


  • Data File Management, Design File Management, and System Administration File Management have been modified to allow you to verify the contents of a file. You can verify the contents of each record (against the data dictionary constraints) as well as verifying the file structure itself. Note that you can also see the actual pathname of AppxIO files as well as a count of the number of records currently in the file. There is also a new VERIFY statement which can verify the contents of a field or a record. (#1050)
  • You can CANCEL a restructure using the asynchrounous CANCEL key (usually Ctrl-C) and the restructure will CANCEL gracefully. (#1193)
  • You can now scan for process names in the COPY and GOSUB statements (#1913)
  • CANCEL during restructure now cleans up after itself. (#2077)
  • A "Verify Files Menu" has been added in the following places: "Database Management", Design File Management", and "System Administration File Management". It provides access to two options: 1) Verify Integrity of UNIXIO Files: For permanent UNIXIO files, this will verify the file's integrity and display the record count and the pathname. 2) Verify Data in Files: Verifies the field contents in each record, and can optionally verify referential integrity according to "data lookups" defined in the data dictionary. See the help text of each option for more information. (#2226)
  • A second invocation of Synchronize Design Elements has been added to the job that converts design files from 1.8 format. It has been reported that this corrects some problems with converted query processes. (#2552)
  • In "Database Management" if you selected several files then ran "Restructure", if any of the files did not need restructured and were in use by another user, the restructure process would end prematurely and return to the database management menu. This has been corrected. (#2796)
  • Comma Delimited Update processes generated with the toolbox utility would contain an invalid statement for token fields. This has been corrected. (#2827)
  • If a domain is modified, any SAME AS domains that reference it, and any fields that reference the SAME AS domains will now be updated. (#3033)
  • The help text for field "Compress Type" on output images has been corrected. (#3304)
  • In the ILF editor you can now SCAN for the value of token fields. If the left-hand field is a token field and the right-hand application id is blank, you should be able to SCAN from the right-hand field name. (#3526)
  • An "unbounded" Range-Start frame in an output process (one where the Range Field is blank) is supposed to execute "once before the first record". This was correctly occurring if the output was run without a query, but was not being executed if run with a query. It now will correctly execute even if run with a query. (#3533)
  • "Process Generation" of a "Scrolling Input" (available in 3-Utility 6-Toolbox, and also in the DD's toolbox) will now correctly default to "N" the fields "Blank if Zero", "Right Justify", and "Required". Also SYSTEM fields will be generated as "Modifiable" = "N". (#3592)
  • The ilf PASS statement with the "FILE" option to pass the fully qualified filename was not working properly in release 3.2 if the file was not considered open by APPX. This has been corrected. (#3605)
  • APPX will now respect the "Share" flag of the PASS statement. Thus for internal and external CALLs, parameters will be passed by reference if Share=Y and by value if Share=N. Note that only certain data types (binary integers, logic fields) can be passed by value. (#3614)
  • The cross reference utility will no longer consider ILF statements that have been commented out. (#3635)
  • APPX now provides a mechanism where the designer can determine certain installation related information such as, host type, serial no, and name, type of operating system, workstation id, process id, etc. The information is kept in an indexed file called VERSION. You can create the file and see it's contents and key values by a routine such as the following:
      PASS     0AD VERSION              FILE             SHARE? Y
      CALL         ,RT VERSION          RESIDENT? Y  END? N  FAIL 0
      SET      --- TEMP 79             =  0AD VERSION LABEL
      SET      --- TEMP 79             =  0AD VERSION DATA


  • A Field which did not use a Domain, would incorrectly display the "AA" indicator, even if the Additional Attributes popup contained all default values. This has been corrected. (#3704)
  • The "Process Generation" utilities for Scrolling Input, Form Input, Form Output, and Standard Output, will now generate DLU's if the DLU is defined in the data dictionary. Note: only "Define" DLU's will be generated. No "Continue" DLU's are currently generated by these utilities. (#3728)
  • An "unbounded" Range-Start frame in an update process (one where the Range Field is blank) is supposed to execute "once before the first record". This was correctly occurring if the update was run without a query, but was not being executed if run with a query. It now will correctly execute even if run with a query. (#3748)
  • Design Transfer will now default the printing of the log to No rather than Yes. (#3750)
  • Accessing the "Items Display" screen, from output images, could result in the loss of a value in the "Float Leading Spaces" field. This has been corrected. (#3753)
  • The field editor was creating hidden domains which were not necessary. This has been fixed. (#3809)
  • A "Cross Reference - Domains" will now correctly find fields that refer to a requested domain that is in another application. Also "Cross Reference - All" and "Cross Reference - Application IDs", will now list field references to domains in other applications. (#3829)
  • The toolbox utilities to generate output processes now validate that the report width is within allowable limits. (#3838)
  • In Users entry, "Security Profile Not On File" is now a WARNING instead of an ERROR. Security Profile records can now be deleted even though the Profile is specified for a user. In delete mode a MESSAGE indicating how many users point to the profile will be produced. Upon hitting ACKNOWLEDGE DELETE, if any users point to the profile, a WARNING will be issued indicating how many. (#3861)
  • A designer/security administrator should be able to define a process as being "privileged". A privileged process can access all secured records regardless of which user is executing the process. This allows a designer to build input-type processes which are secured against viewing by unprivileged users and to build update-type processes which access all records to guarantee correct postings. NOTE: You cannot (currently) define a process as being privileged. This will be addressed in a future release. However, the processes which are built by the Verify and Restructure functions are privileged. (#3874)
  • A new option, "Retain Link to Foreign Domains?" has been added to design transfer. It applies to the transfer of fields (both file fields and work fields). It allows the designer to have more control of domain references in fields that are transferred. See field help text for more info. (#3888)
  • "Design Transfer All" from an application with the same version number would not transfer all the domains. This has been corrected. (#3915)
  • Option-93, to bring up a child process in Inquire mode, now works for all process types. (#3928)
  • The first character of the initial value for a word-wrapped alpha field was being lost by the data dictionary compiler - this has been corrected. (#3935)
  • The options (91-94), available from the Toolbox Menu when editing an automatic or an optional child record, were not correctly respecting the Designer Rights of the designer using them. This has been fixed. (#3936)


  • The environment variable APPX PRT FI DIR, which is used to specify the location of print files, will now function in APPX for Windows. (#3224)
  • The license server will start automatically when someone runs APPX. This will only occur if the serial number of the machine running the engine matches the serial number on the registration. (#3612)
  • The APPX License Server will now automatically start if it is not already running, and the serial (or hasp) number of the system on which current user is running matches the registration's serial number. (#3669)
  • APPX will now produce a stack dump in Windows (appx.stk) or a core dump in Unix (./core) whenever a memory access error occurs or when a CASSERT error occurs. Please save these files and send them to APPX for analysis. (#3855)
  • License server log no longer logs lookup/result for successful validations if started with default options. (#3901)


  • New FMS type numbers have been assigned as follows: Sybase = 4 Oracle = 5 ODBC = 6 This provides for Sybase & Oracle external DBMS's to be defined concurrently. (#3121)
  • When trying to create a file stored in VISION - the CREATE files process no longer ends without returning any errors or messages. (#3255)
  • A WRITE command in an update process caused APPX to abort if the record being written was in an Oracle table and contained a date field defined as CCYYMMDDhhmmss. This has been corrected. (#3517)
  • On Sun machines, using the Vision interface with the FD version of APPX, a segmentation fault was occurring if the primary key was made up of more than 6 fields. This has been corrected. (#3660)
  • Performance of Microsoft SQL Server® (6.5 & above) with the ODBC interface can be improved with the FASTFIRSTROW option. From the SQL Server documentation: "With sorting enhanced by the new asynchronous read ahead capability, the optimizer picks table scan and sort over using a nonclustered index in many cases because the total throughput for the sort is faster. If there is a sort, the first row cannot be sent until totally sorted. With this method, if the sort is large, there may be a considerable delay before the first row appears. FASTFIRSTROW causes the optimizer to use the nonclustered index; the first row will appear quickly, but the total return time for this option may be slower." To increase performance, include the clause "select hint=(fastfirstrow):" in the FMS control string. This will cause the SQL optimizer to use the nonclustered index if one matches the ORDER BY clause. (#3794)
  • When using Oracle, if a non-scrolling input process navigates to a record which has been deleted (since the first record was read), the input process switches to key-entry mode. This has been corrected, deleted records are now ignored. (#3865)
  • The Oracle interface now sets both NLS DATE FORMAT and NLS NUMERIC CHARACTERS so that date formats, decimal, and group characters are properly interpreted. (#3902)
  • Restructuring a data file stored in an RDBMS caused indexes to be lost. The data was still accessible, but performance would suffer. This has been corrected. (#3930)
  • The RDBMS interfaces now optimize BEG AT and END AT constraints (as well as child constraints) when used with multi-part keys. (#3931)


  • In APPX for Windows, an option-0 painted on an image was correctly being shown as a button, but did not execute properly when clicked with the mouse. This has been corrected. (#3053)
  • In APPX for Windows, 2 character user id's caused printing problems. This has been corrected. (#3441)
  • After a new install of APPX 3.2, if you attempt to add an application record before creating system administration files you correctly receive an error message, but then also a Windows GPF. This has been cleaned up. (#3656)
  • On a Windows machine if you use APPX PRT SCRIPT to specify a batch file to handle the print file, an MSDOS window is visible on the screen. If you set APPX PRT SCRIPT HIDE=true (or any value other than null), when APPX runs the external print program, it will set a windows flag to have it minimize the MSDOS window. (#3868)

GUI Client

  • Using APPX Presentation Client, in the image editor fields longer than 80 characters were incorrectly wrapping instead of truncating. This has been corrected. (#3758)
  • The Windows presentation manager was losing some information which should appear in the status surface (such as Compiling EM, Saving EM, and keyboard mapping messages). This has been corrected. (#3795)
  • Solaris 2.x systems using shadow password files now validate login ID's properly before allowing appx client users to login to appx via appxd. (#3897)
  • The client/server presentation manager protocol now includes version checking so that future enhancments can be negotiated depending on the version at each end of the connection. (#3926)
  • The APPX Java Client (version 1.0) is now available for general use. This initial release has most of the features of the current Windows client and some extra features. It can be run standalone or from a web browser. It can be attached to a web page for easy loading over the internet. It supports images and background image tiling. It contains an initial implementation of data scrollbars, and more. (#4013)


Microsoft, Windows, Windows Server, Windows 2000, Windows Server 2000, Windows Server 2003, Windows 98, Windows NT 4, Internet Explorer, Windows Vista, Windows XP, Windows 7, Microsoft SQL Server, Microsoft Access and Microsoft Excel are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.