CFICU - Unicode and Code Page Support

This Natural profile parameter is required to enable Unicode and code page support for various Unicode settings, for example, if variables with format U or the statement MOVE ENCODED are to be used. It corresponds to the NTCFICU macro in the Natural parameter module.

Possible settings See CFICU Parameter Syntax.
Default setting ON or OFF  Enables or disables the Unicode and code page support.

The default value is OFF when profile parameter CP is set to OFF. Otherwise, the default value is ON.

Dynamic specification yes The parameter CFICU can only be specified dynamically. In the Natural parameter module, the macro NTCFICU is used instead.
Specification within session no  

Notes:

  1. CFICU=ON is enforced when profile parameter CP is set to any value other than OFF.
  2. For further information, see Profile Parameters and Macros in the Unicode and Code Page Support documentation.

The following topics are covered below:


CFICU Parameter Syntax

The CFICU profile parameter is specified as follows:

CFICU=(ON,keyword-subparameter=value,keyword-subparameter=value,...)

Or:

CFICU=ON

Or:

CFICU=(OFF,keyword-subparameter=value,keyword-subparameter=value,...)

Or:

CFICU=OFF

See Keyword Subparameters.

NTCFICU Macro Syntax

The NTCFICU macro is specified as follows:

         NTCFICU ON,                                                   *
               CNVNORM=value,                                          *
               COLLATE=value,                                          *
               COLNORM=value,                                          *
               CPOPT=value,                                            *
               STEPLIB='value',                                        *
               DATITEM=value,                                          *
               LOCALE=value1_value2

Or:

         NTCFICU ON

Or:

         NTCFICU OFF

See Keyword Subparameters.

Keyword Subparameters

CNVNORM | COLLATE | COLNORM | CPOPT | DATFILE | DATITEM | LOCALE| STEPLIB

CNVNORM - Normalization before Conversion

CNVNORM=value activates/deactivates normalization before conversion.

Value Explanation
ON Enable normalization before conversion.
OFF Disable normalization before conversion.

Note:
When CNVNORM=OFF, the MOVE NORMALIZED statement can be used to normalize selected strings.

This is the default value.

Notes:

  1. The German character "ä", for example, can be represented in Unicode as U+00E4 or by using a combining character as U+0061, U+0308. Conversion to a code page considers the combined "ä" (U+0061 U+0308) as two code points and produces an "a" and a substitution character, if U+0308 is no valid character of the target code page. Normalization before conversion creates one code point U+00E4 from the combined code points U+0061 U+0308 and the subsequent conversion will deliver the result "ä".
  2. The parameter is honored whenever a conversion from U to A format is performed, for example MOVE U TO A or DISPLAY U, when the output device is a terminal emulation. The additional operation consumes of course additional storage as well as additional CPU time.

COLLATE - Collation Services

COLLATE=value determines the collation service used.

Value Explanation
ON Use Locale ID and ICU's collation services to compare Unicode strings.

This is the default value.

OFF Use ICU's simple Unicode compare.

Note:
Collation is the process of ordering units of textual information (alphabetic sorting). Collation is usually specific to a particular language.

Examples:

  • The character "Ä" is sorted in German locale between A and "B", but in Swedish locale it is sorted after "Z".

  • In Lithuanian, "y" is sorted between "i" and "k".

COLNORM - Normalization Check of Collation Services

COLNORM=value can be used to enable or disable the normalization check.

Value Explanation
ON Check for un-normalized text.
OFF Disable check for un-normalized text.

This is the default value.

Notes:

  1. Normalization is the process of removing alternate representations of equivalent sequences from textual data, to convert data into a form that can be binary-compared for equivalence. The ICU Collation Service handles un-normalized text properly, producing the same results as if the text were normalized. This maximizes performance for the majority of text that does require normalization. If Unicode data is known with certainty not to contain un-normalized text, then even the overhead checking for normalization can be eliminated.
  2. This subparameter is honored only if subparameter COLLATE is set to ON.

CPOPT - Fast Code Page Conversion

CPOPT=value can be used to optimize the conversion performance.

Value Explanation
ON Use internal translation tables instead of ICU functions, if possible.
OFF Use ICU functions in any case.

This is the default value.

Note:
By default, a conversion from alpha to Unicode format and vice versa is performed by calling ICU functions. Certain code pages are mapping characters to Unicode with 1:1 relationship. In this case, the conversion performance can be increased by using internal translation tables rather than ICU functions.

