- RPGとは
- 常識ある人の答えは、Role Playing Game
ですが、残念ながらここでの答えは IBM AS400の Report Program Generator
です。
- 比較演算子
-
GT : 演算項目1は演算項目2より大きい。
LT : 演算項目1は演算項目2より小さい。
EQ : 演算項目1は演算項目2と等しい。
NE : 演算項目1は演算項目2と等しくない。
GE : 演算項目1は演算項目2より大きいか等しい。
LE : 演算項目1は演算項目2より小さいか等しい。
- 標識
-
結果の標識は71-76桁目
以下に例を示す
| コマンド |
処理 |
71-72桁 |
73-74桁 |
75-76桁 |
| CHAIN |
ファイルからのランダム検索 |
レコード無し |
エラー |
- |
| READ |
レコード読み取り |
- |
エラー |
EOF |
| READE |
等しいキーのレコード読み取り |
- |
エラー |
EOF |
| READP |
前のレコード読み取り |
- |
エラー |
BOF |
BOF‥ファイルのはじめ
- 日付型の定義
- DATFMTで表示形式を指定できる
D @DATE S D DATFMT(*ISO)
- コマンドラインパラメータの指定
-
PLIST/PARMの組合せで指定する
PLISTの項目1は*ENTRYとする
数値の時は小数点以下の桁数に0を入れること
C *ENTRY PLIST
C PARM P@MOJI 6 文字
C PARM P@KAZU 9 0 数値
- 算術演算子の使用例
- 変数の配置に注意
C A SUB B X
C* これは X = A - B を意味する
- DEFINE (変数定義)
-
C *LIKE DEFINE A B
C* これは B を A の型で定義する
- DSPLY
- 変数の値をQshellに表示(動作確認時などに使える)
C X DSPLY
C* X の値を Qshell に表示する
- COMP (比較)
-
C HENSUU COMP 10 313233
C* HENSUUが10よりも大きければ31がオン(71-72桁)
C* 10より小さければ32がオン(73-74桁)
C* 等しければ33がオン(75-76桁)
- CAS (if / else と同様の処理を行う)
-
C A CASNE 0 SUB1
C CAS SUB2
C ENDCS
C* Aが0でなければSUB1を実行し、0であればSUB2を実行する
- DOループ
- ネスト出来ないので非常に見にくいが、以下のサンプルはDO〜ENDDOの間を4回繰り返す。ただし、FLAG(変数名)が10より大きくなったらループを抜け出す。
C 1 DO 4 I
C* (ここに処理を書く、通常このDOループは4回繰り返される)
C FLAG IFGE 10
C SETON 30
C END
C N30 ENDDO
C* FLAG が 10以上であれば 標識30 がオンになり、ENDDOが処理されず、
C* 次の行に処理が移る(DOループを抜ける)
- LOOKUP
- 配列の中を検索する
C Z-ADD 1 I 3 0
C SRCHWD LOOKUP ARY(I) 26
C* SRCHWDがARY配列に含まれる場合、
C* IにはSRCHWDと一致するARY配列の要素番号が入る
C* また、そのとき標識26がONになり%EQUAL=1となる
- ソースコード内に配列のデータを書き込む方法
-
CTDATAとして定義し、ソースの文末に配列の値を直接書き込む
このとき、1桁目から書き込むこと
配列の添え字は1から始まる
D #CMD S 40 DIM(4) CTDATA PERRCD(1)
D #MAIL S 40 DIM(2) CTDATA PERRCD(1)
D I S 1 0
D*
C EVAL I = 1
C #MAIL(1) DSPLY
C DOW I < 5
C #CMD(I) DSPLY
C EVAL I = I + 1
C ENDDO
C #MAIL(2) DSPLY
C** 終了処理
C SETON LR
C RETURN
** #CMD
FIRST COMMAND
日本語
123456
END
** #MAIL
ADDRESS 1
ADDRESS 2
- /FREE 〜 /END-FREE
- 列番号にとらわれずにソースを書く
C *ENTRY PLIST
C PARM @P01 10
C PARM @P02 8
C PARM @RTN 2
C*
C/EXEC SQL
C+ INSERT INTO TEST01P VALUES (:@P1, :@P2)
C/END-EXEC
C*
/FREE
// SQLのエラーコードを調べる
IF SQLCOD = 0 AND SQLWN0 = '';
@RTN = 'OK'; // エラーなし
ELSE;
@RTN = 'NG'; // エラーまたは警告あり
ENDIF;
/END-FREE
C SETON LR
C RETURN
- コマンドラインから数値のパラメータの渡し方
-
数値のパラメータをコマンドラインから直接指定する際は、X'xxxxF'とする。
xxxは数字、桁数を合わせること
Xはゾーンを意味する、Fは符号(+)
例 パラメータに9桁数字の21を指定
CALL PGM(TEST) PARM(X'000000021F')
- サブルーチンの使用例
- こちら
- サブモジュールの使用例
- こちら