TCP 交易請求訊息連結

TCP 交易請求訊息(TRM)連結模型允許資料與參數透過 COMMAREA 在 TI 與伺服器 TP 之間傳遞。 該模型也允許並行伺服器連結 CICS DPL 程式。 標準的 TCP/IP 監聽器使用兩個網路交換來執行單一交易程式,並要求用戶端:

  • 向標準聆聽器發送交易請求訊息(TRM)。

  • 收到應用程式的TRM回覆。

  • 將應用程式請求資料串流傳送至伺服器交易程式。

  • 從伺服器交易程式接收應用程式回覆資料。

    TCP TRM 連結模型基於 CICS 並行伺服器模型。 TCP TRM 連結模型是 Microsoft 的一個變體,支援在 CICS 環境中執行 DPL 伺服器應用程式,並維持與 CICS LU6.2 連結程式設計模型的相容性。

    下圖總結了用戶端、標準 CICS 聆聽器、並行伺服器與大型主機交易程式之間的工作流程。 括號內的數字表示事件發生的大致順序。 圖後有更詳細的事件描述。

    這張圖片顯示了客戶端啟動預設聽眾器的流程。
    用戶端啟動預設聆聽器,該聆聽器將呼叫傳給並行伺服器,伺服器再從用戶端發送與接收資料,伺服器再將資料轉交給 CICS DPL 程式,由業務邏輯處理

