環境情報
今回の検証ではi Learning社の公開しているQEOLのライブラリーを使用しております
https://www.i-learning.jp/service/selfstudy/eol.html
INSERT文の例
TOKMSPテーブルに以下のデータを投入する。
| 項目名 | 内容 | 補足 |
|---|---|---|
| 得意先番号 | '99999' | 主キー(5桁) |
| 得意先仮名 | 'Tトクイサキ' | 半角カナなどを想定 |
| 得意先漢字 | 'T得意先株式会社' | 会社名など全角文字 |
| 住所1 | '東京都新宿区' | 都道府県+市区町村 |
| 住所2 | '西新宿1-1-1' | 丁目・番地・号など |
| 地区コード | '99' | 地域を示すコード(2桁) |
| 郵便番号 | '999' | 数字7桁 |
| 電話番号 | '03-123-4567' | 市外局番含む |
| 当月売上高 | 123456789 | 9桁の金額(整数) |
| 当年売上高 | 987654321 | 同上 |
| 前年売上高 | 876543210 | 同上 |
| 売掛金残高 | 543210987 | 同上 |
| 信用限度額 | 100000000 | 同上 |
| 最終入金日 | 231001 | 2023年10月1日(YYMMDD形式) |
| 締め日コード | 1 | 月締めなどの締め日を表すコード |
SQL文
INSERT INTO STOYOAMAB.TOKMSP (
TKBANG, TKNAKN, TKNAKJ, TKADR1, TKADR2, TKTIKU, TKPOST, TKTELE, TKGURI,
TKNURI, TKZURI, TKUZAN, TKGEND, TKNYUK, TKSIME
) VALUES (
'99999',
'Tトクイサキ',
'T得意先株式会社',
'東京都新宿区',
'西新宿1-1-1',
'99',
'999',
'03-123-4567',
123456789,
987654321,
876543210,
543210987,
100000000,
231001,
'1'
);
RPG構文
FTOKMSP UF A E K DISK
*
***********************************************************************
C* レコード作成処理
***********************************************************************
C '99999' CHAIN TOKMSR 90
C IF *IN90 = *ON
C MOVEL '99999' TKBANG
C EVAL TKNAKN = 'Tトクイサキ'
C EVAL TKNAKJ = 'T得意先株式会社'
C EVAL TKADR1 = '東京都新宿区'
C EVAL TKADR2 = '西新宿1-1-1'
C EVAL TKTIKU = '99'
C EVAL TKPOST = '999'
C EVAL TKTELE = '03-123-4567'
C EVAL TKGURI = 123456789
C EVAL TKNURI = 987654321
C EVAL TKZURI = 876543210
C EVAL TKUZAN = 543210987
C EVAL TKGEND = 100000000
C EVAL TKNYUK = 231001
C EVAL TKSIME = '1'
C WRITE TOKMSR
C ENDIF
C*
C SETON LR
SELECT文の例
TOKMSP テーブルから、TKBANG(得意先番号)が ‘99999’のデータのみを対象とする。
SQL文
SELECT *
FROM STOYOAMAB.TOKMSP
WHERE TKBANG = '99999';
RPG構文
FTOKMSP IF E K DISK
FTOKMSPW UF A E K DISK
F RENAME(TOKMSR:TOKMSR1)
F PREFIX('T1':2)
*
***********************************************************************
C* レコード作成処理
***********************************************************************
C '99999' CHAIN TOKMSR 90
C IF *IN90 = *OFF
C EVAL T1BANG = TKBANG
C EVAL T1NAKN = TKNAKN
C EVAL T1NAKJ = TKNAKJ
C EVAL T1ADR1 = TKADR1
C EVAL T1ADR2 = TKADR2
C EVAL T1TIKU = TKTIKU
C EVAL T1POST = TKPOST
C EVAL T1TELE = TKTELE
C EVAL T1GURI = TKGURI
C EVAL T1NURI = TKNURI
C EVAL T1ZURI = TKZURI
C EVAL T1UZAN = TKUZAN
C EVAL T1GEND = TKGEND
C EVAL T1NYUK = TKNYUK
C EVAL T1SIME = TKSIME
C WRITE TOKMSR1
C ENDIF
C*
C SETON LR
UPDATE文の例
TOKMSPテーブルに対してUPDATEを実施
得意先マスタテーブル TOKMSP に登録されている
特定の得意先(得意先番号 '99999')の売上・債権・入金情報を更新する処理
更新データ
| カラム名 | 新しい値 | 内容 |
|---|---|---|
| TKGURI | 1500000 | 当月売上高(今月の売上) |
| TKNURI | 5000000 | 当年売上高(今年累計の売上) |
| TKZURI | 4800000 | 前年売上高(前年累計の売上) |
| TKUZAN | 1200000 | 売掛金残高(現在の未回収金) |
| TKGEND | 8000000 | 信用限度額(与信枠) |
| TKNYUK | 240101 | 最終入金日(2024年1月1日、YYMMDD形式) |
SQL文
UPDATE STOYOAMAB.TOKMSP
SET
TKGURI = 1500000, -- 当月売上高
TKNURI = 5000000, -- 当年売上高
TKZURI = 4800000, -- 前年売上高
TKUZAN = 1200000, -- 売掛金残高
TKGEND = 8000000, -- 信用限度額
TKNYUK = '240101' -- 最終入金日(文字列扱い、YYMMDD形式)
WHERE
TKBANG = '99999'; -- 主キー条件
RPG構文
FTOKMSP UF A E K DISK
*
***********************************************************************
C* レコード作成処理
***********************************************************************
C '99999' CHAIN TOKMSR 90
C IF *IN90 = *OFF
C EVAL TKGURI = 1500000
C EVAL TKNURI = 5000000
C EVAL TKZURI = 4800000
C EVAL TKUZAN = 1200000
C EVAL TKGEND = 8000000
C EVAL TKNYUK = 240101
C UPDATE TOKMSR
C ENDIF
C*
C SETON LR
DELETE文の例
TOKMSP テーブルから、TKBANGが「99999」のデータを削除する
SQL文
DELETE FROM STOYOAMAB.TOKMSP
WHERE TKBANG = '99999';
RPG構文
FTOKMSP UF A E K DISK
*
***********************************************************************
C* レコード作成処理
***********************************************************************
C '99999' CHAIN TOKMSR 90
C IF *IN90 = *OFF
C DELETE TOKMSR
C ENDIF
C*
C SETON LR
実行結果
得意先番号が、'99999'のデータが存在しないことを確認

