Appx 4.2 Release Notes

Installation

General

Registration import utility modified
The registration import step that is run as part of "finalizing" a new installation has been modified to be more understandable and intuitive.

Windows

AppxdSvc replaces WinAppxD
The "winAppxD" Connection Manager has been replaced by a new "appxdSvc" Connection Manager. The new Connection Manager is a "true" Windows service and is much easier to install, configure, and control. It's also more immune to denial-of-service attacks. The new Connection Manager also supports multiple authentication methods: you can, if you choose, configure appxdSvc to validate passwords against the Appx password file rather than the OS password file. That means that you can control the passwords more easily. It also means that you do not have to create an OS account for every Appx user.


O/S Issues

Security on directories

appx_print can't create log file in /tmp - ECR Number 6679
Printing under Appx for Unix no longer fails with "/tmp/appx_print.last: cannot create" messages due to undeleted files, due to the "t" in newer OS's /tmp 'drwxrwxrwt' directory permissions.


Initial Setup (Operational Phase)

Input Processes

Fields should not be modifiable in INQ - ECR Number 6804
In Operational Phase INITIAL SETUP when running an Input process in INQUIRE mode, fields with blank "Modifiable?" attributes were unexpectedly modifiable.


Run-Time Environment

C-Asserts

More info on mm_alloc panic out of mem - ECR Number 6832
The amount of the current memory being requested has been added to the 'mm_alloc - panic out of memory' error message, allowing us to differentiate among various causes of this condition. This should help us debug an infrequent memory allocation problem where the calculated memory allocation amount can be negative.

Display on Screen

Panning now works for client cols > 80 - ECR Number 6806
When viewing a report on the screen, it was not possible to pan to the right for some reports that were wider than 80 columns.

Help

Boxes now drawn around all sizes of help - ECR Number 6805
Boxes were added to two help images, making it easier to distinguish them from the Application's screen text.

License Server

Application Locks not being released - ECR Number 6865
Application Locks were sometimes not released when the process acquiring the lock ended.

Print Disposition

New Warning on disposition screens
Disposition Screen will now display a warning if the Print Format field is set to PDF but the selected form is not defined as a PDF form.

PDF printing on local and server prntrs
PDF output can be printed on server printers or on client printers.


Run-Time Behaviors

APPXIO

Enable large-file support for Linux - ECR Number 6905
Enable Large File Support on Linux. Files up to 4 gigabytes are now supported.

REWRITE of consec record loses position - ECR Number 6883
Rewriting a one-record, consecutive PCF could cause internal record pointers to be lost, with an error message upon re-read of: "Error - Record Not in File".

REWRITE without HOLD could corrupt file - ECR Number 6816
 

READing a record w/hold, then READing another record in the same file without hold, then REWRITEing wasn't failing with a RECORD NOT HELD error as it should have, possibly causing file corruption. 

SCRATCH fails if structure file missing - ECR Number 6838
SCRATCHing a file didn't work if the target file didn't have a matching Structure file.

File Level Event Points

SCRATCH followed by DELETE breaks FLEPs - ECR Number 6171
File level event points were improperly disabled for files SCRATCH'ed and CREATE'd with ILF. 

The presence of SCRATCH & CREATE in an INPUT or OUTPUT's Start-of-Process Event Point disabled most (but not all) File Level Event Point firing 

PCF files' FLEP would fail to fire in Start-of-Process, if Start-of-Process SCRATCH'ed and CREATE'd the PCF file. 

Non-PCF FLEPs were disabled if the file had SCRATCH and CREATE verbs in the OUTPUT process' Start-of-Process. 

FLEPs now work correctly when the underlying file is SCRATCH'ed and CREATE'd. 

General

All screens should be GUI-fied
All screens a user may encounter during runtime should now be graphical when run with the APPX Client.

Implement '+' mask character for numeric - ECR Number 6904
Numeric display masks with the "+" mask character now print "-" for negative numbers, instead of sometimes printing negative numbers as "????".

Toolbar button size selectable at runtim
Toolbar button size may be set at run-time. Buttons may be set to small (16 pixel), medium (24 pixel), or large (30 pixel).

ILF Statements

CNV TEXT behavior changed - ECR Number 6897
CNV TEXT on a Record or GROUP HEADER converts multiple component fields on the Right Hand Side of the statement into a single LHS alpha field. (Option/88 allows saving of File Names on the RHS of CNV TEXT statements.) 

Multiple component fields on the RHS are known as a "Composite Reference". A CNV TEXT is generated for each component field, converting each field into its mask's alpha format. CNV TEXT then strings them together. 

In 4.1, specifying a GROUP HEADER field isn't considered a composite reference, so you don't get a field by field conversion. It treats GROUP HEADERs as one long alpha field. 

To CNV TEXT in the reverse direction (converting a LHS alpha field back into its component fields), you may want to use a separate file as an interim CNV TEXT work area, so that you don't have to consider spacing between fields, etc. 

