为什么你需要获得现场级别???。要将文件转换为 ascii,您不需要字段级别。
实用程序转换程序
要将Cobol文件转换为ascii,您可以使用以下实用程序之一:
Cobol 文件的 Java 处理
如果要对 File 进行一些处理,可以使用RecordEditor的Generate
功能从 Cobol copybook生成示例JRecord代码。
使用标准模板生成的代码
如果您使用标准模板,RecordEditor将生成如下代码:
AbstractLine line;
int lineNum = 0;
try {
ICobolIOBuilder iob = JRecordInterface1.COBOL
.newIOBuilder(copybookName)
.setFont("cp037")
.setFileOrganization(Constants.IO_FIXED_LENGTH)
.setSplitCopybook(CopybookLoader.SPLIT_NONE)
;
FieldNamesDtar020.RecordDtar020 rDtar020 = FieldNamesDtar020.RECORD_DTAR020;
AbstractLineReader reader = iob.newReader(dataFile);
while ((line = reader.read()) != null) {
lineNum += 1;
System.out.println(
line.getFieldValue(rDtar020.keycodeNo).asString()
+ " " + line.getFieldValue(rDtar020.storeNo).asString()
+ " " + line.getFieldValue(rDtar020.date).asString()
+ " " + line.getFieldValue(rDtar020.deptNo).asString()
+ " " + line.getFieldValue(rDtar020.qtySold).asString()
+ " " + line.getFieldValue(rDtar020.salePrice).asString()
);
}
reader.close();
} catch (Exception e) {
System.out.println("~~> " + lineNum + " " + e);
System.out.println();
e.printStackTrace();
}
使用 lineWrapper 模板生成的代码
AbstractLine line;
int lineNum = 0;
try {
ICobolIOBuilder iob = JRecordInterface1.COBOL
.newIOBuilder(copybookName)
.setFont("cp037")
.setFileOrganization(Constants.IO_FIXED_LENGTH)
.setSplitCopybook(CopybookLoader.SPLIT_NONE)
;
LineDtar020JR lineDtar020JR = new LineDtar020JR();
AbstractLineReader reader = iob.newReader(dataFile);
while ((line = reader.read()) != null) {
lineNum += 1;
lineDtar020JR.setLine(line);
System.out.println(
lineDtar020JR.getKeycodeNo()
+ " " + lineDtar020JR.getStoreNo()
+ " " + lineDtar020JR.getDate()
+ " " + lineDtar020JR.getDeptNo()
+ " " + lineDtar020JR.getQtySold()
+ " " + lineDtar020JR.getSalePrice()
);
}
reader.close();
} catch (Exception e) {
System.out.println("~~> " + lineNum + " " + e);
System.out.println();
e.printStackTrace();
}
通用 Cobol 处理
如果要进行更通用的处理,可以使用fieldIterator:
FieldIterator fieldIterator = line.getFieldIterator("Record-Name");
JRecord 示例
在 JRecord 0.81.4 的最新版本中 ,Source/JRecord_IO_Builder_Examples/src目录中有示例
树处理
如果您需要使用 JRecord 访问级别编号,请使用 CobolSchemaReader.newCobolSchemaReader(...)接口。
您还可以查看Cobol2Xml子项目的代码。它tree
通过扩展CobolSchemaReader进行处理