01-進化を続ける IBM i の最新技術動向

日本IBM・OpenSource協議会-IBM i 共催
IBM i 最新情報 ご提供セミナー
進化を続ける IBM i の最新技術動向
2015年3月3 日
日本アイ・ビー・エム株式会社
IBM Systems ハードウェア事業本部
Power Systems テクニカルセールス
■© IBM Corporation 2015. All Rights Reserved.
■ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報提
供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むものでも
ありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗⽰にかかわ
らずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害が⽣じた場合も
、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を
引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したものでもなく、またそのような
結果を生むものでもありません。
■本講演資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰する
ものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつで
も変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講演資料に含ま
れている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意図したもので
も、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づい
ています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、⼊出⼒構成、
ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられ
ているものと同様の結果を得られると確約するものではありません。
■記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰されたも
のです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。
■IBM、IBM ロゴ、ibm.com、[当該情報に関連し商標リスト中に掲載されたIBMブランド、製品名称があれば追加する]は、世界の多くの国で登録された
International Business Machines Corporationの商標です。
■他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。
■現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。
■Adobe, Adobeロゴ, PostScript, PostScriptロゴは、Adobe Systems Incorporatedの米国およびその他の国における登録商標または商標です。
■IT Infrastructure Libraryは英国Office of Government Commerceの一部であるthe Central Computer and Telecommunications Agencyの登録商標で
す。
■インテル, Intel, Intelロゴ, Intel Inside, Intel Insideロゴ, Intel Centrino, Intel Centrinoロゴ, Celeron, Intel Xeon, Intel SpeedStep, Itanium, および
Pentium は Intel Corporationまたは子会社の米国およびその他の国における商標または登録商標です。
■Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。
■Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標です。
■ITILは英国The Minister for the Cabinet Officeの登録商標および共同体登録商標であって、米国特許商標庁にて登録されています。
■UNIXはThe Open Groupの米国およびその他の国における登録商標です。
■Cell Broadband Engineは、Sony Computer Entertainment, Inc.の⽶国およびその他の国における商標であり、同社の許諾を受けて使⽤しています。
■JavaおよびすべてのJava関連の商標およびロゴは Oracleやその関連会社の米国およびその他の国における商標または登録商標です。
■Linear Tape-Open, LTO, LTOロゴ, UltriumおよびUltriumロゴは、HP, IBM Corp.およびQuantumの米国およびその他の国における商標です。
2
© 2015 IBM Corporation
目次
1. POWER8プロセッサー
2. IBM i ロードマップ
3. IBM i V7R2 機能拡張の紹介
4. IBM i におけるアプリケーション開発
5. Free Format RPG とは
6. Free Format RPG コーディング・サンプル
1. 事前準備
−
Rational Developer for i のインストール
2. 初心者向けチュートリアル
−
3
Coding in Free-Form RPG IV - a beginner‘s tutorial
© 2015 IBM Corporation
POWER8プロセッサー
4
4
© 2015 IBM Corporation
ビッグデータ活用を徹底的に追求して、
設計、開発されたプラットフォーム
ビッグデータを超⾼速処理するための設計
高い経済性と信頼性を備えた
イノベーションを加速する
5
クラウド基盤
オープンプラットフォーム
© 2015 IBM Corporation
POWERプロセッサー・ロードマップ
2,400億円
の投資
POWER9
POWER8
22 nm
POWER5/5+
130/90 nm
1.5 ~ 2.2 GHz
デュアル・コア
Simultaneous MultiThreading (SMT)
Micro Partitioning
2004
6
POWER6/6+
65/65 nm
3.5 ~ 5.0 GHz
デュアル・コア
SMT2
十進浮動小数点演算
インストラクション・リトライ
ストレージ保護キー
2007
POWER7/7+
45/32 nm
3.0 ~ 4.4 GHz
1 チップ 8 コア
eDRAM L3 キャッシュ
エネルギー効率の向上
SMT 4
VSM & VSX
ストレージ保護キーの
拡張
2010
1 チップ 12 コア
SMT 8
FPGA サポート
トランザクショナル・メモリー
PCIe アクセラレーション
Extreme Analytics
Optimization
Extreme Big Data
Optimization
On-chip accelerators
POWER8 Scale-Out System の発表
3.0 ~ 4.1 GHz
1 チップ 6 コア
デュアル・チップ・モジュール
2014
© 2015 IBM Corporation
Old to New / Winback
コア性能向上によるコストパフォーマンスアップ
• スレッド処理能力向上
– SMT1 での比較でも POWER7 から性能向上
– キャッシュ増加によるレイテンシー向上
4
3.5
x2~
~
3
• 並列処理能力向上
– SMT8 により SMT1 の 2倍以上のスループット
向上を実現
– 同時 Dispatch / Issue 数向上
– 実行ユニット追加
– Transactional Memory
2.5
2
x1.5
1.5
1
0.5
ソフトウェア・ライセンス削減に効果を発揮
0
Systems performance reports
P7
P8
P8
P8
P8
SMT1 SMT1 SMT2 SMT4 SMT8
http://www-03.ibm.com/systems/power/hardware/reports/system_perf.html
7
© 2015 IBM Corporation
BigData
I/O レイテンシー性能向上による⾼速データ処理
• プロセッサー性能を余すところなく発揮
– プロセッサーの性能向上のポイント
CPU 内部の処理だけでなく、メモリー、I/O
性能の向上が重要
内部の処理だけでなく、メモリー、
コンピューター内部の処理のオーダー
・CPUのサイクル
:~ 1 ns
・L2キャッシュへのアクセス
:~ 10 ns
・メモリーへのロード / ストア
:100 ns
・I/O バスへのアクセス:~ 1000 ns
・I/O の読み込み / 書き込み
:10000000 ns (10 ms)
1 s = 1000 ms
1 ms = 1000 µs
1 µs = 1000ns
IBM FlashSystem は
• レイテンシー向上への取り組み
100 µs のオーダーに進化
– キャッシュ増加、メモリー・バッファー、PCI gen3 ネイティブサポート
– 近年の搭載メモリーの大容量化に対応
レイテンシー向上により大量のデータを高速に処理可能
8
© 2015 IBM Corporation
メモリー・バッファー・チップ
DDR Interfaces
Scheduler & 16MB POWER8
Memory Link
Management
Cache
パフォーマンス
エンド-エンド ファースト・パス & データ・リトライ
キャッシュ レイテンシ / バンド幅、部分的更新
キャッシュ 書き込みスケジューリング、事前読み込み、低電⼒
インテリジェント・メモリー・モジュール
ロジック、キャッシュ・ストラクチャーのスケジューリング
エナジー・マネージメント、RAS機能
従来、プロセッサー上で機能していたものをメモリー・バッファー上に移動
DRAM
Chips
Memory
Buffer
プロセッサー・インターフェース
9.6 GB/s 高速インターフェース
さらに強化されたRAS機能
“ On-the-fly” lane isolation/repair
9
© 2015 IBM Corporation
統合された PCIe Gen3 インターフェース
POWER8
PCIe Gen 3 のネイティブサポート
POWER7
•
•
•
•
プロセッサーとの直接結合
プロプライエタリな GX/Bridge の後継
低レイテンシー
Gen3 x16 バンド幅 (32 GB/秒)
CAPI Protocol トランスポート・レイヤー
GX
Bus
•
•
PCIe 経由のプロセッサーと機器との密接接続
PCIe でのプロトコルのカプセル化
PCIe G3
I/O
Bridge
PCIe G2
PCI
機器
PCI 機器
10
© 2015 IBM Corporation
BigData
I/O 帯域向上による⼤量データ処理
• I/O 帯域向上による大量データ処理性能アップ
– メモリーバンド幅の大幅な向上
– I/O 帯域の高帯域化により大量のデータ処理が可能
– メモリーの大容量化に対応
• 高帯域化が進むアダプターの性能向上に対応
– PCIe Gen3 ネイティブサポート
– 高帯域アダプターの登場に対応
10Gb, 40Gb イーサネット・アダプター
8Gb, 16Gb FC アダプター
– FlashSystem などの高速ストレージの登場に対応
BigData に対応した大量データ処理を実現
11
© 2015 IBM Corporation
POWER8 プロセッサーの進化
コア性能向上によるコストパフォーマンスアップ
I/O レイテンシー性能向上による⾼速データ処理
I/O 帯域向上による⼤量データ処理
•
•
•
12
従来の Workload に対する性能向上
BigData などの New Workload にも最適化
未来を見据えた性能向上と新機能の採用
© 2015 IBM Corporation
サーバー史上初のオープンコンピューティングプロジェクト
OpenPOWER Foundation
• POWERアーキテクチャーを、チップレベルからシステムレベル、その上のソフトウェア・スタック
までオープン化
• コミュニティーによる開発が次世代データセンターのイノベーションを加速
各レイヤーに属するメンバーは、POWER8テクノロジーと
自社テクノロジーのコラボレーションによる新たな価値の創出を実現
新サーバー用マザーボードに
POWER8を採用!
1500頁におよぶPOWER8
アーキテクチャー・仕様情報を公開
NVIDIA GPUアクセラレーター
アクセラレーター
-初のJava向け GPUアクセラレーター
-Hadoopアナリティクス・パフォーマンスが
飛躍的に向上
POWERにおける
におけるRDMAの活用
の活用
における
-スループット10倍
-Key-Value Storeアプリケーションの
遅延を改善
13
CAPI接続
接続FPGAアクセラレーター
アクセラレーター
接続
-消費電力あたりの性能を35倍
-200倍の高速化を実現する
金融分野向けモデル
© 2015 IBM Corporation
IBM i ロードマップ
14
14
© 2015 IBM Corporation
IBM i ロードマップ
POWER7+ / POWER8 システムは優れたパフォーマンス、セキュリティ、アプリケーション最適化機能を、
低いシステム管理コストによって実現します。
そして最新テクノロジーを活用するためのアップグレードを容易に行うことができます。
POWER6
POWER8
POWER7/POWER7+
POWER9
…
2008
6.1
2009
2010
7.1
2011
2012
2013
2014
7.2
2015
i next
i next+
…
IBM i は、お客様のニーズに応えるために、アプリケーション資産を継承しながら、セキュアで利用しやす
いIT環境を今後も提供します。
IBM i 7.2では、データベース、システム管理、可用性など多くの機能拡張が行われており、POWER8プ
ロセッサー搭載モデル上でその能力を最大限に活用することができます。
15
※IBM の将来の製品計画は、変更となる可能性がありますのでご注意ください。
15
© 2015 IBM Corporation
IBM i ストラテジー
• ソリューション
– 業界をリードするアプリケーションを稼動させる統合プラットフォーム
– ISV やクラウド事業者が利用できる、多様なソリューション提供手段
– モバイル・ソリューションによるエクスペリエンス向上
• オープン性の追求
– 継続的なリリースアップを通じて具現化される、IBM による IBM i へのコミットメント
– オープンソース言語やアプリケーションを通じて拡充される IBM i ソリューション
– Linux や AIX テクノロジーを活かした IBM i ソリューションの拡充
• 統合性
– ビジネス・アプリケーションのための、シンプルで高付加価値のプラットフォーム
– クリティカルなビジネス・データを保護するセキュリティと回復力
– IBM の各種システム、ストレージ、ソフトウェア・テクノロジーの活用
16
16
© 2015 IBM Corporation
IBM i – プライオリティー
• ソリューションへの投資
– 新しい技術によるISVソリューションの統合
– プログラミング言語、データベースの標準化への投資
– モバイル・デバイスのサポート
• オン・プレミス / クラウドへの対応
– POWER テクノロジーの活用
– 先進的なシステム / ストレージ仮想化機能の提供
– 回復性、可用性、柔軟性の提供
• シンプルでセキュアな環境の提供
– 簡単なシステム管理、高可用性機能の提供
– SANサポートの拡張
– 先進的で統合化されたセキュリティ環境
17
17
© 2015 IBM Corporation
IBM i ハードウェア・サポート
1
Servers
IBM i 5.4
IBM i 6.1
POWER8
POWER6+ JS23/43, 550*, 560
POWER6 JS12/22
800, 810, 825, 870, 890
270, 820, 830, 840
2
740, 750, 760, 770, 780, 795, PureFlex p260/460
POWER5/5+
515, 520, 525, 550, 570, 595
IBM i 7.2
3
POWER7/7+
PS700/701/702/730/704, Power 710, 720, 730,
POWER6+ 520*
POWER6 520*, 550*, 570, 595
IBM i 7.1
4
4
1 – IBM i V5R4 の営業活動、および有償延長保守サポート以外のサポートは終了しています
2 – POWER7+ 750/760 はネイティブ I/O をサポートしません
3 – TR8 (テクノロジー・リフレッシュ 8 )が必要です
4 – IOP または HSL はサポートされません
http://www-01.ibm.com/support/docview.wss?uid=ssm1platformibmi
18
18
© 2015 IBM Corporation
IBM i サポート
有償延長保守サポート(2016 年 9 月まで)
通常保守終了 2015年9月30日
有償延長保守サポート予定
19
19
© 2015 IBM Corporation
IBM i 7.2 機能拡張の紹介
20
20
© 2015 IBM Corporation
DB2 for i の拡張
• セキュリティーの拡張
–
–
–
–
–
行 / 列レベルのアクセス制御の実装
FieldProc マスキング
マルチプル・アクション・トリガー
TRANSFER OWNERSHIP
GRANT ステートメント
• SQLの 拡張
–
–
–
–
動的コンパウンドSQL
TRUNCATE ステートメント
自立型プロシージャー
・・・
• クエリーの拡張
–
–
–
–
21
XMLTABLE
CONNECT BY
Query/400 / OPNQRYFのSQEサポート
・・・
21
© 2015 IBM Corporation
行/列レベル アクセス制御 (RCAC)
• DB2における追加のデータ・セ
キュリティー・レイヤ
• テーブル・レベルのセキュリ
ティーをより完全なものに
RCAC:Row and Column Access Control
IBM Advanced Data Security for i
(IBM i Option 47)
無償フィーチャー
• 必要なデータのみアクセス可能
にするための手法
• テーブルへのアクセスを行レベ
ル/列レベル/その両方で制御
• 2つのルール・セットを定義可
–
–
行への権限
列のマスク
• IBM Advanced Data Security
for i が必要
22
22
© 2015 IBM Corporation
IBM Advanced Data Security for i (5770-SS1 Option 47)
• 以下の機能を利用する場合に導入が必須 :
– CREATE PERMISSION / CREATE MASK (RCAC)
– RCACを活動化しているファイルをオープンする場合
• RCAC 構成は、テーブル(*FILE)内に存在し、SQEによって適用される
• RCAC はオブジェクト権限を置き換えるものではない
– オブジェクト権限チェックをパスした後に:
行レベル権限により、表示される受け取る行が制御される
列マスクは列データへのアクセスを全面的にもしくは部分的に制限することができる
• RCAC は様々なインターフェースで利用可能
– Native DB, SQL, RPG, API
• 行レベル権限はビュー/論理ファイルを置き換え可能
• RCACを管理できるのは、QIBM_DB_SECADM ユーザーのみ
23
23
© 2015 IBM Corporation
RCACの例 ①
• 行レベルのアクセス制御の例
– 各ユーザー毎に行への許可を与える例
CREATE SCHEMA MY_LIB
CREATE TABLE MY_LIB/PERMISSION_TABLE (COLUMN1 CHAR (5 ), COLUMN2 INT NOT NULL WITH
DEFAULT)
USER1は全てのレコードに
は全てのレコードに
アクセス可能
CREATE PERMISSION MY_LIB.P1 ON MY_LIB.PERMISSION_TABLE
FOR ROWS WHERE
CURRENT_USER = 'USER1 '
ENFORCED FOR ALL ACCESS ENABLE
CREATE PERMISSION MY_LIB.P2 ON MY_LIB.PERMISSION_TABLE
FOR ROWS WHERE COLUMN1 = ‘USER2 ' and CURRENT_USER = 'USER2
ENFORCED FOR ALL ACCESS ENABLE
'
CREATE PERMISSION MY_LIB.P3 ON MY_LIB.PERMISSION_TABLE
FOR ROWS WHERE COLUMN1 = ‘USER3 ' and CURRENT_USER = 'USER3
ENFORCED FOR ALL ACCESS ENABLE
'
ALTER TABLE MY_LIB.PERMISSION_TABLE ACTIVATE ROW ACCESS CONTROL
24
USER2は
はCOLUMN1
が”USER2”のみアクセス
のみアクセス
可能
USER3は
はCOLUMN1
が”USER3”のみアクセス
のみアクセス
可能
24
© 2015 IBM Corporation
RCACの例 ②
• 列レベルのアクセス制御の例
– 列にマスクをかける
CREATE SCHEMA MY_LIB
CREATE TABLE MY_LIB/PERMISSION_TABLE (COLUMN1 CHAR (5 ), COLUMN2 INT NOT NULL WITH
DEFAULT)
CREATE MASK MY_LIB.M1 ON MY_LIB.PERMISSION_TABLE AS PERMISSION_TABLE
FOR COLUMN COLUMN1 RETURN
CASE WHEN ( CURRENT_USER = 'USER4 ' )
USER4は
はCOLUMN1の内
の内
THEN
PERMISSION_TABLE . COLUMN2
容を参照することができな
ELSE
い
NULL END
ALTER TABLE MY_LIB.PERMISSION_TABLE ACTIVATE COLUMN ACCESS CONTROL
25
25
© 2015 IBM Corporation
DB2 for i – データ・セキュリティー比較
テクノロジー フィールド・
プロシージャー
ユース・ケース
サポートされるIBM i リリー
ス
⾏レベル
アクセス制御
ビュー
論理ファイル
7.1, 7.2
7.2
7.2
6.1, 7.1, 7.2
列データへのアクセス制御
Yes
Yes
No
Yes
⾏データへのアクセス制御
No
No
Yes
Yes
外部プログラム
(複雑)
SQL ルール
(シンプル)
SQL ルール
(シンプル)
DDS /SQL
• Townsend Security
• Linoma
• Enforcive
現時点ではなし
現時点ではなし
N/A
データ暗号化
Yes
No
No
No
ジャーナル内の暗号化
Yes
No
No
No
SQL テーブル
DDS ファイル
SQL テーブル
DDS ファイル
SQL テーブル
DDS ファイル
SQL テーブル
Yes
Yes
Yes
No
実装方法
ソフトウェア・ベンダー対応
適用対象
データ中心のソリューション
26
列レベル
アクセス制御
26
© 2015 IBM Corporation
DB2 for i & IBM i 7.2 – その他の拡張
•
•
•
•
•
•
•
•
•
•
•
•
•
•
27
システム命名でオブジェクトの修飾にピリオド区切
り記号が許可される
リモート RDB から SELECT を実行するための
INSERT および CREATE TABLE AS のサポート
3 部構成の名前を使用して RDB 別名を直接
SQL ステートメント内で指定できる
キャスト規則を使用した関数解決
多数の日時スカラー関数の機能強化
XMLTABLE 表関数
階層照会の CONNECT BY
動的複合ステートメント
CREATE TABLE、CREATE VIEW、CREATE
INDEX、および DECLARE GLOBAL
TEMPORARY TABLE のシステム名
表および索引の KEEP IN MEMORY
チェック制約の VIOLATION 節
CREATE TABLE AS および CREATE TABLE
LIKE の参照フィールド (REFFLD) 生成
CREATE TRIGGER のプログラム名
複数イベント・トリガー
• PREPARE および EXECUTE IMMEDIATE での
式
• TRUNCATE ステートメント
• 表、ビュー、および索引に対する TRANSFER
OWNERSHIP ステートメント
• GRANT および REVOKE ステートメントでの
USER および GROUP
• 組み込みグローバル変数
• プロシージャー、関数、およびトリガーのステートメ
ント・テキストの難読化
• 関数およびプロシージャーのパラメーターのデフォ
ルト値
• 関数およびプロシージャーの呼び出しでの名前付
きパラメーター
• SQL スカラー関数での配列のサポート
• 自律型プロシージャー
• SQL ルーチン内の定数
• SQL スカラー関数用の統一デバッガーのサポート
• 索引の最大サイズが 1.7 テラバイトに増やされた
27
© 2015 IBM Corporation
IBM i アプリケーション開発環境サマリー
7.2
7.2
28
© 2015 IBM Corporation
IBM i におけるアプリケーション開発ストラテジー
コンパイラー & プ
ログラミング言語
オペレーティング・システムとプログラミング言
語間で共通の開発・管理ツール
オープン・ソース・ソ
リューションの強化
IBM i への Web とその開発テクノロ
ジーの統合 i
必要に応じてベンダー・ツー
ルを統合
29
29
© 2015 IBM Corporation
IBM i 7.2 におけるRPGの拡張
• 新しいフリー・フォーマット RPG
– 新しいシンタックス & スタイル
– 今風の動き
– 他プログラミング言語開発者の取り込み
• フリー・フォーマットRPGへの変換ツール
– Arcad Converter
– Linoma Software
• Rational Developer for i サポート
ctl-opt bnddir('ACCRCV');
dcl-f custfile usage(*update);
dcl-ds custDs likerec(custRec);
dcl-f report printer;
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
*inlr = '1';
dcl-proc sendOverdueNotice;
sendInvoice (custDs : %date());
end-proc;
– 2013/10
30
30
© 2015 IBM Corporation
IBM Navigator for i – 新機能
• パフォーマンス
–
–
–
新しいブラウザー
My Favorites
クイック・サーチ
• PTF 管理
–
–
導入済み PTF ナビゲーション
単一およびグループ・システムへのPTFの適用
• メッセージ・キュー・モニター
–
–
–
CIM によるモニター
ルールに基づくフィルターの作成
メッセージに対するアクションの自動化
• システム・モニター
–
–
–
ユーザー定義モニター
パフォーマンス・トレンドをグラフィカルに表示
ユーザー定義イベント自動化
• データベース
–
–
関数 / プロシージャの作成
DB パフォーマンス・メトリクスの作成
• IBM i Navigator は7.2以降、機能拡張なし
31
31
© 2015 IBM Corporation
IBM i Access モバイル
http://your_system_name:2001/iamobile/
• 7.2 GA時点では、テクノロジー・プレビュー
• IBM i Access for Web がモバイル用の新しいインタ
ーフェースを追加
– 5770-XH2で提供
• インターネット/ イントラネット上の様々なデバイスか
らIBM i へアクセス可能
iPhone
iPad
Android
Surface
• 基本的なシステム管理機能を提供
–
–
–
–
–
–
ジョブ管理
メッセージ
プリンター
5250 エミュレータ
SQLスクリプトの実行
・・・
• IBM i Access Mobileサイト
– http://www.ibm.com/systems/power/software/i/acc
ess/mobile.html
32
32
© 2015 IBM Corporation
IBM i バージョン 7の価値
お客様の関心の一例
IBM i 5.4での現状
ハードウェア統合によるTCO削減・運用管理の効率化
サポート外部ストレージはDS8000, DS6000のみ
各パーティションには専用I/Oが必要
基幹システムとしてのセキュリティーの維持
限られたパスワード設定オプション
障害対策・災害対策としてのデータ二重化
保管停止時間の短縮によるシステム使用可能時間の拡大
論理ファイル・ビューによるデータ・コントロール
災害対策としてはHABPソリューションが主流
(データベース論理レプリケーション)
地理的ミラーリングは同期のため距離に制限
(ストレージ・ミラーリング)
GUIベースでのシステム管理による運用管理の効率化
クラウド環境への対応
GUI開発ツールの採用による効率的な開発
活動時保管の活用
System i Navigatorによる管理
(管理専用ツールの事前導入)
イメージ・カタログによる仮想マウント (PTF/OSリリース・アップ)
での区画導入
モバイルへの対応
33
33
© 2015 IBM Corporation
IBM i バージョン 7の価値
お客様の関心の一例
ハードウェア統合によるTCO削減・運用管理の効率化
基幹システムとしてのセキュリティーの維持
障害対策・災害対策としてのデータ二重化
保管停止時間の短縮によるシステム使用可能時間の拡大
GUIベースでのシステム管理による運用管理の効率化
IBM i 7.1 / 7.2での対応
での対応
POWER7+ / POWER8 モデルのサポート
VIOSクライアントとして構成することで
クライアントとして構成することでI/O仮想化を実現
クライアントとして構成することで 仮想化を実現
Storwizeのサポート
のサポート
QPWDRULESで詳細なパスワード・ルールの設定
で詳細なパスワード・ルールの設定
RCACによるきめ細かいアクセス管理
によるきめ細かいアクセス管理
PowerHA SystemMirror for i によるストレージ・ミラー
リング機能の実装
非同期モードの地理的ミラーリングによる災害対策
外部ストレージのMetro
Mirror/Global Mirrorとの連携
との連携
外部ストレージの
PowerHA SystemMirror for i と外部ストレージの
FlashCopy機能との連携
機能との連携
Webベースの管理インターフェースとしての
ベースの管理インターフェースとしての
IBM Navigator for i の様々な機能拡張
クラウド環境への対応
GUI開発ツールの採用による効率的な開発
モバイルへの対応
34
PowerVC / FSM によるキャプチャー・デプロイ
Rationalツールを活用したアプリケーション開発
ツールを活用したアプリケーション開発
フリー・フォーマット RPG
IBM i Access for Webのモバイル対応
のモバイル対応
DB2 Web Query for i のモバイル対応
34
© 2015 IBM Corporation
IBM i バージョン 7の価値
お客様の関心の一例
ハードウェア統合によるTCO削減・運用管理の効率化
IBM i 7.1 / 7.2での対応
での対応
POWER7+ / POWER8 モデルのサポート
VIOSクライアントとして構成することで
クライアントとして構成することでI/O仮想化を実現
クライアントとして構成することで 仮想化を実現
Storwizeのサポート
のサポート
基幹システムとしてのセキュリティーの維持
セキュリティー
障害対策・災害対策としてのデータ二重化
QPWDRULESで詳細なパスワード・ルールの設定
で詳細なパスワード・ルールの設定
RCACによるきめ細かいアクセス管理
によるきめ細かいアクセス管理
プラットフォーム・サポート
PowerHA SystemMirror for i による
ストレージ・ミラーリング機能の実装
非同期モードの地理的ミラーリングによる災害対策
保管停止時間の短縮によるシステム使用可能時間の拡大
Mirror/Global Mirrorとの連携
との連携
外部ストレージの
運用容易性外部ストレージのMetro
GUIベースでのシステム管理による運用管理の効率化
可用性
クラウド環境への対応
PowerHA SystemMirror for i と外部ストレージの
FlashCopy機能との連携
機能との連携
クラウド
Webベースの管理インターフェースとしての
ベースの管理インターフェースとしての
IBM Navigator for i の様々な機能拡張
PowerVC / FSM によるキャプチャー・デプロイ
GUI開発ツールの採用による効率的な開発
開発容易性
モバイルへの対応
35
Rationalツールを活用したアプリケーション開発
ツールを活用したアプリケーション開発
フリー・フォーマット RPG
IBM i Access for Webのモバイル対応
のモバイル対応
モバイル
DB2 Web Query for i のモバイル対応
35
© 2015 IBM Corporation
IBM i におけるアプリケーション開発
36
36
© 2015 IBM Corporation
IBM i アプリケーション環境
VIOS
アプリ資産継承
I/O 仮想化
•RPG
• COBOL
• C/C++
オープン性
• Java(WAS)
相互連携 • PHP
• Ruby on Rails
• OSS 環境
サーバー統合
TIMI 仮想マシン
SLIC マイクロコード
Power Hypervisor ファームウェアによる仮想化
37
© 2015 IBM Corporation
アプリケーションのタイプと IBM i のプログラム言語
■ 基幹業務系
周辺系
• ⽣産管理、販売管理、⼈事
・給与・経理
• 業務変革がない限り変化を
求めない
• ⻑期間にわたり安定して使
用できる事が重要
RPG, COBOL, C/C++
38
IBM i 独自環境
アプリケーション資
産の継承
Java, PHP, Ruby
相互連携
GUI 情報発信、
モバイル端末サポート
積極的に変化を求める
改修を前提とするスクラッ
チ文化
オープン性重視
新しいインターフェ
ースへの対応
© 2015 IBM Corporation
IBM i アプリケーション開発ロードマップ
5250
GUI
GUI
5250
5250
モジュール化
ビジネス
プロセス
の統合
アプリケーシ
ョン統合
5250
5250
ユーザー・
エクスペリエ
ンスの拡張
5250
既存環境
開発ツール
の改善
GUI
GUI
ユーザー・
ユーザー・インターフェース
RPG/COBOL
ILE (e.g. RPG, COBOL, …)
RPG/COBOL
RPG/COBOL
ILE/Java
Remote System
Explorer
Remote System
Explorer
Remote System
Explorer
WebFacing/HATS
WebFacing/HATS
HTML/JSP
iSeries Web
tools
ILE and Java
Java/EJB
HTML/JSP
HTML/JSP
Servlets
Servlets
RPGは25年以上に渡り、技術の変化に対応しながら
Servlets
Portlets
HTML/JSP
利用し続けられています Portlets
XML
Servlets
XML
アプリケーション技術
39
Portlets
XML
Portlets
Connectors
Process
Choreography
XML
Web Services
Web Services
DB2 and SQL
DB2 and SQL
© 2015 IBM Corporation
RPG文法の変遷
ーこれまでの25年間―
40
© 2015 IBM Corporation
RPGⅢ(OPM RPG) System/38 – V2R3
FCUSTFILEIF E
DISK
FREPORT O
E
PRINTER
ICUSTDS
E DSCUSTFILE
/COPY GETCURDAT
/COPY INVOICE
C
READ CUSTFILE
C
*INLR
DOWNE*ON
C
DUEDAT
IFGT CURDAT
C
EXSR SNOVDU
C
WRITEREPORTFM
C/EXEC SQL INSERT :NAME, :DUEDATE INTO
C+
MYLIB/MYFILE
C/END-EXEC
C
ENDIF
C
READ CUSTFILE
C
ENDDO
C*
C
SNOVDU
BEGSR
C
CALL 'SNDINVCE'
C
PARM
CUSTDS
C
PARM ISOVDU
OVERDU 10
C
ENDSR
41
変数名には6文字の制限
"Send overdue notice" =
SNOVDU
LR
構文は全て大文字
LR
© 2015 IBM Corporation
V3R1
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf
e
disk
Freport
o
e
printer
D custDs
e ds
extname(custfile)
D today
s
d
datfmt(*iso)
/copy invoices
C
time
today
C
read
custfile
C
dow
not %eof
大文字小文字の混在
C
if
dueDate > today
C
exsr
sendOvrNtc
10文字までの変数名
C
read
custfile
C
write
reportFmt
"Send overdue
C/exec sql insert :name, :duedate into
notice" =
C+
mylib/myfile
SendOvrNtc
C/end-exec
C
endif
C
enddo
日付と時間のサポート
C
eval
*inlr = '1'
42
C
C
C
C
C
sndOvrNtc
begsr
call
parm
parm
endsr
'SNDINVCE'
IS_OVERDUE
custDs
overdue
10
© 2015 IBM Corporation
V3R2 – V4R4
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf
e
disk
Freport
o
e
printer
D custDs
e ds
extname(custfile)
D today
s
d
datfmt(*iso)
D sendOverdueNotice...
D
pr
C
time
today
C
read
custfile
C
dow
not %eof
C
if
dueDate > today
C
callp
sendOverdueNotice (custDs)
C
write
reportFmt
C/exec sql insert :name, :duedate into
サブ・プロシージャー
C+
mylib/myfile
C/end-exec
⻑いプロシージャー名が可能
C
endif
C
read
custfile
(例)“Send overdue notice”を実⾏
C
enddo
C
eval
*inlr = '1'
するプロシージャー名:
P sendOverdueNotice...
P
b
...
43
SendOverdueNotice
© 2015 IBM Corporation
V5R1 – V5R2
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf
e
disk
Freport
o
e
printer
D custDs
ds
extname(custfile)
D sendOverdueNotice...
D
pr
/free
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
/end-free
C/exec sql insert :name, :duedate into
C+
mylib/myfile
C/end-exec
/free
endif;
read custfile custDs;
enddo;
*inlr = '1';
/end-free
...
44
C仕様書のFree Format対応
インデント表記可能
多数の組み込み関数
© 2015 IBM Corporation
V5R3 – 7.1
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf
e
disk
Freport
o
e
printer
D custDs
e ds
extname(custfile)
D sendOverdueNotice...
D
pr
/free
read custfile custDs;
dow not %eof;
Free FormatのSQL
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
*inlr = '1';
/end-free
P sendOverdueNotice...
P
b
/copy invoices
...
45
© 2015 IBM Corporation
7.1 TR7
ctl-opt bnddir('ACCRCV');
dcl-f custfile usage(*update);
dcl-ds custDs likerec(custRec);
dcl-f report printer;
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
inlr = '1';
/FREE, /END-FREE 不要
C 仕様書以外に、H ・ F ・
D ・ P の各仕様書もfree
fomat対象に
dcl-proc sendOverdueNotice;
/copy invoices
sendInvoice (custDs : IS_OVERDUE);
end-proc;
46
© 2015 IBM Corporation
初期のRPG開発環境
■ 文字ベースのADT(開発支援ツール)
PDM画面例
SEU画面例
47
© 2015 IBM Corporation
Rational Developer for i を使用したRPG開発環境
■ Remote System Explorer(RSE):従来の5250開発環境
をEclipse上に移植
PDMのように
IBM i上のオブ
ジェクトを操作
SEUのようにソースを
表示・編集・操作でき
るLPEXエディター
ファイルのフィールドや
データをテーブル形式で
表示
48
© 2015 IBM Corporation
【ご参考】Eclipseを使用したJava開発環境
■ RPG開発環境もJava開発環境と同様のインターフェース
Eclipse画面
49
© 2015 IBM Corporation
【ご参考】RDiを使用したFree Formatへの変換例
H F D P 仕様書、一部のC仕様書は変換され
ない(I O 仕様書はFree Format非対象)
/FREE, /END-FREEが入る
50
© 2015 IBM Corporation
Free Format RPG とは
51
51
© 2015 IBM Corporation
Free Format RPG
H仕様書
ctl-opt bnddir('ACCRCV');
F仕様書
dcl-f custfile usage(*update);
dcl-ds custDs likerec(custRec);
dcl-f report printer;
D仕様書
既存のRPGプログラマーは、
新しい文法を簡単に学べる
RPG以外のプログラマーにと
ても、固定形式より学びや
すい
read custfile custDs;
dow not %eof;
C仕様書
if dueDate > %date(); // overdue?
sendOverdueNotice();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
*inlr = '1';
dcl-proc sendOverdueNotice;
sendInvoice (custDs : %date());
end-proc;
52
© 2015 IBM Corporation
既存RPGプログラマーにとっての
Free Formatのメリット
■ 構文のインデントによりメンテナンス性向上
• if, for, dowなどプログラムの構造が分かりやすい
■ 多くのフラストレーションの解消
• /FREE と /END-FREE が不要
• 固定形式での2⾏にわたる宣⾔を1⾏に
D getNextCustomer...
D
pr
vs
dcl-pr getNextCustomer;
• ⻑い⽂字列キーワードに対するコーディング・スペースの不⾜
の解消
D HSSFCellStyle c
D
'org.apache.poi.hssf.D
usermodel.HSSFCellStyle'
vs
dcl-c HSSFCellStyle 'org.apache.poi.hssf.usermodel.HSSFCellStyle';
53
© 2015 IBM Corporation
新しくRPGを始めるプログラマーにとっての
Free Formatのメリット
■ 固定形式と比べると、RPGの学習がとても容易
• RDiエディターの色付け機能が改善されたことで、JavaやPHPな
どと同じようなルック・アンド・フィールでRPGのコードを扱
える
• 桁位置などに⼾惑う必要はなく、RPGの命令コードやキーワー
ドなどを覚えるだけでよい
■ 以下をRPGプログラムから学べる
• ビジネス・プログラミング
• メッセージの自動ロギング(ジョブログ)
54
© 2015 IBM Corporation
RPG は まだ100% フリーではない
■ Free Formatのコードは、8 – 80カラムに制限
■ I 仕様書と O 仕様書は、固定形式のみ
• 外部記述ファイルを使用する傾向がある
■ RPGサイクルに関連したコードは、固定形式を使用
55
© 2015 IBM Corporation
新しいRPG(
(Free Format)になっても変わらないもの
)になっても変わらないもの
新しい
■ 全てのバージョンのRPGについて、以下は変わらない
• 以前のバージョンの上位互換
• RPGコンパイラーによる固定形式のサポート
• ビジネス・プログラミングにおいて重要な十進数演算に対する
サポート
• システムとの優れた統合
− データベースの統合による容易なレコード・レベルI/Oのコーディ
ング
− データ域のサポート
− 組込みSQLにおけるレコードレベルI/OとSQL I/Oの混在
− ILE RPG
– 全OPMと全ILE言語の間の呼び出し
– RPGとJava間の呼び出し
– XML文書の読み込み
56
© 2015 IBM Corporation
追加のサポート
■ 組込みSQL
• SQLプリコンパイラーも新しいFree Format文法をサポート
■ RDi
• RDi9.0.1以降は、Free Format RPGをサポート
• Free Formatへの変換機能
− H F D P 仕様書をFree Formatに変換しない
57
© 2015 IBM Corporation
Free Format RPGの前提条件
■ IBM i
• IBM i 7.1以降
− IBM i 7.1の場合、下記PTFを適用
– RPGⅣ コンパイラー:PTF SI51640 (APAR SE56767 :
http://www912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE56767 )
– SQL プリコンパイラー:DB2 PTF Group SF99701 レベル 26 以降
■ クライアントPC(Editor)
• Rational Developer for i 9.0.1以降
− ※5250画面のSEUではFree Formatはサポートされません。
構文エラーとなります。
58
© 2015 IBM Corporation
参考資料
■ フリーフォームRPG紹介およびIBM Rational
Developer for i 9.0.1への更新ガイド
• http://www.ibm.com/developerworks/jp/rational/library/e
m/cms/rdi90/freeformrpg/
• 目次
1.
2.
59
フリーフォームRPG
Appendix 〜IBM Rational Developer for i 9.0.1への更新
© 2015 IBM Corporation
Free Format RPG コーディング・サンプル
60
60
© 2015 IBM Corporation
1. 事前準備
• Rational Developer for i V9 の入手方法
• Rational Developer for i はいくつかの入手方法があります。
• プログラム番号5733-RDWで新規購入
• 同じ製品をパスポートアドバンテージで新規購入
• 以前IBM i Express EditionとしてPower520やPower720を購入し
た際の、下記製品からSWMA契約でバージョンアップ
• 5733-SOA IBM Rational Developer for System i for SOA
V7
• 5733-SOC Rational Developer for System i for SOA
Construction V8
• 60日間だけ試用版を使う
• 以下のサイトにて”Download Trial”→” (HTTP or Download
Director)Download”にて60日間有効のRDi V9.1がダウンロー
ド可能です。
• http://www.ibm.com/developerworks/downloads/r/rdi/
61
© 2015 IBM Corporation
1. 事前準備
• Rational Developer for i のインストール
• このチュートリアルでは、開発ツールとして、Rational
Developer for i を使用しています。
• 事前準備として、Rational Developer for i を開発用PCにイン
ストールください。
• Rational Developer for i のインストール方法は下記リンク先を
ご参照ください。
• Rational Developer for i V9.0 インストール・ガイド
• http://www.ibm.com/developerworks/jp/rational/library/em
/cms/rdi90/installationguide/
62
© 2015 IBM Corporation
2.RPGⅣ初心者向けチュートリアル
Coding in Free-Form RPG IV - a beginner‘s tutorial
■ Chapter 1 Hello World
•
•
•
•
ソースの編集、コンパイル方法
コンパイル・エラー時のエラー・メッセージの⾒⽅
プルグラムの実⾏
プログラムのデバッグ
■ Chapter 2 General info about RPG
•
RPG概要
■ Chapter 3 Variables and procedures
•
•
定数、変数定義
プロシージャー
■ Chapter 4 Introduction to files
•
データベース・ファイルの使用
■ Chapter 5 Display files
•
表⽰ファイルの資料
■ 参考リンク:Coding in Free-Form RPG IV - a beginner‘s tutorial(英語)
•
63
https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/We
13116a562db_467e_bcd4_882013aec57a/page/Coding%20in%20FreeForm%20RPG%20IV%20-%20a%20beginner%27s%20tutorial
© 2015 IBM Corporation
Chapter 1 Hello World
■ 初期セットアップ
1.
2.
3.
4.
5.
6.
IBM Rational developer for i を起動
IBM i の接続を作成
ライブラリーを作成
ソースファイル「QRPGLESRC」を作成
ソールメンバー「HELLO.RPGLE」を作成
作成したメンバーを編集
•
初期セットアップの詳細な手順については、下記リンク先を参照くだ
さい。
「さわってみよう Rational Developer for i V9.0 ―ILE RPGアプリケ
ーションの操作演習資料―」
http://www.ibm.com/developerworks/jp/rational/library/em/c
ms/rdi/rdi90handson/
•
•
64
64
© 2015 IBM Corporation
Chapter 1 Hello World
65
© 2015 IBM Corporation
Chapter 1 Hello World
■ RPGプログラムの実⾏
1. 5250エミュレーターを起動し、ログイン
2. 以下のコマンドを実⾏し、RPGプログラムを実⾏
−
===> CALL yourlibrary/HELLO
実⾏後、5250エミュレーターに「DSPLY Hello World」のメッセージが表示されます
※表示されない場合は、「F10」キー(詳細なメッセージの組み込み)を押してください。
[補足]RDiからRPGプログラムを実⾏するコマンドを発⾏することも可能です。
1. RPGプログラムを右クリック→「実⾏(プロンプト)」→「対話式」を選択
−実⾏後、5250エミュレーターに「DSPLY Hello World」のメッセージが表示されます
※RDiの接続を対話式ジョブに関連付けるために以下の
手順を事前に
事前に実施してください
事前に
1. 5250 エミュレーターを起動し、ログイン
2. 以下のコマンドを実行
3. STRRSESVR NAME(yourhost) ※yourhost:
IBM i の接続名
66
© 2015 IBM Corporation
Chapter 1 Hello World
67
67
© 2015 IBM Corporation
Chapter 1 Hello World
DSPLY Hello World
DSPLY Jim
68
68
© 2015 IBM Corporation
Chapter 1 Hello World
■ プログラムのデバッグ 1/2
•
1.
2.
−
デバッグの前にコンパイル時に「デバッグ⽤ビュー」のパラメーターを指定し、再度コンパ
イルします。
ソースメンバー「HELLO.rpgle」を右クリックし、コンパイル(プロンプト)→CRTBNDRPGを選択
「デバッグ用ビュー(DBGVIEW )」パラメータに「*LIST」指定し、「OK」をクリックし、
コンパイルを実⾏
–
–
69
※ 「デバッグ用ビュー(DBGVIEW )」パラメータは、*NONEと*STMT以外を指
定します。
*ALL, *SOURCE, *COPYを選択しても、デバッグ可能です。
© 2015 IBM Corporation
Chapter 1 Hello World
■ プログラムのデバッグ 2/2
•
デバッガーを開始し、プログラムを実⾏し、デバッグを⾏ないます
−
※ここでは、5250エミュレーターからの手順を紹介しています。RDiにもデバッグの機能が備わっ
ています。手順は、「さわってみよう Rational Developer for i V9.0 ―ILE RPGアプリケーショ
ンの操作演習資料―」の「5 プログラムのデバッグ」をご参照ください。
1. 以下のコマンドを実⾏し、デバッガーを開始
−===> STRDBG PGM(yourlibrary/HELLO)
2.
dsply name;の⾏にカーソルを合わせ、F6キーを押し、停止点を追加、F3キーを押し
て、プログラムを終了
3. 以下のコマンドを実⾏し、プログラムを実⾏
−===> CALL yourlibrary/HELLO
4. 停止点であるdsply name;のnameにカーソルを合わせ、F11キーを押し、name変数の値
を表示
•
Name返信に‘Jim’の値が入っていることが確認できます。
NAME = 'Jim
'
5. F3キーを押して、プログラムを終了
6. 以下のコマンドを実⾏し、デバッガーを終了
−===> ENDDBG
70
70
© 2015 IBM Corporation
Chapter 2 General info about RPG
■ RPGプログラムでは、列ごとに以下の制限があります
• 8 – 80列:
• 1-5列、81列以降:
• 7列、8列:
Free Formatのコード
コメント
固定形式のコード
■ I仕様書とO仕様書、また、一部の記述は固定形式を使用します
■ このチュートリアルでは、Free Format のみを使用します
71
71
© 2015 IBM Corporation
Chapter 3 Variables and procedures
■ 定義ステートメント:DCL-x
•
•
•
•
•
•
•
72
定数(constant):dcl-c
独⽴フィールド(standalone field):dcl-s
データ構造(data structure):dcl-ds
配列(array):dcl-s xxx dim(n)
プロトタイプ(prototype):dcl-pr , end-pr
プロシージャー(procedure):dcl-proc , end-proc
プロシージャー・インターフェース():dcl-pi , end-pi
© 2015 IBM Corporation
サンプル・プログラム
定数(constant):dcl-c
■ 以下のコードをソースメンバーに貼り付け、コンパイル
し、実⾏します
定数を定義
MAX_ELEMS
に100を代入
定数を定義
Default_city_name
に’Londonʻを代⼊
実⾏結果
DSPLY 100
DSPLY London
73
© 2015 IBM Corporation
サンプル・プログラム
独⽴フィールド(standalone field):dcl-s
numという名前で独⽴フィールド
を定義
int(10):10digitsの整数
%char:char型に変換
for loop
+ :⽂字列の連結
実⾏結果
DSPLY i = 1
DSPLY i = 2
DSPLY i = 3
74
© 2015 IBM Corporation
サンプル・プログラム
データ構造(data structure):dcl-ds
infoという名前のデー
タ構造を定義
qualifiedキーワー
ド:データ構造名の
後にピリオドとサブ
フィールド名を続け
て指定
likedsキーワード:別のデータ構
造と同様に定義。サブフィールドは
、パラメーターに指定された親デー
タ構造のサブフィールドと同じ
inz(*likeds):親データ構造と同
じ方法でサブフィールドを初期化
実⾏結果
DSPLY Sam
DSPLY Joe
75
has a salary of50000.25
has a salary of60000.25
© 2015 IBM Corporation
サンプル・プログラム
配列(array):dcl-s xxx dim(n)
実⾏結果
datesという名前の配列
を定義
date(*iso):ISO 形式
(yyyy-mm-dd)の日付タ
イプ
dimキーワード:要素の
数を指定
%date():パラメータが指
定されない場合、現在の日
付を返す組み込み関数
%days(1):パラメータの日
数を加算
%years(1):パラメータの
年数を加算
DSPLY 2015-02-10 2015-02-11 2016-02-10
76
© 2015 IBM Corporation
サンプル・プログラム
プロトタイプ(prototype):dcl-pr , end-pr
パラメータ
の定義
パラメータ・セ
パレーターは、
コロン(:)
qcmdexcという
名前のプロトタ
イプを定義
const:読み取り専用参
照パラメーターを指定
options(*nopass):
パラメータの省略可
※コンマでない
※dcl-prでEXTPROC、EXTPGMキーワードを指定しない場合、デフォルトはEXTPROCキーワード
EXTPROC:プロシージャー、Javaメソッドの呼び出し
EXTPGM:プログラムの呼び出し
※コマンド実⾏ (QCMDEXC) API :1 つのコマンドを実⾏する IBM 提供のプログラム
※EXTPROC、EXTPGMキーワードのパラメーターは大文字と小文字を区別します
実⾏結果
77
→DSPJOB OUTPUT(*PRINT)コマンドを実⾏
→WRKSPLFコマンドの実⾏結果画⾯を表⽰
© 2015 IBM Corporation
サンプル・プログラム(1)
プロシージャー(procedure):dcl-proc , end-proc
プロシージャー・インターフェース():dcl-pi , end-pi
DSPLY命令コードは最⼤値52byteという制限があります。ここでは、DSPLY
命令コードを使⽤しないprintのサンプル・プログラムをご紹介します。
CRTBNDRPGコマンドによって
コンパイルする場合
/if defined(*CRTBNDRPG)
ctl-opt dftactgrp(*no)
活動化グループを指定
actgrp(*new);
ACTGRPパラメーターによって指定された活動
/endif
化グループに関連付け、静的バインドを許可
ctl-opt option(*srcstmt);
コンパイル・リストにソース・ステー
dcl-s num int(10) inz(25);
トメントと同じ⾏番号を使⽤すること
を指定
Print
プロシー
ジャーの
呼び出し
print('his message is much longer than the 52 '
+ 'characters that DSPLY allows. '
+ 'The value of variable "num" is ' + %char(num));
return;
次ページにつづく
78
© 2015 IBM Corporation
サンプル・プログラム(2)
プロシージャー(procedure):dcl-proc , end-proc
プロシージャー・インターフェース():dcl-pi , end-pi
前ページのつづき
printという名前のプロシージャーを定義
プロシージャ
ー・インター
フェースを指
定(名前は不
要)
extproc(*dclcase) :
外部名が、「printf」と同
じ名前であることを示す
改⾏(X‘15’)をNEWLINE
という名前で定義
実⾏結果
his message is much longer than the 52 characters that DSPLY allows. The valu
e of variable "num" is 25
79
© 2015 IBM Corporation
Chapter 4 Introduction to files
■ ファイル・ステートメント:DCL-F
• DCL-Fで開始
• ファイル名
• キーワード
− DEVICEキーワードを最初のキーワードにする
– DISK, PRINTER, WORKSTN
– DEVICEキーワードのデフォルトは DISK
• セミコロンで終了
80
© 2015 IBM Corporation
サンプル・プログラム
ファイルのレコードの読み込み
■ 事前準備:最初に以下のコマンドを実⾏し、ファイルを作成
===> DSPOBJD OBJ(QGPL/QRPG*) OBJTYPE(*FILE)
OUTPUT(*OUTFILE) OUTFILE(QTEMP/RPGTESTF)
open:
ファイルのオープン
read:
ファイルの読み込み
close:
ファイルのクローズ
実⾏結果
DSPLY QRPGLESRC
DSPLY QRPGSRC
81
rpgtestfをファイルと
して定義
DEVICEキーワードのデフ
ォルトは DISK=⼊⼒⽤
としてオープン
usropn:ファイルの最
初のオープンはプログ
ラマーが制御
ファイルの最初のレコー
ドから最後のレコードま
で⼀⾏ずつ読み込み
© 2015 IBM Corporation
サンプル・プログラム
プリンターファイルへの書き出し
printer:プリンターへのアクセ
スを提供し、印刷出⼒の様式を記述
数値パラメータで⻑さを指定し、プ
ログラム記述ファイルを作成
132byteの
データ構造
を定義
Write:プリンターファイル
「qprint」に「qprint_ds」
を書き出し
実⾏結果
スプール・ファイルの表示
ファイル . . . :
制御 . . . . . .
検索 . . . . . .
QPRINT
ページ/行
桁
1/1
1 - 75
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
Hello
world
82
© 2015 IBM Corporation
Chapter 5 Display files
■ 表示装置ファイルの使用
■ DCL-Fで開始
• ファイル名
• キーワード
− DEVICEキーワード:WORKSTN
• セミコロンで終了
83
© 2015 IBM Corporation
サンプル・プログラム
表示装置ファイルの使用(1)
■ 事前準備:以下のソースを名前:RPGDSPF、タイプ:DSPFのソースメンバ
ーに貼り付け、コンパイルし、表示装置ファイルを作成します
■ 以下のコードをソースメンバーに貼り付け、コンパイルし、実⾏します
exfmt:
WRITE と
READ の組み
合わせ
2つの命令が
同じレコード
様式に対して
、続けて実⾏
される
84
Rpgdspfをファイルとして定義
workstn:表示装置ファイルで
あることを指定
© 2015 IBM Corporation
サンプル・プログラム
表示装置ファイルの使用(2)
実⾏結果
名前を⼊⼒
Enterで実⾏
DSPLY Your name is IBM
85
© 2015 IBM Corporation
参考情報
IBM Knowledge Center IBM i 7.2
■ ILE概念
• http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/ilec /ilecmain.htm?l
ang=ja
■ ILE RPG解説書
• http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasd/rzasdmain.h
tm?lang=ja
■ ILE RPGプログラマーの手引き
• http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasc/rzascmain.h
tm?lang=ja
•
ILE RPG プログラマーの手引き>新着情報>このリリースにおける新しい機能
−
86
http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasc/rpgrelv7r2.htm?l
ang=ja
© 2015 IBM Corporation
87
© 2015 IBM Corporation