博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据流控制
阅读量:6586 次
发布时间:2019-06-24

本文共 2750 字,大约阅读时间需要 9 分钟。

1. 使用IF 语句实现分支,IF语句实现分支有3种类型

1.1 若发生了某事该怎样处理.

DATATYPE VALUE 6.

IF 5.

  WRITE:'The value of x is 5'."輸出:The value of x is 5
ENDIF.

 

1.2 若發生了某事則怎麼辦,否則該如何處理。

DATATYPE VALUE 6.

IF 5.
  WRITE:'The value of x is 5'.
ELSE.
  WRITE:'The value of x is 6'."輸出:The value of x is 6
ENDIF.

1.3 嵌套使用 IF...ELSE进行多个条件判断。

      IF <condition1>.

          <statement block>.
      ELSEIF <condition2>.
          <statement block>.
      ELSE.
          <statement block>
      ENDIF.

DATATYPE VALUE 7.

IF 5.
  WRITE:'The value of x is 5'.
ELSEIF 6.
  WRITE:'The value of x is 6'.
ELSE.
  WRITE:'The value of x is 7'."輸出:The value of x is 7
ENDIF.

 

 2.例用CASE...WHEN...ENDCASE语句实现分支。

    当程序面临多个交叉条件时,就可以使用CASE 语句进行分去。

       CASE <f>.

        WHEN <f1>.
           <statement block>.
        WHEN <f2>.
           <statement block>.
        WHEN ...
        WHEN OTHERS.
           <statement block>.
       ENDCASE.

DATA:TYPE VALUE 8.
CASE X.
  WHEN 1.
    WRITE:'The NO.ONE'.
  WHEN 2.
    WRITE:'The NO.TWO'.
  WHEN OTHERS.
    WRITE:'Others NO.'."输出:Others NO.
ENDCASE.

 3. 使用LOOP...ENDLOOP语句实现循环控制

    LOOP语句通常用于实现内表数据的循环读取及操作.

LOOP AT ITAB.

WRITE:ITAB.
ENDLOOP.

 4. 使用DO语句实现内部循环次数控制

 4.1 DO语句可以指定循环资数.

DO TIMES.

WRITE:'THE index is',SY-INDEX.
ENDDO.

 

 4.2 DO语句内部还可以实现多层嵌套,为了保证程序可读性,建议嵌套最多不可超过6层。

     DO.

       [<n> TIMES]
       [VARYING <f> FROM <f1> NEXT <f2>].
       <statement block>
     ENDDO.
     n:可以是数字或者变量,如果n是0或者负数,系统不执行该循环.  TIMES:循环次数。
     VARYING:选项在每次循环中给变量<f>重新赋值。
     使用DO语句时要避免死循环,如果不使用TIMES选项,则在语句块中至少包含一个EXIT、STOP、REJECT语句,以使系统能退出循环。

DO TIMES.

WRITE:'The index is',SY-INDEX.
DO TIMES.
WRITE:'The Next index is',SY-INDEX.
ENDDO.
ENDDO.

 

 5. 使用ONCHANGE 实现循环内部数据管控

   当循环中的数据值发生变动时,可以用表达式ONCHANGE来触发数值变动事件。

DO TIMES.

ON CHANGE OF SY-INDEX.
WRITE:'The index is',SY-INDEX.
ENDON.
ENDDO.

 

DATA WHILE_INDEX TYPE VALUE 0.
WHILE WHILE_INDEX < 5.
  WHILE_INDEX WHILE_INDEX + 1.
  DO TIMES.
    ON CHANGE OF WHILE_INDEX.
      WRITE:'The while_index has change value is',WHILE_INDEX.
    ENDON.
    WRITE:'SY-INDEX=',SY-INDEX.
  ENDDO.
ENDWHILE.

 

 

6.循环的中止

6.1 CONTINUE语句用于结束当前循环进行下一步循环。

6.2 EXIT语句用于结束当前整个循环。

DO 100 TIMES.

IF SY-INDEX 10 AND SY-INDEX <= 20.
  CONTINUE.
ELSEIF SY-INDEX 50.
  EXIT.
ELSE.
  WRITESY-INDEX.
ENDIF.
ENDDO.

 

 7. 使用WHILE 条件循环

       WHILE <condition> [VARY <f> FROM <f1> NEXT <f2>].

         <statement block>
      ENDWHILE.

DATA WHILE_INDEX TYPE VALUE 0.

WHILE WHILE_INDEX < 5.
  WHILE_INDEX WHILE_INDEX + 1.
  IF WHILE_INDEX 3.
    CONTINUE.
  ENDIF.
  WRITE:'while_index',WHILE_INDEX.
ENDWHILE.

 

 有条件终止循环(CHECK):

DATA while_index TYPE VALUE 0.

WHILE while_index < 5.
  while_index while_index + 1.
  CHECK while_index BETWEEN AND 5.
  WRITE:'The while_index is',while_index.
ENDWHILE.

 

 完全终止循环(EXIT):

DATA WHILE_INDEX TYPE VALUE 0.

WHILE WHILE_INDEX < 5.
  WHILE_INDEX WHILE_INDEX + 1.
  IF WHILE_INDEX 3.
    EXIT.
  ENDIF.
  WRITE:'The while_index is',while_index.
ENDWHILE.

转载于:https://www.cnblogs.com/sanlly/p/3230570.html

你可能感兴趣的文章
关于“Return empty arrays or collections, not nulls”的思考
查看>>
CodeForces-1167E-Range Deleting
查看>>
兼容多个版本程序集的web.config配置
查看>>
java finally块执行时机分析
查看>>
day6 字符串
查看>>
JMeter5.0 边界提取器使用
查看>>
Windows Azure 上的 Symfony,适用于 PHP 开发者的强大组合
查看>>
堆和栈的区别 (转贴)
查看>>
通过包名获取该包下的所有类
查看>>
【JavaScript学习笔记】画图
查看>>
反向代理与直接访问Ping性能分析
查看>>
Linux写时拷贝技术(copy-on-write)
查看>>
opencv视频读取问题
查看>>
java Iterator Fail-fast机制
查看>>
Java堆外内存之五:堆外内存管理类ByteBuffer
查看>>
HTML5 input placeholder 颜色修改
查看>>
TJ/T808 终端通讯协议设计与实现(码农本色)
查看>>
分布式搜索引擎Elasticsearch的查询与过滤
查看>>
SolidEdge 工程图中如何给零件添加纹理或贴图
查看>>
【Java面试题】14 super.getClass()方法调用
查看>>