ORDER BY文の例
TOKMSP テーブルから、ORDER BYで並び替えを実施。(締日コード順)
SQL文
SELECT *
FROM STOYOAMAB.TOKMSP
ORDER BY TKSIME;
RPG構文
実行結果
LIMIT文の例
TOKMSP テーブルから、LIMITで5件のみを対象とする。
SQL文
SELECT *
FROM STOYOAMAB.TOKMSP
LIMIT 5;
RPG構文
FTOKMSP IF E K DISK
FTOKMSPW UF A E K DISK
F RENAME(TOKMSR:TOKMSR1)
F PREFIX('T1':2)
*
DCOUNT S 3 0 INZ(0)
DLIMIT C CONST(5)
*
***********************************************************************
C* レコード作成処理
***********************************************************************
C*
C Z-ADD *ZERO COUNT
C*
C READ TOKMSP 90
C DOW *IN90 = *OFF
C*
C IF COUNT < LIMIT
C EVAL T1BANG = TKBANG
C EVAL T1NAKN = TKNAKN
C EVAL T1NAKJ = TKNAKJ
C EVAL T1ADR1 = TKADR1
C EVAL T1ADR2 = TKADR2
C EVAL T1TIKU = TKTIKU
C EVAL T1POST = TKPOST
C EVAL T1TELE = TKTELE
C EVAL T1GURI = TKGURI
C EVAL T1NURI = TKNURI
C EVAL T1ZURI = TKZURI
C EVAL T1UZAN = TKUZAN
C EVAL T1GEND = TKGEND
C EVAL T1NYUK = TKNYUK
C EVAL T1SIME = TKSIME
C WRITE TOKMSR1
C ADD 1 COUNT
C ELSE
C LEAVE
C ENDIF
C*
C READ TOKMSP 90
C ENDDO
C*
C SETON LR
C*
RPG構文 vs SQL文
所感
RPGとSQLで基本的な構文と応用的構文を試してみましたが、
基本的な構文については、大きくどちらの方が書きやすいということはなかった。
当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。




















