• SHIFT(文字列の指定位置数の移動)


    文字ごとの項目内容の移動 

    以下のような SHIFT 命令のバリアントを使用すると、項目内容を移動することができます。SHIFT を使用すると、文字ごとに項目内容が移動します。

    文字列の指定位置数の移動

    SHIFT c [BY n PLACES] [mode].

    この命令では、項目 c の位置が n 個分だけ移動します。BY n PLACES を省略すると、n は 1 として解釈されます。n が 0 または負の値の場合、c は変更されません。n が c の長さを超えると、c は空白で埋め込まれます。n は変数とすることができます。

    さまざまな mode オプションを使用して、項目 c を以下のように移動することができます。

    mode を LEFT にした場合

    項目内容の位置が n 個分左に移動され、項目の右端に n 個の空白が追加されます (デフォルト)。

    mode を RIGHT にした場合

    位置が n 個分右に移動され、項目の左端に n 個の空白が追加されます。

    mode を CIRCULAR にした場合

    項目内容を周期的に移動します。内容の位置が n 個分左に移動され、左側の n 個の文字が右に移動されます。

    DATA: t(10) TYPE c VALUE 'abcdefghij',
          string LIKE t.
    
    string = t.
    WRITE string.
    SHIFT string.
    WRITE / string.
    string = t.
    SHIFT string BY 3 PLACES LEFT.
    WRITE / string.
    string = t.
    SHIFT string BY 3 PLACES RIGHT.
    WRITE / string.
    string = t.
    SHIFT string BY 3 PLACES CIRCULAR.
    WRITE / string.

    出力:

    abcdefghij
    
    bcdefghij
    
    defghij
    
       abcdefg
    
    defghijabc
    指定文字列への項目内容の移動
    SHIFT c UP TO str mode.

    この命令は、文字列 str が見つかるまで c の項目内容を検索して、項目 c を項目の端まで移動します。mode オプションは、上の記述と同じです。str は変数とすることができます。

    内に str が見つからない場合、sy-subrc は 4 に設定され、c は移動されません。これ以外の場合は、sy-subrc は 0 に設定されます。

    DATA: t(10) TYPE c VALUE 'abcdefghij',
          string LIKE t,
          str(2) TYPE c VALUE 'ef'.
    
    string = t.
    WRITE string.
    
    SHIFT string UP TO str.
    WRITE / string.
    
    STRING = t.
    SHIFT string UP TO str LEFT.
    WRITE / string.
    
    STRING = t.
    SHIFT string  UP TO str RIGHT.
    WRITE / string.
    
    string = t.
    SHIFT string  UP TO str CIRCULAR.
    WRITE / string.
    

      

    出力:

    abcdefghij
    
    efghij
    
    efghij
    
        abcdef
    
    efghijabcd
    最初または最後の文字に応じた文字列の移動
    SHIFT c LEFT  DELETING LEADING  str.
    
    SHIFT c RIGHT DELETING TRAILING str.

    この命令によって、左側の最初の文字または右側の最後の文字が str に現れる場合、項目 c が左または右に移動されます。この場合、項目の右側または左側には空白が埋め込まれます。str は変数にすることができます。

    DATA: t(14) TYPE c VALUE '    abcdefghij',
          string LIKE t,
          str(6) VALUE 'ghijkl'.
    
    string = t.
    WRITE string.
    
    SHIFT string LEFT DELETING LEADING SPACE.
    WRITE / string.
    
    string = t.
    SHIFT string RIGHT DELETING TRAILING str.
    WRITE / string.

    出力:

    abcdefghij
    
    abcdefghij
    
        abcdef
  • 相关阅读:
    Python range() 函数用法
    python测试框架&&数据生成&&工具最全资源汇总
    为什么你写的用例测不出Bug来?
    软件测试人员必备知识工具清单
    接口测试需要验证数据库么?
    如何在实际工作做开展性能测试?
    为什么要做接口测试?
    面试时让你说一个印象最深的bug,该怎么回答
    maven一键部署tomcat war包(转载)
    数据库中 显示 小计 与 总计
  • 原文地址:https://www.cnblogs.com/yjyongil/p/10517341.html
Copyright © 2020-2023  润新知