有人知道将数据从访问数据库导出到cobol代码的任何方法吗?
由于
答案 0 :(得分:1)
固定格式绝对是可行的方法,任何Cobol都可以读取固定的格式文件。
在任何SQL方言(oracle,DB2,H2等)中创建固定格式文件的简单方法是使用SQL字符串函数创建单个字段并将此查询导出/写入文件
MS Access示例查询:
SELECT Left(Str([TblId])+Space(8),8)
+ Left(Str([tblkey])+Space(20),20)
+ Left([Details]+Space(30),30)
+ "<" AS ExportString
FROM Tbl_TI_IntTbls;
对于Cobol,最好右对齐零填充和对齐数字字段的小数点。
此外,如果这一次你 可以在访问时运行查询,将输出复制/粘贴到文本编辑器。
Ms Access还允许您定义固定格式并使用它们来输入(导出?)但是我使用它们已经很长时间了(我使用它们来导入固定宽度数据)。我将把这个讨论留给Access专家。
您还可以查看RecordEditor(http://record-editor.sourceforge.net/Record11.htm)/ JRecord(http://jrecord.sourceforge.net/),因为
注意:这是我软件的无耻插件
我会避免使用分隔文件(如果分隔符出现在字段中)但是如果必须,请使用obskure字符,例如`或〜或^
答案 1 :(得分:0)
最简单的方法是从访问中导出为固定格式。这是Cobol文件数据描述的原生格式。
但是,如果访问不支持此操作,则可以导出为CSV(逗号分隔值)文件或TSV(制表符分隔值)。它的ANSI形式的Cobol不支持这个,但是使用简单的Unstring很容易解析。例如:
Perform Read-A-Record
Perform until End-Of-File
Unstring Input-Record
delimited by ","
into Column-1-Field
Column-2-Field
...
Column-n-Field
Perform Read-A-Record
End-Perform
答案 2 :(得分:0)
Access可以通过其导出向导或简单的VB6程序导出到固定字段格式,或者脚本可以使用Jet OLEDB Provider和Jet的Text IISAM以及定义输出格式的Schema.ini文件执行相同的操作。
存在格式限制(没有签名的压缩十进制格式或其他Cobol exotica)但通常这应该足以创建大多数Cobol变体支持的文件。如果您确实必须将数字字段保留为零 - 您可以使用Jet SQL表达式服务,它允许内联使用VBA函数的子集,在Schema.ini文件中将结果字段定义为Text。
如果您真正需要的是导出到某种ISAM文件,最好的办法是编写一个中间Cobol程序来导入已保存的字段 - 字段文本数据。有些Cobol产品甚至可能包含用于进行此类导入的实用程序。