从access + VB 6到COBOL

时间:2011-02-23 15:48:11

标签: ms-access vb6 cobol

有人知道将数据从访问数据库导出到cobol代码的任何方法吗?

由于

3 个答案:

答案 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/),因为

  1. 两者都允许您查看/编辑文件 使用Cobol Copybooks - 对于有用 检查导出匹配的Cobol定义
  2. 两者都有Copybook分析选项 (文件菜单)将计算 Cobol中字段的开始/长度 字帖
  3. 两人都有副本 将复制Csv文件的函数 使用Cobol进出Cobol文件 字帖
  4. 注意:这是我软件的无耻插件

    我会避免使用分隔文件(如果分隔符出现在字段中)但是如果必须,请使用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产品甚至可能包含用于进行此类导入的实用程序。