Hot Topics

Related Links


National Language Support

National Language Support (NLS), sometimes called software globalization, enables SAS to function properly outside the United States. This topic covers a few enhancements and migration issues. For full details, read the SAS National Language Support (NLS): Reference Guide.

Encoding and transcoding basics Check out this blog post: Demystifying and resolving common transcoding problems by Tech Support rep Jody Carlton. The blog post contains a video that walks you through the basics of encodings and how to handle multilingual SAS data.

SAS Enhancements

You'll find that SAS has enhanced multilingual capabilities as well as easier setup and data transfer. Here are a few highlights:
K functions
handle DBCS and MBCS session encodings and are documented in SAS National Language Support (NLS): Reference Guide. See also the paper Have a Comprehensive understanding of SAS K functions (.pdf) (2018).

supports compatibility for naming rules with SAS data set names, view names, and item store names. For details, see SAS Programmer's Guide: Essentials.

SAS Unicode server
enables multilingual storage and processsing. See these papers:
LOCALE= system option
is enhanced to set many of the locale-specific parameters in SAS:
  • default session encoding based on environment
  • TRANTAB= system option
  • DFLANG= system option, if available
  • DATESTYLE= system option
  • PAPERSIZE= system option.

is the default in SAS 9.1 for the z/OS environment. This is a much cleaner way to run SAS, because it removes ambiguities.

Locale-sensitive formats and functions
are introduced for numeric, date, time, and monetary formatting.

Migration Issues

Here are a few possible problems and their solutions.

Using the CPORT and CIMPORT Procedures with Encoding

SAS 9.1.3 customers who use transport files to migrate from a previous release with an incompatible encoding will encounter an error. For more details, see SAS Note 20578.

Updating Substitution Characters under OS/390 (z/OS)

Under OS/390 or z/OS, when the default NONLSCOMPATMODE is in effect, SAS does not support substitution characters in SAS syntax. If you run SAS with NONLSCOMPATMODE, you will have to update existing programs to use national characters in place of those substitutions. For example, Danish customers who have substituted the Å for the $ character in existing SAS programs will have to update the SAS syntax to use the $ in their environments.

Overriding the Encoding Attribute on Data Sets

In SAS 9 and later, data sets are stamped with an encoding attribute when they are output, replaced, or updated. SAS uses the encoding attribute to determine whether CEDA transcoding is required.

If you have SAS 8 data sets, they are probably not stamped with an encoding attribute. (The attribute was supported in SAS 8 in China, Korea, and Japan only.) When there is no encoding attribute on a data set, PROC CONTENTS output shows the encoding as DEFAULT. If you replace or update such a data set, then be aware that the session encoding is stamped on the data set by default. If that behavior is not desired, you can override the data set's encoding by using the DATA step option ENCODING= or the LIBNAME options INENCODING= and OUTENCODING=.

If this behavior causes the session encoding to be stamped on the data set incorrectly, and you are certain of the correct encoding, then you can set it with the CORRECTENCODING= option on the MODIFY statement of the DATASETS procedure.

Using the %LS Macro for Compatibility

Starting with SAS 9.1, enhancements to the LOCALE= system option have made the Locale Setup Window unnecessary, and therefore it is no longer provided. For compatibility with servers that are running an earlier relase of SAS, use the %LS macro. This macro replaces the functionality of the Locale Setup Window and sets up the remote SAS environment for data transfer. If you are running SAS®9 on both your client and server sessions, the %LS macro is not necessary.

Migrating Data Sets That Contain ASCII-OEM Characters

When a data set uses the ASCII-OEM character set, the MIGRATE procedure does not correctly transcode any non-English characters. This issue is very uncommon. Currently, only the ASCII-OEM character set is known to have this issue. To migrate a SAS data set with ASCII-OEM characters, use the CPORT and CIMPORT procedures with the TRANTAB option. Specify the appropriate TRANTAB values for the source and target data sets.