APPX 6.0.0 Features


Overview

The most significant change in this is release is support for a Unicode data type. From Wikipedia: Unicode is a computing industry standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The latest version contains a repertoire of 136,755 characters covering 139 modern and historic scripts, as well as multiple symbol sets. The Unicode Standard is maintained in conjunction with ISO/IEC 10646, and both are code-for-code identical. The addition of Unicode will you to develop APPX applications to run in any language.

'UNICODE' is a new storage attribute for Alpha and Text fields. You can change this attribute, restructure the file, and APPX will accept Unicode data in that field. Although you may see some references to a NATIONAL encoding type, it is not implemented in this release. When storing the data in APPX/IO, APPX uses the UTF-32 format, which requires 4 bytes for each character. When printing Unicode data in a non PDF report or reading/writing a stream file, APPX uses UTF-8. The UTF-8 standard uses 1 to 4 bytes per character. It was designed for backward compatibility with ASCII. The first 128 characters of Unicode, which correspond one-to-one with ASCII, are encoded using a single octet with the same binary value as ASCII, so that valid ASCII text is valid UTF-8-encoded Unicode as well.

Printing Unicode characters in a PDF document is handled by the inclusion of the DejaVu Font library. This is an open source font collection designed for greater coverage of Unicode, as well as providing more styles. Since there are over 1 million possible Unicode characters, not every font family can print all the characters. You may need to source a different font library if your target language is not fully supported in DejaVu. APPX provides a way for you to override the default fonts. The fonts will be embedded in the PDF document and will display regardless of what fonts the user has on their desktop.

Transcoding is the act of converting to or from Unicode. APPX handles this for you automatically, however, if you move a field containing Unicode data to a non Unicode field and the Unicode data cannot be transcoded to the target encoding, a runtime error will occur. This is similar to an overflow condition with a numeric field. We do not want to simply continue, as you have lost data in this case. There are also APIs for transcoding that give you more control.

Various fields in APPX System Administration and Application Design have been converted to Unicode. Because of this, System Administration, Application Design and all data files are incompatible between Release 6 and any earlier release. A migration tool is provided to move the System Administration and Application Design files to Release 6.0. All key files must be rebuilt as well. See Upgrading an Existing installation for the details.

Unicode is not accepted everywhere in the System Administration or Application Design files. Only those fields that are 'user-facing' have been changed. For example, Printer Descriptions, Form Descriptions, Field Descriptions, Field Column Headings, are all Unicode. Fields the end user does not see, such as Process Names, File names, etc, are not Unicode. To check if a field accepts Unicode or not, just press Help (F1). The help text will tell you if it is a Unicode field.

Application Design Considerations

All --- TEMP fields are now Unicode. This may have an impact if you are PASSing a TEMP field to an internal or external routine or program. If it isn't expecting Unicode, that may be a problem. A number of --- WORK RAW xx fields have been added, you can use these in place of --- TEMP if you need a non Unicode field.

The new API's have been enhanced to work with Unicode fields, but the older ones have not. You may need to update your applications to use the newer API's, ie, use --- .STREAM OPEN/READ/WRITE instead of --- STREAM OPEN/READ/WRITE.

Since Unicode fields require 4 bytes per character, the maximum size of an Alpha/Text field is now 1M (1,048,576) characters. The maximum record length for an APPX/IO file remains at 32K, but is not limited when using Oracle or MS SQL Server.

Unicode is not accepted in ILF statements. If you must refer to a Unicode character in ILF, you can use the \uxxxx syntax. For example, to use the ❤ symbol you could use:

      SET --- TEMP 1 = \u2764
DISPLAY --- TEMP 1 (AT APPEARANCE # )

where 2764 is the code point for the ❤ symbol.

If a Group field contains a Unicode field, you cannot SET that group to or from an Alpha field. The process will give an 'Invalid Storage Type' compile error. Similarly, Unicode fields cannot be set into a Group field. This may have an impact on your applications if you are using --- TEMP fields to move data to/from a group, since all --- TEMP fields are Unicode. You can use one of the new WORK RAW fields instead. If a group field contains a Unicode field, it can only be moved to/from another group field.

There are additional considerations discussed in more detail at the end of the Upgrade instructions.

Changes in Release 6.0

Here is a list of the changes in Release 6.0:

Unicode

You can now specify a 'Unicode' encoding type for Alpha and Text fields. This is in the Additional Attributes dialog box:

Field_AA.png

The default encoding type is RAW, which corresponds to US ASCII (ISO-8859-15). If you are not using ISO-8859-15 as your default encoding, then set the APPX_RAW_ENCODING environment variable to tell APPX which encoding you are using.

Unicode fields must be aligned on a 4 byte boundary. When the file is processed, APPX will check this and warn you if you need to add alignment bytes. Simply add a simple alpha field of the designated length in front of your Unicode field. If you have more than one Unicode field in your file, you may have to add multiple alignment bytes.

If the new record length is > 32K, you will get a warning from the Data Dictionary compiler. If you are going to store this file in Oracle or SQL Server, you can ignore this, however, the 32k limit still applies to APPX/IO files.

In order to display or print Unicode data, the field must have GUI Attribute of either a LABEL (non modifiable field or Output) or RAW TEXT. The default font for a LABEL is Arial, which may be noticeable if the other fields are not. You can override the default font to COURIER to use the same font as fields without a GUI attribute.

You also need to consider how this field is used. If it is moved to a non Unicode field (via SET, RECEIVE, etc) that will cause a runtime error to occur if the source field contains Unicode characters that cannot be transcoded. To prevent this, all target fields must also be Unicode and any fields they are moved to, and so on.

New & Revised API's

New Widget fields

New TRAP control

New flag to suppress PDF Dialog box

Jump to process from audit history

Jump to O/C from Button GA

New Font type Resource

New utility to check for dup shortcuts

0LA Output STANDARD MOD LOG and 0LA Input CONFIRMATION (END) in 0LC and can be hooked

Bugs Fixed

Known Issues

APPX/ODBC is not available yet

Performance

Comments:

Read what other users have said about this page or add your own comments.



-- JeanNeron - 2018-02-20

Edit | Attach | Watch | Print version | History: r19 | r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r2 - 2018-02-21 - JeanNeron
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback