2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBM i (旧AS400)の自己学習メモ06 CLプログラム(Control Language) Part3

Last updated at Posted at 2020-04-06

自己学習メモインデックス

IBM i (旧AS400)の自己学習メモ インデックス

概要

今までCLのHello WorldしかCL開発をしていないので、自分が今後何らかの開発を行うときに、参考となりそうなCLプログラムサンプルを少しずつため込んでいこうと思いQiita記事にまとめます。

関連記事

CLサンプルプログラム

システム日付(SYSVAL QDATE)

システム日付は、RTVSYSVALを利用してQDATEから取得する。
DCLで定義しているLENが6以外で指定するとコンパイル時にエラーとなった。

PGM
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
        *************** Beginning of data ******************************************************************
0001.00              PGM                                                                                    
0002.00              DCL        VAR(&SYSDATE) TYPE(*CHAR) LEN(6)                                            
0003.00 START:                                                                                              
0004.00              RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&SYSDATE)                                              
0005.00              SNDPGMMSG  MSG('The system date is : ' *CAT &SYSDATE)                                  
0006.00              RETURN                                                                                 
0007.00 END:                                                                                                
0008.00              ENDPGM                                                                                 
        ****************** End of data *********************************************************************
出力結果
 The system date is : 200407

YYYYMMDD形式のシステム日付(SYSVAL QDATE)

QDATEをそのまま出力するとYYMMDDの6桁となってしまう。
YYYYMMDD形式の8桁のシステム日付を取得したい場合、少し加工する必要がある。

PGM
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
        *************** Beginning of data ******************************************************************
0001.00              PGM                                                                                    
0002.00              DCL        VAR(&SYSDATE) TYPE(*CHAR) LEN(6)                                            
0003.00              DCL        VAR(&YYYYMMDD) TYPE(*CHAR) LEN(8)                                           
0004.00 START:                                                                                              
0005.00              RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&SYSDATE)                                              
0006.00              CVTDAT     DATE(&SYSDATE) TOVAR(&YYYYMMDD) +                                           
0007.00                           FROMFMT(*SYSVAL) TOFMT(*YYMD) TOSEP(*NONE)                                
0008.00              SNDPGMMSG  MSG('YYYYMMDD : ' *CAT &YYYYMMDD)                                           
0009.00 END:                                                                                                
0010.00              ENDPGM                                                                                 
        ****************** End of data *********************************************************************
出力結果
 The system date is : 2020407 

コマンドの実行結果をスプールに出力

PGM
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
        *************** Beginning of data ******************************************************************