COMPUTE statement results in wrong sign - ECR Number 6829
In 4.1 and earlier, if you had a COMPUTE statement on two binary numbers, where the LHS field is binary and signed, the RHS is binary and not signed, the LHS contains a negative number, and the RHS contains a positive number, then COMPUTE incorrectly ignored the sign, producing a sum of the absolute value of the two.

Inquire mode honors errors and warnings
ERROR and WARNING statements are now honored in INQUIRE MODE

Input Processes

ADD mode scrolling prob for consec PCF - ECR Number 1825
When adding CONSECUTIVE file records in a scrolling input process, the most recently added record improperly displayed the prior record, apparently duplicating it. Records added in the scrolling process now display correctly.

ENABLE/DISABLE now apply to mult widgets - ECR Number 6899
When you use ENABLE or DISABLE statements to enable/disable a named widget, Appx only modified the first widget found with the given name. We now modify all widgets with the given name.

ERROR stmts are now honored in INQ mode - ECR Number 4126
Prior to 4.2, Input process in INQUIRE mode ignored ERROR and WARNING statements. INQUIRE mode now honors ERROR and WARNING statements. 

(To revert to the prior behavior, set environment variable: APPX_SUPPRESS_INQUIRE_ERRORS=1, causing Appx to revert to the 4.1 behavior. This variable will not be included in future releases. We strongly recommend changing your ILF code if you want to suppress ERROR and WARNING messages in INQUIRE mode in your own applications.) 

Mode change for one-record inputs
Mode can now be changed for one-record input processes and for processes with a one-to-one constraint.

Mode change retains key on form inputs
Mode changes on form inputs will retain the PCF record key and record buffer. Designers that used full screen scrolling processes to create this behavior may want to consider re-designing those inputs to form inputs.

Parent PCF record now reread in INQ mode - ECR Number 5772
When an Input process invokes an optional child, the parent process re-reads its PCF record (with hold) after the child process completes. 

Prior to release 4.2, the re-read only occurred if --- INTERACTIVE PHASE equaled DATA MODIFICATION, which it would do if the parent was in Change or Add mode when it invoked the child. 

As of 4.2, the parent process also re-reads the PCF record (without hold) when --- INTERACTIVE PHASE equals DATA INQUIRE, which it does if the parent was in Inquire Mode when it invoked the child, or if the parent was in Change Mode, but the parent record became held by another user.

Pre-Display EP's now execute after child - ECR Number 6308
We changed the event point sequence when the user selects option USER 0 through USER 255. Previously, Appx would not execute the Pre-Display and Pre-Display/Verify event points after returning from an optional child. Now when you return from an optional child, Appx ends the current image and reinvokes it. 

This means that programmatic updates of GUI attributes (by updating --- WIDGET) in Pre-Display, become effective after completion of an optional child. Also, some Pre-Display code that had to be duplicated in Post-Invocation no longer has to be. 

To revert to the 4.1 behavior, define an environment variable APPX_41_EPS. 

Appx uses the following sequence of events (after returning from an optional child) in older releases: 

1) Data lookups are performed

2) The image is displayed to the user

In release 4.2, Appx uses the sequence of events (after returning from an optional child) as follows: 

1) --- KEYMAP NAME is set to "DATA ENTRY" or "MENU ENTRY" 

2) The SELECT IMAGE (Frame-Level) event point is executed. You can select a different alternate image here, or you can suppress optional images. 

3) Frame-level widgets are copied from the EM into the --- WIDGET file. 

4) If the image chosen by the SELECT IMAGE event point should be skipped during live operations and --- OPERATIONAL PHASE is LIVE OPERATIONS, the image is suppressed. 

5) The characteristics (Editable, Bright, etc.) for all items are set to their default values (based on entry level, security, etc.) 

6) The default cursor position is computed 

7) Any MESSAGE's, WARNING's, or ERROR's are displayed 

8) Data lookups are performed 

9) Image-level widgets are copied from the EM into the --- WIDGET file 

10) The PreDisplay/Verify event point is executed 

11) The PreDisplay event point is executed 

12) The Global PreDisplay event point is executed 

13) All items are converted from internal form to external form (i.e. DISPLAY'ed) according to the usual rules. 

14) The image is displayed to the user

Pre-PCF Update EP executes in auto child - ECR Number 6284
The Pre-PCF Update and Post-PCF Update event points now execute in child processes during auto-update and auto-delete.

Pre-PCF Update EP now executes in DELETE - ECR Number 5721
Pre-PCF-Update event points now execute during Delete mode. File level Pre-Update event point now execute for a PCF deletion and for an ILF DELETE statement. 

An ERROR statement executed in either Pre-PCF-Update or in the file level Pre-Update will cancel a Delete operation. 

The ILF DELETE statement now sets the next level of T/F flag, indicating whether the deletion occurred. If an ERROR statement cancelled the deletion, the next level of T/F flag is set to F.

Restore cursor pos after child completes - ECR Number 6854
When an ILF statement invokes a child process, the cursor position was not restored to its location prior to the invocation.

SCAN now starts at specified value - ECR Number 6098
The Scan processor now sets a starting point based on characters entered before pressing SCAN. It does not (yet) honor starting values for data-lookup or token scans.

