IBM Books

OS/400 版的 Net.Data 管理與程式設計手冊

呼叫函數

使用 Net.Data 函數呼叫陳述式,來呼叫使用者定義的函數與內建函數。 使用 at (@) 字元,其後跟著 FUNCTION 區塊名稱或 MACRO_FUNCTION 區塊名稱:

@function_name([ argument,... ])

function_name
這是要呼叫的 FUNCTION 區塊或 MACRO_FUNCTION 區塊的名稱。 除非該函數為內建函數,否則此函數必須已定義在 Net.Data 巨集中。

argument
這是已定義的變數、文字字串、變數參照或函數呼叫的名稱。 函數呼叫上的引數符合 FUNCTION 區塊或 MACRO_FUNCTION 區塊的參數, 而在處理 FUNCTION 區塊或 MACRO_FUNCTION 區塊時, 會指定對應的引數給每一個參數。 引數的數目和類型,必須與相對應參數的相同。

Net.Data 以下列次序,來處理 FUNCTION 區塊、 MACRO_FUNCTION 區塊、或與函數呼叫有關的內建式函數:

  1. Net.Data 在 FUNCTION 區塊之可執行的陳述式區段內, 處理變數參照和函數呼叫。 Net.Data 使用變數的現行值來置換所有的變數參照, 且以函數呼叫的回覆值來執行和置換所有函數呼叫。 變數參照和函數呼叫是以被指定的次序來處理。 Net.Data 在這個步驟中,不處理內建式函數或 MACRO_FUNCTION 區塊。

  2. 原始語言處理器可處理可執行的陳述式區段。 以 FUNCTION 區塊而言,處理器對應到於 FUNCTION 區塊上指定的語言環境, 例如 SQL、REXX 或 Perl。以 MACRO_FUNCTION 區塊而言,Net.Data 扮演語言處理器的角色,且執行可執行的陳述式。 內建式函數沒有可執行的陳述式。 Net.Data 根據函數名稱來處理內建式函數。

    Net.Data 將函數的參數傳送至原始語言處理器。 Net.Data 只將 IN 和 INPUT 參數的值傳遞給原始語言處理器, 且只接受原始語言處理器傳回 OUT 和 INOUT 參數的值。

  3. Net.Data 基於來自語言處理器的回覆碼與回覆訊息, 來設定隱含的 RETURN_CODE 和 DTW_DEFAULT_MESSAGE 變數。Net.Data 在 MACRO_FUNCTION 區塊上不設定這些變數。

  4. 如果 FUNCTION 區塊或 MACRO_FUNCTION 區塊 含有 一個或多個 REPORT 區塊,或設定要產生的預設報表, Net.Data 將使用任何參照的輸出參數的新值來處理報表。Net.Data 不會產生內建式函數的報告。

  5. 若 FUNCTION 區塊包含區域 MESSAGE 區塊,則 Net.Data 會處理該 MESSAGE 區塊。 下列其中一項條件發生時,Net.Data 會處理整體 MESSAGE 區塊:

    Net.Data 不會處理 MACRO_FUNCTION 區塊的 MESSAGE 區塊。

  6. Net.Data 會以函數的回覆值置換函數呼叫。 以 FUNCTION 區塊而言,此值是下列其中一項:

    RETURNS 參數值
    置換含有 RETURNS 關鍵字的 FUNCTION 區塊。

    空字串 ("")
    當 RETURN_CODE 為 0 時,置換不含 RETURNS 關鍵字的 FUNCTION 區塊。

    RETURN_CODE
    當 RETRUN_CODE 不是 0 時,置換不含 RETURNS 關鍵字的 FUNCTION 區塊。

    以 MACRO_FUNCTION 區塊而言,處理可執行的陳述式區段之結果,會置換函數呼叫。

    以內建式函數而言,該值根據內建函數的格式而定。


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]