APPX 4.1.1 Release Notes
Bugs Fixed in Patch Release 4.1.1
- "wm write reg() - wdgt write failed - Error - Already on File" in Java Client when auto generated buttons were defined on the scrolling image area. (#5346)
- When defining a date field YMD as a Calendar/Clock control with a modifiable value of "?" indicating that it should only be modifiable during Initial Setup, In change mode the date is in fact, non-modifiable. However, the calendar button still displayed to the right of the field as active. If you clicked on it and pick a date, the date was stored in the record. (#5361)
- Executing a query against a consecutive file does not causes CASSERT - "attempting to allocate 0 bytes". (#5356)
- When executing a query process, if the query is constrained by child constraints, or the process which uses the query is constrained by child constraints, the child constraints are ignored. This has been corrected in release 4.1.1. (#5357)
- You can now force Appx to create all alpha fields as VARCHAR columns in an Oracle database - see the FMS Attributes dialog for more information. (#5365)
- A bug in the Oracle/Appx interface caused both of the following symptoms: 1) Attempting to modify the same record twice within a process occassionally resulted in a "record not on file" error. 2) Two BEG/END READ loops, with an embedded REWRITE statement, would result in the second loop taking nearly 10 times as long to complete. The error log would should that the REWRITE statement resulted in a "Integrity Constraint Violation" which gets translated to an "Already on File" error. (#5367)
- A job process called, USER DEFAULTS, has been added to the --- application. This job can be invoked from your application to provide users with the ability to change their own printer and log defaults. It can be invoked with any invocation method, but using subprocess will cause it to overlay the current image. (#5362)
- A process has been added which can be used to programmatically add users to the APPX user's file. An example of how to use this can be found in the 1EX subroutine, ADD USER API (EXAMPLE). (#5363)
- All known Image Editor errors related to Widget Already On File errors and other minor Image Editor fixes.
Known Outstanding Issues
- If you use ILF code to update widgets with the --- WIDGET file, these changes remain in effect until the EM is removed from memory and reloaded from disk. This reload only happens when an EM must be rebuilt, you exit the APPX session, or the EM is pushed out of memory and must be reloaded. To deal with this issues, just make sure you set both side of a test. Don't assume a widget will have a certain value and only set it on the exception condition. Always set it.
The PRINTER file in 0SA has System ID defined as a Unique Alternate key. This is going to cause a problem when defining local printers for client side printing. This means that only one printer can be defined with a blank System ID. The Blank system id indicates that the default printer is to be used.
It also means that no two users can have the same "named" printer. Essentially, you cannot define user-specific PRINTER records. So, if two users both have a local printer named "HP Laserjet 4", they will need to both user the same printer definition record or one of them will need to change the name of the printer as defined on their client PC.
- If you edit a process description, an Em rebuild is not triggered for processes which access that process via an optional child which means that the "Process" pull-down menu item will not reflect the new process description.
- An Xref on ILF Statements presents a screen of statements to choose from. This list does not include some of the new statements which were added in release 4.1.
- You can control the frequency of COMMIT operations when importaing data into an RDBMS. Set the APPX IMPORT COMMIT environment variable to the number of records you would like to import before commiting changes to the database. The default value for commit frequency is 1. You can drastically reduce the amount of time required to import large tables by setting this environment variable to a large number (1000 or more). We have not provided a way to control the commit frequency for RDBMS restructures.
- When scanning with the Java client, a single click will select a record and return it to the data entry screen unless the desired record is the first record listed on the scan screen. In that case, a double click is required. The first record is already "selected" when the scan screen is initially displayed.
- The At Appearance clause of the ENABLE/DISABLE commands seems to be ignored. Only the last appearance of widgets with the same name are being acted on.
Items Fixed or Added in this Release
- Restructuring a file, then without exiting APPX running processes utilizing that file would sometimes give the error "Cannot write to cache, invalid prototype record". This has been corrected. (# 318)
- Performing a QUERY on a very large file could result in a PBUTIL.3231 "oops - Error - Position Undefined" on the subsequent OUTPUT or UPDATE process. The query processor has been completely rewritten for 4.1, so this problem no longer exists. (#2873)
- Cached I/O - APPX 4.1 introduces the ability to create and access cached instances of files in memory. This can result in significant reductions in File I/O during posting and reporting processes. See this document for further explanation and an example of the use of this feature. (#5024)
- Printing to the O/S print spooler thru appx print can intermittently die at occasional customer sites, due to operating system anamolies.
In 4.1, we are publishing source code for a compiled version of 'appx print' (appx print.c), that can be customized and compiled by distributors and endusers, to deal with these anamolies when they occur. (#5079)
- Starting with release 4.1.0, you no longer need a GCS registration to start a local copy of an Appx server (when using an Appx client). (#5196)
- Starting with 4.1.0, if you try to start an Appx client and you don't have a valid GCS registration, the client will still start, but it will display a screen telling the user that a GCS registration is not present. (#5244)
- You can position the cursor on the file name portion of a READ statement (or any other I/O statements) and invoke OPTION 94. You will immediately be taken to the DD constrained to that file, where you'll have access to the file event points. (#5269)
- When editting the Date Mask override under System Administration's "Applications" editor, if you enter the string, am, to indicate that am/pm should be displayed, it was erroneously saved with double quotes surrounding the am. This was also occurring in the "Languages" editor. This has been corrected in both places. (#2598)
- The APPX Client now displays multi-line APPX text fields as Windows® type text controls. The text cursor stays within the text field until you are done entering and editing the entire text field. Since it is a "true" text control, all of the standard Windows editing features are available including the ability to cut & past the entire field. (#2640)
- When using option-99 to invoke a menu process, from which an input process was invoked, when eventually ending the menu process it was possible to receive "Error - Missing or Invalid Process Definition Record". This has been corrected. (#3557)
Release 4.1 increases the maximum APPX/IO file size on the following platforms:
- AIX & Solaris increased to 4 Gb from 2 Gb
- Windows increased to 2 Gb from 1 Gb
SET statements involving GROUP HEADER fields which contain SYNONYM's will now respect the fact that the component fields may not be contiguous. Other ECR's resolved by this fix are: 3608, 4392, 4745, 4991.
Two minor issues to point out regarding GROUP HEADER fields which are made up of fields which are not contiguous:
- The GROUP HEADER may not appear to have the correct contents when viewed in the debugger.
- A SET into the GROUP HEADER can not be a constant, but must be a field.
- On a Disposition screen, the "Printer ID" and "Form ID" fields are scannable. >From the scan screen the default processes can be accessed for editing these files. These default processes are now accessible only to APPX security administrators. (#4059)
- The Java client will now display a scan indicator for image items which are scanable due to a SCAN statement. For this to occur, the field must be mentioned in both an AT FIELD statement and on the left hand side of a SCAN statement. A scan indicator will also be present for key fields during the KEY ENTRY phase, indicating a PCF scan is available. (#4620)
- You could not scan from Query Setup, Record Selection if your query process is defined in an application with a version other than '00'. This has been corrected. (#4758)
- Restructure of a file could incorrectly generate "Can't write LFN record - Error - Already on file". This has been corrected. (#4803)
- In certain instances a query/output could generate "Error - Cannot Access Required File; Unable to translate message: 37 (200450,0)". This problem has been corrected. (#4804)
- An error, "Error - DEFINE Statement Error" could sometimes occur when using Scan. This has been corrected. (#4874)
- A Data Lookup scan on a non-modifiable item would result in a "mm alloc() - zero bytes requested" error. This has been corrected. Now a data lookup scan, a statement scan, or a token scan, if performed on a non-modifiable item will display the scan screen but not return a selected value to the screen. (#5063)
- The new (4.0) scan processor would not display a field from the scan file if the field's contents exceed the defined maximum width of the scan record (132). The old scan processor (3.5 and prior) would truncate this field. This behavior has been corrected for certain field types. Fields which are type alpha, substring, or format, will now be displayed and truncated in this situation. (#5136)
- Using the Win32 client, you could not paste accented characters. This has been corrected. (#5203)
- The "Print Totals" question on the field level AA popup, will now be used to default the item level "Auto-Total Type" field on output images. (#2113)
- On automatic and optional children the "AA" indicator was not being set properly with respect to the "Default Mode" field. It was also not being set at all for the "Hidden Child" field. These have been corrected. (#2807)
- If design transfer was used to overwrite part of a process (by transferring either a frame or an image), this did not update the destination process' date changed. Thus the EM for that process was not obsoleted by the transfer. This has been corrected. (#3105)
Change All References of a Domain had several problems. It wasn't working properly if you changed from a local domain to a foreign domain. Also, the domain itself (not the references to it) will now only be changed if the following conditions are met:
- From App Id & To App Id must both be equal to the Source App Id.
- The To domain must not already exist.
- Using END to exit the image editor would always update the audit info of the image, frame, and process. This has been corrected. The image editor will now cause audit info to be updated after END'g only when changes have been made. (#3467)
- Design transfer of processes has a new option, "Retain Audit Info". This can be used to retain the audit info of the source rather than to set it to the transfer date. See the field's help text for more information. (#3468)
- After doing a design transfer, the input screen will now be repeated for an additional transfer rather than ending. The field values will also be preserved for subsequent transfers. (#4431)
- If a Restructure operation failed for some reason, subsequent Restructures coul d fail with errors like "Element file write - error already on file". This has been corrected. Failed Restructures will now do a better job of cleanup. This fix also remedies the problem described in ECR #4966. (#4570)
- If two fields on an image had a statement scan defined, it was possible to scan on one of them and have the selected value be returned into both fields. This has been corrected. (#4667)
- Year 2000 dates were displaying incorrectly on some of the technical documentation reports. This has been corrected. (#4711)
- An "IPC Listings" menu has been added to the Toolbox, "Source Analysis" menu. IPC (Inter Process Communication) fields are internal fields which control the sharing characteristics of APPX design elements. The utilities on this menu can find and fix exceptions from standard values. (#4794)
- When defining a box, a box type of "NONE" is now available. This can be used to remove an existing box. Box placement on the image will now be adjusted if the row/column where the box starts is moved by inserting or deleting rows/columns. Note that the size of a box can not yet be changed by inserting or deleting rows/columns, but the location can be changed. (#4820)
- "Quick Restructures" have been added. For a file which is defined in the data dictionary as variable length (file level AA popup), fields added at the end of the record will not require a regular restructure. The restructure process must still be run, but only the file header will be processed, not each individual record. (#4832)
- An image where a field appeared multiple times, each of which had DLU's coded to different files, could result in not being able to SCAN on these fields. This has been corrected. (#4870)
- When adding fields to a file, the Display Sequence will no longer default to "1". (#4887)
- An exit confirmation screen has been added to the Interactive Cross Reference to reduce the chance of accidently exiting and having to then re-run the cross reference. (#4906)
- On Intel platforms, using the "Convert Field to Domain" option on a token field would lose the token records. They would remain under the old name and be orphaned. This has been corrected. (#4927)
- The "Renumber Fields" option available from the File level toolbox and also from the Application Design Toolbox can cause problems with the File level "Record Protection" fields. The record protection fields are stored at the file level by their sequence number. These utilities were not updating these sequence numbers. This has been corrected. (#4928)
- The "Renumber Fields in This File" option in the File level toolbox was supposed to renumber a single file only. It was incorrectly renumbering other files also, beginning with the current file. This has been corrected. (#4930)
- On optional children the "AA" indicator was not being set properly with respect to the "Invocation Type" field. This has been corrected. (#4931)
- A Query generated from one of the Toolbox "Process Generation" utilities, did not have it's "Enduser Selection's" additional attributes fields generated properly. They were different then if you added a selection record manually. This has been corrected. (#4937)
- The frame level toolbox option to generate a column heading frame in input processes is now also available for output processes. (#4943)
- The "Reference Browser" utility has been added to the process level, toolbox menu. This utility provides a convenient tool to list each design component referenced by the selected process. The results are similar to the "Interactive Cross Reference", and provide for "jumping" to the references and to the referenced item itself. One use of this is to identify the files used by a process and to optionally edit the file level event points for those files. (#4971)
- The Cross Reference utilities now has an option to include ILF statements which have been commented out. (#4978)
- In the System Administration, Users file, the "System Id" column has been retitled to "0/S Login Id". This title better describes the field. (#5014)
- The ILF code generated in a comma delimited update to handle multi-occurrance fields was not being generated properly on Intel platorms. This has been corrected. (#5017)
- A new utility, "Recalculate Dictionary Hash ID's", has been added to the Language Translation menus in both System Admiistration and Application Design. You should run this job if you edit certain fields in any language record for which entries are present in the dictionary. See help text for more info. (#5053)
- While editing a field, using option-2 to view the "Data Lookup" popup, then proceeding with three RETURN's could unnecessarily bring up the "Key Control" popup. This has been corrected. (#5074)
- When adding optional or automatic children to a process, the warning of "This Process is Invoking Itself" was not respecting the application id of the child. This has been corrected. (#5129)
- Using "Change All References" on a field name where the utility would change the references and the field itself to a new name, would result in token records being orphaned under the old field name. This has been corrected. (#5188)
- Boxes were originally implemented as CHR records in 4.0. With 4.1 they have been re-implemented as records in the WIDGET file. CHR boxes can be converted to WIDGET boxes by running a new utility on the Source Analysis Menu. (#5234)
- If you made a change in the ILF editor, then decided to discard the changes by pressing CANCEL, the changes were correctly discarded, but the audit info was still updated. This has been corrected. (#5235)
- Design transfer of domains now provides for processing the data dictionary. It's not technically necessary if transferring a new domain into the destination application. But if replacing an existing domain, processing the data dictionary should be done to update fields dependent on the domain. (#5255)
--- subroutine processes have been created to simplify the usage of some of the more popular rt function calls. For examples on how to use them, see the following subroutines in the 1EX application.
- GET CMD LINE PARM (EXAMPLE)
- GET ENV VAR (EXAMPLE)
- GET FILE FROM CLIENT (EXAMPLE)
- LOAD URL ON CLIENT (EXAMPLE)
- SEND FILE TO CLIENT (EXAMPLE)
- STREAM FILE (EXAMPLE)
- A Design Transfer API has been added. This is for developers who want to issue transfer requests from within their applications. See the 1EX/00, subroutine process, DESIGN XFER API (EXAMPLE) for more information. (#5297)
- Query processes will now respect key fields in the PCF. This can significantly increase query performance by reducing the number of records which the query needs to process. (#4199)
- A "Copy Fields" option has been added to the field level Toolbox menu. It can be used to copy one or more fields into the currently selected file. Fields can be copied from the same file or a different file. (#4830)
Event points can now be defined at the file level. ILF in these event points will be executed by APPX at appropriate points based on file access by processes. The new event points and when they are executed are as follows:
- FILE OPEN, immediately after APPX opens the file
- POST READ, immediately after APPX reads a record
- PRE UPDATE, just before APPX writes or rewrites a record
- POST UPDATE, just after APPX writes, rewrites, or deletes a record
- FILE CLOSE, will happen when the file is last closed.
- Access to the file level event points for the PCF has been integrated into the "Rules" popups for processes, frames, and images. (#4836)
- An "Identity" system administration file has been added. An Identity is used to store login information for various external interfaces. An Identity can exist for each FMS Group/User combination.
- File maintenance for Identities is available as an option when editing "Users" or when editing "File System Groups". (#4849)
- In "Database Management", "File Specifications", there is a new optional child, "Field Overrides". Field Overrides are used by the RDBMS interfaces (Oracle, Sybase, ODBC, etc.). With Field Overrides an administrator can specify field level parameters (such as column name and data type) to be used by the engine in communicating with the RDBMS. (#4853)
- The FMS Control String (which was accessible in System Administration for FMS Groups and in Data Base Management for individual files) has been retitled. It is now referred to as FMS Group Attributes and as File Attributes, respectively.
- Additionally, the attributes are now prompted for as individual specifications instead of as a control string for certain FMS Types (Oracle, Sybase, ODBC, APPX/Net).
- The older control string is still supported, but the specification based entries is the preferred method of providing this information. (#4857)
AppxODBC will now enforce the following APPX security features.(Not in first beta.) (#4919)
- File & Field level read security code
- File & Field level modify security code
- Record Access Protection
- Record Delete Protection
- Record Key Protection
- There is a new field in "System Parameters" called "Auto Select All Files". By setting this to "N", Database Management, Design File Management, and System Administration File Management, will default to no files selected and present the file selection screen, instead of automatically selecting all files. (Not in first beta.) (#5021)
- File level event points should now execute when files are accessed using AppxODBC. (#5089)
- The field "Require Table Value?" has been added to the AA popup of an alpha or format field/domain whenever a validation table is present. Setting it to "N" will cause the validation table to be "advisory only". This means that when editing the field, SCAN will present the validation table and allow selection, however the user can make an entry into the field which is not defined in the validation table. (#5177)
Two new environment variables have been added to aid in debugging situations: (#5182)
- APPX IO LOG=filename causes AppxIO to log all file I/O.
- APPX FMT IO LOG=1 causes the IO log to be formatted for human readability. The human readable format has numeric result codes from I/Os. They are keys to the 0LA MESSAGE file.
Keystrokes and process names are included in the IO log as well.
- APPX for SCO and LINUX didn't honor shadow-passwords, generating an 'Incorrect Login Information' error. This has been corrected. (#4848)
- A debugging statement ('whoami') not supported by all flavors of UNIX was commented out of appx print. (#4959)
The 0UT application, distributed with APPX release 4.1, introduces the following features:
- Importing table definitions from certain back end databases
- Importing file definitions from a text file
- Generating an APPX data dictionary from these imported definitions
- Generating a template application from a data dictionary
Additional information is available in a separate document and in the online help of the 0UT application. (#4979)
- Sample subroutines dealing with upper/lower case conversions have been added to the 1EX/00 application. See the subroutine, CNV EXAMPLE, for information. (#5004)