TCP TRM 連結程式設計模型的運作方式如下:

  1. 應用程式會在 TI 元件中呼叫一個方法,該元件配置於元件服務或 .NET 框架中。

  2. TI 執行時會呼叫 TI 自動化代理。

  3. 若應用程式為 COM+ 元件,TI Automation 代理:

    1. 讀取先前由 TI 設計器建立的型別庫。

    2. 將自動化資料型態映射到 COBOL 資料型態。

      若應用程式是 .NET Framework 組件,則使用 TI Automation 代理:

    3. 讀入先前由 TI Designer 建立的組件和元資料。

    4. 將 .NET Framework 的資料型態對應到 COBOL 資料型態。

      TI Automation 代理則是:

    5. 呼叫轉換例程,將應用程式資料轉換為大型主機 COBOL 類型。

    6. 建立代表 COBOL 宣告或抄本的扁平資料串流緩衝區。

    7. 將資料串流傳遞給 TCP 傳輸元件。

  4. TI TCP 傳輸會利用大型主機的網際網路協定(IP)位址及聆聽器的埠位址,向標準監聽器發送連接請求。

  5. 標準的 Listener 會接受連線請求,並通知 TI 執行時發送 TRM。 標準的監聽器接著等待 TRM。

    TRM 是一份格式化的資料記錄,透過其 TRANID 來識別要呼叫的伺服器 TP。 Listener TP 是一種特殊的大型主機 TP,其主要功能是接收執行 TCP/IP 的用戶端應用程式所發送的伺服器 TP 呼叫。

    IBM 提供的標準 Listener TP 的 TRANID 為 CSKL。 聆聽器TP的TP名稱,在CICS程式控制表(PCT)中呈現為EZACIC02。

  6. TI 執行時會格式化標準或自訂的 TRM,並傳送給標準的 Listener。 TI 執行時會等待 TRM 回覆。

  7. 標準監聽器接收 TRM,向 TI 執行時發送接收確認,然後讀取 TRM 的內容。 監聽器會解讀 TRM 中的資訊,並擷取並行伺服器程式的交易 ID,該程式將服務該請求。

  8. 標準的 Listener 啟動並行伺服器 TP 程式(Mscmtics.cbl 範例應用程式),該程式由 TRM 中的 TRANID 使用 EXEC CICS Start 識別。

    Mscmtics.cbl 是 Microsoft 的範例 TP 檔案,用於透過 COMMAREA 在 TI 與伺服器 TP 之間傳遞資料。 Mscmtics.cbl 範例 TP 由 Microsoft 開發,並作為主機整合伺服器軟體的一部分提供。 它位於 $\Microsoft 主機整合伺服器\SDK\Samples\Comti\ProgrammingSpecifics\Tcp。 程式碼必須先編譯、連結並安裝於大型主機電腦上,才能使用此模型。

    備註

    若標準監聽器無法啟動並行伺服器,監聽器會格式化錯誤訊息並回傳給 COMTI TCP 傳輸。 聆聽者可能無法開始的原因包括:

    因 CICS 資源有限而被拒絕連線(例如,超過 CICS 任務的最大數量或超過伺服器任務的最大數量)。

    並行伺服器的 TRANID 無效或被停用

    與交易 ID 相關的 Concurrent Server 程式無效、停用或不可用

    備註

    CICS 監聽器的錯誤訊息是基於字元的,且總是以字母 EZY 開頭。 錯誤訊息長度可變,訊息結尾由 CICS 聽取器關閉的套接字決定。 標準的聆聽器在主機環境中呼叫套接字應用協定介面(API)。 標準監聽器無法發送 TRM 回覆。 TRM 回應代表一種同步過程,允許交易程式在用戶端傳送請求資料前有時間啟動。 此同步過程的必要性是因為 CICS 的內部架構考量(在提出要求後,無法保證交易程式何時會啟動)。

    標準 CICS 監聽器發出並行伺服器交易的啟動指令後,標準監聽器不再需要用於應用程式處理,可以自由監聽其他來訪請求。

  9. 在並行伺服器運行後,會讀取標準聽取器所發送的交易初始訊息(TIM)。

    TIM 描述伺服器運行的 TCP/IP 環境,包含並行伺服器用來與 COMTI TCP 傳輸通訊的 TCP/IP 套接字資訊,以及並行伺服器用來自訂執行行為的客戶端訊息標頭。 標頭包含要連結的伺服器程式名稱。

  10. 並行伺服器:

    1. 格式化標準或自訂的TRM回覆。

    2. 向 TI TCP 傳輸發送 TRM 回覆,告知其現在可以傳送應用程式請求資料。

    3. 發出接收指令並等待應用程式的請求資料。

      發送 TRM 回覆即完成標準 Listener 交換序列的第一部分。

  11. TI 執行時會評估 TRM,並透過標準 EXEC CICS Link 呼叫,透過 CICS COMMAREA 將資料傳遞給並行伺服器程式。 TI 執行環境也會傳送一個 socket(即 2 位元組)的關閉請求,然後等待回覆資料。

  12. 當並行伺服器收到應用程式請求資料後,會連結到 TRM 用戶端訊息標頭中指定的服務應用程式。 CICS EXEC CICS LINK 指令用於啟動實體伺服器應用程式。 Link 指令將從 COMTI TCP 傳輸接收到的應用程式資料傳送至共用記憶體區域(COMMAREA),並對資料執行商業邏輯。 所有商業邏輯皆由伺服器 TP 定義。

  13. 當伺服器應用程式完成請求處理並完成回覆後,會發出 EXEC CICS RETURN 指令,將控制權交還給並行伺服器(mscmtics.cbl)程式。 伺服器 TP 會準備回覆資料及標準或自訂的 TRM,接受來自 COMMAREA 的資料,然後透過 COMMAREA 將應用程式回覆資料回傳給 TI TCP 傳輸。 完成應用程式資料處理表示第二次交換序列結束。

  14. 並行伺服器會關閉該套接字。

  15. TI 自動化代理接收回覆資料並處理回覆。 TI 自動化代理:

    1. 接收來自 TCP 傳輸元件的訊息。

    2. 讀取訊息緩衝區。

      若應用程式為 COM+ 元件,TI Automation 代理:

    3. 將 COBOL 資料類型映射到自動化資料。

    4. 呼叫轉換例程,將大型主機的 COBOL 類型轉換為應用程式資料。

      若應用程式是 .NET Framework 組件,則使用 TI Automation 代理:

    5. 將 COBOL 資料型態對應至 .NET Framework 的資料型態。

    6. 呼叫轉換例程,將大型主機的 COBOL 類型轉換為應用程式資料。

  16. TI 執行時會將轉換後的資料回傳給呼叫該方法的 COM 或 .NET Framework 應用程式。

    要實作此模型,你必須提供 TI 一個 IP 位址、一個埠號和一個 CICS 程式名稱,以執行由並行伺服器程式(Mscmtics.cbl)傳遞的應用程式。 該模型要求在 CICS 中安裝 IBM 提供的預設監聽器(EZACIC02)。 CICS IBM 預設的 Listener 採用 IBM 提供的預設設定。

    主機整合伺服器包含範例程式碼,示範如何實作 TCP TRM 連結程式設計模型。 範例程式碼位於 \安裝目錄\SDK\Samples\AppInt。 啟動 Microsoft Visual Studio,開啟你想要的教學,並依照 說明說明書的指示操作。

    關於如何設定大型主機及撰寫 TCP/IP 伺服器應用程式的資訊,請參閱 TCP/IP V3R2 for MVS: CICS TCP/IP Socket 介面指南(IBM 文件 #SC31-7131)。

另請參閱

交易整合器元件
交易請求訊息
將資料型別從自動化轉換為 z/OS COBOL】
將資料型別從 z/OS COBOL 轉換為自動化
CICS元件
選擇合適的程式設計模型
程式設計模型