DSPFD与QSYS2.SYSTABLES逻辑文件记录长度不一致问题咨询
差异成因分析及验证建议
核心成因拆解
本地系统元数据与文件实际属性不同步
QSYS2.SYSTABLES中的ROW_LENGTH字段记录的是过时元数据:该逻辑文件(LF)创建或修改过程中,曾定义过更长的计算字段、引用过已调整的物理文件(PF)字段,后续LF经重新编译修正了实际记录长度,但系统目录的元数据未自动同步。而DSPFD命令直接读取文件对象的实时物理属性,因此显示正确的3120。这种不一致通常源于异常操作(如强制修改PF字段后未重新编译LF)或系统未自动触发目录统计刷新。QuickEDD同步的比对逻辑导致差异提示
QuickEDD同步时优先读取本地系统QSYS2.SYSTABLES的ROW_LENGTH值(32120),与镜像系统中通过SAVF恢复的文件实际属性(3120)进行比对,因此判定存在差异,尽管文件的功能逻辑已完成同步。备份恢复过程完成了元数据校正
SAVF备份存储的是LF的实际物理属性而非过时的目录元数据,恢复到镜像系统后,系统会基于备份的实际属性生成正确的元数据,因此镜像系统的DSPFD和QSYS2.SYSTABLES均显示3120。
验证与解决步骤
- 重新编译本地LF
执行命令:CRTLF FILE(库名/LF名) SRCFILE(库名/源文件) SRCMBR(成员名)或使用CHGLF调整后重新编译,之后查询QSYS2.SYSTABLES确认ROW_LENGTH是否更新为3120。 - 刷新系统目录统计
执行SQL命令:RUNSTMTSQL 'REFRESH TABLE QSYS2.SYSTABLES',强制同步元数据与实际文件属性。 - 重新触发QuickEDD同步
本地元数据校正完成后,再次启动同步即可消除差异提示。
内容的提问来源于stack exchange,提问作者Łukasz S
相关产品推荐
相关产品推荐