0001.00              PGM                                                                                    
0002.00 START:                                                                                              
0003.00              DSPLIB     LIB(YAMAGUCHI1) OUTPUT(*PRINT)                                              
0004.00              SNDPGMMSG  MSG('The DSPLIB YAMAGUCHI1 Program is +                                     
0005.00                           complete!')                                                               
0006.00              RETURN                                                                                 
0007.00 END:                                                                                                
0008.00              ENDPGM                                                                                 
        ****************** End of data *********************************************************************
出力結果(コンソール)
The DSPLIB YAMAGUCHI1 Program is complete!
出力結果(スプール)
 *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3
  5770SS1 V7R4M0  190621                   Display Library                                       20-04-06 21:38:54        Page    1
  Library . . . . . . . . . . . . . . . . :   YAMAGUCHI1                                                                           
  Type  . . . . . . . . . . . . . . . . . :   PROD                                                                                 
  Number of objects . . . . . . . . . . . :           15                                                                           
  Library ASP number  . . . . . . . . . . :       1                                                                                
  Library ASP device  . . . . . . . . . . :   *SYSBAS                                                                              
  Library ASP group   . . . . . . . . . . :   *SYSBAS                                                                              
  Create authority  . . . . . . . . . . . :   *EXCLUDE                                                                             
  Text description  . . . . . . . . . . . :   YAMAGUCHI (*CURLIB your current library)                                             
    Object      Type      Attribute             Size  Description                                                                  
    CLPGM00     *PGM      CLLE                106496  Hello World!                                                                 
    CLPGM01     *PGM      CLLE                106496  sample cl program01 sysval qdate                                             
    CLPGM02     *PGM      CLLE                 94208  sample cl program02 output *print                                            
    CLPGM03     *PGM      CLLE                 94208  sample cl program03                                                          
    CLPGM04     *PGM      CLLE                 94208  sample cl program03                                                          
    CLPGM06     *PGM      CLLE                 94208  sample cl program06 decimal calc                                             
    CLPGM07     *PGM      CLLE                 94208  sample cl program07 decimal calc                                             
    CLPGM08     *PGM      CLLE                 94208  Sample CL Program qdate yyyymmdd                                             
    MTOKISKP    *FILE     PF                   73728                                                                               
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3
   QCBLLESRC   *FILE     PF                   16384  COBOL source files                                                           
   QCLSRC      *FILE     PF                  180224  CL source files                                                              
   QCMDSRC     *FILE     PF                   16384  COMMAND source files                                                         
   QCPPSRC     *FILE     PF                   16384  C++ Source files                                                             
   QDDSSRC     *FILE     PF                   32768  DDS source files                                                             
   QRPGLESRC   *FILE     PF                   16384  RPG sourc files                                                              
                     Total size :           1261568                                                                               
                   * * * * *   E N D   O F   L I S T I N G   * * * * *                                                            
                                                   ** WWW.PUB400.COM **                                                           

AS400-11.gif

CAT 3兄弟 文字列結合

コマンド 概要
*CAT 文字列結合をする。
CHAR(10)の変数に'12345'という5桁の文字列がセットされている場合、5桁の空白文字列も含んで結合される。
*TCAT 文字列結合の際、左辺の文字列に含まれる後続ブランクをトリムし、右辺の文字列と結合する。
*BCAT 文字列結合の際、左辺の文字列に含まれる後続ブランクをトリムし、1文字空白が入り、右辺の文字列と結合する。
PGM[*CAT]
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0 
        *************** Beginning of data *******************************************************************
0001.00              PGM                                                                                     
0002.00              DCL        VAR(&NAME) TYPE(*CHAR) LEN(40)                                               
0003.00 START:                                                                                               
0004.00              CHGVAR     VAR(&NAME) VALUE('Yu Yamaguchi')                                             
0005.00              SNDPGMMSG  MSG('Hello ' *CAT &NAME *CAT '!')                                            
0006.00              RETURN                                                                                  
0007.00 END:                                                                                                 
0008.00              ENDPGM                                                                                  
        ****************** End of data **********************************************************************
出力結果[*CAT]
Hello Yu Yamaguchi                            !
PGM[*TCAT]
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0           
        *************** Beginning of data *****************************************************************************
0001.00              PGM                                                                                         200405
0002.00              DCL        VAR(&NAME) TYPE(*CHAR) LEN(40)                                                   200405
0003.00 START:                                                                                                   200405
0004.00              CHGVAR     VAR(&NAME) VALUE('Yu Yamaguchi')                                                 200405
0005.00              SNDPGMMSG  MSG('Hello ' *CAT &NAME *TCAT '!')                                               200405
0006.00              RETURN                                                                                      200405
0007.00 END:                                                                                                     200405
0008.00              ENDPGM                                                                                      200405
        ****************** End of data ********************************************************************************
出力結果[*TCAT]
Hello Yu Yamaguchi!
PGM[*BCAT]
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0
        *************** Beginning of data ******************************************************************
0001.00              PGM                                                                                    
0002.00              DCL        VAR(&NAME) TYPE(*CHAR) LEN(40)                                              
0003.00 START:                                                                                              
0004.00              CHGVAR     VAR(&NAME) VALUE('Yu Yamaguchi')                                            
0005.00              SNDPGMMSG  MSG('Hello ' *CAT &NAME *BCAT '!')                                          
0006.00              RETURN                                                                                 
0007.00 END:                                                                                                
0008.00              ENDPGM                                                                                 
        ****************** End of data *********************************************************************
出力結果[*BCAT]
Hello Yu Yamaguchi !
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?