メニューボタン
サポートチーム便り2010.10.20

オシャレな定様式タイムスタンプを作成する

Question

26 文字のシステム・タイムスタンプ (Z タイプ) を「nn:nn AM/PM, Day name, Month name DD, YYYY」といったような文字列に変換したいと思っています。CEEDATE API を使用しようと思いましたが、入力には時間ではなく、日付だけしか指定できないようです。他に方法はないでしょうか。それともすべて手作業でコーディングしなければならないのでしょうか。

Answer

CEEDATE の考えに非常に近かったですね。それに、あなたの考えで正しいです。CEEDATE は日付しかサポートしていません。しかし、非常に関連性がある CEEDATM API ではタイムスタンプをサポートしています。おっしゃるように日付をフォーマットするような CEEDATE の使い方を教えましょう。

実際には RPG タイムスタンプを秒に変換する CEESECS、秒をオシャレな定様式日付に変換する CEEDATM の 2 つの API が必要になります。以下のコード 1 が示すのは、DSPLY 命令コードを使用して、現在の日時をオシャレにフォーマットしている例です。

H DFTACTGRP(*NO)

    D CEEDATM        PR                   opdesc
    D  input_secs           8f           const
    D  picture              100a         varying const
    D  timestamp            100a         varying options (*varsize)
    D  fc                   12a          options(*omit)

    D CEESECS        PR                   opdesc
    D  input_ts             100a          varying const
    D  picture              100a          varying const
    D  output_secs          8f
    D  fc                   12a            options(*omit)

    D myTimestamp    s      Z            inz(*sys)
    D mySecs         s      8f
    D myTimeString   s      52a

    /free
        CEESECS      ( %subst(%char(myTimestamp: *iso0):1:17)
                     : 'YYYYMMDDHHMISS999'
                     : mySecs
                     : *omit );

        CEEDATM      ( mySecs
                     : 'HH:MI AP Wwwwwwwwwz, Mmmmmmmmmz DD, YYYY'
                     : myTimeString
                     : *omit );

        dsply myTimeString;
        *inlr = *on;

    /end-free

あわせて読みたい記事

PAGE TOP