接收訊息

下圖顯示從動態存取模組 (DMOD) 接收訊息的方法。

顯示如何使用路由程式接收訊息的影像。
使用路由程式接收訊息

DMOD 初始化之後,3270 模擬器會藉由呼叫 sepdrout來註冊路由程式。 當 DMOD 收到訊息時,它會呼叫 3270 模擬器路由程式,然後處理訊息。

使用此方法時,DMOD 執行緒與 3270 模擬器執行緒之間沒有內容切換。 不過,路由程式必須快速將控制權傳回至 DMOD。 例如,它無法暫停等候鍵盤輸入。

應用程式必須判斷接收的訊息是針對此應用程式或另一個應用程式。 如果訊息不是用於此應用程式,則路由程式必須傳回,表示訊息未處理。 如果應用程式處理訊息,則負責在處理完成時釋放緩衝區。

在某些情況下,路由程式可以處理訊息完成。 替代方式是讓路由程式將訊息放在應用程式佇列上,然後清除應用程式號志。 接著,應用程式就可以處理訊息。

藉由將 Status-Resource 訊息傳送至 (本機節點以傳回點數,藉此進一步改善效能,讓它在收到訊息時從路由程式傳送進一步的資料) ,而不是等到訊息處理完成為止。 此用法說明于 範例程式碼:初始化和路由程式。 如需點數和流量控制的詳細資訊,請參閱 步調和區塊化

在應用程式收到訊息之後,應用程式會負責接收訊息的緩衝區。 應用程式必須使用 sbpusend) 重複使用緩衝區來傳送訊息 (,或使用 sepdburl) 將它釋放 (。 如果要重複使用的緩衝區未包含要傳送之訊息的正確元素數目,應用程式可以使用 sbpibegt) 取得其他元素 (,或使用 sbpiberl) 釋放現有的元素 (。 在此情況下,應用程式也必須確保緩衝區標頭中的 numelts 欄位指出正確的元素數目。