Scrolling input causes Bad Reg No error - ECR Number 6841
The error: "WM2.C.926 - SET_CUR_REG() - bad reg no" no longer occurs when you have: 

1) A scrolling input with a display-only frame, followed by the scrolling frame, 

2) The display-only frame extends to the bottom of the terminal (typically row 21), and 

3) The scrolling frame extends to 1 row above the end of the display-only frame (typically 20). 

WIDGET attrs changed via ILF now reset - ECR Number 5323
Each PCF cycle now resets the --- WIDGET records to their default values. 

Previously, if you updated --- WIDGET file widgets using ILF, the updates remained in effect until the EM was reloaded from disk. The reload only happens when EMs are rebuilt, you exit APPX, or the EM is pushed out of memory and reloaded. 

KEATERM

KEA Term hangs on Select Access Path - ECR Number 6861
Pressing 'Select Access Path' under KEAterm no longer hangs the terminal emulator, due to an unflushed KEAterm output buffer.

Language Translation

Build dictionary util now incl widgets
The Build Dictionary utility now creates dictionary entries for widget text from Labels and Tooltips.

Modified widget text now translates - ECR Number 6427
The "label" and "tooltip" fields within a widget are "translatable" fields. 

We now defer widget text translation until after the PreDisplay event point has completed. This change allows the values in the label and tooltip fields to be in the "base" language when manipulated via ILF. 

Output Processes

Default print directory relocated
The default directory for print files on Unix and Linux installations has been moved from /tmp to $APPXPATH/PRINT/uid. The print file directory can still be overridden by the use of the APPX_PRINT_FI_DIR environment variable.

Designer has more control over blank lin
Designers now have more control over the extra blank lines that have previously been created in "standard" page headings and subheadings.

Blank line after the separator line has been removed

Blank line after the generated report heading has been removed

Blank line after system generated subtotal lines has been removed

Blank line before a system generated subheading has been removed

The blank line after a system generated subheading remains

Designers may need to add blank lines to some processes to retain desired spacing. 

GUI title bar not displayed in Key Entry
The graphically designed title bar was not displaying for Key Entry frames in inquiry processes. This has been corrected.

Panning now works for all report sizes - ECR Number 6806
Panning of reports displayed using PRINT TO SCREEN would not pan correctly on reports other than 80 and 132 columns. Panning now works for all report sizes.

PDF headings for existing reports
Printing has been modified so that any existing report that is run with the PRINT FORMAT field set to PDF will generate graphical style headings.

Print? check box now displays correctly - ECR Number 5549
The Print? check box on the PRINT ON SCREEN display will now display correctly for all report and screen sizes.

Query Processes

Query audit fields updated in INQ mode
The Query process editor has been changed to no longer update audit info while in Inquire Mode.

Query on key substring fails - ECR Number 6836
Query Functions using substrings of keys for Selection failed if (a) the substring started in position 1 of the source key field, (b) the query used two or more selection fields, and (c) the default flags for this selection's Beg At + End At remained blank.

SCAN Type 1 does not work - ECR Number 6872
A problem with Scan Type '1' under Appx 4.1.a and the Java/Client has been fixed.

Subroutines

mm_memset() causes random crashes - ECR Number 6776
Random crashes relating to functions mm_memcpy() and mm_memset(), and/or Data File Management's Verify Integrity utility have been fixed.

RT_WRITE_STREAM returned false negative - ECR Number 6568
'rt_write_stream' no longer returns an "F" flag, and the --- STREAM WRITE subroutine no longer returns a value of '1', when successfully writing to a stream file.

STREAM OPEN can now open a pipe - ECR Number 6902
The --- STREAM OPEN subroutine now opens a pipe to a command, if the first character of --- STREAM FILE PATHNAME is a pipe character (i.e. '|'). 

Currently we only support one-way pipes. If the STREAM OPEN TYPE is set to 'r', you can read from the child's standard output stream. If the STREAM OPEN TYPE is set to 'w', you can write to the child's standard input stream. (This is consistent with the standard Unix model for the popen() function.) 

The rest of the STREAM API is unchanged. Once you have a successful result from STREAM OPEN, you can use the other STREAM subroutines in the same way that you would use them to interface to a plain file. 

