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