3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RPG構文 vs SQL文(基礎・応用構文)

Last updated at Posted at 2025-10-17

環境情報

今回の検証では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'
);

実行結果
結果確認画面
image.png

登録データの確認
image.png

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 

image.png
image.png

実行結果
image.png

SELECT文の例

TOKMSP テーブルから、TKBANG(得意先番号)が ‘99999’のデータのみを対象とする。

SQL文

SELECT *
FROM STOYOAMAB.TOKMSP
WHERE TKBANG = '99999';

実行結果
image.png

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        

image.png
image.png

実行結果
TOKMSPWのデータ確認
image.png

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';    -- 主キー条件

実行結果
SQL文の実行結果
image.png

更新結果データ
image.png

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     

image.png

実行結果
image.png

DELETE文の例

TOKMSP テーブルから、TKBANGが「99999」のデータを削除する

SQL文

DELETE FROM STOYOAMAB.TOKMSP
WHERE TKBANG = '99999';

実行結果
image.png

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     

image.png

実行結果
得意先番号が、'99999'のデータが存在しないことを確認
image.png

ORDER BY文の例

TOKMSP テーブルから、ORDER BYで並び替えを実施。(締日コード順)

SQL文

SELECT * 
FROM STOYOAMAB.TOKMSP 
ORDER BY TKSIME;

実行結果
image.png

RPG構文

LFを切って、実施する
image.png

実行結果

LIMIT文の例

TOKMSP テーブルから、LIMITで5件のみを対象とする。

SQL文

SELECT *
FROM STOYOAMAB.TOKMSP
LIMIT 5;

実行結果
image.png

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*                                                                     

image.png
image.png
image.png

実行結果
image.png

RPG構文 vs SQL文

所感
RPGとSQLで基本的な構文と応用的構文を試してみましたが、
基本的な構文については、大きくどちらの方が書きやすいということはなかった。

当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。

3
0
1

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?