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      

ページトップ

ボタン