伪对话与对话CICS编程有什么优势?

时间:2012-02-07 06:57:19

标签: cobol mainframe cics

我试图理解伪对话和对话CICS编程之间的区别。每种方法的优点和缺点是什么?

3 个答案:

答案 0 :(得分:9)

NealB的答案很好,你应该阅读

IBM's description

伪对话程序的主要优点是减少了计算机资源的使用,并且无法保存数据库锁。

  --------------------------------------------------------------

我将尝试在非IBM-Mainframe条款中表达答案

在对话式编程中,程序发送一个屏幕并等待用户响应。 该程序将保留内存,数据库资源等。

   Send Screen and wait for a users response
   Evaluate user-response
   when PF2
      Do Something
   when PF3    
      Do Some Thing else

伪对话编程基本上是基于事件编程的另一个名称。

  • 伪对话程序响应用户操作或事件(即PF键)。
  • 伪对话程序仅在运行时运行
    1. 由另一个程序启动/调用
    2. 用户执行某些操作(例如,点击输入/ pk-key)。 中间时间 - 所有资源都已发布

伪对话程序有点像Java swing中的ActionListener(或任何其他Swing,Web,SWT等价物)

我倾向于像

那样构建CICS
   Initialise and get-screen and user-action
   Evaluate 
   when initial-entry
      Initial stuff
      Send initial screen 

   When PF2 /* Delete Action */
      Do Delete
      Send Response
   When PF3 /* Insert Action */
      ......   
   end-evaluate
   exit program

在java-Swing中,您可以将上面的内容写成

Class MyScreen implements ActionListener {

   public MyScreen() {
       Initial stuff
       Add this actionlistners to various buttons
       Display screen 
   }


    public void actionPerformed(ActionEvent e) {

       if (e.getSource() == deleteButton) {
          Do Delete
          update screen
       } else if (e.getSource() == insertButton) {
          .......
       }
   }
 }

对于那些不是来自大型机背景的人,CICS就像任何Web服务器一样是一个应用程序服务器,但不是发送网页和接收HTML请求,而是发送和3270终端屏幕,并从终端接收响应。

注意:CIC也可以用作Web服务器。

答案 1 :(得分:5)

这是一个链接comparing conversational and pseudo conversational CICS

基本区别在于,在会话CICS中,一个进程(程序)是“活着的”并且持有资源(例如内存, 数据库锁) 在等待事件时(例如,用户从屏幕地图提供的数据)。 在伪对话CICS中,进程在等待时“死”(CICS RETURN) 发生事件。启动新的工作单元并重新分配资源以响应触发事件。

Pseudo converstional CICS经常用于在CICS中构建交互式应用程序。该技术是资源有效的 因为在用户“思考”时释放内存和数据库锁 - 这在大多数情况下都是如此。净收益是 更有效地使用资源,但管理数据库一致性需要更多的努力,因为它取决于 程序员,以确保交易的完整性(由于在“对话”过程中失去锁定)。

本大纲仅涵盖该主题的精髓。除此之外还有很多东西,但这是一个开始。

答案 2 :(得分:1)

简短的回答是,伪对话代码不包含EXEC CICS SEND MAP,逻辑上后跟EXEC CICS RECEIVE MAP,没有介入的逻辑EXEC CICS RETURN。因此,在用户“思考时间”期间,您的程序不会消耗CICS资源。

当您的程序执行CICS RETURN时,您可以将状态信息保存在逗号(传统)或具有一个或多个容器的通道中(自CICS TS 3.1起)。

还有更多细节,但这只是它的基础。