REPATTERN 関数

目的

1 つのパターンの日付を含む値を受け取り、その値を別のパターンの日付に変換して返します。

構文

REPATTERN (d, p, q, w)

パラメーター

d は、日付を表す文字列式です。d の長さは、少なくとも q で指定されたソース パターンの長さと同じでなければなりません。d の方が大きい場合は、余った文字数の分を先頭空白文字で埋める必要があります。

d の値は計算型としなければなりませんが、文字型にできるようにもする必要があります。そうでない場合、REPATTERN 関数は d を文字に変換します。

p は、ターゲットとして使用される、サポートされる日付および時刻のパターンです。

q は、ソースとして使用される、サポートされる日付および時刻のパターンです。

w は、整数に変換可能な式 (1976 など) を指定します。

  • 値が正の場合、その数値が年の値として扱われます。
  • 値が負の場合、その値がオフセットとして扱われ、システムの現在の年の値から差し引かれます。
  • 指定されていない場合、w の値は -window compile-time オプションで指定された値になります。

説明

REPATTERN 関数は、1 つのパターンの日付を含む値を受け取り、その値を別のパターンの日付に変換して返します。戻り値には、CHAR(m) NONVARYING 属性が設定されます。この場合の (m) は、p で指定されるターゲット パターンの長さです。

次の例は、REPATTERN を使用して 2 桁の年と 4 桁の年の日付パターンを変換する方法を示します。REPATTERN を使用することで、サポートされる任意のパターンから別のパターンに日付を変換できます。それぞれのパターンで保持される年の値の桁数は異なっていてもかまいません。

repat: proc options(main);

    dcl str char(16)var;

    on error
    begin;
        put skip list ('Error raised. Outside century window.');
        STOP:
    end;

    str = REPATTERN('770101','YYYYMMDD','YYMMDD', 1976);
    put skip list (str);

    str = REPATTERN('280101','YYYYMMDD','YYMMDD', 1976);
    put skip list (str);

    str = REPATTERN('19770101','YYMMDD','YYYYMMDD', 1976);
    put skip list (str);

    str = REPATTERN('20280101','YYMMDD','YYYYMMDD', 1976);
    put skip list (str);

    str = REPATTERN('19700101','YYMMDD','YYYYMMDD', 1976);
    put skip list (str);

end;

このコード サンプルの出力は次のようになります。

19770101

20280101

770101

280101

Error raised.Outside century window.

制約事項

なし。