変換-日付、反転日( CONVERT DATE ... INTO INVERTED-DATE ...)
廃止された構文
CONVERT { { DATE dat1 INTO INVERTED-DATE dat2 } | { INVERTED-DATE dat1 INTO DATE dat2 } }。
効果
ステートメントCONVERTのこれらのバリアントは、クラスでは許可されていません。これらは、dat1の文字のようなデータオブジェクトの数字を9の補数(9との差)に変換し、結果をデータオブジェクトdat2に割り当てます。データオブジェクトDAT1及びDAT2が有していなければならない フラット文字状のデータ・タイプ長さ8と同じデータオブジェクトが指定することができDAT2用としてDAT1を。
ノート
- これらの形式のCONVERTステートメントは、クラスでは使用できません。以前は、内部テーブルの日付フィールドによる並べ替えや、並べ替え方向を変更するための抽出に使用されていました 。これらは 、SORTステートメントのASCENDINGおよびDESCENDING オプションに置き換えられました。必要に応じて、次のTRANSLATEステートメントを使用して9の補数を形成できます。
- dat2 = dat1。
TRANSLATE dat2 USING '09182736455463728190'。
- ここに表示されているCONVERT DATE ステートメントのバリアントを、タイムスタンプの作成に使用されるステートメントCONVERT DATE ... INTO TIME STAMPと混同しないでください。
例
次のプログラムセクションでは、内部テーブルsflight_tabをfldate列で降順に並べ替えます。
DATA sflight_tab TYPE TABLE OF sflight. FIELD-SYMBOLS <sflight_wa> TYPE sflight. SELECT * FROM sflight INTO TABLE @sflight_tab. LOOP AT sflight_tab ASSIGNING <sflight_wa>. CONVERT DATE <sflight_wa>-fldate INTO INVERTED-DATE <sflight_wa>-fldate. ENDLOOP. SORT sflight_tab BY fldate. LOOP AT sflight_tab ASSIGNING <sflight_wa>. CONVERT INVERTED-DATE <sflight_wa>-fldate INTO DATE <sflight_wa>-fldate. ENDLOOP.
最後の9行は1行で置き換えることができます。
SORT sflight_tab BY fldate DESCENDING。
例外
処理できない例外
- 原因:無効なフィールド長のため、変換できません。
ランタイムエラー: CONVERT_ILLEGAL_CONVERSION