COBOL->;COBOL/DB2->;COBOL->;COBOL/DB2PGM调用

COBOL->;COBOL/DB2->;COBOL->;COBOL/DB2PGM调用,db2,bind,cobol,Db2,Bind,Cobol,比如说像PGM1(cobol)调用-->PGM2(cobol-db2)调用-->PGM3(cobol)-->调用PGM4(cobol-db2)。 1Q。对PGM3进行了修改,这纯粹是COBOL程序。我们是只编译PGM3并将其升级到生产环境,还是在调用cobol-db2程序时再次进行绑定。 第2季度。如果修改了PGM4,则必须执行什么操作。(我正在使用包->计划概念)? 另外,当我们有cobol/db2调用时,请任何人解释一下绑定包的概念 Ashok 这绝对是一个你如何打电话的问题。电话可以是静态

比如说像PGM1(cobol)调用-->PGM2(cobol-db2)调用-->PGM3(cobol)-->调用PGM4(cobol-db2)。 1Q。对PGM3进行了修改,这纯粹是COBOL程序。我们是只编译PGM3并将其升级到生产环境,还是在调用cobol-db2程序时再次进行绑定。 第2季度。如果修改了PGM4,则必须执行什么操作。(我正在使用包->计划概念)? 另外,当我们有cobol/db2调用时,请任何人解释一下绑定包的概念

Ashok

这绝对是一个你如何打电话的问题。电话可以是静态的,也可以是动态的。 有了动态调用,您就不需要编译主程序,而是修改子程序。 但对于静态调用,您也需要编译主程序

Ans1:-所有调用中的静态调用-是的,您必须编译所有程序。 使用动态调用-只需编译子程序

Ans 2:-有关包装和计划概念,请参见下面的完整详细信息

如果将DBRMs的旧版本直接绑定到计划中

·为已更改的程序和任何未更改的程序标识直接绑定到该计划中的所有DBRM,然后再次将它们绑定到该计划中

·当您将DBRMs绑定到计划中时,应用程序不能使用该计划访问DB2

如果将更改的应用程序的旧版本DBRMs绑定到包中

·您不需要再绑定任何其他包或直接将DBRMs绑定到计划中

·您只需将更改后的应用程序的DBRMs的新版本绑定到与旧版本同名的包中

·您不需要再次绑定该计划——它可以定位包的新版本

·当您更改包时,应用程序仍然可以使用其他包并在计划中直接绑定DBRM


希望这有帮助

根据经验,如果“一致性令牌”发生更改,则应重新绑定。也就是说,如果生成新的DBRM。画一幅画。这会有帮助的。链接在这里真的是一种转移注意力的手段。如果你不知道什么是一致性令牌,你会在你的-805之后。向同伴寻求帮助(首先)


还可以向您的同行询问影响分析。(还有什么我不应该重新编译的?。

如果子例程包含静态SQL语句,则编译时将生成DBRM。这会更改一致性令牌,因此需要将模块恢复到数据库,以避免818一致性令牌错误。如果子例程不包含SQL,则不需要将其绑定到数据库,因为从未为其创建过DBRM

即使是只包含动态SQL的程序也会创建必须绑定到数据库的DBRM。除了一致性令牌之外,DBRM本身几乎是空的


无论这是大型机COBOL还是使用DB2或LUW的分布式COBOL,这都是正确的。

我已经有一段时间没有编写任何COBOL了,但我们总是有两条相关的经验法则

  • 只使用静态调用—您的代码应该经过性能测试,如果不需要为非常特定的目的进行动态调用,则应不惜一切代价避免
  • 当某些内容发生更改时,重新绑定所有内容,并在启用之前检查创建的访问路径
  • 如果您需要等待一段停机时间来完成任务并在生产中输入更新的代码,我会耐心地计划一个,然后完成绑定…或者让DBA来做,让他们在您的停机窗口中确认成功,或者立即回滚

    如果您的开发环境足够复杂,请在较低的预生产环境中使用生产中DB2表的统计信息完成绑定(如果可以,请复制数据,或者让DBA来完成)。并检查所有DB2调用的访问路径都没有更改

    希望这有帮助

    First use this DB2 SQL to get the CONTOKENs
    
    SELECT SUBSTR(COLLID,1,12) AS COLLID ,
           SUBSTR(NAME,1,8) AS NAME ,
           HEX(CONTOKEN) AS CONTOKEN ,
           SUBSTR(OWNER,1,8) AS OWNER ,
           SUBSTR(CREATOR,1,8) AS CREATOR ,
           PDSNAME ,BINDTIME 
           FROM SYSIBM.SYSPACKAGE 
           WHERE NAME= 'program name';
     
    Get the DB2 CONTOKEN  (example below)
    1ADB70E30768F694
    0768F6941ADB70E3  (then reversed contoken 4bytes+4bytes)
    
    Check #1 use reversed token search
    Use token 0768F6941ADB70E3  (reversed)
             CONTROL.???????.CICSLIB
        Should be found
    
    Check #2 use non-reversed token into DBRMLIB
    CONTROL.????????.CIC.DBRMLIB           
    -Use token 1ADB70E30768F694
    Should be found
    

    如果找到了,那么您的绑定是好的。

    您应该编辑您的问题,并解释将哪些对象绑定在一起。你的问题是如何写的(程序调用程序),
    BIND
    ,一点都不重要。嗨,本尼。谢谢你的评论。这是面试中面临的问题之一。在那里,我们不能期望需求文件中给出的每一件事情都是明确的。如果对此类概念/要求进行概述,将对学习者有很大帮助。静态还是动态?SQL是否在改变?可用的软件(如“绑定管理器”?等?当在面试中被问到时,答案是“没有更多信息就无法判断,但是…”然后给出真正基本的答案,这些答案都可以通过研究找到,这样你会更容易记住,而不是让别人帮你阅读手册。StackOverflow的存在并不是为了帮助人们回答面试问题——这些问题往往故意含糊,以了解应聘者对面试的了解程度如果有人想在面试中取得好成绩,他们应该把时间花在学习这个主题上,而不是试图记住互联网用户给他们的答案。@ASHOKPOLURU同样,不清楚使用了什么COBOL编译器。它在什么平台上?COBOL运行单元是如何定义的?任何答案在IL之间都可能有很大的不同IBMi上的E COBOL和z OS(或其他地方)上的其他编译器。至于回答面试问题,这会对面试的雇主造成伤害,并损害与SO的任何关系。除非您的源代码管理系统坚持,并且除非您不对对象进行编目,否则您只需要编译程序中发生更改的程序。对于静态调用,您可以运行linkeditor/bind呃,它将接收新对象。因此,不,不知道为特定站点设置了什么,试图回答这些问题是非常困难的,冗长的,而且基本上是毫无意义的。与DB2方面类似。不知道