SAA 和 POSIX *Locale 定义

如果使用 LOCALETYPE (*LOCALE) 编译 ILE C 程序而未调用 setlocale() ,或者如果使用语言环境名称 C 或 POSIX调用该程序,那么使用的缺省 C 环境是在 QSYSLOCALE 库中的 POSIX 语言环境定义源中指定的环境。 此语言环境定义与类型 *CLD 的缺省 C 语言环境略有不同。 在 QSYSLOCALE 库中提供了另一个名为 SAA 的语言环境定义源成员,以与类型为 *CLD 的缺省 C 语言环境兼容。

如果要将应用程序从类型为 *CLD 的语言环境迁移到类型为 *LOCALE 的语言环境,但要与类型为 *CLD 的缺省 C 语言环境兼容,请使用 QSYSLOCALE 库中的 SAA 语言环境定义源成员使用 CRTLOCALE 命令创建语言环境。 然后,在应用程序中调用 setlocale() 时使用此语言环境的名称。

SAA 和 POSIX 语言环境定义之间的差异如下所示:
  • 对于 LC_CTYPE 类别, SAA 语言环境具有 cntrl 类中定义的所有 EBCDIC 控制字符,而 POSIX 语言环境仅包含 ASCII 控制字符。 此外, SAA 将美分字符和中断的垂直线作为标点字符,而 POSIX 在其标点字符中不包含这两个字符。
  • 对于 LC_COLLATE 类别, SAA 的缺省整理序列是 EBCDIC 序列,而 POSIX 使用 ASCII 序列。 这与字符集的 CCSID 映射无关。 对于 POSIX 语言环境,前 128 个 ASCII 字符在整理顺序中定义,其余 EBCDIC 字符在整理顺序的末尾。 此外,在 SAA 语言环境定义中,小写字母在大写字母之前进行整理,而在 POSIX 语言环境定义中,小写字母在大写字母之后进行整理。
  • 对于 LC_TIME 类别, SAA 语言环境将日期和时间格式 (d_t_fmt) 指定为 "%Y/ %M/ %D %X" ,而 POSIX 语言环境使用 "%a %b %d %H %M %S %Y"。