フリー・フォーマット型RPGの入門

Copyright © i-Learning Co.,Ltd.
フリー・フォーマット型RPGの入門
株式会社アイ・ラーニング
中村 潤
Agenda
•再確認・RPGとは
•フリーフォーマットRPGは、RPGⅣであるという
こと。
•演算仕様書のみのフリーフォーマットRPG
•完全フリーフォーマット
Copyright © i-Learning Co.,Ltd.
1
再確認・RPGとは
Copyright © i-Learning Co.,Ltd.
2
RPGとは
•RPGとは、Report Program Generator
– 帳票印刷プログラムを作成する言語
•RPG仕様書記入方式で、習得が早い
– 固定位置記入方式のコーディング
– RPG内部論理で、入出力命令が不要
CL0N01FACTOR1+++++++OPCODE&EXTFACTOR2+++++++RESULT++++++++LEN++D+HILOEQ
C
EXCEPT
MIDASI
C* 繰り返し
C
DO
*HIVAL
C
READ
TOKMSP
99
C N99
EXSR
@MEISUB
C N99
ENDDO
C* 終了処理
C
EXCEPT
SAISHU
C
SETON
LR
C
RETURN
Copyright © i-Learning Co.,Ltd.
RPGとは
•コーディング例
Copyright © i-Learning Co.,Ltd.
4
RPGの変遷
•RPGⅡ
– System36以前
– プログラム記述方式
– RPG内部論理
•RPGⅢ
– System38、AS/400
– RDBを外部記述ファイルで使用
•RPGⅣ
– AS/400~IBM i
– RPGⅢでの規制を大幅緩和
Copyright © i-Learning Co.,Ltd.
5
RPGⅣで大きく変わった事
•データ名の柔軟性
– _が使用可
– 長さが10文字まで(フィールド名は4096文字)
•関数の使用
– 命令の表現が簡素に。
•日付計算が容易。
•標識を使用せずに、命令結果を判断。
•統合言語環境
– パフォーマンスの向上
– プログラム管理、運用の効率化
Copyright © i-Learning Co.,Ltd.
RPGⅢプログラマーにとっては。。。
•RPGⅣの新しい機能も、自分たちで解決済み
– 日付の計算
– データ名の名前の短さ(6文字)
あえて冒険する必要は無い?
Copyright © i-Learning Co.,Ltd.
7
しかし!
•プログラマーが高齢化
S/38以来、
この道30年
。。。
後継者を
育てたい!
•若いプログラマーは、Java、C、PHP。。。
自宅PCで
開発可能
市販教材が豊富
教育機関で
学習
Copyright © i-Learning Co.,Ltd.
8
フリーフォーマットRPGが解決の糸口
•JavaやCと記述方式が似ているので、若いプ
ログラマーの習得が容易。
•Rational Develper for i (Eclipse)で、Javaと
違和感がまったく無い。
•同じRPGなので、これまでのRPGプログラマー
も慣れるのが速い。
Copyright © i-Learning Co.,Ltd.
9
Agenda
フリーフォーマットRPGは、
RPGⅣであるということ。
Copyright © i-Learning Co.,Ltd. 10
RPGⅢからRPGⅣへの変換
•フリーフォーマットRPGは、RPGⅣ。
•ソース・プログラムはCVTRPGSRCコマンドで、
RPGⅢからRPGⅣへ簡単に変換可能。
– 固定位置記入形式のRPGⅣプログラムに変換。
CVTRPGSRC
FROMFILE(QRPGSRC)
FROMMBR(*ALL)
TOMBR(*FROMMBR)
Copyright © i-Learning Co.,Ltd.
RPGは混在可能
•RPGⅢプログラムも、RPGⅣプログラムも、オ
ブジェクトタイプは*PGM。
– CALLコマンド、またはRPGからCALL命令で実行
– RPGⅢプログラムから、RPGⅣプログラムが実行可
能
すべてのRPGプログラムをRPGⅣ、
FFRPGに変更する必要は無い。
Copyright © i-Learning Co.,Ltd. 12
まずRPGⅣを知ろう(1)
•制御仕様書はすべてキーワード
– DATEDIT(日付編集)
DATFMT(*JIS)
TIMFMT(*ISO)
NOMAIN
Copyright © i-Learning Co.,Ltd. 13
まずRPGⅣを知ろう(2)
•ファイル仕様書の継続行はキーワード記入
オーバーフロー標識
OFLIND(*INOF)
ユーザーオープン
USROPN
サブファイル使用
SFILE(#RRN01:SFL01)
Copyright © i-Learning Co.,Ltd. 14
まずRPGⅣを知ろう(3)
•定義仕様書(D)
– 配列(RPGⅢではE仕様書)
– データ構造(RPGⅢではI仕様書)
– キーワード使用可能
INZ(省略時の値指定)
CONST(固定情報)
DIM(配列定義)
Copyright © i-Learning Co.,Ltd. 15
まずRPGⅣを知ろう(4)
•定義仕様書の例(配列)
– RPGⅢのE仕様書
FMT E .....E....FROMFILETOFILE++NAME++N/RN/TBLENPDSARRNAMLENPDSCOMMENTS++++++
0005.00
E
TCD
1 10 5
TNM
10
– RPGⅣのD仕様書
FMT D .....DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS++++++++++++++++++++
0005.00
D TCD
S
5
0006.00
D TNM
S
10
DIM(10) CTDATA PERRCD(1)
DIM(10) ALT(TCD)
Copyright © i-Learning Co.,Ltd. 16
まずRPGⅣを知ろう(5)
•定義仕様書の例(データ構造)
– RPGⅢのI仕様書
FMT DS .....IDSNAME....NODSEXT-FILE++.............OCCRLEN+....................
0007.00
I@DATA
DS
99
FMT J .....I....................................PFROMTO++DFIELD+L1M1FRPLMNZR.
0008.00
I
1
5 CODE
0009.00
I
6 20 NAME
– RPGⅣのD仕様書
FMT D .....DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS++++++++++++++++++++
0008.00
D @DATA
DS
OCCURS(99)
0009.00
D CODE
1
5
0010.00
D NAME
6
20
Copyright © i-Learning Co.,Ltd. 17
まずRPGⅣを知ろう(6)
•演算仕様書
– 拡張演算項目2が使用可能
Copyright © i-Learning Co.,Ltd. 18
まずRPGⅣを知ろう(7)
•新しい演算命令
–
–
–
–
–
FOR
ELSEIF
LEAVESR
ADDSUR
SUBDUR
•従来と名前が変わった命令
– LOKUP
– UPDAT
– DELET
→
→
→
LOOKUP
UPDATE
DELETE
Copyright © i-Learning Co.,Ltd. 19
まずRPGⅣを知ろう(8)
•演算仕様書:式の評価
– 拡張演算項目2を使用し、式の評価が可能
EVAL
URIAGE
=
SURYO
*
TANKA
IF
EVAL
ENDIF
URIAGE
URIAGE
= 0
= SURYO
*
TANKA
Copyright © i-Learning Co.,Ltd. 20
まずRPGⅣを知ろう(8)
• 関数
– 日付計算
•%DAYS
•%MONTHS
•%YEARS
– 文字列操作
•%SUBST
•%TRIM
– これまでの演算命令の代わり
•%XFOOT
•%LOOKUP
Copyright © i-Learning Co.,Ltd.
演算仕様書のみの
フリーフォーマットRPG
Copyright © i-Learning Co.,Ltd. 22
フリーフォーマット型RPG
•V5R1より、演算仕様書のフリーフォーマット化
/は7桁目
/FREE
URIAGE
/END-FREE
=
SURYO * TANKA;
•V7R1(Technology Refresh 7)より、完全フリー
フォーマット化
Copyright © i-Learning Co.,Ltd.
演算命令記入規則
• 命令
演算項目2 演算項目1
結果のフィールド;
開始桁は8桁目
CHAIN
TOKMSP
URIAGE = SURYO
COUNT += 1;
JHTOKB;
* TANKA;
// コメント
Copyright © i-Learning Co.,Ltd.
コーディング例1
read
tokmsp;
dow not
%eof(tokmsp);
count += 1;
sagaku = tkgend if
*inof;
write midashi;
*inof = *off;
endif;
write meisai;
read
tokmsp;
enddo;
tkuzan;
Copyright © i-Learning Co.,Ltd.
コーディング例2
READ TOKMSP;
DOW NOT %EOF(TOKMSP);
COUNT += 1;
SAGAKU = TKGEND IF
*INOF;
WRITE MIDASHI;
*INOF = *OFF;
ENDIF;
WRITE MEISAI;
READ
TOKMSP;
ENDDO;
TKUZAN;
Copyright © i-Learning Co.,Ltd.
関数
•日付計算
– 今までのやり方
FMT I
0003.00
FMT J
.....IFILENAMESQNORIPOS1NCCPOS2NCCPOS3NCC..............................
I
DS
.....I....................................PFROMTO++DFIELD+L1M1FRPLMNZR.
0004.00
I
1
80HIZUKE
0005.00
I
1
40NEN
0006.00
I
5
60TSUKI
0007.00
I
7
80HI
•年月日のフィールドをデーや構造で定義
– (年、月、日)
Copyright © i-Learning Co.,Ltd.
関数
• 日付計算(ADDDURやSUBDURでも可)
TKNYUK = @TODAY + %DAYS(20) ;
TKNYUK = @TODAY + %MONTHS(6) ;
TKNYUK = @TODAY + %YEARS(2) ;
• データベースの日付フィールド定義
FMT PF .....A..........T.NAME++++++RLEN++TDPB......FUNCTIONS++++++++++++++++++
0012.00
A
TKGEND
9P 0
COLHDG(' 信用限度額 ')
0013.00
A
TKUZAN
9P 0
COLHDG(' 売掛金 ' ' 残高 ')
0014.00
A
TKNYUK
L
DATFMT(*ISO)
0015.00
A
COLHDG(' 最終入金日 ')
0016.00
A
TKNYUT
T
TIMFMT(*JIS)
0017.00
A
COLHDG(' 入金時間 ')
Copyright © i-Learning Co.,Ltd.
関数
•文字列操作
TKNAKJ =
‘ 株式会社アイ・ラーニング△△△△△△△ ‘
@JUSHO =
%TRIM(TKNAKJ) + ‘ 様 ’;
株式会社アイ・ラーニング
様
Copyright © i-Learning Co.,Ltd.
フリーフォーマットで使えないもの
•使えなくなった命令
–
–
–
–
–
XFOOT
LOOKUP
ADDDUR
SUBDUR
関数で代用
•結果の標識が使用不可
– 関数で代用
•%EOF
•%FOUND
Copyright © i-Learning Co.,Ltd. 30
完全フリーフォーマット
Copyright © i-Learning Co.,Ltd. 31
完全フリーフォーマット
•制御仕様書、ファイル仕様書、定義仕様書も
フリーフォーマット。
– 完全フリーフォーマット化
•/FREEと/END-FREEは不要
– IBM i 7.1 TR7(Technology Refresh 7)より
– Rational Develper for i 使用(5250画面のSEU
では構文エラー)
– RPG内部論理は使用不可
Copyright © i-Learning Co.,Ltd. 32
完全フリーフォーマットのメリット
•習得が容易
– JavaやPHPを知っている人であれば、直感で理解
できる。(RDi の画面ではJavaの世界とほぼ同じ)
– 従来のRPGプログラマーは命令を知っているのです
ぐに慣れることができる。
•SEUからの開放
– FTPなどでソースメンバーをPCに転送して編集が可
能。
– RDIでPC側のファイルと、実際のソースメンバーとの
整合性を管理。
Copyright © i-Learning Co.,Ltd. 33
Rational Develper for i (Eclipse画面)での開発
PDMのように
IBM i上のオブ
ジェクトを操作
ファイルのフィールド
やデータをテーブル形
式で表示
SEUのようにソー
スを表示・編集・
操作できるLPEX
エディター
Javaと
違和感
がない
Copyright © i-Learning Co.,Ltd. 34
制御仕様書
CTL-OPT
DATFMT(*ISO)
TIMFMT(*ISO);
仕様書コード「H」が、CTL-OPTに変わっただけ。
Copyright © i-Learning Co.,Ltd.
ファイル仕様書
DCL-F
TOKMSP;
•デフォルトでは読み取り専用、全手順アクセ
ス、外部記述データベース・ファイル。
DCL-F TOKMSP USAGE(*INPUT)
KEYD DISK(*EXT) ;
DCL-F QPRINT USAGE(*OUTPUT)
PRINTER(132)
OFLIND(*INOF);
Copyright © i-Learning Co.,Ltd.
定義仕様書
DCL-S
URIAGE
PACKED (9:0);
DCL-S
CUST_NAME
DCL-S
ARRAY1
CHAR(100);
ZONED(5:0) DIM(5);
フィールド名、配列、データ構造もすべて
定義仕様書で定義。
Copyright © i-Learning Co.,Ltd.
定義仕様書
•データ構造の例
DCL-DS
*N;
DCL-SUBF
DS_1_5
DS_6_10
DS_2_6
DS_7_9
END-DS;
DCL-DS INPDTA
END-DS;
DS_1_10 CHAR(10);
CHAR(5) OVERLAY (DS_1_10:1);
CHAR(5) OVERLAY (DS_1_10:6);
CHAR(5) OVERLAY (DS_1_10:2);
CHAR(3) OVERLAY (DS_1_10:7);
EXT
EXTNAME('TOKMSP')
PREFIX(I#:2)
Copyright © i-Learning Co.,Ltd. 38
徐々に勉強しましょう
•ILE(統合言語環境)
– 異なる言語のプログラム(RPG、COBOL、C、CL)を
モジュールとしてコンパイルし、結合してプログラム
オブジェクトを作成。
– サービス・プログラムの作成により、関数的な使用
方法が可能。
ソース・プログラム
ソース・プログラム
モジュール・
オブジェクト
モジュール・
オブジェクト
プログラム・
オブジェクト
Copyright © i-Learning Co.,Ltd. 39
徐々に勉強しましょう
•SQL
– 組み込みSQLでファイル操作。
– 今存在している物理ファイル、論理ファイルを、
テーブル、ビューとして使用可能。
– 条件付レコードの読み取りがOPNQRYFよりも簡単。
DCL-DS INPDTA
END-DS;
EXT
EXTNAME('TOKMSP')
EXEC SQL
SELECT
* INTO :INPDTA FROM TOKMSP
WHERE TKBANG = :X1BANG;
PREFIX(I#:2)
他の言語
よりも簡単!
Copyright © i-Learning Co.,Ltd. 40
コンパイル
•単一コマンドでのコンパイル
– CRTBNGRPG(今までのCRTRPGPGM)
– CRTSQLPKGI(SQLを含むプログラム)
•ILEでのコンパイル
– CRTRPGMOD(モジュール作成)
– CRTPGM(プログラム結合)
Copyright © i-Learning Co.,Ltd. 41
アイ・ラーニングについて
IBMコーポレーションのグローバルプログラムの一環として、IBM研修事業はト
レーニング・パートナーであるアイ・ラーニングに移管されました。
アイセス
社名変更
2013年4月
(トレーニング・パートナー)
日本アイ・ビー・エム
研修部
IBM Japan
Learning Division
アイ・ラーニング
1990 IBM-J 4%
日本研修
サービス
1993
日本IBM人財
ソリューション
研修事業移管
2006
IBM-J 100%
Copyright © i-Learning Co.,Ltd. 42
RPG研修
•AS513 System i RPGⅣバッチ・プログラム演習
– RPGⅣの基礎と帳票を出力するバッチプログラムのプログラミ
ングを学ぶコースです。
•AS514 System i RPGⅣ対話型プログラム演習
– 画面を使用したRPGⅣのプログラミングを学ぶコースです。
•AS518 System i RPGⅢ基礎演習
– RPGⅢの基礎と帳票出力、データベース操作を行うプログラ
ミングを学ぶコースです。
•AS515 System i RPGⅢバッチ・プログラム演習
– RPGⅢの構造化、内部論理プログラミングを学ぶコースです。
•AS519 System i RPGⅢ対話型プログラム演習
– 画面を使用したRPGⅢのプログラミングを学ぶコースです。
Copyright © i-Learning Co.,Ltd.
RPG研修
•AS520 RPGⅢプログラマーのための
FreeFormatRPG
– RPGⅢプログラマーの方を対象に、フリーフォーマッ
トRPGプログラミングを解説するコースです。これか
らRPGⅢをフリーフォーマットRPGにコンバージョン
されるというプログラマーの方全てを対象とした
コースです。
お待ちしております!
Copyright © i-Learning Co.,Ltd. 44