【问题标题】:COBOL program, JCL job, or both?COBOL 程序、JCL 作业,还是两者兼而有之?
【发布时间】:2012-07-10 00:48:06
【问题描述】:

我必须执行 3 个任务:
插入、删除和写入

我不确定最好的方法是什么。我的大型机程序设计技能不是太紧,所以我正在寻求建议。

我可以避免为此执行 COBOL 程序吗?
在我看来,我只需要执行 SQL 语句的 JCL。如果我正确地设计了我的陈述,那么他们应该能够以这种方式执行任务 1 和 2。但我想我可能需要一个 COBOL 程序来写入文件?

我将概述我对这 3 个任务的思考过程。每个任务看起来都差不多,但是它们查询的结果不同,所以 SQL 语句有很大的不同。但他们都在同一张桌子上工作。

任务 1:
-执行 SQL 查询
- 对于查询选取的每一行
- -根据该行插入一个新行

任务 2: -执行 SQL 查询
- 对于查询选取的每一行
-- 删除记录

任务 3:
-执行 SQL 查询
- 对于查询选取的每一行
- -将该记录写入文件

【问题讨论】:

标签: db2 cobol mainframe jcl


【解决方案1】:

您不能仅使用 JCL 执行这些任务,JCL(大多数情况下)只会导致程序执行。为了完全准确,JES 在解释 JCL 时执行这些功能。

现在,您可以通过使用现有实用程序或一组实用程序来避免编写程序。

例如,SyncSort 可以执行 SELECT 语句并将结果写入文件。

例如,DSNTEP4 可以批量执行 SQL 语句,包括 DELETE、UPDATE 和 INSERT 语句。

因此,您可以在不编写 COBOL(或汇编程序、PL/I、C/C++ 或 Rexx 等)程序的情况下执行此操作,而无需执行 em> 一个程序。

【讨论】:

  • @Frantumn:你也可以试试DSNTIAUL
【解决方案2】:

您无法在 JCL 中编写程序来完成您需要的工作,因为 JCL 是为定义和提交作业而设计的,而不是通用编程。您可以使用任何受支持的 Mainframe 语言来访问 DB2,因此您可以使用 COBOL、Java、C、C++ 等编写程序。然后您需要编写 JCL 来执行该程序。 JCL 将列出任何所需的信息,例如程序的参数,以及输入/输出所需的数据集。

【讨论】:

  • 你知道你提出了一个很好的观点。由于我真正要做的只是一次性完成一些 DB2 工作,因此不必在 COBOL 中完成。谢谢
【解决方案3】:

DB2(和大多数其他数据库)具有可以通过 JCL 运行任意 SQL 语句的批处理或命令行实用程序。这是最简单的方法,只需要 JCL 和一些控制语句。您可能还拥有一些来自 CA、BMC 或 IBM 的 DB2 管理工具,它们也允许处理任意查询。诀窍是将您的需求表达为一个 SQL 查询,而无需额外的逻辑(鉴于您记录的需求,我相信这绝对是可能的)。

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    相关资源
    最近更新 更多