模塊化程序-子例程
阿新 • • 發佈:2017-08-12
參數 http image perf 執行 結構體 所有 per cnblogs
子例程
1、子例程中應避免使用主程序的變量,應使用參數
2、在子例程中定義的變量,只在子例程中有效
子例程的定義方式:
以FORM開頭、以 ENDFORM 結尾的ABAP代碼塊。
語法:
FORM <subroutine> [<pass>].
<statement block>
ENDFORM.
其中:
- <subroutine> 用於定義子例程名,
- <pass> 參數<pass>選項也可以沒有
- 子例程可以訪問其所在主程序中聲明的所有數據對象。
- 一般都將同一程序中定義的所有內部子例程都集中定義在程序的末尾。
- 子例程的定義不能互相嵌套
- 形參和實參:
- 形參(formal parameters):
- 子例程定義期間用FORM語句定義的參數(形參不指明類型,則直接繼承實參的數據類型) 數據變量、結構體、內表
- 實參(actual parameters):
- 子例程調用期間用PERFORM語句指定的參數
局部和全局變量:
全局變量:
- 在主程序中定義的變量
- 這些變量在整個主程序和調用的每個子例程中均可見(可進行處理)
局部變量:
- 在子例程中定義的變量稱作局部變量,
- 這些變量只存在於相關的子例程中(與形式參數相同),只能在子例程中使用。
參數傳遞:
將主程序變量傳遞給子例程形式參數
傳遞類型
- 值傳 using
子例程中參數變量的值的改變,不影響外部程序實際變量的值 - 引用傳 changing
若子例程中的參數變量的值發生了改變,那麽,外部程序的實際變量的值也發生改變 - 值傳並返回結果
傳遞參數的方式同值傳遞相同,但在子例程執行過程中,變量值不改變,而結束執行後,把變量的最終值返回
模塊化程序-子例程