学习笔记(六)

SUBMIT LEAVE TO TRANSACTION

SUBMIT AND RETURN CALL TRANSACTION

LEAVE PROGRAM

主会话,外部会话,在用户登录时建立,最多可以开六个主会话,使用不同的应用内存区域,相当于多次不同的登录;

在主会话中运行可执行程序或者模块池程序,就开始一个内部会话,应用主会话内存区域,程序中所有数据对象都在此区域内存储,在一个主会话中只有当前内部会话的内存区是活动的,当前程序被调用,则使用堆栈规则,调用与被调用直接传递数据,需要使用一个主会话中公用的应用内存;

每一个主会话内部都有一个应用内存区域,在会话内部可以通过EXPORT TO MEMORY和IMPORT FROM MEMORY语句在该内存的程序堆栈直接进行数据传递,在应用内存中的数据以程序调用序列的顺序进行存储,如果一个程序内部调用另一个程序,可以先使用EXPORT将数据存入内存,在被调用程序中通过IMPORT语句读取该程序,退出被调用程序前可以使用同样的方式将数据传回主程序;

共用内存是所有会话都可以访问的内存区域,因此数据可以通过公共内存在各个会话之间共享,在程序中,SET PARAMETER和GET PARAMETER 语句用于访问共用内存中所存储的SPA/GPA参数,该参数与屏幕元素相连接,因而可以通过共用内存进行屏幕的默认参数设定;

每次开始运行或者调用一个程序时,系统将一个程序实例装载入应用内存,在内部会话中第一个被装载的程序称为主程序,如果在主程序运行的过程中,其他程序被调用或者一个全局类成员被调用,则该程序的一个实例将被载入应用内存并且相关的数据和对象将保持至主程序结束,每次一个类型为I、M、F、S类型的程序实例被装载时,都将触发相应程序的LOAD-OF-PROGRAM事件(类库除外),因此该事件对于每一个程序在内部会话中仅装载一次,可以用于整个程序的整体初始化;

当使用CREATE OBJECT语句创建应用对象时,一个类的实例将被装载入内部会话,所有内部会话中的程序及对象都可以使用该类实例,因而,该对象的指针可以被传递进入外部过程(例如子程序、功能模块、类方法),然而由于应用服务器中没有分配可以被多个事务共享的对象内存区域,对象引用变量不能存储与应用内存或者公共内存中,解决方案是使用数据库系统提供的持续性服务,将数据对象长期保存;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值