日本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
© Copyright 2024 ExpyDoc