APPX Server 4.1.2 Release Notes

Bugs Fixed in Patch Release 4.1.2

  • In System Administration, Security, Users, Documentation Rights, the ability to grant rights is being respected in all cases. Specifying both an application and a version was correctly working. Specifying an application with a blank version (granting rights to all versions of the app) was not working. Specifying a blank application and a blank version (granting rights to all applications) was not working. (#5368)
  • Windows® supports a number of different calling conventions. The two most frequently used are " stdcall" and " cdecl". The Appx CALL statement supports both of these calling conventions. Normally, the CALL statement can determine which calling convention to use based on the name of the function - if the function name contains an "@", we use the " stdcall" calling convention, otherwise we use the " cdecl" calling convention. We have found that most of the Win32 API functions (such as Sleep) are stdcall functions even though the function name is not decorated with a "@". This means that Appx cannot always determine the appropriate calling convention. Starting with release 4.1.2, you must include a trailing "@" if you are trying to call a stdcall function which does not follow the normal Windows naming standard. This means that a call to the Sleep function should be coded "kernel32.dll,Sleep@" (#5376)
  • Deleting a record from an Oracle table, where the record has a date segement in the primary key and the date segment is NULL, can cause a "No more records" error when using the APPX RDBMS NDK environment variable. If APPX RDBMS NDK is set to "00010101000000", the record would have been stored with a key value of "Jan. 1st, 0001 midnight". This has been corrected in release 4.1.2 (#5399)
  • The TRACE Review is working properly. Also after adding a "key control" to a field you will still be positioned on the field and if you press enter, data from the last field in the file will not be brought up. (#5369)
  • On Windows platforms, the T/F flags are displayed properly in the ILF debugger. (#5370)
  • On a screen with 24 rows, the ILF editor scan for keyword is working properly. It will display the statement keywords and will return the chosen one to the new statement. (#5372)
  • An update process, which is constrained by a query, will not fail with a "Record Not Held" error. This occured if the update process had two (or more) frames and an automatic child was invoked from one of the leading frames. The update processor was supposed to re-read (with HOLD) the PCF record when the child process ends (and the next frame begins), but the re-read was failing. So, when a REWRITE or DELETE statement was subsequently executed, the PCF record was not held. (#5395)
  • A query process which constrains a key containing a synonym will not incorrectly return 0 records. This occured if the key was defined by a group header, the group contained two or more fields, and the fields were not physically contiguous within the record buffer. (#5396)
  • A SET statement which refers to at least one group-header field does not produce incorrect results if one (or both) of the groups contains a field with multiple occurrences. (#5397)
  • Using the ORacle8 OCI together with an Oracle7 server can result in an error when trying to update a file which contains more than 255 columns. The error is "ORA-01745: invalid host/bind variable name". The actual number of columns does not have to exceed 255, it's the number of columns being updated pluse the number of segments in the primary key. SWS reports that using the OCIBindByName() function with alpha parameter markers will work around this problem. 4.1.2 will use OCIBindByName() unless the APPX NUMBER PARAMS environment variable is defined. (#5398)
  • Trying to perform partial-record I/O against a multi-occurrence field will operate against the first occurrence - all other occurrences will be ignored. In 4.1.2, a group which contains a multi-occurrence field will operate on all occurrences. If you want partial-record I/O to operate on all occurrences of a multi-occurrence field, you can wrap the field in a group. (#5400)
  • Defining a group which contains a synonym does not produce the error message "Group Contains Both Synonym and Referenced Field". The occured when the sequence number of the synonym is greater than 65535. (#5416)
  • The script built by asql to import a table definition now picks up a descending key even if the key field was an Appx group header field. (#5437)


APPX 4.1.2 Significant Issues

  • SET Statement and Group Header fields (fixed with release 4.1.2)
  • A condition exists in the SET statement that causes data to be lost when setting a GROUP HEADER type field to another GROUP HEADER field when the GROUP HEADER includes a multi-occurrance field. Only the first occurrance of the multi-occurrance field is set into the target group. All occurrances above 1 are left unset.
  • Error on REWRITE (fixed with release 4.1.2)
    • A condition exists in Updates and Outputs that can cause APPX to fail on a REWRITE with the following message:
      • Error - No Record Currently Held
    • This error seems to only affect multi-level updates and outputs and only then the "footer frames" for the update or output at the highest level and only then if there is a "Use Query" involved.
    • If the process has a "Use Query" and the "header frame" executes an automatic process that rewrites the PCF record of the parent process and one of the following frames of the parent process contains a REWRITE to the PCF record without first executing a READ with hold the error will occur. Previous releases of APPX and applications converted from SPEED II allowed this type of update without an explicit READ with hold.
    • APPX is failing to restore the hold on the PCF record after returning from a lower level process. This is possibly a side effect of the significant performance enhancements which were made to the Query processor. APPX will investigate to see if there is a way to restore the previous behavior.
    • The workaround is to add a READ with Hold so that the hold is restored.


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.