開啟存取處理程式

「開啟存取權」處理程式負責處理「開啟存取權」檔案的所有作業。

開啟檔案、關閉檔案,以及檔案的任何輸入或輸出作業時,都會呼叫處理程式。

傳遞至處理程式的參數

將單一參數傳遞給處理程式。 檔案 QOAR/QRPGLESRC 中的副本成員 QRNOPENACC 包含資料結構範本 QrnOpenAccess_T ,可與 LIKEDS 關鍵字搭配使用,以在處理程式中定義參數。

處理程式參數包含許多指向其他結構的指標子欄位。 複製檔案包含可用來定義這些其他結構的其他資料結構範本。 例如, prtctl 子欄位可用作關鍵字 LIKEDS (QrnPrtctl_T)所定義結構的基本指標。

複製檔案也包含數個可在處理程式內使用的已命名常數。 例如,有數個名稱以 QrnOperation_開頭的已命名常數,例如 QrnOperation_OPEN,可與處理程式參數的子欄位 rpgOperation 搭配使用。

子欄位提供處理程式執行必要作業所需的所有資訊。 例如,對於輸出作業,它會接收要寫入檔案的資料。

子欄位也容許處理程式在作業之後傳回 RPG 所需的所有資訊。 例如,對於輸入作業,處理程式可以傳回輸入資料,並且可以傳回檔案是否達到檔案結尾的相關資訊。

如果處理程式需要直接與 RPG 程式設計師通訊,處理程式提供者可以要求 RPG 程式設計師指定 HANDLER 關鍵字的 communication-area 參數。 RPG 程式和處理程式提供者必須確定通訊區域參數定義在處理程式和 RPG 程式中相同。 一般而言,處理程式提供者會在副本檔中提供範本資料結構, RPG 程式設計師可以用來定義通訊區域參數。
附註: 通訊區也稱為 使用者區域。 處理程式參數中的 userArea 子欄位是指向 RPG 程式中 HANDLER 關鍵字上所指定通訊區參數的指標。

如果處理程式需要維護處理程式呼叫之間可用的狀態資訊,它可以在處理程式參數中使用 stateInfo 指標子欄位。 在對處理程式的一次呼叫期間,如果處理程式在此子欄位中放置指標值,則對該特定檔案處理程式的所有後續呼叫都可以使用相同的指標值。 通常,處理程式會在處理 OPEN 作業時為狀態資訊配置儲存體,並在處理 CLOSE 作業時取消配置儲存體。

處理程式中的錯誤

如果處理程式因無法處理的異常狀況而失敗,則 RPG 作業會失敗,並傳回與作業相關的狀態碼。 例如,如果作業是 OPEN 或 CLOSE 作業,則錯誤狀態會是 1216 或 1217。 對於其他作業,狀態將為 1299。

如果處理程式偵測到錯誤,則有兩種機制可將失敗傳達給 RPG 程式:
  • 傳送異常狀況訊息,將導致處理程式以無法處理的異常狀況結束。 此訊息將出現在工作日誌中,後續的 RPG 錯誤訊息將參照此錯誤訊息。

    此機制的優點是處理程式會在傳送異常狀況訊息時立即結束,因此處理程式不需要追蹤作業是否失敗。

  • 將處理程式參數的 rpgStatus 子欄位設為所需的 RPG 狀態碼。 將診斷訊息傳送至工作日誌也可能很有用。

    此機制的優點是處理程式可以選擇確切的狀態碼。 例如,有數個狀態碼與 WORKSTN 作業相關聯。

如需撰寫 Open Access 處理程式的相關資訊,請參閱 Rational® Open Access: RPG Edition 主題。