运行时动态调用子程序的例子
生活随笔
收集整理的這篇文章主要介紹了
运行时动态调用子程序的例子
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼比較簡(jiǎn)單,就沒有寫注釋。
處理邏輯就是要求用戶輸入一個(gè)子程序名,然后動(dòng)態(tài)調(diào)用,并且用異常機(jī)制處理輸入的子程序不存在的情況。
當(dāng)然,如果在 PERFORM 最后用 IF FOUND 就可以不用 TRY 結(jié)構(gòu)了,但是對(duì)于子程序不存在的情況不會(huì)給出任何提示,用 sy-subrc 也追蹤不到異常返回碼。
關(guān)于更多異常,請(qǐng)參考 PERFORM 的 F1 聯(lián)機(jī)幫助。
*&---------------------------------------------------------------------*
*&?Report??ZQS2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT??zqs2.
PARAMETERS?p_sub(40)?TYPE?c.
DATA?fssub(40)?TYPE?c.
fssub?=?p_sub.
TRY.
????PERFORM?(fssub)?IN?PROGRAM?zqs2. "?IF?FOUND.
??CATCH?cx_sy_dyn_call_illegal_form.
????WRITE:?'The?routine',?p_sub?COLOR 3,?'is?not?exist!'.
ENDTRY.
*&---------------------------------------------------------------------*
*&??????Form??sub_a
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
FORM?sub_a.
??WRITE:?'Congratulation!?I?am?routine?SUB_A!'.
ENDFORM.????????????????????"sub_a
*&---------------------------------------------------------------------*
*&??????Form??sub_b
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
FORM?sub_b.
??WRITE:?'Congratulation!?I?am?routine?sub_b.'.
ENDFORM.????????????????????"sub_b
處理邏輯就是要求用戶輸入一個(gè)子程序名,然后動(dòng)態(tài)調(diào)用,并且用異常機(jī)制處理輸入的子程序不存在的情況。
當(dāng)然,如果在 PERFORM 最后用 IF FOUND 就可以不用 TRY 結(jié)構(gòu)了,但是對(duì)于子程序不存在的情況不會(huì)給出任何提示,用 sy-subrc 也追蹤不到異常返回碼。
關(guān)于更多異常,請(qǐng)參考 PERFORM 的 F1 聯(lián)機(jī)幫助。
*&---------------------------------------------------------------------*
*&?Report??ZQS2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT??zqs2.
PARAMETERS?p_sub(40)?TYPE?c.
DATA?fssub(40)?TYPE?c.
fssub?=?p_sub.
TRY.
????PERFORM?(fssub)?IN?PROGRAM?zqs2. "?IF?FOUND.
??CATCH?cx_sy_dyn_call_illegal_form.
????WRITE:?'The?routine',?p_sub?COLOR 3,?'is?not?exist!'.
ENDTRY.
*&---------------------------------------------------------------------*
*&??????Form??sub_a
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
FORM?sub_a.
??WRITE:?'Congratulation!?I?am?routine?SUB_A!'.
ENDFORM.????????????????????"sub_a
*&---------------------------------------------------------------------*
*&??????Form??sub_b
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
FORM?sub_b.
??WRITE:?'Congratulation!?I?am?routine?sub_b.'.
ENDFORM.????????????????????"sub_b
轉(zhuǎn)載于:https://www.cnblogs.com/qiangsheng/archive/2007/12/05/983113.html
總結(jié)
以上是生活随笔為你收集整理的运行时动态调用子程序的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软发布架构师期刊阅读器
- 下一篇: Linux网卡配置(二)网卡配置命令