IBM Books

OS/400 版管理及程式設計指南

傳送參數到 REXX 程式

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

直接
使用 %EXEC 陳述式直接將參數傳遞給外部 REXX 程式。例如:

 %FUNCTION(DTW_REXX) rexx1() {                               
  %EXEC{                                   
    /QSYS.LIB/NETDATA.LIB/QREXXSRC.FILE/CALL1.MBR $(INPARM1)  %}                            
%}

Net.Data 變數 INPARM1 會被解除參照,並傳遞到外部 REXX 程式。REXX 程式可以經由使用 REXX PARSE ARG 指令, 來參照變數。使用這種方法傳遞給程式的參數被視為輸入類型參數 (程式可使用及操作已傳遞到程式的參數, 但對參數所做的變更不會向 Net.Data 反映)。

間接

經由 REXX 程式變數儲存池方式間接傳遞參數。 當啟動 REXX 程式時,REXX 直譯器即會建立並維護含有關於所有變數的資訊的空間。 這個空間稱為變數儲存池。

當呼叫 REXX 語言環境 (DTW_REXX) 函數時,在執行 REXX 程式之前, REXX 語言環境會先將任何輸入 (IN) 或輸入/輸出 (INOUT) 函數儲存在變數儲存池中。 當呼叫 REXX 程式時,它便可以直接存取這些變數。 一旦順利完成 REXX 程式,DTW_REXX 語言環境便會判斷是否有任何 (OUT) 或 INOUT 函數參數。 若有,環境則會從變數儲存池中取回對應於函數參數的值,並以新值更新函數參數值。 當 Net.Data 收到控制時,它會以從 REXX 語言環境中取得的新值, 更新所有 OUT 或 INOUT 參數。 例如:

%DEFINE a = "3"
%DEFINE b = "0"
%FUNCTION(DTW_REXX) double_func(IN inp1, OUT outp1){
   outp1 = 2*inp1
%}
 
%HTML(REPORT){ 
Value of b is $(b), @double_func(a, b) Value of b is $(b)
%}

在上面範例中,呼叫 @double_func 傳遞兩個參數 ab。 REXX 函數 double_func 會將第一個參數加倍,並將結果儲存在第二個參數中。 當 Net.Data 呼叫巨集時,b 具有值 6

您可以將 Net.Data 表格傳遞到 REXX 程式。REXX 程式會存取 Net.Data 巨集表格參數的值, 作為 REXX stem 變數。 對 REXX 程式而言,直欄標題與欄位值包含在以表格名稱與直欄號碼識別的變數中。 例如,在 myTable 中,直欄標題為 myTable_N.j, 而欄位值為 myTable_N.i.j,其中 i 是橫列號碼,j 為直欄號碼。表格中的橫列數目為 myTable_ROWS, 表格中的直欄數目則為 myTable_COLS


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