cobol系统导出的数据集通常为vsam文件,无法用普通工具直接打开查看,
为cobol文件创建源(source)时不能通过普通文件(flat file)的方式直接导入。
需要借助cobol文件格式描述文件(.cbl),里面包含cobol固定的格式段描述和copybook(包含源的字段类型长度和层组),
copybook一般在cobol提供cobol文件时会提供的可以直接用记事本打开的ascii文件,内容如下面的橙色部分或test.cpy,
在Mapping Designer->Source -> Import COBOL files中选中此描述文件才可导入cobol文件的源表(source).
格式描述文件主体内容如下:
identification division. program-id.mead. environment division. select file-1 assign to "fname". data division. file section. fd FILE-1. * --------COPYBOOK GOES HERE------- procedure division. stop run.
identification division 标识部
environment division 环境部
data division 数据部
procedure division 过程部
file-1 为导入后的source name 中划线-将被被替换为下划线_
file section 文件节
*----copybook 此处用实际copy句替换掉
stop run. 描述文件终止结束运行
注意:每行前八位为空格 结尾为英文句号,copy语句中的中划线在导入之后会被替换为下划线.
第八行注释,通过copy句或copybook替换掉,例如test.cbl
橙色为copy句或者copybook,此文件可以把橙色替换为实际的copy句之后直接导入.
Identification division. Program-id.mead. environment division. select cr3872-file assign to "cr3872.dat". organization sequential. data division. file section. fd cr3872-file. 01 EXPERT. 05 SPOUSE-CHILD. 10 SPOUSE-INFO. 15 SP-CHILD PIC X. 15 SPOUSE-NAME. 20 SPOUSE-FNAME PIC X(14). 20 SPOUSE-LNAME PIC X(20). 10 CHILD-INFO OCCURS 6 TIMES. 15 CHILD-NAME. 20 CHILD-FNAME PIC X(14). 20 CHILD-LNAME PIC X(20). 15 CHILD-RELATIONSHIP PIC X(15). 15 CHILD-BDATE PIC 9(6). 15 CHILD-AGE PIC 9(2). working-storage section. 01junk PIC x(100). procedure division. stop run.
但是,实际应该用中的copy句或者copybook文件会有很多行,而且会有多个文件,
例如test.cpy(从第8列到第74列才为真正的数据部)
00550001 EXPERT. 099500 05 SPOUSE-CHILD. 099600 10 SPOUSE-INFO. 099700 15 SP-CHILD 099800 PIC X. 099900 15 SPOUSE-NAME. 100000 20 SPOUSE-FNAME 100100 PIC X(14). 100400 20 SPOUSE-LNAME 100500 PIC X(20). 105600 10 CHILD-INFO OCCURS 6 TIMES. 105700 15 CHILD-NAME. 105800 20 CHILD-FNAME 105900 PIC X(14). 106100 20 CHILD-LNAME 106200 PIC X(20). 106300 15 CHILD-RELATIONSHIP 106400 PIC X(15). 106500 15 CHILD-BDATE PIC 9(6). 106700 15 CHILD-AGE PIC 9(2).
这样我们可以改写之前的数据描述文件test.cbl 为如下:
environment division. select cr3872-file assign to "cr3872.dat" organization sequential. data division. file section. fd cr3872-file. copy"test.cpy". working-storage section. 01 junk PIC x(100). procedure division. stop run. end.
copy"test.cpy". 引用copybook
如此,把test.cbl 和test.cpy放在同一目录,通过这两个文件可以创建cobol文件的源(source)了。
test.cbl
test.cpy
cobol file source
本文参考引用了如下链接:
https://kb.informatica.com/whitepapers/1/Pages/15301.aspx
https://kb.informatica.com/whitepapers/1/Pages/15159.aspx