More Related Content
PPT
PPTX
PDF
ALPSチュートリアル(3) アプリケーション実習 PDF
ALPSチュートリアル(2) ALPSのインストール PDF
ALPSチュートリアル(5) ALPS Python入門 PDF
ALPSチュートリアル(7) アプリケーションのALPS化 ODP
LibreOffice 4 under NetBSD with pkgsrc PDF
Viewers also liked
PDF
PDF
PPTX
PDF
Questetra ハンズオンセミナー「ビギナー向け業務プロセス設計」 2014/10/15 PDF
ライフネット生命 還暦ベンチャー社長が挑む保険業界のタブー PPTX
チーム55連発 FP大田勉 生前に意志を伝える方法3つ PDF
ソーシャルメディア大百科川井パート(ファンドレイジングセミナー2012より) PPTX
PPT
PPT
PPT
PPT
20140605_じどうかの窓口_ソフトウェアテスト自動化のRoi PPT
PDF
PPT
PDF
見積の手間を90%削減できる積算システム「せきさん係長」講演資料(2014.5.9 愛知建築士会) PDF
PPT
PPTX
PPT
Similar to ILE-RPG Study 001
PDF
Databasedesignforsocialgames 110115195940-phpapp02 PDF
PDF
PPTX
PPTX
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる PDF
2010 icse-an analysis of the variability in forty preprocessor-based software... PPTX
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方 PDF
PDF
PDF
PDF
PDF
2011.06.11 v7から始めるunix まとめ PDF
PDF
PDF
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012 PPT
COBOL:言語プログラムのトレース(単純な一覧表出力) PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努 PPTX
FINAL FANTASY Record Keeperを支えたGolang PDF
PostgreSQL安定運用のコツ2009 @hbstudy#5 ILE-RPG Study 001
- 1.
- 2.
- 3.
OPM の世界・全体図 RDBMSWeb CSV? Text? CALL RPG-III CL ---- IBM i ---- ftp P-com CSV? Text? Pc Command ? ? ? - 4.
ILE の世界・全体図 RDBMSJava Web XML CALLP SOAP REST XML RPG-IV CLLE C C++ ---- IBM i ---- CALLP %XML XML-SAX XML-INTO ちなみに... RDBMS 名はご存知ですか? - 5.
RPG -Ⅳ の特徴その1第1ステップは、プログラムでは無くモジュール OPM ( RPG400 )では、 CRTRPGPGM で作成されたオブジェクトをプログラムと呼んでいます。しかし ILE では、プログラム作成にあたって 2ステップ が必要です。 まず1ステップ目は、「 CRTRPGMOD 」です。作成されたオブジェクトは、 モジュール と呼ばれます。 次に2ステップ目は「 CRTPGM 」です。この時、1ステップ目で作成された、 モジュール を指定します。追加のモジュールを指定しても構いません。ここで作成されたオブジェクトがプログラムにあたります。 バインド とも言います。 この2つのコマンドを同時に行うのが「 CRTBNDRPG 」です。 - 6.
RPG -Ⅳ オブジェクト図モジュール A モジュールB CRTRPGMOD CRTBNDRPG CRTPGM サービス プログラム ・ QRPGSRC ・ QRPGLESRC メンバーB メンバーA プログラム A A プログラム B B プログラム C A B - 7.
RPG -Ⅳ の特徴その2スタティック(静的)リンク OPM ( RPG400 )では、「 CALL 」で外部プログラムを呼び出す事が出来 ます。これは、 ダイナミック(動的)リンク による呼び出しです。知ってい ましたか?では、 スタティックリンク とは何でしょう? メリット ・ ダイナミックに比べてオーバーヘッドが無いため、実効速度が速い。 デメリット ・ プログラム名では、元のモジュールが判別しにくい。 (DSPPGM や DSPPGMREF で見ればわかるが...) ・ モジュールの変更は、リバインドしない限り反映されない。 ・ 上記理由より、改変の可能性が無い処理にしか、静的リンクは使いづらい。 DLL ってご存知ですか? そうです。コンパイル時のリンクという事です。先程、「 CRTPGM 」で モジュールが、追加出来ると言ったのを覚えていますか?これはまさ に スタティックリンク なのです。 - 8.
静的リンクに対する見解 スタティック(静的)リンクは使うべき? スタティックリンクは、高速であり、魅力的です。しかし、昨今の“IBM i”の処理能力を考えれば、高速性を追求する処理以外は、 ダイナミックリンクで十分 だと考えます。何故なら、 OPM のダイナミックリンクと ILE のダイナミックリンクでは、 圧倒的に ILE のパフォーマンスの方が優れている からです。 私は、むしろ スタティックリンク を使うことによる、 デメリット の方が、開発生産性の妨げになるのでは?と思います。 では、本当にただのダイナミックリンク( CALL )だけでいいのでしょうか?その答えは「N o 」です。後述する “サービスプログラム” を新たなダイナミックリンクの位置づけとして、学ぶ必要があるからです。でもそのお話は、またの機会に...。 - 9.
ILE のパワーを検証 ILEの処理能力やいかに? ILE の動的リンクが「 速い 」と言うが、どれだけ速いか? テストしてみましょう。<ILESRC/QRPGSRC( SPRXXX )> テスト内容: 1047 バイトのレコードを 1 万件追加&更新 SPR100 ( OPM 単体): 2前後秒 SPR100LE ( ILE 単体): 2前後秒 SPR000 ( OPM 外部コール): 30前後秒 SPR000LE ( ILE サービス PGM 外部コール): 2秒前後 ※単体同士の処理は、変わらないが、外部呼出しに おいては、 OPM の処理能力を遥かに上回る 。 逆に外部呼出しと単体処理性能に差が見られない という事は、サービスを切り出しても、システム全体の パフォーマンスには影響しないという事が考えられるのでは ないでしょうか? - 10.
RPG-IV のコーディング例 HDATEDIT(*YMD) H**************************************************************** H** PROGRAM-ID : SPR000LE LANGUAGE : RPG-IV ** H** AUTHOR : CSC WRITTEN : 09/04/01 Y.USHIDA ** H** UPDATE : ##/##/## ######## ** H** PROGRAM DESCRIPTION ** H** スピードテスト ** H**************************************************************** F* < テストデータ > D*-----<< メインプロシージャ・プロトタイプ定義 >>-----* D*-----<< サブプロシージャ・プロトタイプ定義 >>-----* DEX_LOOP PR D P@KBN 1A VALUE D P@DATE 8S 0 D P@TIME 6S 0 D P@IX 9S 0 C*-?-----------------------------------------------------------------* D WDATE8 S 8S 0 D WTIME6 S 6S 0 D W@MAX S 9S 0 D IX S LIKE(W@MAX) C*-?-----------------------------------------------------------------* C*-?--------<< FREE FORMAT >>-------* C*-?-----------------------------------------------------------------* /FREE W@MAX = 10000 ; WDATE8 = %DEC(%DATE() : *ISO ) ; // 8 桁日付 WTIME6 = %DEC(%TIME() ) ; // 6 時間 // レコード追加 FOR IX = 1 TO W@MAX ; EX_LOOP('A':WDATE8:WTIME6:IX) ; ENDFOR ; // レコード更新 FOR IX = 1 TO W@MAX ; EX_LOOP('U':WDATE8:WTIME6:IX) ; ENDFOR ; *INLR = *ON ; RETURN ; /END-FREE H NOMAIN FSPA00F UF A E K DISK DEX_LOOP PR D P@KBN 1A VALUE D P@DATE 8S 0 D P@TIME 6S 0 D P@IX 9S 0 PEX_LOOP B EXPORT DEX_LOOP PI D P@KBN 1A VALUE D P@DATE 8S 0 D P@TIME 6S 0 D P@IX 9S 0 D SPAKEY DS LIKEREC(SPA00FR : *KEY) /FREE IF P@KBN = 'A' ; // レコード追加 CLEAR SPA00FR ; SPA001 = 'RPGILEA' ; SPA002 = P@DATE ; SPA003 = P@TIME ; SPA004 = P@IX ; SPA005 = %DEC(%DATE() : *ISO ) ; // 8 桁日付 SPA006 = %DEC(%TIME() ) ; // 6 時間 SPA011 = *ALL'*' ; WRITE SPA00FR ; ENDIF ; IF P@KBN = 'U' ; // レコード更新 SPAKEY.SPA001 = 'RPGILEA' ; SPAKEY.SPA002 = P@DATE ; SPAKEY.SPA003 = P@TIME ; SPAKEY.SPA004 = P@IX ; CHAIN %KDS(SPAKEY) SPA00FR; IF NOT %FOUND ; RETURN ; ENDIF ; IF %REM( P@IX : 2 ) = 0 ; SPA005 = %DEC(%DATE() : *ISO ) ; // 8 桁日付 SPA006 = %DEC(%TIME() ) ; // 6 時間 SPA011 = *ALL'-' ; ENDIF ; UPDATE SPA00FR ; ENDIF ; RETURN ; /END-FREE P E - 11.
RPG-IV とIIIを比較 ------------------------ 前 略 ------------------------------ C MOVE *BLANK POEDDT C MOVE *BLANK POYOBI C MOVE *BLANK PORTCD C* 処理 C Z-ADD*ZERO #SYMD C MOVE PIDATE WDAT 60 C MOVE WDAT #SYMD C PIFLG IFEQ '1' >--+ C EXSR @DYCHK | C END <--+ C PIFLG IFEQ '2' >--+ C EXSR @DYCHK | C EXSR @YOBI | C END <--+ C PIFLG IFEQ '3' >--+ C EXSR @PLAS C EXSR @DYCHK | C EXSR @YOBI | C END <--+ C* C SETON LR C RETRN C**************************************************************** C** @DYCHK: 日付チェック ** C**************************************************************** C* C @DYCHK BEGSR C* 西暦セット C #Y IFGE 40 >--+ C MOVEL19 #SYMD | C ELSE + C MOVEL20 #SYMD | C END <--+ C MOVEL#SYMD PODATE | C* うるう年と平年の検索(2月の末日セット) C #YY DIV 4 WYS 20 ------------------------ 後 略 ------------------------------ RPG-III = 170 ステップ C*-?-----------------------------------------------------------------* C*-?--------<< FREE FORMAT >>-------* C*-?-----------------------------------------------------------------* /FREE // 日付チェック TARGET = 090402 ; TEST(DE) *YMD TARGET ; IF %ERROR() ; RETURN FALSE ; ELSE ; RETURN TRUE ; ENDIF ; // 6桁->8桁変換 RETURN %DEC(%DATE(TARGET : *MDY) :*ISO) ; // 日付増分 RETURN %DEC(%DATE(TARGET:*MDY) + %DAYS(90) : *ISO ) ; // 曜日の算出(数値の場合) RETURN WEEK(%REM(%DIFF(%DATE(TARGET:*YMD) :D'1899-12-30':*DAYS):7)); RETURN ; /END-FREE RPG-IV = 20 ステップ ※ 末日求める処理は無い 日付サブルーチンの III と IV のメインコードの比較 - 12.
RPG -Ⅳ の特徴その3サービスプログラム(バインディングソース) (C関数呼び出し、Javaクラス呼び出し、 etc ...) 活動化グループ D仕様書 (データ構造体、可変長フィールド、 etc ...) プロトタイプ・プロシージャ (メインプロシージャ、サブプロシージャ) 自由形式構文(フリーフォーマット) BIF(Bild In Function) Webに対するCGIになれる(Webサービス・SOA) - 13.
RPG -Ⅳ を選ぶ理由1.強力な言語環境を備えている ( XML などの外部連携・他言語呼び出し機能、 BIF 等) 2.最適化された処理能力を備えている (活動化グループ) 3. RPG-III は10年後必ず存在すると言い切れるか? (必ずなくなるとも言い切れないが、あるとも言い切れない) 4. IBM の RPG 開発は、バージョン IV しかしていない (特に自由形式構文に偏っている) 5. CVTRPGSRC 使えば、 III と IV を容易に比較できる (新たに覚えるとしたら一番覚えやすくないですか?) 6.この先 RPG-IV 限定のジョブが有った場合に取り逃がす可能性 - 14.