APPX 4.0 release notes

Release notes for APPX 4.0.0 through 4.0.a, newest first. They were published on www.appx.com and moved here in October 2026. To move between releases, see Upgrade paths. Every release is listed in the Release history.

APPX 4.0.a

Run-time

  • Copy, Paste, Ins, Del, Mouse Selection of Data, etc should now work as you would expect from a GUI application. Real GUI controls are now being used which provide all of these features. (#4611)
  • The java client login dialog box should now position the initial cursor in the correct field. Before, several tab presses were required to position to the password field. (#4612)
  • The current java client no longer truncates the last '9' digit in the heading of the security codes screen for security profiles. (#4708)
  • The startup problems related to the Sun JVM are no longer an issue. The current java client does not require the Sun JVM to run. It can use the native Microsoft® VM or run compiled where no VM is needed. (#4875)
  • APPX would accept a date of 00/00/00 but not treat it as blank (IE, if compared against a blank date in a query, it would not match). This would only occur when all fields of the date were 0's. If even one contained a valid month, day or year, APPX would not accept the entry. This has been corrected. You can no longer enter a date of all zeros. Note that this was accomplished with a change to the format of an EM so you MUST have a new EM for the fix to take effect. For 4.0.a, Appx now reports an error if a Month or Day is set to zero. (#3684)
  • Pressing the backspace key on a screen that contains no edit fields will no longer hang the client session. (#4499)
  • Problems found with scanning on token fields have been corrected. Token fields now act as a true pulldown listbox. (#4622)
  • The problem where pressing the option key too many times resulted in an option number count greater than 2 and no way to continue has been corrected. (#4704)
  • The current java client now has a menu option to display the numerical option numbers required to activate the menu options. (#4757)
  • You can now remap the client option key from the command line to any printable or special key. The command line argument is -optkey=name where "name" is a printable letter, an underscore to define the doublequote as the option key, or a reserved word from the following list to use a non-printable key. Some keyboards may not have some of these keys. Keyword List: CANCEL, CLEAR, PAUSE, ESCAPE, END, HOME, SLASH, OPEN BRACKET, BACK SLASH, CLOSE BRACKET, NUMPAD0, NUMPAD1, ..., NUMPAD9, MULTIPLY, ADD, SEPERATER, SUBTRACT, DIVIDE, F1, F2, ..., F12, DELETE, NUM LOCK, SCROLL LOCK, PRINTSCREEN, INSERT, HELP, META, BACK QUOTE, QUOTE, FINAL, CONVERT, NONCONVERT, ACCEPT, MODECHANGE, KANA, KANJI. (#5037)
  • Some processes will occasionally produce an error when data is stored in an Oracle table: The text of the error message is: ORA-00907: missing right parenthesis This error is triggered when you invoke a process whose PCF is constrained, and the constraints cover a prefix of an alpha field (without constraining the entire field). (#5050)
  • Under release 4.0.9, restructuring a table stored in Oracle will fail. The restructure goes through the normal phases: Create a temporary table Copy records from the original table to the temporary table Drop the original table Rename the temporary to the original name But the 'rename' fails - leaving the records in the temporary table. The logfile shows that the 'rename' step fails because of garbage where the temporary table name should be. This problem has been fixed for release 4.0.a. (#5052)
  • Some alpha fields (particularly 15 byte alpha fields) can cause random crashes when using AppxODBC. This problem has been fixed for release 4.0.a (#5058)
  • When using AppxODBC, date fields are retrieved incorrectly. Some fields contain today's date, others display random values. This problem has been fixed for release 4.0.a (#5059)
  • Some versions of asql produce invalid column names - the column names contain many underscores and usually end with invalid data. This problem has been fixed for release 4.0.a (#5060)

Designer

  • Release 4.0.a includes some interim transaction processing functionality for data stored in the Oracle RDBMS.

Enhancement

  • Scanning in the ILF editor now scans on the correct field. Before, it sometimes scanned on the application ID instead of the field name. (#4568)
  • In the current java client, to select a different record from a scrolling list or to select a scan record from a scan list only requires a single click. A double click on a different record in a scrolling list will reselect that record and also act as if RETURN had been pressed on that new record. (#4637)
  • The current java client now has the same keyboard timeout feature that was introduced into the unix terminal sessions in a previous release. (#4712)


Microsoft, Windows, Windows Server, Windows Server 2000, Windows Server 2003, Windows Vista, Windows XP, Windows 7 and Microsoft SQL Server are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.

APPX 4.0.9

Important Notes

  • Using the ILF Browse feature (Option 94) in an event point to jump to another process has been corrected. (#4940)

Designer

  • Using the ILF Browse feature (Option 94) in an event point to jump to another process could cause ILF statements in the first event point to be lost when the statement editor was exited. This appears to have occurred only in event points where token fields were referenced. This has been corrected. (#4940)

APPX 4.0.8

Important Notes

  • Releases 4.0.6 and 4.0.7 do not show here. They were very limited intermediate releases that included preliminary work on ECR 4911 which deals with some licenses server fixes. The results of these intermediate releases are included in the 4.0.9 patch.
  • The changes between release 4.0.5 and 4.0.9 are all APPX executable changes only. So, to upgrade from release 4.0.5, you do not need to do a complete install. Only install the new executable file.
  • As of 4.0.8, you can again enter all zeroes into a hh-th (ie, time) field without getting the message "value out of constrained range". (#4802)
  • Two dates on the Disposition screen were not appearing with a century component. These dates are the Print Spool Date and the Background Submit Date. This has now been fixed. This fix is not included in the 4.0.8 installation files. Customers needing this fix should upgrade to a more current release. (#4889)
  • The client/server network protocol will now detect network disconnects more reliably. (#4908)
  • The license server in release 4.0.8 should be more reliable. A bug was found and corrected in AppxIO which seems to be specific to the license server. (#4911)

APPX 4.0.5

Designer

  • Change All References of a File could give strange results as far as changing the File itself (not the references to it), if both the "From File" and the "To File" already existed. The File Name itself will now only be changed if both of the following conditions are met: (#4815)
    • From App Id & To App Id must both be equal to the Source App Id.
    • The To File must not already exist.

External

  • The Query process generated by the SQL application contains ILF code in the PRE USER SELECT event point for "Calculations" defined in the SQL query. This ILF code was missing the OVERFLOW statement necessary to handle overflow situations and could thus result in the Query process crashing rather than handling the overflow. This problem is corrected in release 2.1 of the APPX SQL application, which is distributed with 4.0.5. (#4795)

APPX 4.0.4

Run-time

  • An INPUT Process Optional Child's Post-Invocation executes differently in 4.0 than in 3.5. It appears that this difference occurs when an optional child has Pre-Invocation and Post Invocation ILF exits, but no actual optional child process. This has been corrected. (#4788)
  • Processing the DD by using the option available on the "Design File Management" menu did not always actually process the files. This has been corrected. (#4810)

APPX 4.0.3

Run-time

  • Pressing SCAN from within Scan's "Select File" or "Select Path" processes would result in an infinite loop. (#4780)

APPX 4.0.2

Important Notes

  • APPX 4.0.2 is shipped with default language translation files. If you have modified these files, you will need to back them up before installing this release and restore them when the install is done. These files are in the $APPXPATH/0SA/Data/ directory and are DICTNARY.* LANGUAGE.* and XLAT.*.
  • APPX 4.0.2 has a new file that must be created for the SCAN option to work right. If you are doing a fresh install, then this file is created automatically. Otherwise, you will need to Create System Administration files to get the new file created.
  • Under APPX for Windows®, a RUN statement would spawn a Windows task that would run in parallel with the main APPX runtime thread. (APPX for Unix waits for the RUN to complete, before resuming execution.) RUN (under APPX for Windows) now uses the same syntax as the DOS "start" command. RUN now honors a "/w" switch, which waits for completion of the RUN object, before resuming mainline execution.

    Also, if /w is set, --- RETURN CODE will be set to the exit status of the program executed. (#3220)

Run-time

  • Release numbers (stored in the application's PARAM file) are now visible from the popup detail window in the System Administration, Applications file. This allows the release number to be viewed for applications where the site does not have Application Design rights (such as the APPX 0app applications). (#4709)
  • When there are multiple files to Scan from, the logic to select one has been improved over that which was in 4.0.
  • User selection of file to scan and access path to use are now remembered in a permanent scan preferences file. These selections will be recalled and used as appropriate when the user scans on the same item in subsequent sessions. Note that changes to the process will cause these preferences to become obsolete and default selections will then be made.
  • If 4.0.2 is installed as a new installation, the System Administration file, SCANPRF, will be created automatically. If 4.0.2 is installed over an existing APPX installation, you will have to manually create this file. (#4710)
  • There is now an option in "Database Management" so that the following screen reporting data file errors can be remedied more conveniently.

    • "System Directory Record is Missing"
    • "File Does Not Exist"
    • "Restructure Required"

There remains a bug which will sometimes prevent the "Database Management" feature from running properly. If this occurs, running "Database Management" in the regular manner and selecting the file, should permit the necessary operation to run. (#4743)

  • When SCANning on an Alternate Index, one could generate an: "Internal error has been detected, proceed with caution!" message. This was fixed in the 4.0 SCAN rewrite. (#4747)
  • 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)
  • A drop down token scan box in the Java client now has a "--Select Path--" item included to provide for changing access paths. (#4763)
  • When scanning from query select records and then using option-2, "Select Path", selecting an access path often resulted in the wrong one being selected. This has been corrected. (#4764)
  • As an aid in tracking down USAGE file locking problems, for release 4.0.2, you can set APPX LS LOG=filename and APPX LS DBG=0x10 to cause Appx to log client-side locking operations to the given log file. (#4770)

Designer

  • After completion of various database management functions (create files, verify integrity, verify files, etc.), a log can be produced with option-1. This log would sometimes incorrectly display the Application ID. It also did not include the Database ID. (#4700)
  • If you create design files for an application and then immediately attempt to import the design files, you would not be able to import the PROCESS file. You would receive the error "File is Not Closed". This has been corrected. (#4701)
  • In Database Management | File Specifications, "FMS Controls" and "Optional Path" could be improperly modified when executing the option "Restructure Files". This has been corrected. (#4741)

Enhancement

  • The unix command, "kill -USR2 (pid)" can now be used to interrupt an APPX session. The APPX session will receive it as a "Direct Process 1" signal. This can be trapped for in Option Intercept and acted on accordingly. Previously, this technique worked only on BSD-based systems (such as HP-UX). It should now work on all Unix Systems.


    Previously the receiving process would act on the Direct Process 1 signal only after the user would next hit a key. This has been changed. It will now act on the signal whenever APPX is awaiting keyboard input without requiring the user to hit a key. (#4017)

External

  • As of release 4.0.2, it is no longer necessary to double-up backslashes in a RUN statement. A backslash now only has special meaning if it immediately precedes a dollar sign, "$". Without a preceeding backslash a "$" is an indicator of a substitution in the RUN command string based on a PASS statement. A backslash preceeding a "$" tells APPX not to do a substitution but to allow the "$" to remain in the RUN command string. (#3315)
  • When installing 3.5.2 for Linux, you would get upon startup:


    Error Opening Terminal: vt220

    Fixed in 4.0. Under 3.5, you can set up a symbolic link from /usr/lib/terminfo -> /usr/share/terminfo by performing the following as root:

    cd /usr/lib; ln -s /usr/share/terminfo terminfo (#4585)



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.

APPX 4.0.1

Run-time

  • APPX will now only attempt to lookup and display user IDs for record locks if the track locks FMS control is set for the file. (#4604)
  • 4.0.0 for Windows® required three DLLs (MFC42D.DLL, MSVCRTD.DLL, MFCO42D.DLL) in order to run APPXODBC/ASQL. These are no longer required. (#4676)
  • You can now specify a username and password when defining an AppxNET FMS path. The format of the FMS path name for AppxNET has been modified to: username:password@host:port Valid variations are: username:password@host:port host:port (#4681)
  • If a SCAN was pressed when not in KEY ENTRY mode, it could display a blank screen. If the user exited and pressed SCAN again, it could hang the session and consume large amounts of CPU time, until killed. (#4689)
  • If the enduser SCANned a key segment which had a Data Lookup defined, and that key segment would not ordinarily be editable (but is editable because of being in key entry), the SCAN processor would display a "zero bytes requested" message. (#4692)
  • The byte-order translation logic in AppxNET was incorrect if you were hosting a file on an Intel server and trying to access that file from a RISC client. (#4693)
  • In release 4.0, if multiple dispositions were run in a job, or if a disposition was re-run, it could incorrectly retain a defaulted value and yield the error "Disposition Definition Not Found". Another symptom of this problem was a disposition using a definition record from a previous disposition and not selecting the appropriate one. (#4699)
  • On character mode terminals, keystrokes recorded as a macro are now preserved between APPX sessions. They are retained in the file ".appx mac" in the current directory (the user's current directory when APPX was launched). This feature was added in APPX 4.0 but was not included in the release notes. (#4716)

Designer

  • Converted Speed II applications could have fields in the data dictionary that have user documentation, but the documentation would not show at runtime if HELP was pressed.
  • This fix is to the Synchronize Design Elements process. In order for it to take effect, you need to run this process for each application. This can be found in Utilities | Toolbox | Conversion Utilities. (#2338)
  • Under Windows Presentation Client's APPX SCRIPT OUT, process names are now recorded.
  • This means that a SCRIPT OUT logfile may be copied mid-way through a Windows session, in order to capture what a user does only up to a certain point in an APPX session. It also means that if the APPX session bombs out part way through, the SCRIPT OUT keystroke/process log is not lost. (Remember that the next time you initiate an APPX session, that the prior SCRIPT OUT logfile is initialized.) (#4650)


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.

APPX 4.0.0

Important Notes

  • APPX 4.0 Adds several new and exciting items. Here are a few:
    • Complete Language Translation tools
    • New and Improved Scan Processor
    • New Java GUI Features like Data Palettes, Icon Buttons, and Frames
    • Hook Override Processes
    • A new and Improved Disposition process
    • CNV TEXT statement enhancement
    • New REFRESH statement

Run-time

  • Scan functionality has been added to the Record Selection screen when running a query process. Fields that are scannable are as follows:

    (#1796)

    • Key fields in the PCF will scan the PCF.
    • Fields in the PCF with a data dictionary defined data lookup will scan the data lookup file.
    • Token fields and fields with a validation table defined will scan the defined table.
  • Several option keys (such as SELECT) would cause strange behavior if pressed while help text was being displayed. This has been corrected. (#4125)

  • The DISPOSITION process has been redesigned for release 4.0. Some of the changes are: (#4347)

    • More fields have been added to the screen. Not all of them are used by APPX, but some are passed through for use by either print spoolers or background job schedulers.
    • Disposition Definitions are now supported. These provide designers with greater control over dispositions. These can be found on the "Configuration" menu in "System Administration". See help text there for more info.
    • End user creation of and optionally selection of Disposition Definitions at run time is supported.
  • The Scan process has been redesigned for release 4.0. Some of the changes are:
    • Scan won't automatically prompt for "selecting a file" or "selecting an access path". It will take you directly to the Scan screen. Both of these functions are available as options from there.
    • The value in the field before hitting SCAN will be respected as the starting value for listing records from the Scan file.
    • On the scrolling Scan screen, up to the first 2 fields of the current access path are available at the top of the screen for re-specifying the starting value. Entering a value here and pressing Enter will cause a new batch of records to be displayed. If the access path contains more than 2 fields an optional child is available to enter the starting value.
    • In Java client a drop down scan box will contain a "--Select File--" item if the field is also part of another possible Scan file (PCF for instance).
    • In Java client a DLU scan where the DLU file contains only 1 Descriptive field will be displayed in a drop down box. An "--Edit List--" item will be included to launch the Scan File's default process.

    (#4397)

  • When attempting to run the Y2K utility under APPX 3.5 Windows®, you could get: "Cannot write to cache - invalid prototype record length." (#4410)
  • APPX 4.0 introduces language translation capabilities. This permits the APPX design environment as well as end-user developed applications to be viewed in multiple languages. Some of the highlights are:
    • Applications are designed and maintained in a "base" language.
    • Includes utilities for maintaining a dictionary of words and phrases for each language.
    • Includes utilities for populating the dictionary with words and phrases which occur within an application. The dictionary is also dynamically populated at run time.
    • Allows easy translation of words and phrases in the dictionary from one language to another.
    • Translation exceptions, associated with specific design elements, can be specified. They are used instead of the dictionary translations.
    • While designing, images can be "previewed" in other languages.
    • Stores separate em's for each runtime language. Most of the translation is stored in the em. Messages and dynamic text are translated at run time.
    • At run time the application will display in the language specified by defaults at the "System", "Database", "Database/App", or "User".
    • Allows a designer to specify a change of language for a process by using the PDF, NEXT LANGUAGE ID.

    (#4471)

  • The CNV TEXT statement is now bi-directional. Previously you could convert a non-alpha field to display format by specifying an alpha-field as the destination operand and a non-alpha field as the source operand. You can now reverse the operation (i.e. convert from a display-formatted alpha into a non-alpha) by reversing the operands.


    Also, CNV TEXT will now operate on an entire record. This can also be done bi-directionally. (#4474)

  • A "Hook" file has been added to the "System Setup" menu in "System Administration". Active records in this file will cause APPX to override a process name at run-time. The structure of the record permits a Hook record to be in effect for a specific user, if desired. Note that if any changes are made to this file, they will not become effective until APPX is restarted.


    One possible use of this feature would be to create a Hook record which would invoke a customized disposition process instead of the process --- DISPOSITION. Thus the customized process could be invoked without requiring changes to all the jobs where --- DISPOSITION is specified. (#4487)

  • In the first 4.0 beta, scanning for a process name from within the ILF editor would bring up a popup scan screen, but the underlying ILF editor screen could still have active modifiable fields. This has been corrected for the second beta. (#4559)

  • Enhance the Java GUI interface to provide support for Checkboxes, Frames, Icon Buttons, Client/Server file transfer and client side command execution. This has all been introduced with release 4.0. See the readme file that comes with the Java Client for more details. (#4586)

  • Option Help was not always being displayed for application versions other than 00. This has been corrected in the second beta. (#4591)
  • When trying to write a record which has a unique alternate key, if the alternate key was already on file, the write would fail. However, it was possible for APPX to allow the primary key value to remain in the index, thus corrupting the index. This has been corrected. (#4623)
  • The Predefined Fields, MI and XI were incorrectly being modified by a user selecting SCAN. This has been corrected in the second beta. (#4625)
  • After returning from an optional child, it was possible using ILF code to introduce a situation where another user could obtain a hold on the PCF record and the input process would not detect this. This has been corrected in the second beta. (#4633)
    • If you use AppxODBC and MS Access, Access would display "#Deleted#" for all fields whenever it tried to access a record held by another user. This has been corrected in the second beta. (#4635)

    Designer

    • A file being downloaded from VS to APPX platform (particularly via Lightspeed) can have trailing spaces truncated, giving the transfer file variable lengths.
    • Our import buffer was not being cleared, allowing prior records to overlay subsequent records. This buffer is now being cleared between logical records. (#3000)

    • The "Default Value" field has been added to the Additional Attributes popup for Text fields. (#3091)

    • In APPX for Windows, from the ILF editor, if you attempted to 4)Search for a text string, the modifiable field into which you entered the text was not viewable. This field and the rest of the status area can now be correctly seen by expanding the window downward with the mouse. This was added in the second beta. (#3536)
    • In the Data Dictionary Fields editor, Additional Attributes, there's a hidden option 88 that is used to edit the full "Default Value" field. The one that's showing is not the full size. If the default value was changed by using this option, it did not work properly. This has been corrected. (#4270)
    • When adding a SYNONYM field to a file it sometimes incorrectly displayed a format. This could also happen when adding a GROUP HEADER field. This has been corrected. (#4391)
    • Fields or Domains of type FORMAT that had a validation table defined, did not have the ", Tbl" indicator appended to the format string. (#4396)
    • If you have the right to Design a locked application this now implicitly also includes the right to Debug that application. (#4398)
    • The screens used to add/edit items on images have been changed from full screen to smaller, boxed screens. (#4469)
    • The "Process Generation" utilities have been enhanced as to how they generate DLU's that are coded in the data dictionary.
      • DLU's on a field coded to itself will not be generated. This situation occurs if the DLU is coded at the domain level.
      • DLU's on a field coded to the same file will be generated with the "Read Record" field set to "N".

      (#4488)

    • There have been some converted Speed II applications that after conversion to APPX contain some date fields with invalid default values. The fields were not to have a default value, but incorrectly had 16 zeros instead of blanks in the initial value field. This situation does not generate any errors, but can cause comparisons to incorrectly fail. This can affect IF statements and Query record selection processing, producing incorrect results.


      The Orphan Detection utilities for Domains and for Fields will detect and fix these invalid initial values. Error messages will be generated on the printed listing. This will then require the Data Dictionary to be processed to complete the repair. (#4493)

    • If you ran Change All References to change a process name to the exact same name, but in another application, the change was not being made in Child process records. This has been corrected. (#4494)
    • Change All References of a Process was being too aggressive as far as changing the process itself (not the references to it). The process itself 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 process must not already exist.

      (#4495)

    • For some time APPX has allowed the specification of a negative number as the "Row Position" of a Frame. If the row position was negative, APPX would base the placement of the frame on it's size and the number of rows on the terminal. The actual negative number itself was not respected, it simply indicated that the frame would be positioned based on the frame size.
      This has been slightly changed in release 4.0. The negative Row Position will now itself indicate the starting position for the frame on the screen, relative to the last row available. Thus the last row is zero, the next to the last row is -1, etc.

    • A report has been added to the Source Analysis Menu to assist in finding any frames affected by this change.

      See ECR #3298 for more information on designing scrolling input processes that can be utilized with different numbers of rows available on the terminal. (#4506)

    • The ILF statement "REFRESH" has been added. It is similar to the "MESSAGE" statement in that it displays a message to the status line. The difference is that the REFRESH statement refreshes the screen immediately. Thus it can be used from within output or update processes to display in progress type information to the user. (#4519)
    • Only the first 30 characters of the "Path" field in System Administration's "File System Groups" editor was available. The full field is now accessible from the option "1-FMS Controls" in that process. If an entry is made in the Path field which extends beyond the first 30 characters, then the field will be protected on the scrolling screen. (#4543)
    • If duplicate area numbers existed for work fields, the recommended fix included processing the data dictionary. There was a bug which required this step to be run twice to insure that the duplicate area numbers were repaired. This has been corrected in the market release of 4.0. (#4569)
    • On Windows, the "-date=CCYYMMDDhhmmssth" option (SUBMIT DATE) was not being properly passed to appx submit. This has been corrected. (#4577)
    • When design transferring processes, if you keyed in only a process name and pressed enter, then entered additional info to transfer a frame or an image, the destination process could have all of it's frames/images deleted. This has been corrected. (This fix is in the 2nd beta.) (#4579)
    • The ILF statements, UPDATE, JOB, INQUIRY, STATUS, and TIMEOUT were not being handled correctly by the Change All References utility.
    • The ILF statements, COLOR and PICTURE, were not being handled correctly by the Change All References and by the Cross Reference utilities. (#4645)

    • Converting a 1.8.x app directly to 3.3, 3.4, or 3.5 would result in problems with local domains. However, an intermediate conversion to 3.2.x, then to a later version would work fine. This problem has been corrected in the 4.0 market release. (#4648)

    Enhancement

  • The ability to create a dynamic key can now be removed by setting the environment variable APPX DISABLE DYNAKEYS.
    • Also, since creating a dynamic key on a large file can take considerable time, a warning will be displayed if one is being created once 1,000 records have been processed. At this point, the user can continue or cancel the creation of the dynamic key. The number of records at which the warning will be displayed can be overridden by setting the environment variable APPX DYNAKEY PROMPT=xxx (where xxx is a number of records). Note that the warning is only displayed once per creation of the key. In other words, it's not every 1,000 records, but once at the thousandth record. If the user elects to continue, no further warnings will be given. (#4202)

    • Option-94 is now implemented as the "ILF Browse" key in the ILF editor. The following list identifies the behavior based on cursor position.
      Cursor Positioned On Jumps to the Corresponding
      GOTO, GOSUB (without App Id) LABEL
      BEG LOOP, BEG READ END LOOP, END READ
      END LOOP, END READ BEG LOOP, BEG READ
      SUBR, COPY, GOSUB (with App Id) Subroutine Process
      Process Stmts (INPUT, OUTPUT, JOB, etc.) Process
      Field Name Field Definition
      File Name File Definition
      Any Other Statement Specified Event Point

      Jumping within an event point works like a stack, pressing PREVIOUS IMAGE will take you back to where you came from. If you jump into another process, recursive ILF editing is supported. (#4626)

    • On Windows, or the Win 32 client, on a scrolling input process if you made an entry in the last editable field on the image so that the field is filled up, the cursor may not have been retained on the same line. When Enter was pressed the changes could be lost unless the cursor was repositioned.


      There is a new option on the "Appearance" menu, "Automatic Tab Out". If this is not checked then after filling up a field the cursor will not automatically tab to the next editable field. After the field is completely filled, it will tab with the next keystroke. Note that this is the new default behavior.

      If this is checked, the old behavior is retained.

      AutoTabOut is remembered in the appx.ini file for each user. (#4642)

    • The "Login Information" screen of the Win32 client now has a drop down box which contains the last 10 remote hosts which were connected to. (#4643)

    See also Java Client 4.0 Release Notes.



    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.

    APPX Client 4.0.0

    There are many new features in this release that you can use to make your applications much more graphical. There are also a few performance enhancements to reduce the amount of work the client must perform to process your application specifications.

    Now for what you have been waiting for. The list of new features:

    Performance

    This Java client was written to use the Sun Java 1.2 standard. This is a much more stable Java version and is supposed to have better performance. Also, some effort has been made to minimize some of the screen painting we are doing. There is an option to compile our Java client directly down to native Win32 EXE code, but the compiler has not been released for the Java 1.2 standard yet. We have tried it with the older Java 1.1 code we had and it made a noticeable improvement. As soon as this compiler is available for the Java 1.2 environment, we will compile it and make it available.

    More keyboard keys implemented and clipboard integrated

    More of the basic edit keys are now implemented for Insert/Delete/Copy/ Paste, etc. Also, the copy/paste keys CTRL+C and CTRL+V use the Windows® clipboard.

    Fields painted a little better

    Multiline fields like Text fields are now painted as one field region instead of a bunch of one-line fields. Also, logic edit fields are painted as tri-state logic fields. The three states are:

    Blank Checkbox = Default value

    Green Checkmark = Yes

    Red X-Mark in Box = No

    If NULL OK? on the field is N, then clicking on the field will cycle past blank and only cycle to a Yes or No indicator. You can still use the keyboard just like before: you can press SPACEBAR to blank it out, ‘Y’ to set it to true or ‘N’ to set it to false. The Y and N are driven by the language currently selected on the server. So, if you are using another language that does not use Y/N, it will work with whatever letters are mapped to a Yes and No state by that server language file. Any time the server changes languages, the new indicators are automatically loaded into the client.

    File Xfer and Client Side Run

    Now, from ILF code on the server, you can push files to the client, pull files from the client, and run a command line on the client.

    Sending a file to the client

    You can send a file to the client with a CALL command. If the destination filename is left blank, the client will open a dialog file browser so the use can place and name the file themselves. The value they select will be returned to the server and placed in the destination field. If the destination path is relative, it will be relative to the location of the Java Client JAR file location. While the file is in transit, the client will show a progress slider and the APPX session will wait until the file transfer completes before returning fron the CALL statement. The T/F indicator will tell you if the transfer completed OK or not.

     SET 1EX WORK SOURCE = C:REGO.TXT SET 1EX WORK DESTINATION = REGO99.TXT PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0

    Pulling a file from the client

    You can pull a file from the client with a CALL command. If the source filename is left blank, the client will open a dialog file browser so the user can pick the file themselves. The value they select will be returned to the server and placed in the source field. If the source path is relative, it will be relative to the location of the Java Client JAR file location. While the file is in transit, the client will show a progress slider and the APPX session will wait until the file transfer completes before returning from the CALL statement. The T/F indicator will tell you if the transfer completed OK or not.

     SET 1EX WORK SOURCE = SET 1EX WORK DESTINATION = /tmp/upload.txt PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_RECV_FILE RESIDENT? Y END? N FAIL 0

    Running a command line on the client

    Using a version of the RT_LOAD_URL call, you can run a complete command line on the client machine. This is done by starting the command with the ‘@’ symbol. This means run the command as is, at the client. This examples will take the results from the previous SEND and run Notepad against it on the client.

     SET --- TEMP 80 = @NOTEPAD.EXE APPEND --- TEMP 80 1 1EX WORK DESTINATION SET --- LI = 80 PASS --- TEMP 80 FIELD SHARE? Y PASS --- LI FIELD SHARE? Y CALL ,RT_LOAD_URL RESIDENT? Y END? N FAIL 0

    Example

    This example will download a print file and a print config file to a client and run winprint on the client to print the file. This assumes that the client already has a copy of winprint.exe in the same location as the JAR file or in the active PATH.

     SET 1EX WORK SOURCE = /tmp/PRT0001 SET 1EX WORK DESTINATION = PRT0001 PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0 * SET 1EX WORK SOURCE = /tmp/PRT0001.cfg SET 1EX WORK DESTINATION = PRT0001.cfg PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0 * SET --- TEMP 132 = @WINPRINT.EXE APPEND --- TEMP 132 1 -config=PRT0001.cfg APPEND --- TEMP 132 1 PRT0001 SET --- LI = 132 PASS --- TEMP 132 FIELD SHARE? Y PASS --- LI FIELD SHARE? Y CALL ,RT_LOAD_URL RESIDENT? Y END? N FAIL 0

    Image Editor Enhancements

    When painting an image in the image editor, you have some new tools to help you along. There are Data Palettes you can use to browser files and fields, and to drag fields onto you image editor session. You can double-click on a field to open its attributes page. You can right-click on a field to get a helper menu to perform tasks like Move, Edit, and Delete. You can now draw boxes and lines similar to how you already paint inverse, underline, and bright. You can use the PICTURE ilf command to define free-sizing pictures on the screen as well as IconButtons that execute APPX Options. Let’s look at these one at a time.

    Data Palette

    While in the Image Editor, the pulldown menu option for Data Palette is available. When you select this menu option, APPX will open up a tree control in a floating window that you can use the browse Application/File/Field/WorkField names. You can drop fields from this list and drop them on the image editor session. APPX will automatically add these fields to the image. You can then edit the fields to override the default attribute settings. You can open more than one data palette concurrently.

    Note: The Icons used to show the different file and data types are just snagged from the windows icons. If anyone has any good ideas for icons, please feel free to contribute.

    Mouse Options

    There are some new mouse controls in the Image editor.

    If you double-click on a field in the editor image, APPX will select the field with the cursor and open the attributes overlay for the field.

    If you right-click on a field in the image editor, you will get a popup helper menu from which you can select Move, Delete, or Edit.

    Line/Box Drawing

    Like using Option13 to paint special attributes on the image, you can use option14 to paint box/line attributes. The boxes will also show on a character terminal as a single line border. If a box is defined as one row or one column in size, it will paint as a line. When using the Java client, there are several types of styles you can select: Plain Line, Bevel, and Etched. The Plain Line can be thin or fat. The Bevel can be set to Raised or Lowered to make the area inside the box appear higher or lower than the surrounding area. The Etch can bed set to Raised or Lowered to make the etched line look like it is carved into the background or embossed and bulging our from the background.

    If you type some text in the area that will form the top line of the box before defining the box, the text will be picked up as the box label and will be incorporated in the top edge of the box.

    Note: This is one place that you might get some errors in the Image Editor while trying to define some boxes. Please report what you get so we can make sure we get and many issued fixed here as we can.

    Auto-Sizing Pictures

    If you define a field on an image and make it a picture, the data placed in the field to define the source of the picture does not have to be completely visible on the window. We are no longer screen-scraping the picture pathname. It is now being pulled from the server memory. So, you can paint a real small field with a real long pathname. If you paint a field as small as 1 character cell in size, the Java Client will use that cell as the anchor for the upper/left corner of the picture an will let the picture determine it’s own size based the its content. A picture painted as two or more character cells in size will resize and reshape the picture to fit the defined screen area.

    Note: At some point, there will be an option to have the picture resize to fit, but keep the same X to Y aspect ratio. Currently the image can get squashed if the screen size needed does not match the aspect ratio of the image.

    IconButtons

    As an initial method of defining IconButtons on your images, we have enhanced the parser for PICTUREs so that if the contents of the PICTURE field contains special keywords, instead of painting a picture, APPX will create an IconButton. You can use the keywords to set the attributes of the IconButton. Currently, there are 24 attributes you can set. This is done by appending all the keywords and data together into the PICTURE field. Buttons painted one cell tall and wide will autosize themselves based on their contents. Buttons painted bigger than one cell will force the button to fit the screen area.

    Here is a list of attributes and examples:

    @SAC={option#}

    setActionCommand() - This is set to the numeric value of the APPX option key that should be sent when the button is clicked.

    The following will send an APPX option 33 when the button is pressed:

    @SAC=33

    @STTT={some text}

    setToolTipText() - This is set to a text value that will show up as the tooltip for the button.

    The following will set the tool tip text for a button:

    @STTT=This button will run a report

    @SBC={colorIndex#}

    setBackgroundColor() - This will set the background color of the button a one of 15 predefined colors. The color index is:

    1. Black
    2. Blue
    3. Cyan
    4. Green
    5. Magenta
    6. Red
    7. Yellow
    8. White
    9. Dark Blue
    10. Dark Cyan
    11. Dark Green
    12. Dark Magenta
    13. Dark Red
    14. Dark Gray
    15. Light Gray

    The following will set the button background color to Red:

    @SBC=6

    @SFC={ColorIndex#}

    setForegroundColor() - This will set the foreground color for the text of the button to the selected color. The same color index number apply here as defined for the @SBC keyword.

    The following will set the button foreground color to Yellow:

    @SFC=7

    @SF={FontName,Style,Size#}

    setFont() - This will set the font used on the button. You can select a valid Java font face, Style, and Size. Case matters.

    Valid Faces: Dialog, SanSerif, Serif, Monospaced, Helvetica, TimesRoman, Courier, DialogInput, ZapfDingbats.

    Valid Styles: BOLD, ITALIC, PLAIN

    The following will set the button font to Helvetica, BOLD, 18 point:

    @SF=Helvetica,BOLD,18

    @SI{IconPathname}

    setIcon() - This will set the normal icon for the button. THis can be a URL or actual pathname. This must be from the perspective of the machine running the Java Client.

    The following will set the default Icon for the button to a Smiley loaded from a mapped server drive:

    @SI=X:iconssmiley.gif

    @SRE={T/F}

    setRolloverEnabled() - This option will turn on/off Rollover Icon triggers. This usually does not need to be set since setting the RolloverIcon automatically turns on this option.

    This will turn on Rollover processing:

    @SRE=T

    @SRI={IconPathname}

    setRolloverIcon() - This will set the icon image shown when the mouse pointer rolls over the button. This also sets the @SRE=T automatically.

    This will set the rollover icon for the button to a happy smiley loaded from a web server machine:

    @SRI=http://server/icons/happySmiley.jpg

    @SDI={IconPathname}

    setDisabledIcon() - This will set the Disabled Icon image for the button. This image is shown when the button is disabled.

    This will set the disabled icon to a stop sign from a location relative to where the client ran from:

    @SDI=icons/stopSign.gif

    @SRSI={IconPathname}

    setRolloverSelectedIcon() - This will set the Icon shown when the mouse rolls over the button and the button also has the selected focus.

    This will set the button icon to a perspiring smiley when the button has the selected focus and the mouse rolls over it:

    @SRSI=icons/smileyNerves.jpg

    @SPI={IconPathname}

    setPressedIcon() - This will set the icon shown when the button is pressed.

    This will set the pressed icon to a screaming smiley:

    @SPI=icons/screamingSmiley.jpg

    @SSI={IconPathname}

    setSelectedIcon() - This will set the icon shown when the button is selected with the active focus.

    This will set the selected icon image to a smiley with sun glasses:

    @SSI=icons/coolSmiley.gif

    @ST={some Text}

    setText() - This will set the text label of the button.

    This will set the button text to “Press Me”:

    @ST=Press Me

    @SS={T/F}

    setSelected() - This will select or deselect the button focus when the button is shown on the window.

    This will se the active focus in this button when it is painted:

    @SS=T

    @SBP={T/F}

    setBorderPainted() - This will turn on or off painting of the button border. This can be used with the option to make the background transparent if you want to use the icons as the only indication that there is a button. This can be used to make you button act like an icon on a web page that shows only the icon, and different icons as the mouse rolls over them.

    This will turn off painting of the border around our button area:

    @SBP=F

    @SFP={T/F}

    setFocusPainted() - This will turn on or off painting of the hasFocus indicator for the button.

    This will turn off the focus indicator on this button:

    @SFP=F

    @SE={T/F}

    setEnabled() - This will determine if the button is enabled to be clicked.

    This will disable the button so it can not be clicked.

    @SE=F

    @SCAF={T/F}

    setContentAreaFilled() - This will turn on or off filling of the button background area. If this is turned off, then the button background will be transparent. Use this along with setBorderPainted() to make buttons that have not background or border.

    This will make the button have a transparent background:

    @SCAF=F

    @SHA={CENTER/LEFT/RIGHT/LEADING/TRAILING}

    setHorizontalAlignment() - This will set the overall alignment of the contents of the button within the button area. The contents include the icon and the text.

    This will force the contents of the button to be left justified:

    @SHA=LEFT

    @SVA={CENTER/TOP/BOTTOM}

    setVerticalAlignment() - This will set the overall alignment of the contents of the button within the button area. The contents include the icon and the text.

    This will force the contents of the button to the top of the button:

    @SVA=TOP

    @SHTP={CENTER/LEFT/RIGHT/LEADING/TRAILING}

    setHorizontalTextPosition() - This will set the position of the text in relation to the icon.

    This will set the text so that it shows to the right of the icon:

    @SHTP=RIGHT

    @SVTP={CENTER/TOP/BOTTOM}

    setVerticalTextPosition() - This will set the position of the text in relation to the icon.

    This will set the text so that it shows below the icon:

    @SVTP=BOTTOM

    @SM={top#[,left#[,bottom#[,right#]]]}

    setMargins() - This will set the extra margin space between the contents of the button and the border of the button. You can specify one, two, three, or four arguments. This is in pixels. Any unset arguments default to the values of the arguments that are given.

    This will set the top margin to 10 pixel, The other three margins also default to the same 10 pixels:

    @SM=10

    This will set the top margin to 10 and the left margin to 20. The bottom margin will default to the same value as the top margin. The right margin will default to the same value as the left margin:

    @SM=10,20

    This will set the top margin to 10, the left margin to 20, and the bottom margin to 30. The right margin will default to the same value as the left margin:

    @SM=10,20,30

    This will set all four margins:

    @SM=10,20,30,40

    @SMN={acceleratorLetter}

    setMNemonic() - This will set the accelerator letter on the button.

    This will set the Accelerator letter on this Edit button to ‘E’:

    @SMN=E

    Examples

    Both of these buttons will send an Option12 when pressed:

    Create a new button that has text that is painted with red letters:

    @SAC=12@ST=Press Me@SFC=6

    Create a button with an Icon, rollover Icon, and no border or background:

    @SAC=12@SI=icons/normal.gif@SRI=icons/rollover.gif@SBP=F@SCAF=F

    Advice: start simple and build. Most of the defaults may be what you would want anyway. Only set attributes to change away from the defaults. Setting an attribute that would have defaulted correctly anyway, just increases the amount of data sent to the client.



    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.

    Topic revision: r4 - 08 Oct 2026, AdminUser - This page was cached on 08 Oct 2026 - 12:21.

    Powered by Foswiki. Wiki content belongs to its contributing authors.