2011-02-23 94 views
0

有人知道任何方式将数据从访问数据库导出到cobol代码吗?从访问+ VB 6到COBOL

谢谢

+0

你需要说哪种COBOL。 – 2011-02-23 15:55:31

+3

不知道我明白这一点 - 访问数据是数据,而COBOL代码是代码。 如果您尝试将VB6代码转换为COBOL,那是一个编程挑战。我不确定是否存在自动转换器,但实际上重写代码可能并不那么困难。代码运行的数据将是另一回事。 请你给我们更多的细节吗? – TrueDub 2011-02-23 15:57:52

+0

我试图导出一些访问数据到一个复制Cobol格式文件。这个将由第三部分软件解析(我不知道这个SW会做什么)。如果有一些“自动导出软件”存在,我正在游荡;现在我试图用VB脚本来做到这一点,但.. **是一种程序语言:-) ** – alesdario 2011-03-06 17:16:09

回答

0

最简单的方法是导出到固定格式的访问。这是Cobol文件数据描述的原生格式。

但是,如果访问不支持此操作,则可以导出为CSV(逗号分隔值)文件或TSV(选项卡分隔值)。 Cobol以其ANSI形式不支持这一点,但使用简单的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 
+0

请小心......当导出数据值时,使用UNSTRING解析CSV文件有点困难可能包含逗号和/或引号。例如:**“1,200”**是一个包含逗号的数字。并且:**“我的”“名字”“,在这里”**是包含引号和逗号的文本字符串。解析这些与UNSTRING是好多很多“有趣” – NealB 2011-02-23 17:47:45

1

固定格式肯定是要走的路,任何Cobol都可以读取固定格式文件。

一个简单的方法来创建任何SQL方言固定格式文件(甲骨文,DB2,H2等)是使用SQL字符串函数创建一个单一的领域和出口/这个查询写入文件

MS访问示例查询:

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还允许您定义固定格式并使用它们来输入(导出?),但是从我使用它们开始(我正在使用它们导入固定宽度数据)已经很长时间了。我将把这个讨论留给访问专家。

你也可以看看RecordEditor(http://record-editor.sourceforge.net/Record11.htm)/ JRecord(http://jrecord.sourceforge.net/),因为

  1. 两个让你查看/编辑使用一个COBOL习字文件 - 有用 检查出口比赛的的Cobol的定义
  2. 两者有字帖分析选项 (文件菜单),将计算在一个COBOL 领域的 启动/长度Copybook
  3. 两者都有副本 功能,将到/从一个COBOL文件使用一个COBOL 字帖复制一个CSV文件

注:这是我的软件无耻插头

我会避免界定文件(如果分隔符出现在一个字段中),但是如果你必须使用一个obskure字符,例如'or〜or^

0

访问可以通过导出向导或简单的VB6程序或脚本导出为固定字段格式可以使用Jet OLEDB Pro做同样的事情vider和Jet的文本IISAM,以及定义输出格式的Schema.ini文件。

有格式限制(没有签名包装的十进制格式或其他Cobol exotica),但通常这应该足以创建大多数Cobol变体支持的文件。如果您确实必须将数字字段填充为零,则可以使用Jet SQL表达式服务执行此操作,该服务允许内联使用VBA函数的子集,并在Schema.ini文件中将结果字段定义为文本。

如果您确实需要导出到某种ISAM文件,最好的办法是编写一个中间Cobol程序来导入保存的字段字段文本数据。一些Cobol产品甚至可能包括公用事业公司进行这种进口。

+0

嗨,我可以找到一些有关Jet OLEDB提供商和Jet的文本IISAM的文档?谢谢 – alesdario 2011-03-06 17:20:44

+0

* ...我在哪里可以找到... – alesdario 2011-03-07 14:57:49