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

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

【AS400】CL-SNDPGMMSG(コマンドラインへ文字列出力)

概要

    • CLプログラムを実行した場合、WindowsのDOS窓のように変数の値や計算の結果などを「コマンドラインへ表示して確認したい!」となるケースがあります。その場合、SNDPGMMSGコマンドを使って実現します。メッセージタイプ(MSGTYPE)は、出力結果のため「完了」にしておきます。
SNDPGMMSG  MSG('文字列')  MSGTYPE(*COMP)

サンプルソース

TIGER/CLLESRC SAMP05C

PGM
 /* 変数定義 */
      DCL VAR(&X)  TYPE(*DEC)  LEN(3 0) VALUE(1)
      DCL VAR(&Y)  TYPE(*DEC)  LEN(3 0) VALUE(1)
      DCL VAR(&Z)  TYPE(*DEC)  LEN(3 0) VALUE(1)
      DCL VAR(&X2) TYPE(*CHAR) LEN(3)
      DCL VAR(&Y2) TYPE(*CHAR) LEN(3)
      DCL VAR(&Z2) TYPE(*CHAR) LEN(3)
 /* 開始メッセージ */
      SNDPGMMSG  MSG(' 1の段を計算します ')  MSGTYPE(*COMP)
          
      DOUNTIL  COND(&Y = 10)
          CHGVAR   VAR(&Z)  VALUE(&X*&Y)
          /* 文字←数値変換 */
          CHGVAR   VAR(&X2) VALUE(&X)
          CHGVAR   VAR(&Y2) VALUE(&Y)
          CHGVAR   VAR(&Z2) VALUE(&Z)
          SNDPGMMSG  MSG(&X2 *CAT '*' *CAT &Y2 +
                        *CAT '=' *CAT &Z2)  MSGTYPE(*COMP)
          CHGVAR   VAR(&Y) VALUE(&Y+1)
      ENDDO
 /* 終了メッセージ */
    SNDPGMMSG  MSG(' 1の段の計算終了! ')  MSGTYPE(*COMP)
ENDPGM

実行結果

 > CALL SAMP05C            
    1の段を計算します     
   001*001=001             
   001*002=002             
   001*003=003             
   001*004=004             
   001*005=005             
   001*006=006             
   001*007=007             
   001*008=008             
   001*009=009             
    1の段の計算終了!   

補足

RPGLEの場合であれば、DSPLY命令にて実現できます。

C     'HELLO ! '    DSPLY
C     'WORLD ! '    DSPLY
 /FREE                         
       DSPLY ('今年は' + %CHAR(W1YEAR) + '年です。');
 /END-FREE