Note: On a Windows host, you must invoke console (rather than GUI) applications whenever you use the pipe feature. (GUI applications don't have a stdin or stdout.) 

On Windows hosts, the popen() function will automatically prepend the name of the command processor if it's not included in the command string. So, if you set STREAM FILE PATHNAME to "|DIR C:\*.*", Appx runs the command "%COMSPEC% /C DIR C:\*.*" and returns a stream to that command's standard output (in "w" mode), or the command's standard ... 


System Administration

Logging

Usage log can now be activated - ECR Number 1830
Setting environment variable APPX_USAGE_LOG to a filename now produces an Appx Event log. If the filename ends in ".dat", the log is created as a variable-length consecutive file with 1037-byte records. 

You can mask APPX_USAGE_LOG with APPX_USAGE_BITS, setting it to any combination of the following hex values: 

 

 

00000001 (dec 1) - logs process begin and end (OS process ID, application 

ID, version, database, process type, and process name) 

00000002 (dec 2) - log CASSERT's 

00000004 (dec 4) - currently unused 

00000008 (dec 8) - currently unused 

00000010 (dec 16) - log CANCEL, ERROR, WARNING, and MESSAGE statements 

00000020 (dec 32) - log ERROR, WARNING, and MESSAGE statements 

00000040 (dec 64) - log WARNING and MESSAGE statements 

00000080 (dec 128) - log MESSAGE statements 

00000100 (dec 256) - log TRACE messages 

80000000 - log date and time of process excution 

 

For example: APPX_USAGE_BITS=0x00000001 would log only processes begin and end. APPX_USAGE_BITS=0x80000103 would log the process begin and end, the date and time execution started and ended, and and CASSERTs (01 + 02 + 100 = 103). 

 

These are hex values so 00000040+00000080 is not 00000120, it is 000000c0 (decimal 192). 

 

 

The first record written for each session contains the time, OS process ID, and user name. 

If APPX_USAGE_BITS is not set, then APPX_USAGE_LOG logs all of the above events.

Log file types other than AppxIO are *not* multi-user safe. You should only use .dat files for USAGE logs. When you log to a .dat file, the file will always reside in the 0SA data directory and you should not include a directory (or drive name) in the environment variable.

Other

PDF form type in Disposition
Form definition in System Administration now supports selection of text or PDF as a form type. This is a new field. Appx assumed a form type of text in prior releases

Security

Query fails if 0SA USER SYS ID reference - ECR Number 6878
0SA USER SYS ID had a damaged data-lookup definition that threw off the Query processor, when it was used in a Query.


Application Design

0LA (---) Application

New subroutine - CLEAR PASS LIST
A new subroutine has been added that can be called to clear the PASS list. This subroutine can be called to ensure that there are not any "leftover" arguments from previous PASS statements that were not received.

New subroutine - DELETE MODE BUTTONS
A new subroutine has been added that can be called from within the Pre-Display event point. Calling this subroutine will delete the four mode buttons and the acknowledge delete button from the toolbar.

New subroutine - DELETE SCROLL BUTTONS
A new subroutine has been added that can be called from within the Pre-Display event point. Calling this subroutine will delete the six scroll buttons from the toolbar.

Data Dictionary

FLEP can now be compiled within design
File-level Event Points for the current process can now be compiled from within design of Files / Fields.

Phantom DL indicator fixed
The phantom DL indicator on fields in the data dictionary has been corrected.

Debugging

Restore cursor pos after ILF debugger - ECR Number 6853
The cursor position is now stored prior to displaying the ILF debugger and is restored after exiting from the ILF debugger.

General

Default mode in application design chang
The default mode for Process Design and File Specification in Application Design has been changed to be Inquire Mode (from Change Mode).

GUI Application Design

All design utilities are now GUI - ECR Number 6834
The Design utilities have been revamped to now take full advantage of APPX's GUI capabilities.

Named Resources available across applica
Named Resources can now be accessed across applications. The application ID has been added to named resource specs so that an application can access resources defined in another application within the same version.

Override OPTION for optional children
GUI attributes for optional child processes now includes an override OPTION spec. When a user selects a menu item or toolbar button that has an override option, the specified override option will executed instead of the usual "USER nn" option. This new feature will eliminate the need to override options via ILF in the Option Intercept event point.

ILF Editor

Additional help documentation
ILF editor has had additional help documentation added in several locations.

Auto-change appl ID to --- when approp. - ECR Number 6104
When editing ILF code, Appx now changes the application ID to "---", if the referenced field (or file or process) cannot be found in the application specified by the designer, but does exist in application 0LA. 

This lets you refer to pre-defined fields, files, or processes without having to change the application ID. 

If you code an I/O statement (such as READ, WRITE, READNEXT, etc.) and the name of the file you want to manipulate is the same as the name of a work field, the ILF editor will not complain with a "File Not Found" error message.

Completion of ILF editor field names
A new "auto-completion" feature has been added to the ILF editor. Anywhere in the ILF editor that you can SCAN for a value, you can press F5 to "auto-complete" the field instead. For example, if you already typed in:

SET TAR CUSTOMER N

and you press F5 (Next Record), the ILF editor will change it to:

SET TAR CUSTOMER NAME

press F5 again and it becomes:

SET TAR CUSTOMER NUMBER

just press F5 until you see the value you want. Gone too far? Press F4 (Previous Activity) to go back. 

Cursor position corrected after Help - ECR Number 5834
When editing ILF editor statements, the F1 (Help) key provides context sensitive help relating to the field at which you are positioned. The Help message is now correctly displayed in the Java client. Also, the cursor now positions correctly when returning from the Help text.

Errors now cause beep
If you make a mistake in the 4.2 image editor, you'll hear a beep and see an error message.

File name now validated for RESTORE stmt - ECR Number 6115
The ILF editor now validates ILF code more carefully, especially the STORE and RESTORE verb's operands.

ILF Editor crash fixed - ECR Number 6882
Certain combinations of scrolling to the bottom of an ILF event point, deleting some statements, and then Paging up, no longer crashes the ILF editor.

Invalid fields allowed in ILF statements
ILF editor will now display a warning message rather than an error message if an invalid field name is used in an ILF statement. Pressing Enter will save the invalid field name. Option 88 to save the name is no longer required.

New Cut, Copy, & Paste capabilities - ECR Number 6747
The ILF editor now has an ILF clipboard. Any time you do a copy or a move, ILF is saved in the clipboard, allowing it to be pasted multiple times. 

Two new ILF editor options allow you to SELECT a range of ILF statements and COPY them into the clipboard. 

If running the Java Client, the ILF clipboard uses your desktop clipboard. If not running the Java Client or if the application is locked, the ILF clipboard uses an internal clipboard rather than the desktop clipboard. The desktop clipboard allows statements to be copied and pasted between two separate APPX client sessions or from an APPX session into any desktop application.

SCAN ability enhanced in ILF Editor
You can scan on just about everything now: field names, file names, process names, area types (for STORE/RESTORE and PASS statements), relations (the GE, EQ, LE values for IF/AND/OR statements), invocation types (SUBPROCESS, DETACHED, RELATED), cache types (AUTO, LOAD, NOLOAD, etc.), direction (FROM or INTO for a SET TEMP statement), date type ('L' or 'S', for SET DAY/SET MNTH statements), file relations (IN or EX), fail types, hold types, etc..

SCAN in ILF on field and file names
The scan processor in the ILF Editor has been modified to display only meaningful choices when Appx can figure out the context. 

For example, if you have entered a READ or BEG READ statement with a file name, then SCANing on the key field will display only key fields. A scan on the target field on a SET DATE command will display only date fields.

SCAN on ILF commands lists all commands - ECR Number 5318
SCAN of ILF commands will now display all ILF commands instead of only the first page.

Statement validation has been improved - ECR Number 6849
CNV TEXT failed if used on a 0SA file, if the same file also exists in 0LA.

XCOPY now works for locked applications - ECR Number 4630
If you have Application Design rights, but not Transfer-In or Transfer-Out rights, Xcopy now permits the transfer of ILF code.

ILF Statements

--- STREAM i/o routines enhanced
On Unix systems, the --- STREAM interface can now read from or write to pipes. That means that you don't have to redirect command output to a temporary file. To open a pipe to a command, just include the pipe character ('|') as the first character of the file name, and follow that with the command string. For example, if you want to read the results of a "ps -ef" command, open a stream (for reading) with the name "|ps -ef". Note - you can send data to the process at the other end of a pipe by opening a write-stream, or you can read output from a command by opening a read-stream, but you can't do both at the same time.

CNV PORT - New Statement
CNV PORT works like CNV TEXT except that the portable format is designed for import/export purposes and is immune to differences in numeric and date masks - we added CNV PORT to ensure that you can import anything that you export.

CNV TEXT - T/F result flag corrected - ECR Number 6535
CNV TEXT no longer occasionally sets the TF flag to 'F' when successfully executing.

IF DIFF - New Statement - ECR Number 6506

The IF DIFF statement expects one operand and a comparison type. The operand can identify a field, a group header, or a record (file name). 

----- IF DIFF  --- ---------------------- --- -------- 

(1) (2) (3) (4) (5) 

1 - T/F flags 

2 - Application ID 

3 - Field or Record Name 

4 - Occurrence Number 

5 - Comparison Type (STORE, DEFAULT, or ORIGINAL) 

 

 

The comparison type can be STORE, DEFAULT, or ORIGINAL. IF DIFF will compare the current value of the operand against the STORE/RESTORE area (STORE), the default record (DEFAULT), or the original (on-disk) buffer (ORIGINAL). ORIGINAL is only valid for the PCF (because we don't store the original on-disk values for other files). 

If no differences are detected, IF DIFF will set the next T/F flag to F. If differences are detected, IF DIFF will set the next T/F flag to T. 

IF DIFF will also populate the --- COMPARE memory file with a list of differences. If no differences are found, --- COMPARE will be empty. If differences are found, --- COMPARE will hold one record for each changed field. The --- COMPARE record is composed of the following fields: 

 

COMPARE FIELD NAME     X(22) (Primary key) 

COMPARE DESCRIPTION X(30) 

COMPARE CURRENT VALUE X(80) 

COMPARE OTHER VALUE X(80) 

COMPARE OFFSET 9(5) 

COMPARE LENGTH 9(5) 

 

 

COMPARE FIELD NAME will contain the name of the changed field. 

 

COMPARE DESCRIPTION will contain the descriptive name of the changed field. 

 

COMPARE CURRENT VALUE will contain the value of the field in the current record buffer, as converted by CNV TEXT. 

 

COMPARE OTHER VALUE will contain the value of the field in the other record buffer (store, default, or original) as converted by CNV TEXT. 

 

COMPARE OFFSET and COMPARE LENGTH fields will contain the offset of the field within the record buffer and the length of the field, respectively. 

 

To make it easier to use IF DIFF in a subroutine, you can omit the operand name if the comparison type is ORIGINAL (since that implies the PCF record). 

There were a few questions and suggestions about the first proposal. Here are a few changes: 

1) Any process that has a PCF can compare to the original-record buffer. 

2) Since file-level event points have a PCF, they can compare to the original-record buffer. 

