显示文件
创建显示文件对象时,将使用源文件的编码字符集标识 (CCSID) 对其进行标记。
在编译时:
- 从主源文件读取所有字符数据,而不执行任何字符转换。
- 用户消息文本 (由 DDS 中的 MSGCON 关键字标识) 保持不变,因为假定它与主源文件使用相同的 CCSID。
在运行时,将根据用于创建显示文件对象的 CHRID 参数值来转换常量数据。 此转换是可选的,仅当 CHRID 设置为 *JOBCCSID 或间接使用 CHRIDCTL 时才会发生此转换。 此转换是从显示文件 CCSID 到设备的字符标识 (CHRID)。 字段级关键字 NOCCSID (无编码字符集标识) 允许用户在 DDS 中指定永不转换的字段。
注: 要使用 CCSID 的数据管理支持,必须将以 CCSID 65535 标记的源物理文件更改为与数据关联的 CCSID 值。
"创建显示文件" 命令上的 CHRID 参数
"创建显示文件" (CRTDSPF) 命令上的 CHRID 参数会影响对显示文件进行的转换。
如果在 CRTDSPF 命令的 CHRID 参数上指定了 *JOBCCSID 值:
- 输入字符从设备字符标识 (CHRID) 转换为作业 CCSID。
- 将字符数据发送到可输出的字段,并从作业 CCSID 转换为设备 CHRID。
- 来自显示文件的常量文本从显示文件的 CCSID 转换为设备的 CHRID。
- 所有消息文件都使用 CCSID 进行标记。 将消息文本从消息文件的 CCSID 转换为设备的 CHRID。 当使用 CCSID 65535 (系统缺省值) 标记消息文件时,假定消息文件的内容已在设备的 CHRID 中。 要确保进行适当的转换,可以对消息启用 CCSID 支持。
- 消息替换数据从作业的 CCSID 或从显示文件的 CCSID 转换为设备的 CHRID。
- 使用除 65535 以外的 CCSID 标记的所有状态消息都将转换为设备的 CHRID。
- 消息行或消息子文件 (由 DDS 中的 ERRMSG , ERRMSGID , SFLMSG 和 SFLMSGID 关键字标识) 中的消息的消息文本从消息文件 CCSID 转换为设备 CHRID。
如果在 CRTDSPF 命令上为 CHRID 参数指定了特定值,那么将在 CRTDSPF 命令上指定的 CHRID 与设备的 CHRID 之间进行转换。 此转换仅影响使用 CHRID DDS 关键字定义的字段。
如果在 CRTDSPF 命令的 CHRID 参数上指定了 *DEVD 值,那么不执行转换。 此为缺省设置。
使用 CCSID 65535 迁移显示文件
IBM i 许可程序第 3 版中的所有源文件的隐式 CCSID 值均为 65535。 要获得适当的 CCSID 支持,必须使用 CCSID 值不为 65535 的源文件重新编译显示文件 (如果满足下列任一条件):
- 显示文件最初是从 CCSID 值为 65535 的源文件编译的。
- 显示文件最初是在 OS/400 许可程序的第 2 版第 3 修改 0 版之前编译的。
通过重新编译,将标记显示文件对象,并在需要时进行所有必需的转换。
如果源文件显式地标记了 CCSID 65535 ,那么不会进行任何转换。