AS400(system-i)のCLの使い方

CLはウィンドウズでいうバッチのようなもので、RPGプログラムやCobolなどを呼び出すことができます。

記述方法

CLは、PGMで始まり、ENDPGMで終わります。

PGM
・・・
ENDPGM

CLに引数を渡す方法

CLには引数を渡して実行することができます。これはウィンドウズのバッチと同じです。

記述方法は以下のようにします。

PGM PARM(&ID &NO &RC)

IF文の記述方法

CLでは、変数は&IDというように&から始まります。

IF文の条件式にはCONDを使います。

IF COND(&ID *EQ 0) THEN (GOTO CMDLBL(ABC))

*EQは、=です。&ID = 0なら、THEN以降を実行します。*NEは、!=です。

複数コマンド実行させたい場合は以下のようにDOを記述します。

IF COND(&ID *EQ 0) THEN(DO)
・・・
・・・
ENDDO

変数定義

変数定義には、DCLを使います。TYPEには、*CHAR、*DECの3種類あります。

以下宣言例です。

DCL VAR(&ID) TYPE(*CHAR) LEN(10)
DCL VAR(&YYMM) TYPE(*DEC) LEN(6 0)

*DECのときはLEN(6 0)としていますが、これは6桁で、小数点0桁を意味します。

CHGVARを使うと変数の値を変更することができます。以下は&IDを100にする例です。

CHGVAR VAR(&ID) VALUE('100')

コメント

CLのコメントは/*~*/を使います。複数行コメントすることができます。

ラベル

GOTO CMDLBL(ABC)

とすることで、ABCというラベルに遷移することができます。

例えば、ABCというラベルに遷移し、プログラムを終了させる場合以下のように記述します。

ABC: ENDPGM

ネットワーク属性を検索するコマンドで、RTVNETAコマンドがあります。

RTVNETA SYSTEM(&SS)

上記のように記述すると、&SSにシステム名が設定されます。

ファイル(テーブル)関連

ファイル(テーブル)に対してなにかしたい場合、OVRDBF,OPNQRYFコマンドを使います。この辺は作法だと思います。

OVRDBF FILE(テーブル名) SHARE(*YES)
OPNQRYF FILE((テーブル名)) QLYSLT('COL = ""'*CAT &NO *CAT'""')
・・・
・・・
CLOF OPNID(テーブル名) /* ファイルクローズ */
DLTOVR

QRYSLT内でテーブルが100万件あるとすると、条件で絞り込んで件数を指定することができます。

また、QLYSLT内で、CL変数はシングルクォート、または、ダブルクォートで囲む場合は*CAT演算子で囲む必要があります。

QLYSLT内で絞り込み条件が複数の場合は以下のように、&で条件をつなげます。

QLYST('COL = ""' *CAT &NO *CAT '"" & FLG *NE ""1""')
スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA