タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

【AS400】RPGLE-日時情報の取得方法

RPGLEで日付、時間の各値(年や時間など)を取得する方法です。

それにしても、BIF関数は便利ですね。

昔は、TIME命令で得た14桁の数値から日時情報を取得していましたから。

C                   TIME                    W@TIME           14 0    

今回のサンプルはこちら。

サンプルPGM

D YEAR            S              4S 0                                      // YEAR
D MON             S              2S 0                                      // MONTH
D DAY             S              2S 0                                      // DAY
D HOUR            S              2S 0                                      // HOUR
D MIN             S              2S 0                                      // MINUTE
D SEC             S              2S 0                                      // SECOND
D MES             S             20                                         // MESSAGE
/FREE
  // 現在日時取得
   YEAR = %SUBDT(%DATE():*YEARS);
   MON  = %SUBDT(%DATE():*MONTHS);
   DAY  = %SUBDT(%DATE():*DAYS);
   HOUR = %SUBDT(%TIME():*HOURS);
   MIN  = %SUBDT(%TIME():*MINUTES);
   SEC  = %SUBDT(%TIME():*SECONDS);
 
  // メッセージ出力
   MES = %CHAR(YEAR) + '-' + %EDITC(MON:'X') + '-' + %EDITC(DAY:'X');
   DSPLY MES;
   MES = %EDITC(HOUR:'X') + ':' + %EDITC(MIN:'X') + ':' + %EDITC(SEC:'X');
   DSPLY MES;
 
   *INLR = *ON;
   RETURN;
/END-FREE

実行結果

> CALL PGM(TIGEROBJ/SAMPLE42)   

DSPLY  2021-07-31   
DSPLY  18:08:17     

なお、7月など1桁の数値をゼロ詰めしたい場合は、%EDITCを使いましょう。

tigertaizo.hatenablog.com

これで、日時情報を使った制御処理も自由自在になりますね。

オッケーでございまーす!!