IBM Books

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

傳送參數

有兩種方式可將資訊傳遞給「系統」(DTW_REXX) 語言環境所呼叫的程式:直接與間接。

直接
在程式的呼叫上直接傳遞參數。例如:

%DEFINE INPARM1 = "SWITCH1"
                           
%function(DTW_SYSTEM) sys1() {
  %EXEC{
  /QSYS.LIB/NETDATA.LIB/RPGCALL1.PGM 
    ('$(INPARM1)'  'LITERALSTRING') 
 %}
%}

Net.Data 變數 INPARM1 會被解除參照,並傳遞到程式。 參數傳遞到程式的方式將同於從「命令登錄」顯示畫面中呼叫程式時參數傳遞到程式的方式。 使用這種方法傳遞的參數被視為輸入類型參數 (程式可使用及操作已傳遞到程式的參數, 但對參數所做的變更不會向 Net.Data 反映)。

間接

使用環境變數間接傳遞參數。環境變數即是儲存在程式外的環境空間中的套表"name=value"的字串。 這些字串會儲存在與處理有關聯的暫時空間中。

當 Net.Data 呼叫 DTW_SYSTEM 語言環境函數時,在執行 %EXEC 區塊內的陳述式之前, 語言環境會先將輸入 (IN) 或輸入/輸出 (INOUT) 的任何函數參數儲存在環境空間中。 在順利完成陳述式後,DTW_SYSTEM 語言環境便會判斷是否有任何輸出 (OUT 或 INOUT) 函數參數。 若有,語言環境則會從環境空間中取回對應於函數參數的值,並以新值更新函數參數值。 當 Net.Data 取得控制時,它會輪流以從 DTW_SYSTEM 語言環境中取得的新值, 更新所有 OUT 或 INOUT 參數。

使用 表 3 中描述的 API 設定與取回環境變數:

表 3. 環境變數 API
ILE 程式設計語言 若要取回,請使用... 若要設定,請使用...
C, C++ getenv() putenv()
CL(1), RPG, COBOL QtmhGetEnv()(2) QtmhPutEnv()(3)

  1. 對於 OS/400 V3R7,您也可以使用 CHGENVVAR 與 ADDENVVAR CL 命令,來設定環境變數。

  2. QtmhGetEnv() 會隨附於 IBM TCP/IP Connectivity Utilities/400,作為它的一部份。

  3. QtmhPutEnv() 原先不會隨附於 IBM TCP/IP ConnectivityUtilities/400 for V3R2 與 V3R7, 作為它的一部份。是在後期產品修正時加入的,可透過 V3R2 PTF 5763TC1-SF40953 或 V3R7 PTF 5716TC1-SF40954 取得它。

您可以將 Net.Data 表格傳遞到「系統」語言環境所呼叫的程式。 程式會依據它們的 Net.Data 名稱來存取 Net.Data 巨集表格參數的值。 直欄標題與欄位值包含在以表格名稱與直欄號碼識別的變數中。例如, 在 myTable 中,直欄標題為 myTable_N_j, 而欄位值為 myTable_V_i_j,其中 i 是橫列號碼,j 為直欄號碼。 表格的橫列與直欄數目為 myTable_ROWSmyTable_COLS

不建議您傳遞具有多列的表格,因為處理的環境變數的數目受到限制。


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