3) The original-record buffer is now shared between the file-level event points and the foreground process. This change was necessary to fix a bug in the current implementation of file-level event points. Prior to this change, you could modify a record in the file-level Post Read event point and the foreground input process would not notice that the record had changed. 

4) Here is a short description of how the original-record buffer is managed: 

   a) In Add mode, the default-record buffer is copied to the original-record buffer just before the Set Default Values event point 

   b) In Inquire, Delete, or Change mode, the original-record buffer is copied from disk just before the Post PCF Read event point 

   c) For file-level event points, the original-record buffer is copied from disk just before the Post PCF Read event point 

   d) In Change mode, the current-record is copied to the original-record buffer just before the Post PCF Update event point 

   e) In Add mode, the current-record is copied to the original-record buffer just before the Post PCF Update event point 

   f) For process types other than Input, Appx never updates the PCF automatically, so rules d and e only apply to Input processes 

5) For file-level event points, each stream maintains its own original-record buffer 

6) For release 4.2, we will only keep an original-record buffer for PCF files - we may change this restriction in a future release. 

7) You can scan for the comparison type in the ILF editor 

LOCAL - New Statement - ECR Number 6105
A new LOCAL statement allows fields to be declared to be LOCAL to the current context. 

LOCAL saves the named field's value. When the current context completes, it restores the saved value before returning to the invoking context. 

