271 次浏览
在每次执行 COBOL-DB2 程序时,都会比较加载模块和包/DBRM 的时间戳。如果程序中变量的长度发生更改(并且没有 SQL 更改)并且已编译,则加载模块将具有新生成的时间戳,另一方面,如果未执行 BIND,则包/DBRM 将具有旧的时间戳。当执行此程序时,调用此程序的 JCL 步骤将失败,并显示 SQL 错误代码 -818。如果我们有一个 COBOL-DB2 程序,其中 SQL 语句永远不会改变…… 阅读更多
659 次浏览
当 COBOL-DB2 源代码作为输入提供给预编译阶段时,我们将获得两个重要的组件——DBRM 和修改后的源代码。在修改后的源代码中,SQL 语句被 COBOL 调用替换,而 DBRM 包含 COBOL-DB2 程序中存在的所有 SQL 语句。预编译器在 DBRM 和修改后的源代码中都插入时间戳。如果 DBRM 直接绑定到计划,则在执行 COBOL-DB2 程序时,系统会比较 DBRM 和加载模块的时间戳。如果时间戳不匹配,则 JCL 步骤…… 阅读更多
124 次浏览
程序将成功运行(除非程序中存在逻辑错误),因为时间戳是在预编译期间插入到 DBRM 中的,并且预编译是在编译步骤之前完成的。因此,DBRM 和加载模块将具有相同的时间戳。插入到 DBRM 中的时间戳也会传递给包。因此,如果我们使用 DBRM-包-计划组合,在这种情况下,程序也将成功运行,因为整个过程中的时间戳是一致的。
698 次浏览
当任何 COBOL-DB2 程序被预编译时,当前时间戳将被插入到 DBRM 中,如果 DBRM 被绑定到一个包中,则时间戳将进一步复制到该包中。类似地,时间戳也在编译过程中插入到加载模块中。当任何 COBOL-DB2 程序被执行时,系统会将加载模块的时间戳与 DBRM/包中的时间戳进行匹配,如果存在不匹配,则程序将失败。如果 DBRM 直接绑定到计划,即使只有子程序进行了更改,我们也需要再次绑定两个计划 - PLANA 和 PLANB…… 阅读更多
3K+ 次浏览
DBRM 可以直接绑定到计划,或者我们可以先将 DBRM 绑定到包中,然后将该包绑定到计划中。如果 DBRM 直接绑定到计划,如果源代码发生某些更改,则必须生成新的 DBRM,然后必须再次绑定整个计划。由于计划包含多个 DBRM,因此系统将再次处理所有 DBRM 以绑定该计划(即使其他 DBRM 没有经过任何更改)。此过程需要大量资源,例如内存、处理器和宝贵的…… 阅读更多
589 次浏览
DBRM 是从源代码预编译生成的 DB2 对象。它包含源代码中的所有 SQL 语句/查询。由于其格式,DBRM 无法直接执行,因此必须先将其绑定到计划中。可以将多个 DBRM 绑定到单个计划中。每当源代码发生更改时,都必须使用更改后的 SQL 语句/查询再次生成相应的 DBRM。然后必须再次绑定整个计划(包含旧的 DBRM)。使用以下 JCL 步骤,我们可以将 DBRM 直接绑定到…… 阅读更多
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,…… 阅读更多
1K+ 次浏览
包是一个数据库对象,它以 DB2 优化的形式包含来自 DBRM 的 SQL 语句。集合是一组包,我们可以使用它来隔离属于不同应用程序的 DB2 包。例如,在电信公司的生产环境中,我们可以为订单处理、计费和客户服务设置不同的集合。包或包组(集合)绑定到计划中。计划是一个可执行对象,包含其中所有 SQL 查询的 DB2 访问路径。我们可以直接将包绑定到计划中,或者我们可以…… 阅读更多
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,并且…… 阅读更多
658 次浏览
要聚合多个结果,请在 MongoDB 中使用 $group。让我们创建一个包含文档的集合 -> db.demo765.insertOne(……{……Name:"John",……"Category":"ComputerScience",……"SubjectName":"MongoDB",……"Marks":75……}……); {"acknowledged":true,"insertedId":ObjectId("5eb054525637cd592b2a4b01")} > > db.demo765.insertOne(……{……Name:"John",……"Category":"ComputerScience",……"SubjectName":"MySQL",……"Marks":85……}……); {"acknowledged":true,"insertedId":ObjectId("5eb054525637cd592b2a4b02")} > db.demo765.insertOne(…… 阅读更多