文件 CCSID

打开文件时, CCSID 与其关联。 字符和字符串值的读操作以文件的 CCSID 返回数据。 对文件的写操作期望该文件的 CCSID 中的数据。 打开文件时与该文件相关联的 CCSID 依赖于用于打开文件的函数:
  • catopen() 函数
    与使用 catopen 打开的目录文件相关联的 CCSID 取决于 oflag 参数的内容。 可以为 oflag 参数指定的两个标志是 NL_CAT_JOB_MODE 和 NL_CAT_CTYPE_MODE。 这些标志是互斥的。
    • 如果指定了 NL_CAT_JOB_MODE ,那么作业 CCSID 与文件相关联。
    • 如果指定了 NL_CAT_CTYPE_MODE ,那么当前语言环境的 LC_CTYPE 类别的 CCSID 与该文件相关联。
    • 如果未指定任何标志,那么不进行转换,并且返回的消息的 CCSID 与消息文件的 CCSID 相同。
  • fdopen() 函数
    • 如果未指定 LOCALETYPE (*LOCALEUTF) ,那么文件的缺省 CCSID 是作业 CCSID。 可以在文件 open 命令的方式字符串中使用关键字 ccsid=value , o_ccsid = value 或 codepage=value 来更改与该文件相关联的 CCSID。 o_ccsid=value 是建议的关键字。 标准文件始终与缺省文件 CCSID 相关联,因此它们与作业 CCSID 相关联。
    • 如果指定了 LOCALETYPE (*LOCALEUTF) ,那么当调用 fopen() 函数时,文件的缺省 CCSID 是当前语言环境的 LC_CTYPE 类别的 CCSID。 上一段中描述的关键字仍可用于覆盖与文件关联的 CCSID。 标准文件始终与缺省文件 CCSID 相关联,因此它们在打开时与当前语言环境的 LC_CTYPE 类别的 CCSID 相关联。
  • fopen()freopen() 函数
    • 如果未指定 LOCALETYPE (*LOCALEUTF) ,那么文件的缺省 CCSID 是作业 CCSID。
      • 如果在编译命令上指定了 SYSIFCOPT (*NOIFSIO) ,那么可以在文件打开命令的方式字符串中使用关键字 ccsid=value 来更改从文件读取或写入文件的数据的 CCSID。
      • 如果未在编译命令上指定 SYSIFCOPT (*NOIFSIO) ,那么可以在文件打开命令上的方式字符串中使用关键字 ccsid=value , o_ccsid = value 或 codepage=value 来更改与该文件相关联的 CCSID。 o_ccsid=value 是建议的关键字。
      标准文件始终与缺省文件 CCSID 相关联,因此它们与作业 CCSID 相关联。
    • 如果指定了 LOCALETYPE (*LOCALEUTF) ,那么当调用 fopen()freopen() 函数时,文件的缺省 CCSID 是当前语言环境的 LC_CTYPE 类别的 CCSID。 仍可使用关键字 ccsid=value , o_ccsid = value 或 codepage=value 来覆盖与该文件相关联的 CCSID。 标准文件始终与缺省文件 CCSID 相关联,因此它们在打开时与当前语言环境的 LC_CTYPE 类别的 CCSID 相关联。
  • _Ropen() 函数

    与使用 _Ropen() 函数打开的文件相关联的缺省 CCSID 是作业 CCSID。 可以在 _Ropen() 函数的 mode 参数中使用 ccsid=value 关键字来更改与文件关联的 CCSID。

  • wfopen() function
    • 如果指定 LOCALETYPE (*LOCALEUCS2) ,那么文件的缺省 CCSID 为 UCS-2。 可以在文件 open 命令的方式字符串中使用关键字 ccsid=value , o_ccsid = value 或 codepage=value 来更改与该文件相关联的 CCSID。 o_ccsid=value 是建议的关键字。
    • 如果指定 LOCALETYPE (*LOCALEUTF) ,那么文件的缺省 CCSID 为 UTF-32。 上一段中描述的关键字仍可用于覆盖与文件关联的 CCSID。