LOCAL works in subroutines called via a GOSUB, and in Start of Process event points.

RESTORE - New option: ORIGINAL
The RESTORE statement can now restore ORIGINAL RECORD or ORIGINAL FIELD values.

Image Editor

GUI Windows properties accessible from I
Image Editor has been modified to allow access to the Windows Properties pop-up from the toolbar and from a pull-down menu.

WIDGET cut, copy, paste loses micro adj - ECR Number 6846
Selecting and copying, then pasting Image editor widgets now retains pasted widgets' Micro Adjustments settings.

Input Process Design

Add, Delete, Change widgets at runtime - ECR Number 5442
You can now add, delete, move, resize, and re-resource widgets at runtime, by making --- WIDGET file changes in the Pre-Display, Pre-Display/Verify, or Global Pre-Display event points.

Display Only flag unexpectedly changes - ECR Number 6871
Moving button or label widgets on images with no defined fields no longer resets the 'Display Only' flag to "N".

Generate Column Headings
Generate column headings now works for all scroll types.

New --- PDF – CURSOR AT FIELD
New PDF --- CURSOR AT FIELD has been added. This field contains the field name of the current cursor location. Works in conjunction with --- CURSOR ROW and --- CURSOR COLUMN.

Toolbar now defined in hookable process - ECR Number 6246
The standard toolbar buttons that APPX automatically includes can now be customized. They are defined in an input process called STANDARD TOOLBARS. 

This process can be design transferred into your application from the 0LC application, modified, then hooked to run your customized STANDARD TOOLBARS process.

Widget state is now context sensitive - ECR Number 6252
Appx now disables certain widgets depending on the current context (current phase, entry level, etc.). 

For example, a button which sends the ACKNOWLEDGE DELETE option should be disabled unless you are in Delete mode. A WIDGET ENABLED flag can hold Yes, No, or blank. If the designer leaves the Enabled flag set to blank for a widget, the engine should control the enabled/disabled state as appropriate. If the designer sets the WIDGET ENABLED flag to Yes or No, the engine should not modify the enabled/disabled state. 

If Delete Mode is not allowed in the current process, Appx disables widgets that sends the --- DELETE MODE option. After the PreDisplay and PreDisplay/Verify event points, Appx examines any --- WIDGET records where --- WIDGET ENABLED is set to ' ' (blank). For such widgets, Appx disables (i.e. set --- WIDGET ENABLED to 'N') if the related option is invalid in the current context. 

To let Appx manage widgets' enabled/disabled state, set --- WIDGET ENABLED to blank. To retain explicit control over the enabled/disabled state, set --- WIDGET ENABLED to 'Y' or 'N'. 

All toolbar buttons, even those generated by Appx (End, Cancel, Next Record, etc.) appear in the --- WIDGET file, so designers can control toolbar buttons as well as their own. 

Appx follows these rules when deciding whether to disable a widget:

 

 

 

 

=============== 

WIDGET OPTION 

===============

 

CANCEL ....... If --- CANCEL OK is 'N' or Cancel Disposition is 'Prohibit', disable the widget. 

WIDGET OPTION >= USER 0 and WIDGET OPTION <= USER 255 ....... If there is an optional child and the child entry level prohibits the child from running, disable the widget 

ACKNOWLEDGE DELETE ....... If --- INTERACTIVE PHASE is not 'DATA DELETION", disable the widget. 

