找到 150 篇文章 适用于 DB2

COBOL-DB2 程序编译步骤

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

10K+ 次浏览

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

在 DB2 程序中进行非 SQL 更改而不进行 BIND 时,执行结果是什么?

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,并且... 阅读更多

广告

© . All rights reserved.