EZT程序中能否为输入/输出文件复用同一个Copybook?
EZT程序中能否为输入/输出文件复用同一个Copybook?
好问题!其实Easytrieve(EZT)完全支持为多个文件复用同一个Copybook,而且有类似COBOL里OF关键字的对应机制,根本不用手动给字段定义唯一名称,你之前尝试的方向其实是对的,只是可能没搞清楚最终的字段引用方式~
你在代码里写的%COPYBOOK 1 I.和%COPYBOOK 1 O.,这里的I和O就是EZT用来区分不同文件同名字段的后缀标识。当你给Copybook加上这个后缀后,Copybook里的所有字段都会自动带上这个后缀,比如原Copybook里的VAR1,对应INFILE的就是VAR1-I,对应OUTFILE的就是VAR1-O。
举个完整的示例,帮你更清楚地理解:
FILE INFILE %COPYBOOK 1 I. FILE OUTFILE %COPYBOOK 1 O. PROC MAIN * 读取输入文件,引用带-I后缀的字段 READ INFILE * 将输入字段的值赋值给输出字段 MOVE VAR1-I TO VAR1-O MOVE VAR2-I TO VAR2-O * 写入输出文件 WRITE OUTFILE END-PROC
这个机制和COBOL里VAR1 OF INFILE的作用完全一致,既复用了Copybook,又避免了字段命名冲突。你之前觉得用法不对,大概率是没意识到要通过后缀来区分引用不同文件的字段,现在调整一下引用方式就可以正常使用啦。
备注:内容来源于stack exchange,提问作者Zachary Hardin
相关产品推荐
相关产品推荐