DIRECT PROCESS 1 ....... If you don't have a Direct Process 1, disable the widget. 

DIRECT PROCESS 2 ....... If you don't have a Direct Process 2, disable the widget. 

SET ITEM ATTRIBUTES ....... If there are no items on the current image, disable the widget. 

ADD MODE ....... If the mode is not allowed (or not in an input process), disable the widget. 

DELETE MODE ....... If the mode is not allowed (or not in an input process), disable the widget. 

INQUIRE MODE ....... If the mode is not allowed (or not in an input process), disable the widget. 

CHANGE MODE ....... If the mode is not allowed (or not in an input process), disable the widget. 

SCROLL FIRST ....... If not in a scrolling process (or you're at the first record), disable the widget. 

SCROLL PREVIOUS ....... If not in a scrolling process (or you're at the first record), disable the widget. 

SCROLL DOWN ....... If not in a scrolling process (or you're at the first record), disable the widget. 

PAN TOP ....... If you can't PAN UP, disable the widget. 

PAN UP 1 ....... If you can't PAN UP, disable the widget. 

PAN UP SCREEN ....... If you can't PAN UP, disable the widget. 

PAN BOTTOM ....... If you can't PAN DOWN, disable the widget. 

PAN DOWN 1 ....... If you can't PAN DOWN, disable the widget. 

PAN DOWN SCREEN ....... If you can't PAN DOWN, disable the widget. 

PAN LEFT MARGIN ....... If you can't PAN LEFT, disable the widget. 

PAN LEFT 1 ....... If you can't PAN LEFT, disable the widget. 

PAN LEFT SCREEN ....... If you can't PAN LEFT, disable the widget. 

PAN RIGHT MARGIN ....... If you can't PAN RIGHT, disable the widget. 

PAN RIGHT 1 ....... If you can't PAN RIGHT, disable the widget. 

PAN RIGHT SCREEN ....... If you can't PAN RIGHT, disable the widget.

Widgets erroneously deleted - ECR Number 6759
If in the image editor you opt-0 or opt-15 to add or edit an optional child, when you returned to the editor, the image's widget records were gone and not editable. Also, if you made changes to the image and END'ed from it, the design file widgets would be gone. This has been corrected.

Menu Process Design

Menu image editor mode problem fixed
The Menu Image Editor was fixed so that changes are not allowed in Inquire Mode.

New 0-App for runtime routines

0LA Runtime processes can now be copied - ECR Number 6778
An new application, 0LC, is now installed with Appx. This application contains some of the processes we provide in 0LA. We want to provide for designers to be able to customize the look and feel of these processes. The process can design transfered to the desired application to be used by designers as the starting point for their own customized version of theses processes. The original processes in 0LA could then be overridden by a HOOK record. 

 

The 0LC application is read-only. Processes may be transferred out but they may not be modified within the 0LC application.

Output Process Design

GUI Output can now be designed - ECR Number 6819
The image editor now allows design of GUI output.

GUI Output can now be printed (PDF) - ECR Number 6819
A new PRINT FORMAT option of PDF is now available allowing output processes to create print files as PDF documents.

Opt 6 on Output Image Editor fixed
The Output Image Editor has been fixed so that using Option 6 to delete a line will also delete any labels anchored on that line.

Query Process Design

Wrong event points loaded for editing
The buttons on the Rules menu are sometimes loading the wrong event point for editing in the ILF Editor.

Tech Doc

Can now be printed within Process Design
Tech doc can now be printed for the current process within process design.

Printed Tech Doc for widgets & Resources - ECR Number 6431
GUI images and attributes now print as part of technical documentation when a PDF form type is selected.

Utilities

Added new Design Compare Utility - ECR Number 6449
A new utility compares applications or data dictionaries, producing differences reports, or allowing users to browse the results interactively. Users can elect to ignore audit information or modification date fields.

Added new Export/Import util for Design - ECR Number 6450
A new utility exports and imports an entire application as a single platform independent flat ASCII file, using the new CNV PORT statement.

Change All References will process data - ECR Number 6318
When a field name in a file is changed using the Change All References utility it will now process the data dictionary.

Gen rpt: Date fields no longer autototal - ECR Number 5646
Prior to 4.2, adding dates to outputs used to set dates' auto total flag, resulting in hard-to-edit "??/??/????" date grand totals.

New utility to locate misplaced widgets
A new utility has been added to the toolbox to locate all widgets that are not properly located on an image. This utility will identify widgets that may be anchored outside of the defined image but are associated with the image.

Xcopy and Design Transfer on locked appl - ECR Number 4630
You can XCopy and Design Transfer within (and between) locked applications (as long as the locks are compatible).


Database Management

Recover Utility

Recover fails on files larger than 2GB - ECR Number 6890
The Recover utility no longer fails on files greater than 2 Gigabytes. The Recover utility has been incorporated into the Appx engine on all platforms. It can be invoked by executing appx -recover. The format of the command is the same, appx -recover old_filename new_filename deleted_filename.

Restructure Utility

Can't restructure 2,000 byte records - ECR Number 6749
 

Prior to 4.2, restructuring a file containing records with an original length an even multiple of 1000 bytes, would fail with an "Invalid Prototype Record Length" error. 

Failed restructure causes other problems - ECR Number 4570
When Restructures failed for some reason, subsequent Restructures could fail with errors like "Element file write - error already on file". Failed Restructures now cleanup after themselves more thoroughly.


RDBMS Interfaces

MY SQL

Various issues - ECR Number 6898
Various issues relating to storing APPX data in a MySQL data source have been corrected. 

     

  • The MySQL ODBC driver, called MyODBC, comes in two versions. You must use MyODNC 3.51 or later. Earlier verison had serious bugs.
  •  

  • The MyODBC driver erroneously reports some non-numeric data tyeps as being "unsigned" - Appx won't use unsigned data types when it creates a tablein an ODBC database. We have fixed this so that Appx ignores the signedness of non-numeric types.
  •  

  • MySQL supports the following temporal data types: TIMESTAMP, DATE, TIME, DATETIME, and YEAR. The DATE type will hold CC through DD (century through day). The TIME type will hold hh through ss (hours through seconds). The DATATIME type will holdCC through ss (century through seconds). The YEAR type will hold YY values.
  •  

  • TIMESTAMP colums can hold a variety of date component ranges: TIMSTAMP and TIMSTAMP(14) columns can hold CC-th (century through hundredths of a second). TIMSTAMP(12) will hold YY-ss, but appears to hold CC-ss because the MyODBC driver will synthesize the century component. TIMESTAMP(8) will hold CC.

Other

Error reporting in RDBMS improved
We've improved the handling of error messages in our database interfaces (Oracle, ODBC, DB2) so that, if something goes wrong, you should see a more meaningful message.

Native database interfaces consolidated
With release 4.2, we're consolidating some of our FMS interfaces. We will be dropping direct support for Sybase and Vision but we will continue to support those databases through ODBC (you'll need to acquire an appropriate ODBC driver). The old interfaces for Sybase and Vision will still be available for a while but are no longer "officially" supported.


APPX GUI Client

APPX Client Login dialog window

New startup sequence
The startup sequence for the APPX Client has been revised to behave as follows: 

1) Startup graphic with version is displayed

2) APPX Client Login dialog window is presented

