有兩種方式可將資訊傳遞給「系統」(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 設定與取回環境變數:
| ILE 程式設計語言 | 若要取回,請使用... | 若要設定,請使用... |
|---|---|---|
| C, C++ | getenv() | putenv() |
| CL(1), RPG, COBOL | QtmhGetEnv()(2) | QtmhPutEnv()(3) |
| ||
您可以將 Net.Data 表格傳遞到「系統」語言環境所呼叫的程式。 程式會依據它們的 Net.Data 名稱來存取 Net.Data 巨集表格參數的值。 直欄標題與欄位值包含在以表格名稱與直欄號碼識別的變數中。例如, 在 myTable 中,直欄標題為 myTable_N_j, 而欄位值為 myTable_V_i_j,其中 i 是橫列號碼,j 為直欄號碼。 表格的橫列與直欄數目為 myTable_ROWS 與 myTable_COLS。
不建議您傳遞具有多列的表格,因為處理的環境變數的數目受到限制。