學習筆記(六)

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語句創建應用對象時,一個類的實例將被裝載入內部會話,所有內部會話中的程序及對象都可以使用該類實例,因而,該對象的指針可以被傳遞進入外部過程(例如子程序、功能模塊、類方法),然而由於應用服務器中沒有分配可以被多個事務共享的對象內存區域,對象引用變量不能存儲與應用內存或者公共內存中,解決方案是使用數據庫系統提供的持續性服務,將數據對象長期保存;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章