3) After the Connect button is clicked, the APPX Client window is opened 

The startup graphic is displayed to provide feedback to the user while the APPX Client Login dialog is being loaded. The Client Window is not initialized and opened until after a successful login takes place. This allows the Client Window to be initialized using the user preferences that may have been edited from the APPX Client Login dialog before connecting.

Options tab - "Advanced" button added - ECR Number 6817
An "Advanced" button has been added to the "Options" tab of the APPX Client login dialog window. Clicking on the "Advanced" button opens a "Client Properties" window with a list of properties and values. The properties list includes all of the options that were previously available as command line options as well as the options that were available on the client Options pulldown menu at runtime. A few new options have also been added. 

The values of the various properties can be edited and are saved when the properties window is closed. These properties are then used when the client window is opened to connect to a host.

Options tab - New "GUI Looks" available
The Options tab of the APPX Client Login dialog now has six options to choose from when setting the GUI Look. The available GUI Look choices are: 

Appx (New - All platforms) 


Java (All platforms) 


Web (All platforms) 


Aqua (New - Mac only) 


Native (New - All platforms) 


Windows (Windows only) 

Note that some GUI Looks are not available on all client platforms.

Client Preferences/Command Line Options

Command line overrides saved properties
You can now override all "saved" Client Properties by specifying the property and the desired property value on the client startup command line. 

The syntax of a property on the command line is as follows: 

-[propertyname]=[value] 

For example: 

-screenRows=28 -screenColumns=110 

Properties specified on the command line override the corresponding saved properties but do not change the saved properties.

New Client Properties Window
A new Client Properties window allows easy viewing and editing of a wide variety of saved client preferences. 

The Properties editor can be accessed by clicking on the Advanced button on the Option tab of the client login dialog or the Properties Editor can be accessed by selecting "Preferences" on the "File" pulldown menu during a client session. Note that some properties are not editable when access during a client session.

User Client Preferences Now Saved
Client options that are enabled or disabled via the "Options" pulldown menu at runtime are now remembered (saved) between client sessions. 

The user "preferences" for these options are separately saved for each user of a desktop computer in a "preferences.ini" file in the ".appx" directory in the user's home directory. So, if two users share a desktop computer, they will each have their own saved Client preferences provided that each user logs in with a unique desktop login id. 

These same options appear on the new Client Properties list where they may also be enabled or disabled. The values listed on the properties list represent the currently saved option values. The values shown in the properties list are used to enable or disable the various options when the client is initially started.

Runtime Environment

Desktop Client now uses Sun Java 1.4 VM
The Appx 4.2 Desktop Client has been modified to use the Sun 1.4 Java VM.


Reportwriter (SQL)

Report Design

Appx Report Writer revamped
All reported bugs in the Appx Report Writer have been fixed as of release 4.2