找到关于 DB2 的150 篇文章

COBOL-DB2 程序编译步骤

Mandalika
更新于 2020年9月11日 12:22:04

10K+ 浏览量

要准备一个可执行的 COBOL-DB2 程序,我们需要经历几个步骤。这些步骤包括预编译 - 编译 - 绑定 - 链接编辑。预编译使用 DSNHPC 实用程序完成。在预编译步骤中,源程序中存在的所有 SQL 语句都将被相应的 COBOL 调用替换。所有 SQL 语句都放在一个称为数据库资源模块 (DBRM) 的对象中,并传递到 BIND 步骤。修改后的源代码被传递到编译步骤。在编译步骤中,修改后的源代码被编译,并生成目标模块。… 阅读更多

在不进行 BIND 的情况下,对 DB2 程序进行非 SQL 更改时的执行结果是什么?

Mandalika
更新于 2020年9月11日 12:15:33

271 浏览量

在每次执行 COBOL-DB2 程序时,都会比较加载模块和包/DBRM 的时间戳。如果程序中变量的长度发生变化(并且没有 SQL 更改),并且已对其进行编译,则加载模块将具有新生成的时间戳,而如果未执行 BIND,则包/DBRM 将具有旧的时间戳。执行此程序时,调用此程序的 JCL 步骤将因 SQL 错误代码 -818 而失败。如果我们有一个 COBOL-DB2 程序,其中 SQL 语句永远不会改变… 阅读更多

如果 DBRM 和加载模块的时间戳不匹配,结果会怎样?

Mandalika
更新于 2020年12月1日 04:57:26

659 浏览量

当 COBOL-DB2 源代码作为输入在预编译阶段提供时,我们将得到两个重要的组件——DBRM 和修改后的源代码。在修改后的源代码中,SQL 语句被 COBOL 调用替换,而 DBRM 包含 COBOL-DB2 程序中存在的所有 SQL 语句。预编译器在 DBRM 和修改后的源代码中都插入时间戳。如果 DBRM 直接绑定到计划,则系统在执行 COBOL-DB2 程序时会比较 DBRM 和加载模块的时间戳。如果时间戳不匹配,则 JCL 步骤… 阅读更多

当 DB2 程序在不同的日期进行编译和绑定时,执行结果是什么?

Mandalika
更新于 2020年9月11日 12:12:19

124 浏览量

程序将成功运行(除非程序中存在逻辑错误),因为时间戳是在预编译期间插入到 DBRM 中的,并且预编译是在编译步骤之前完成的。因此,DBRM 和加载模块将具有相同的时间戳。插入到 DBRM 中的时间戳还会进一步传递到包中。因此,如果我们使用 DBRM-包-计划组合,在这种情况下,程序也将成功运行,因为整个过程中时间戳保持一致。

当 DB2 子程序发生更改时,是否需要将其与其程序一起绑定?

Mandalika
更新于 2020年9月11日 12:07:32

698 浏览量

当任何 COBOL-DB2 程序进行预编译时,当前时间戳将插入到 DBRM 中,如果 DBRM 绑定到包,则时间戳将进一步复制到包中。类似地,时间戳也将在编译过程中插入到加载模块中。当执行任何 COBOL-DB2 程序时,系统会将加载模块的时间戳与 DBRM/包中的时间戳匹配,如果发生不匹配,则程序将失败。如果 DBRM 直接绑定到计划,即使只有子程序经过… 阅读更多

如何将 DBRM 绑定到包中,并将包绑定到计划中?

Mandalika
更新于 2020年9月11日 12:03:38

3K+ 浏览量

DBRM 可以直接绑定到计划,或者我们也可以先将 DBRM 绑定到包中,然后将该包绑定到计划中。如果 DBRM 直接绑定到计划,如果源代码发生某些更改,则必须生成新的 DBRM,然后必须重新绑定整个计划。由于计划包含多个 DBRM,因此系统将再次处理所有 DBRM 以绑定该计划(即使其他 DBRM 没有发生任何更改)。此过程需要大量资源,例如内存、处理器和宝贵的… 阅读更多

如何将 DBRM 直接绑定到计划中?

Mandalika
更新于 2020年9月11日 11:56:40

589 浏览量

DBRM 是从源代码预编译生成的 DB2 对象。它包含源代码中的所有 SQL 语句/查询。由于其格式,DBRM 无法直接执行,因此必须先将其绑定到计划中。可以将多个 DBRM 绑定到单个计划中。每当源代码发生更改时,都必须使用更改后的 SQL 语句/查询重新生成相应的 DBRM。然后必须重新绑定包含旧 DBRM 的整个计划。使用以下 JCL 步骤,我们可以将 DBRM 直接绑定到… 阅读更多

如何预编译 COBOL-DB2 程序?

Mandalika
更新于 2020年9月11日 11:49:13

4K+ 浏览量

预编译是将 COBOL-DB2 程序中使用的 SQL 语句替换为适当的 COBOL 调用的过程。在实际编译之前需要进行预编译,因为 COBOL 编译器无法识别 DB2 SQL 语句,并且会因这些语句而抛出错误。DB2 实用程序 DSNHPC 用于预编译。预编译 JCL 步骤的输入是用于 COBOL-DB2 程序中使用的相应表的 DCLGEN(在 SYSLIB 中)和 COBOL-DB2 源程序(在 SYSIN 中)。//STEP010 EXEC PGM=IKJEFT01 //SYSIN DD DSN=DIS.TEST.COBOL(PSNEW2), DISP=SHR //SYSLIB DD DSN=DIS.TEST.DCLGEN(PSDC2), DISP=SHR //DBRMLIB DD DSN=DIS.TEST.DBRMLIB(PSNEW2), DISP=SHR //SYSCIN DD DSN=DIS.TEST.COBL(PSCOB2), DISP=(NEW, CATLG, DEL), SPACE=(20,… 阅读更多

如何将集合 COLLA 中的所有包绑定到计划 PLANA?

Mandalika
更新于 2020年9月11日 11:46:03

1K+ 浏览量

包是一个数据库对象,它以 DB2 优化的形式包含来自 DBRM 的 SQL 语句。集合是一组包,我们可以使用它来隔离属于不同应用程序的 DB2 包。例如,在电信公司的生产环境中,我们可以为订单处理、计费和客户服务设置不同的集合。包或包组(集合)绑定到计划中。计划是一个可执行对象,包含其中所有 SQL 查询的 DB2 访问路径。我们可以直接将包绑定到计划中,也可以… 阅读更多

如何执行计划 PLANA 的 COBOL-DB2 程序 PROGA?

Mandalika
更新于 2020年9月11日 11:41:41

3K+ 浏览量

COBOL-DB2 程序可以在 IKJEFT01 的帮助下执行。IKJEFT01 是一个内置的主机实用程序,允许我们通过作业控制语言 (JCL) 运行 z/OS TSO 命令。如果我们要执行计划 PLANA 的 COBOL-DB2 程序 PROGA,我们必须提供如下 JCL 步骤。//STEP010 EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DIS.TEST.LOADLIB, DISP=SHR //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(TB3) RUN PROGRAM (PROGA) PLAN(PLANA) END /*在上面的 JCL 步骤中,我们首先使用 IKJEFT01 实用程序来调用 COBOL-DB2 程序。程序 PROGA 的 loadlib 路径在 STEPLIB 中给出,即 DIS.TEST.LOADLIB,并且… 阅读更多

广告