DATFILE - Additional Data Libraries

The DATFILE functionality is not supported by ICS 311 and is only available with ICS Transition Version 222.

For details, see ICS 311 and ICS Transition Version 222 in the Unicode and Code Page Support documentation.

DATFILE=value can be used to define the name of an optional ICU data library.

Value Explanation
1 - 8 characters or OFF The name of the ICU data library.
OFF No additional ICU data library is defined. The default ICU data library is used, which is part of the ICS module (see the Unicode and Code Page Support documentation).

This is the default value.

Notes:

  1. The ICU data library must be eligible for dynamic loading (see profile parameters RCA and RCALIAS for more information).
  2. The ICU data library contains the converter mapping tables, collation rules, break iterator rules and other locale data.
  3. The ICU development kit provides tools to build data libraries that comply with particular requirements. Refer to the chapter ICU Data in the ICU User Guide at http://userguide.icu-project.org/icudata for more information.
  4. You can assign only one ICU data library to a Natural session, but you can assign different data libraries to different Natural sessions. The ICS module supports up to ten different ICU data libraries. ICS searches all available ICU data libraries for a requested item, for example, a converter.
  5. The version of the ICU data library and the ICU version must match. If the data library does not match the ICU version, Natural issues the error message NAT3418 with return code 80 during session initialization.

DATITEM - Load Method for ICU Data Items

DATITEM=value can be used to determine the method to load ICU data items under CICS and Com-plete. For information on ICU data items, see the relevant section in the Unicode and Code Page Support documentation.

Value Explanation
SVC The ICU data items are loaded with the SVC instruction of the operating system.
NONE The ICU data items are loaded with the functions provided by the TP system.

This is the default value.

Notes:

  1. If you use DATITEM=NONE under Com-plete, you must set the keyword parameter THREAD-ESQA-SIZE=15K (or a size greater than 15 KB) in the startup options for your Com-plete.
  2. If you use DATITEM=NONE under CICS, you must add one PPT entry for each ICU data item.

LOCALE - Locale ID

LOCALE=value1_value2 determines the Locale ID.

Value Explanation
value1_value2

value1 is a 2- or 3-byte language code of lower-case characters. If specified in upper case, it will be translated into lower case automatically.

value2 is a 2- or 3-byte region code of upper-case characters to classify the language.

en_US  This is the default value.

Note:
The Locale ID is used by ICU's Collation Service to consider language and even region-dependent features of collation. The language code of the Locale ID follows ISO639, and the region code follows ISO 3166.

Examples of Language Code and Region Code Pairs:

en_US English (United States)
en_UK English (United Kingdom)
de_DE German (Germany)
de_AT German (Austria)
de_CH German (Switzerland)
sv_SE Scandinavian (Sweden)

STEPLIB - Name of the Dataset (Containing the ICU Data Items) to be Dynamically Allocated

STEPLIB='dataset.name' can be used to define the name of an ICU data library. See ICS 311 in section Unicode and Code Page Support.

'dataset.name' Explanation
3-44 characters The name of the dataset containing the ICU data items.

Validation rules for the dataset name specified by the STEPLIB parameter:

  • the dataset must exist.

  • the dataset name must be enclosed in ' ' - see example above.

  • the dataset name must conform to the z/OS naming conventions:

    • maximal length of 44 characters.

    • no special characters allowed.

    • must not be a High Level Qualifier i.e. must contain at least one dot '.'.

With ICS 311, data files provided by Software AG are not supported and only the minimal SAGICU and SAGICUA9 load modules will be delivered. These modules do not contain statically-linked localization data. ICU localization data is loaded only dynamically from a dataset containing the data items (collators, converters, etc.).

The dataset given by the CFICU STEPLIB parameter will be dynamically allocated only once by the first Natural session in a given TP system under the DD Card ICSxxxDD (xxx corresponds to ICS version) and used by all Natural sessions afterwards.

Note:
This functionality is not supported by ICS Transition Version 222 and is only available with ICS 311.

Example of CFICU Parameter

CFICU=(COLNORM=ON,LOCALE='de_DE',STEPLIB='DATAITEMS.LOAD')

Example of NTCFICU Macro

         NTCFICU COLNORM=ON,                                           *
               LOCALE=de_DE,                                           *
               STEPLIB='DATAITEMS.LOAD'