TCP 交易請求訊息使用者資料

TCP 交易請求訊息(TRM)使用者資料程式設計模型允許資料與參數直接在 TI 與主機 TP 之間交換。 TCP TRM 使用者資料模型基於 CICS 並行伺服器模型。 標準的監聽器使用兩個網路交換器來執行單一交易程式,並要求用戶端:

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

  • 收到申請程式的TRM回覆

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

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

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

    這張圖片顯示了用戶端啟動預設監聽器,然後從用戶端傳送和接收資料的過程。
    用戶端啟動預設聆聽器,該聆聽器將呼叫傳給並行伺服器,伺服器再從用戶端傳送與接收資料

TCP TRM 使用者資料程式設計模型的工作流程摘要圖

TCP TRM 使用者資料程式設計模型的運作方式如下:

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

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

  3. TI 代理:

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

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

      TI 代理伺服器為:

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

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

    5. 將訊息傳遞給 TCP 傳輸元件。

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

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

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

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

  6. TI 執行時會格式化 TRM 並傳送到標準 Listener。 TI 等待 TRM 的回覆。

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

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

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

備註

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

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

  • 對於併發伺服器的 TRANID 無效或已停用

  • 與交易 ID 相關的無效、停用或無法使用的並行伺服器程式

備註

CICS 監聽器的錯誤訊息是基於字元的,且總是以字母 EZY 開頭。 錯誤訊息長度可變,訊息結尾由 CICS 聽取器關閉的套接字決定。

  1. 標準的聆聽器在主機環境中呼叫套接字應用協定介面(API)。 標準監聽器無法發送 TRM 回覆。 TRM 回應代表一種同步過程,允許交易程式在用戶端傳送請求資料前有時間啟動。 此同步過程的必要性是因為 CICS 的內部架構考量(在提出要求後,無法保證交易程式何時會啟動)。

    標準 CICS 監聽器發出並行伺服器交易的啟動指令後,標準監聽器便脫離應用程式處理迴圈,可以自由監聽其他來訪請求。

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

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

  3. 並行伺服器:

    1. 格式化TRM回覆。

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

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

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

  4. TI 會評估 TRM 並將資料傳送給並行伺服器。 TI 會發送 socket 關閉訊號,然後等待回應資料。

  5. 在並行伺服器接收應用程式請求資料後,伺服器會對該資料執行業務邏輯。

  6. 伺服器完成請求處理並完成回應後,準備回覆資料,然後直接將回應傳送給用戶端。 完成應用程式資料處理表示第二次交換序列結束。

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

  8. TI 代理接收回覆資料並處理回覆。 TI 代理:

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

    2. 讀取訊息緩衝區。

      TI 代理:

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

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

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

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

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

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

另請參閱

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