zoukankan      html  css  js  c++  java
  • ABAP/4中参数的传递

    在ABAP/4中参数的传递可分成

    1. Call By Reference:

    传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际

    变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实

    际变量的值也会跟着改变.

    语法:

         FORM  <subr>  [USING <f1> <f2>…] [CHANGING <f1>…]

         PERFORM  <subr>  [USING <f1> <f2>…] [CHANGING <f1>…]

         Using 之后接在子程序中不会改变的变量, CHANGING接会改变值的变量

         但实际上USING之后的参数在子程序中也可将值改变

         Example:

         SUM = 0.

         NUM1 = 100.  NUM2=200.

         PERFORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

         WRITE: / NUM1,NUM2,SUM  “ SUM 由 0 变成 300

         FORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

            SUM  =  NUM1  +  NUM2.

         ENDFORM.

         执行结果: 

                         100   200   300

    2. Call By Value

    传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影

    响外部实际变量的值.

         语法:

              FORM  <subr>  USING  VALUE(<f1>…)

              使用 VALUE(<f1>)表示<f1>是 Call By Value的传递

              PERFORM  <subr>  USING  <f1>  

         Example:

         SUM = 0.

         NUM1 = 5. 

         PERFORM  MULTI  USING  NUM1  CHANGING  SUM.

         WRITE: / NUM1,SUM  “NUM1值还是5,  SUM 由 0 变成 120

         FORM  MULTI  USING  VALUE(NUM1)  CHANGING  SUM.

            SUM = 1.

            WHILE  NUM1 > 1

              SUM  =  SUM * NUM1.

              NUM1 = NUM1 – 1.

            ENDWHILE..

         ENDFORM.

         执行结果: 

                         5   120 

    3. Call By Value and Return Result

    传入参数值的方式同Call By Value, 但在子程序结束执行时会将传入的参数值复制

    一份传回给外部实际变量.

      语法:

            FORM  ….. CHANGING  VALUE(<f1>)

            PERFORM  …. CHANGING …. <f1>

            Example:

                   SUM = 0.

                   NUM1 = 100.  NUM2=200.

                   PERFORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

                   WRITE: / NUM1,NUM2,SUM  “ SUM 由 0 变成 300

                   FORM  ADD  USING  NUM1  NUM2  CHANGING  VALUE(S).

                      S  =  NUM1  +  NUM2.

                      WRITE: / NUM1,NUM2,SUM  “得到结果为 100  200  0

                   ENDFORM.

         执行结果: 

                    100    200     0    “在子程序中 SUM值尚未改变

                         100   200   300    “返回程序时, 将变量 S的值复制给 SUM

                                            “所以 SUM值变成 300

  • 相关阅读:
    北京燃气IC卡充值笔记
    随机分析、随机控制等科目在量化投资、计算金融方向有哪些应用?
    量化交易平台大全
    Doctor of Philosophy in Computational and Mathematical Engineering
    Institute for Computational and Mathematical Engineering
    Requirements for the Master of Science in Computational and Mathematical Engineering
    MSc in Mathematical and Computational Finance
    万字长文:详解多智能体强化学习的基础和应用
    数据处理思想和程序架构: 使用Mbedtls包中的SSL,和服务器进行网络加密通信
    31-STM32+W5500+AIR202/302基本控制篇-功能优化-W5500移植mbedtls库以SSL方式连接MQTT服务器(单向忽略认证)
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099847.html
Copyright © 2011-2022 走看看