• 検索結果がありません。

日本 IBM OpenSource 協議会 -IBM i 共催 IBM i 最新情報ご提供セミナー 進化を続ける IBM i の最新技術動向 2015 年 3 月 3 日 日本アイ ビー エム株式会社 IBM Systems ハードウェア事業本部 Power Systems テクニカルセールス

N/A
N/A
Protected

Academic year: 2021

シェア "日本 IBM OpenSource 協議会 -IBM i 共催 IBM i 最新情報ご提供セミナー 進化を続ける IBM i の最新技術動向 2015 年 3 月 3 日 日本アイ ビー エム株式会社 IBM Systems ハードウェア事業本部 Power Systems テクニカルセールス"

Copied!
87
0
0

読み込み中.... (全文を見る)

全文

(1)

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

日本アイ・ビー・エム株式会社

IBM Systems ハードウェア事業本部

Power Systems テクニカルセールス

2015年3月3 日

日本IBM・OpenSource協議会-IBM i 共催

IBM i 最新情報 ご提供セミナー

(2)

■© 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やその関連会社の米国およびその他の国における商標または登録商標です。

(3)

目次

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. 初心者向けチュートリアル

(4)
(5)

ビッグデータ活用を徹底的に追求して、

設計、開発されたプラットフォーム

ビッグデータ

を超⾼速処理するための設計

高い経済性と信頼性を備えた

クラウド

基盤

(6)

POWER

プロセッサー・ロードマップ

POWER7/7+ 45/32 nm POWER8 22 nm  3.0 ~4.4 GHz  1 チップ8 コア  eDRAM L3 キャッシュ  エネルギー効率の向上  SMT 4  VSM & VSX  ストレージ保護キーの 拡張 POWER6/6+ 65/65 nm  3.5~5.0 GHz  デュアル・コア  SMT2  十進浮動小数点演算  インストラクション・リトライ  ストレージ保護キー POWER5/5+ 130/90 nm  1.5 ~2.2 GHz  デュアル・コア  Simultaneous Multi-Threading (SMT)  Micro Partitioning  1 チップ12 コア  SMT 8  FPGA サポート  トランザクショナル・メモリー  PCIe アクセラレーション POWER9 Extreme Analytics Optimization

Extreme Big Data Optimization

On-chip accelerators

2,400億円

の投資

POWER8 Scale-Out System の発表の発表の発表の発表

3.0 ~ 4.1 GHz

1 チップ 6 コア

(7)

• スレッド処理能力向上スレッド処理能力向上スレッド処理能力向上スレッド処理能力向上 – SMT1 での比較でも POWER7 から性能向上 – キャッシュ増加によるレイテンシー向上 • 並列処理能力向上並列処理能力向上並列処理能力向上並列処理能力向上 – SMT8 により SMT1 の 2倍以上のスループット 向上を実現 – 同時 Dispatch / Issue 数向上 – 実行ユニット追加 – Transactional Memory

コア性能向上

による

コストパフォーマンスアップ

0 0.5 1 1.5 2 2.5 3 3.5 4

x1.5

x2

ソフトウェア・ライセンス削減に効果を発揮 ソフトウェア・ライセンス削減に効果を発揮ソフトウェア・ライセンス削減に効果を発揮 ソフトウェア・ライセンス削減に効果を発揮

(8)

• プロセッサー性能を余すところなく発揮プロセッサー性能を余すところなく発揮プロセッサー性能を余すところなく発揮プロセッサー性能を余すところなく発揮 – プロセッサーの性能向上のポイント

CPU

内部の処理だけでなく、メモリー、

内部の処理だけでなく、メモリー、

内部の処理だけでなく、メモリー、

内部の処理だけでなく、メモリー、

I/O

性能の向上が重要

性能の向上が重要

性能の向上が重要

性能の向上が重要

• レイテンシー向上への取り組みレイテンシー向上への取り組みレイテンシー向上への取り組みレイテンシー向上への取り組み – キャッシュ増加、メモリー・バッファー、PCI gen3 ネイティブサポート – 近年の搭載メモリーの大容量化に対応

I/O レイテンシー性能向上

による

⾼速データ処理

BigData コンピューター内部の処理のオーダー コンピューター内部の処理のオーダーコンピューター内部の処理のオーダー コンピューター内部の処理のオーダー ・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 のオーダーに進化のオーダーに進化のオーダーに進化のオーダーに進化

(9)

メモリー・バッファー・チップ

Memory Buffer DRAM Chips DDR Interfaces Scheduler & Management 16MB Memory Cache POWER8 Link パフォーマンス エンド-エンド ファースト・パス & データ・リトライ キャッシュ  レイテンシ / バンド幅、部分的更新 キャッシュ  書き込みスケジューリング、事前読み込み、低電⼒ インテリジェント・メモリー・モジュール ロジック、キャッシュ・ストラクチャーのスケジューリング エナジー・マネージメント、RAS機能 従来、プロセッサー上で機能していたものをメモリー・バッファー上に移動 プロセッサー・インターフェース

(10)

統合された

PCIe Gen3

インターフェース

POWER7

I/O

Bridge

GX

Bus

PCIe G2

PCIe G3

PCI

機器

機器

機器

機器

PCIe Gen 3

のネイティブサポート

のネイティブサポート

のネイティブサポート

のネイティブサポート

• プロセッサーとの直接結合 • プロプライエタリな GX/Bridge の後継 • 低レイテンシー • Gen3 x16 バンド幅 (32 GB/秒)

CAPI Protocol

トランスポート・レイヤー

トランスポート・レイヤー

トランスポート・レイヤー

トランスポート・レイヤー

• PCIe 経由のプロセッサーと機器との密接接続 • PCIe でのプロトコルのカプセル化

POWER8

(11)

• I/O 帯域向上による大量データ処理性能アップ帯域向上による大量データ処理性能アップ帯域向上による大量データ処理性能アップ帯域向上による大量データ処理性能アップ – メモリーバンド幅の大幅な向上 – I/O 帯域の高帯域化により大量のデータ処理が可能 – メモリーの大容量化に対応 • 高帯域化が進むアダプターの性能向上に対応高帯域化が進むアダプターの性能向上に対応高帯域化が進むアダプターの性能向上に対応高帯域化が進むアダプターの性能向上に対応 – PCIe Gen3 ネイティブサポート – 高帯域アダプターの登場に対応 10Gb, 40Gb イーサネット・アダプター 8Gb, 16Gb FC アダプター – FlashSystem などの高速ストレージの登場に対応

I/O 帯域向上

による

⼤量データ処理

BigData

(12)

POWER8

プロセッサーの進化

• 従来の従来の従来の従来の Workload に対する性能向上に対する性能向上に対する性能向上に対する性能向上

• BigData などのなどのなどのなどの New Workload にも最適化にも最適化にも最適化にも最適化

コア性能向上

による

コストパフォーマンスアップ

I/O レイテンシー性能向上

による

⾼速データ処理

(13)

サーバー史上初のオープンコンピューティングプロジェクト

OpenPOWER Foundation

• POWERアーキテクチャーを、チップレベルからシステムレベル、その上のソフトウェア・スタック までオープン化 • コミュニティーによる開発が次世代データセンターのイノベーションを加速 1500頁におよぶPOWER8 アーキテクチャー・仕様情報を公開 各レイヤーに属するメンバーは、POWER8テクノロジーと 自社テクノロジーのコラボレーションによる新たな価値の創出を実現 新サーバー用マザーボードに POWER8を採用! NVIDIA GPUアクセラレーターアクセラレーターアクセラレーターアクセラレーター -初のJava向け GPUアクセラレーター -Hadoopアナリティクス・パフォーマンスが 飛躍的に向上 POWERにおけるにおけるにおけるにおけるRDMAの活用の活用の活用の活用 接続接続接続接続 アクセラレーターアクセラレーターアクセラレーターアクセラレーター

(14)
(15)

IBM i

ロードマップ

2008 2009 2010 2011 2013 6.1 7.1 7.2 i next

2014 2012

POWER7/POWER7+ POWER8 POWER9

2015 POWER6 i next+ IBM i は、お客様のニーズに応えるために、アプリケーション資産を継承しながら、セキュアで利用しやす いIT環境を今後も提供します。 IBM i 7.2では、データベース、システム管理、可用性など多くの機能拡張が行われており、POWER8プ POWER7+ / POWER8 システムは優れたパフォーマンス、セキュリティ、アプリケーション最適化機能を、 低いシステム管理コストによって実現します。 そして最新テクノロジーを活用するためのアップグレードを容易に行うことができます。

(16)

IBM i

ストラテジー

• ソリューション – 業界をリードするアプリケーションを稼動させる統合プラットフォーム – ISV やクラウド事業者が利用できる、多様なソリューション提供手段 – モバイル・ソリューションによるエクスペリエンス向上 • オープン性の追求 – 継続的なリリースアップを通じて具現化される、IBM による IBM i へのコミットメント – オープンソース言語やアプリケーションを通じて拡充される IBM i ソリューション

– Linux や AIX テクノロジーを活かした IBM i ソリューションの拡充

• 統合性

– ビジネス・アプリケーションのための、シンプルで高付加価値のプラットフォーム

– クリティカルなビジネス・データを保護するセキュリティと回復力

(17)

IBM i –

プライオリティー

• ソリューションへの投資 – 新しい技術によるISVソリューションの統合 – プログラミング言語、データベースの標準化への投資 – モバイル・デバイスのサポート • オン・プレミス / クラウドへの対応 – POWER テクノロジーの活用 – 先進的なシステム / ストレージ仮想化機能の提供 – 回復性、可用性、柔軟性の提供 • シンプルでセキュアな環境の提供 – 簡単なシステム管理、高可用性機能の提供 – SANサポートの拡張 – 先進的で統合化されたセキュリティ環境

(18)

IBM i

ハードウェア・サポート

Servers IBM i 5.4 IBM i 6.1 IBM i 7.1 IBM i 7.2

POWER8



3



POWER7/7+ PS700/701/702/730/704, Power 710, 720, 730, 740, 750, 760, 770, 780, 795, PureFlex p260/460



2





POWER6+ JS23/43, 550*, 560 POWER6 JS12/22







4 POWER6+ 520* POWER6 520*, 550*, 570, 595









4 POWER5/5+ 515, 520, 525, 550, 570, 595







800, 810, 825, 870, 890





270, 820, 830, 840



1 – IBM i V5R4 の営業活動、および有償延長保守サポート以外のサポートは終了しています 1

(19)

IBM i

サポート

有償延長保守サポート(2016 9 月まで) 通常保守終了 2015930日 有償延長保守サポート予定

(20)
(21)

DB2 for i

の拡張

• セキュリティーの拡張 – 行 / 列レベルのアクセス制御の実装 – FieldProc マスキング – マルチプル・アクション・トリガー – TRANSFER OWNERSHIP – GRANT ステートメント • SQLの 拡張 – 動的コンパウンドSQL – TRUNCATE ステートメント – 自立型プロシージャー – ・・・ • クエリーの拡張 – XMLTABLE – CONNECT BY

– Query/400 / OPNQRYFのSQEサポート – ・・・

(22)

/

列レベル アクセス制御

(RCAC)

• DB2における追加のデータ・セ キュリティー・レイヤ • テーブル・レベルのセキュリ ティーをより完全なものに • 必要なデータのみアクセス可能 にするための手法 • テーブルへのアクセスを行レベ ル/列レベル/その両方で制御 • 2つのルール・セットを定義可 – 行への権限 – 列のマスク

• IBM Advanced Data Security

for i が必要が必要が必要が必要

IBM Advanced Data Security for i (IBM i Option 47)

無償フィーチャー

(23)

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 ユーザーのみ

(24)

RCAC

の例 ①

• 行レベルのアクセス制御の例

– 各ユーザー毎に行への許可を与える例

CREATE SCHEMA MY_LIB

CREATE TABLE MY_LIB/PERMISSION_TABLE (COLUMN1 CHAR (5 ), COLUMN2 INT NOT NULL WITH DEFAULT)

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

USER1は全てのレコードには全てのレコードには全てのレコードには全てのレコードに アクセス可能 アクセス可能アクセス可能 アクセス可能 USER2ははははCOLUMN1 が がが が”USER2”のみアクセスのみアクセスのみアクセスのみアクセス 可能 可能可能 可能 USER3ははははCOLUMN1 が がが が”USER3”のみアクセスのみアクセスのみアクセスのみアクセス 可能 可能可能 可能

(25)

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 ' ) THEN

PERMISSION_TABLE . COLUMN2 ELSE

NULL END

ALTER TABLE MY_LIB.PERMISSION_TABLE ACTIVATE COLUMN ACCESS CONTROL

USER4ははははCOLUMN1の内の内の内の内 容を参照することができな 容を参照することができな容を参照することができな 容を参照することができな い いい い

(26)

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 テーブル

(27)

DB2 for i & IBM i 7.2 –

その他の拡張

• システム命名でオブジェクトの修飾にピリオド区切

り記号が許可される

• リモート 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 テラバイトに増やされた

(28)

IBM i

アプリケーション開発環境サマリー

(29)

IBM i

におけるアプリケーション開発ストラテジー

オペレーティング・システムとプログラミング言 語間で共通の開発・管理ツール コンパイラー & プ ログラミング言語 オープン・ソース・ソ リューションの強化 IBM i への Web とその開発テクノロ ジーの統合 i

(30)

IBM i 7.2

における

RPG

の拡張

• 新しいフリー・フォーマット RPG – 新しいシンタックス & スタイル – 今風の動き – 他プログラミング言語開発者の取り込み • フリー・フォーマットRPGへの変換ツール – Arcad Converter – Linoma Software

• Rational Developer for i サポート

– 2013/10

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());

(31)

IBM Navigator for i –

新機能

• パフォーマンス – 新しいブラウザー – My Favorites – クイック・サーチ • PTF 管理 – 導入済み PTF ナビゲーション – 単一およびグループ・システムへのPTFの適用 • メッセージ・キュー・モニター – CIM によるモニター – ルールに基づくフィルターの作成 – メッセージに対するアクションの自動化 • システム・モニター – ユーザー定義モニター – パフォーマンス・トレンドをグラフィカルに表示 – ユーザー定義イベント自動化 • データベース – 関数 / プロシージャの作成 – DB パフォーマンス・メトリクスの作成

(32)

IBM i Access

モバイル

• 7.2 GA時点では、テクノロジー・プレビュー

• IBM i Access for Web がモバイル用の新しいインタ

ーフェースを追加 – 5770-XH2で提供 • インターネット/ イントラネット上の様々なデバイスか らIBM i へアクセス可能 • 基本的なシステム管理機能を提供 – ジョブ管理 – メッセージ – プリンター – 5250 エミュレータ – SQLスクリプトの実行 – ・・・

• IBM i Access Mobileサイト

iPhone iPad

Android Surface

(33)

IBM i

バージョン

7

の価値

お客様の関心の一例 IBM i 5.4での現状 ハードウェア統合によるTCO削減・運用管理の効率化 基幹システムとしてのセキュリティーの維持 障害対策・災害対策としてのデータ二重化 保管停止時間の短縮によるシステム使用可能時間の拡大 GUIベースでのシステム管理による運用管理の効率化 クラウド環境への対応 GUI開発ツールの採用による効率的な開発 サポート外部ストレージはDS8000, DS6000のみ 各パーティションには専用I/Oが必要 限られたパスワード設定オプション 論理ファイル・ビューによるデータ・コントロール 地理的ミラーリングは同期のため距離に制限 (ストレージ・ミラーリング) 災害対策としてはHABPソリューションが主流 (データベース論理レプリケーション) 活動時保管の活用 System i Navigatorによる管理 (管理専用ツールの事前導入) イメージ・カタログによる仮想マウント (PTF/OSリリース・アップ) での区画導入 モバイルへの対応

(34)

IBM i

バージョン

7

の価値

お客様の関心の一例 ハードウェア統合によるTCO削減・運用管理の効率化 基幹システムとしてのセキュリティーの維持 障害対策・災害対策としてのデータ二重化 保管停止時間の短縮によるシステム使用可能時間の拡大 GUIベースでのシステム管理による運用管理の効率化 クラウド環境への対応 GUI開発ツールの採用による効率的な開発 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 の様々な機能拡張の様々な機能拡張の様々な機能拡張の様々な機能拡張

PowerVC / FSM によるキャプチャー・デプロイによるキャプチャー・デプロイによるキャプチャー・デプロイによるキャプチャー・デプロイ IBM i 7.1 / 7.2での対応での対応での対応での対応 Rationalツールを活用したアプリケーション開発ツールを活用したアプリケーション開発ツールを活用したアプリケーション開発ツールを活用したアプリケーション開発 フリー・フォーマット フリー・フォーマット フリー・フォーマット フリー・フォーマットRPG

(35)

IBM i

バージョン

7

の価値

お客様の関心の一例 ハードウェア統合によるTCO削減・運用管理の効率化 基幹システムとしてのセキュリティーの維持 障害対策・災害対策としてのデータ二重化 保管停止時間の短縮によるシステム使用可能時間の拡大 GUIベースでのシステム管理による運用管理の効率化 クラウド環境への対応 GUI開発ツールの採用による効率的な開発 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 の様々な機能拡張の様々な機能拡張の様々な機能拡張の様々な機能拡張

PowerVC / FSM によるキャプチャー・デプロイによるキャプチャー・デプロイによるキャプチャー・デプロイによるキャプチャー・デプロイ IBM i 7.1 / 7.2での対応での対応での対応での対応 Rationalツールを活用したアプリケーション開発ツールを活用したアプリケーション開発ツールを活用したアプリケーション開発ツールを活用したアプリケーション開発 フリー・フォーマット フリー・フォーマット フリー・フォーマット フリー・フォーマット RPG プラットフォーム・サポート プラットフォーム・サポート プラットフォーム・サポート プラットフォーム・サポート セキュリティー セキュリティーセキュリティー セキュリティー 可用性 可用性 可用性 可用性 開発容易性 開発容易性開発容易性 開発容易性 クラウド クラウド クラウド クラウド 運用容易性 運用容易性運用容易性 運用容易性

(36)
(37)

VIOS

Power Hypervisor ファームウェアによる仮想化

ファームウェアによる仮想化

ファームウェアによる仮想化

ファームウェアによる仮想化

I/O 仮想化仮想化仮想化仮想化 サーバー統合 サーバー統合 サーバー統合 サーバー統合 アプリ資産継承 アプリ資産継承 アプリ資産継承 アプリ資産継承

•RPG

• COBOL • C/C++

TIMI 仮想マシン

仮想マシン

仮想マシン

仮想マシン

SLIC マイクロコード

マイクロコード

マイクロコード

マイクロコード

相互連携 相互連携 相互連携 相互連携 オープン性 オープン性 オープン性 オープン性 • Java(WAS) • PHP • Ruby on Rails • OSS 環境

IBM i アプリケーション環境

(38)

■ 基幹業務系

⽣産管理、販売管理、⼈事

・給与・経理

業務変革がない限り変化を

求めない

⻑期間にわたり安定して使

用できる事が重要



周辺系



GUI 情報発信、

モバイル端末サポート



積極的に変化を求める



改修を前提とするスクラッ

チ文化

RPG, COBOL, C/C++

Java, PHP, Ruby

相互連携 

IBM i 独自環境



アプリケーション資

産の継承



オープン性重視



新しいインターフェ

ースへの対応

アプリケーションのタイプと IBM i のプログラム言語

(39)

IBM i アプリケーション開発ロードマップ

ユーザー・ エクスペリエ ンスの拡張 モジュール化 アプリケーシ ョン統合 ビジネス プロセス の統合 開発ツール の改善 既存環境 RPG/COBOL 5250 5250 RPG/COBOL

ILE and Java

HTML/JSP Connectors Process Choreography RPG/COBOL XML XML Portlets GUI GUI 5 2 5 0 GUI ILE/Java Java/EJB

ILE (e.g. RPG, COBOL, …)

GUI Portlets HTML/JSP HTML/JSP HTML/JSP 5250 5 2 5 0 5 2 5 0 Servlets Servlets Servlets

Servlets Portlets Portlets

XML

XML

Web Services Web Services

Remote System Explorer WebFacing/HATS Remote System Explorer WebFacing/HATS Remote System Explorer iSeries Web tools ユーザー ユーザー ユーザー ユーザー・・・・インターフェースインターフェースインターフェースインターフェース アプリケーション技術 アプリケーション技術アプリケーション技術 アプリケーション技術

RPG

は25年以上に渡り、技術の変化に対応しながら

利用し続けられています

(40)

RPG文法の変遷

(41)

RPGⅢ(OPM RPG) System/38 – V2R3

FCUSTFILEIF E DISK FREPORT O E PRINTER ICUSTDS E DSCUSTFILE /COPY GETCURDAT /COPY INVOICE C READ CUSTFILE LR

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 LR C ENDDO C* C SNOVDU BEGSR C CALL 'SNDINVCE' C PARM CUSTDS 変数名には6文字の制限

"Send overdue notice" = SNOVDU

構文は全て大文字

変数名には6文字の制限

"Send overdue notice" = SNOVDU

(42)

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

C read custfile

C write reportFmt

C/exec sql insert :name, :duedate into

C+ mylib/myfile C/end-exec C endif C enddo C eval *inlr = '1' C sndOvrNtc begsr C call 'SNDINVCE' 大文字小文字の混在 10文字までの変数名 "Send overdue notice" = SendOvrNtc 日付と時間のサポート 大文字小文字の混在 10文字までの変数名 "Send overdue notice" = SendOvrNtc 日付と時間のサポート

(43)

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 C enddo C eval *inlr = '1' P sendOverdueNotice... サブ・プロシージャー ⻑いプロシージャー名が可能

(例)“Send overdue notice”を実⾏ するプロシージャー名:

SendOverdueNotice サブ・プロシージャー

⻑いプロシージャー名が可能

(例)“Send overdue notice”を実⾏ するプロシージャー名:

(44)

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'; C仕様書のFree Format対応 インデント表記可能 多数の組み込み関数 C仕様書のFree Format対応 インデント表記可能 多数の組み込み関数

(45)

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;

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 Free FormatのSQL Free FormatのSQL

(46)

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';

dcl-proc sendOverdueNotice;

/copy invoices

sendInvoice (custDs : IS_OVERDUE);

/FREE, /END-FREE 不要 C 仕様書以外に、H ・ F ・ D ・ P の各仕様書もfree fomat対象に /FREE, /END-FREE 不要 C 仕様書以外に、H ・ F ・ D ・ P の各仕様書もfree fomat対象に

(47)

■ 文字ベースのADT(開発支援ツール)

SEU画面例

PDM画面例

(48)

■ Remote System Explorer(RSE):従来の5250開発環境

をEclipse上に移植

Rational Developer for i を使用したRPG開発環境

PDMのように IBM i上のオブ ジェクトを操作 SEUのようにソースを 表示・編集・操作でき るLPEXエディター ファイルのフィールドや データをテーブル形式で

(49)

【ご参考】Eclipseを使用したJava開発環境

■ RPG開発環境もJava開発環境と同様のインターフェース

(50)

【ご参考】RDiを使用したFree Formatへの変換例

H F D P 仕様書、一部のC仕様書は変換され ない(I O 仕様書はFree Format非対象) H F D P 仕様書、一部のC仕様書は変換され ない(I O 仕様書はFree Format非対象)

(51)
(52)

Free Format RPG

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; 既存のRPGプログラマーは、 新しい文法を簡単に学べる RPG以外のプログラマーにと ても、固定形式より学びや すい 既存のRPGプログラマーは、 新しい文法を簡単に学べる RPG以外のプログラマーにと ても、固定形式より学びや すい H仕様書 H仕様書 F仕様書 F仕様書 D仕様書 D仕様書 C仕様書 C仕様書

(53)

既存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

(54)

新しくRPGを始めるプログラマーにとっての

Free Formatのメリット

■ 固定形式と比べると、RPGの学習がとても容易

RDiエディターの色付け機能が改善されたことで、JavaやPHPな

どと同じようなルック・アンド・フィールでRPGのコードを扱

える

桁位置などに⼾惑う必要はなく、RPGの命令コードやキーワー

ドなどを覚えるだけでよい

■ 以下をRPGプログラムから学べる

ビジネス・プログラミング

メッセージの自動ロギング(ジョブログ)

(55)

RPG は まだ100% フリーではない

■ Free Formatのコードは、8 – 80カラムに制限

■ I 仕様書と O 仕様書は、固定形式のみ

外部記述ファイルを使用する傾向がある

(56)

新しい

新しい

新しい

新しい

RPG((((Free Format)になっても変わらないもの

)になっても変わらないもの

)になっても変わらないもの

)になっても変わらないもの

■ 全てのバージョンのRPGについて、以下は変わらない

以前のバージョンの上位互換

RPGコンパイラーによる固定形式のサポート

ビジネス・プログラミングにおいて重要な十進数演算に対する

サポート

システムとの優れた統合

− データベースの統合による容易なレコード・レベルI/Oのコーディ ング − データ域のサポート − 組込みSQLにおけるレコードレベルI/OとSQL I/Oの混在 − ILE RPG – 全OPMと全ILE言語の間の呼び出し

(57)

追加のサポート

■ 組込みSQL

SQLプリコンパイラーも新しいFree Format文法をサポート

■ RDi

RDi9.0.1以降は、Free Format RPGをサポート

Free Formatへの変換機能

− H F D P 仕様書をFree Formatに変換しない

(58)

Free Format RPGの前提条件

■ IBM i

IBM i 7.1以降

− IBM i 7.1の場合、下記PTFを適用

– RPGⅣ コンパイラー:PTF SI51640 (APAR SE56767 :

http://www-912.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はサポートされません。 構文エラーとなります。

(59)

参考資料

■ フリーフォームRPG紹介およびIBM Rational

Developer for i 9.0.1への更新ガイド

http://www.ibm.com/developerworks/jp/rational/library/e

m/cms/rdi90/freeformrpg/

目次

1. フリーフォームRPG

(60)
(61)

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がダウンロー ド可能です。

(62)

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/

(63)

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(英語)

(64)

Chapter 1 Hello World

■ 初期セットアップ

1. IBM Rational developer for i を起動 2. IBM i の接続を作成 3. ライブラリーを作成 4. ソースファイル「QRPGLESRC」を作成 5. ソールメンバー「HELLO.RPGLE」を作成 6. 作成したメンバーを編集 • 初期セットアップの詳細な手順については、下記リンク先を参照くだ さい。

• 「さわってみよう Rational Developer for i V9.0 ―ILE RPGアプリケ

ーションの操作演習資料―」

• http://www.ibm.com/developerworks/jp/rational/library/em/c

(65)
(66)

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 の接続名

(67)
(68)

Chapter 1 Hello World

DSPLY Hello World DSPLY Jim

(69)

Chapter 1 Hello World

■ プログラムのデバッグ 1/2 • デバッグの前にコンパイル時に「デバッグ⽤ビュー」のパラメーターを指定し、再度コンパ イルします。 1. ソースメンバー「HELLO.rpgle」を右クリックし、コンパイル(プロンプト)→CRTBNDRPGを選択 2. 「デバッグ用ビュー(DBGVIEW )」パラメータに「*LIST」指定し、「OK」をクリックし、 − コンパイルを実⾏ – ※ 「デバッグ用ビュー(DBGVIEW )」パラメータは、*NONEと*STMT以外を指 定します。

(70)

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’の値が入っていることが確認できます。 5. F3キーを押して、プログラムを終了 6. 以下のコマンドを実⾏し、デバッガーを終了 −===> ENDDBG NAME = 'Jim '

(71)

Chapter 2 General info about RPG

■ RPGプログラムでは、列ごとに以下の制限があります

• 8 – 80列: Free Formatのコード • 1-5列、81列以降: コメント • 7列、8列: 固定形式のコード

■ I仕様書とO仕様書、また、一部の記述は固定形式を使用します

■ このチュートリアルでは、Free Format のみを使用します

(72)

Chapter 3 Variables and procedures

■ 定義ステートメント:DCL-x

定数(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

(73)

サンプル・プログラム

定数(constant):dcl-c

■ 以下のコードをソースメンバーに貼り付け、コンパイル

し、実⾏します

定数を定義 MAX_ELEMS に100を代入

実⾏結果

定数を定義 Default_city_name に’Londonʻを代⼊

(74)

サンプル・プログラム

独⽴フィールド(

standalone field):dcl-s

DSPLY i = 1 DSPLY i = 2 DSPLY i = 3

実⾏結果

numという名前で独⽴フィールド を定義 int(10):10digitsの整数 for loop %char:char型に変換 + :⽂字列の連結

(75)

サンプル・プログラム

データ構造(data structure):dcl-ds

infoという名前のデー タ構造を定義 qualifiedキーワー ド:データ構造名の 後にピリオドとサブ フィールド名を続け て指定 likedsキーワード:別のデータ構 造と同様に定義。サブフィールドは 、パラメーターに指定された親デー タ構造のサブフィールドと同じ inz(*likeds):親データ構造と同 じ方法でサブフィールドを初期化

実⾏結果

(76)

サンプル・プログラム

配列(

array):dcl-s xxx dim(n)

実⾏結果

datesという名前の配列 を定義

date(*iso):ISO 形式 (yyyy-mm-dd)の日付タ イプ dimキーワード:要素の 数を指定 %date():パラメータが指 定されない場合、現在の日 付を返す組み込み関数 %days(1):パラメータの日 数を加算 %years(1):パラメータの 年数を加算

(77)

サンプル・プログラム

プロトタイプ(prototype):dcl-pr , end-pr

実⾏結果

qcmdexcという 名前のプロトタ イプを定義 パラメータ の定義 ※dcl-prでEXTPROC、EXTPGMキーワードを指定しない場合、デフォルトはEXTPROCキーワード EXTPROC:プロシージャー、Javaメソッドの呼び出し EXTPGM:プログラムの呼び出し

※コマンド実⾏ (QCMDEXC) API :1 つのコマンドを実⾏する IBM 提供のプログラム ※EXTPROC、EXTPGMキーワードのパラメーターは大文字と小文字を区別します const:読み取り専用参 照パラメーターを指定 options(*nopass): パラメータの省略可 パラメータ・セ パレーターは、 コロン(:) ※コンマでない

(78)

サンプル・プログラム(1)

プロシージャー(procedure):dcl-proc , end-proc

プロシージャー・インターフェース():dcl-pi , end-pi

/if defined(*CRTBNDRPG)

ctl-opt dftactgrp(*no)

actgrp(*new); /endif

ctl-opt option(*srcstmt); dcl-s num int(10) inz(25);

print('his message is much longer than the 52 '

+ 'characters that DSPLY allows. '

+ 'The value of variable "num" is ' + %char(num)); return; DSPLY命令コードは最⼤値52byteという制限があります。ここでは、DSPLY 命令コードを使⽤しないprintのサンプル・プログラムをご紹介します。 CRTBNDRPGコマンドによって コンパイルする場合 活動化グループを指定 ACTGRPパラメーターによって指定された活動 化グループに関連付け、静的バインドを許可 Print プロシー ジャーの 呼び出し コンパイル・リストにソース・ステー トメントと同じ⾏番号を使⽤すること を指定

(79)

サンプル・プログラム(2)

プロシージャー(procedure):dcl-proc , end-proc プロシージャー・インターフェース():dcl-pi , end-pi 前ページのつづき printという名前のプロシージャーを定義

実⾏結果

改⾏(X‘15’)をNEWLINE という名前で定義 プロシージャ ー・インター フェースを指 定(名前は不 要) extproc(*dclcase) : 外部名が、「printf」と同 じ名前であることを示す

(80)

Chapter 4 Introduction to files

■ ファイル・ステートメント:DCL-F

DCL-Fで開始

ファイル名

キーワード

− DEVICEキーワードを最初のキーワードにする

– DISK, PRINTER, WORKSTN

– DEVICEキーワードのデフォルトは DISK

(81)

サンプル・プログラム

ファイルのレコードの読み込み

■ 事前準備:最初に以下のコマンドを実⾏し、ファイルを作成

===> DSPOBJD OBJ(QGPL/QRPG*) OBJTYPE(*FILE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/RPGTESTF)

実⾏結果

rpgtestfをファイルと して定義 DEVICEキーワードのデフ ォルトは DISK=⼊⼒⽤ としてオープン usropn:ファイルの最 初のオープンはプログ ラマーが制御 open: ファイルのオープン read: ファイルの読み込み close: ファイルのクローズ ファイルの最初のレコー ドから最後のレコードま で⼀⾏ずつ読み込み

(82)

サンプル・プログラム

プリンターファイルへの書き出し

スプール・ファイルの表示 ファイル . . . : QPRINT ページ/行 1/1 制御 . . . 桁 1 - 75 検索 . . . printer:プリンターへのアクセ スを提供し、印刷出⼒の様式を記述 数値パラメータで⻑さを指定し、プ ログラム記述ファイルを作成 132byteの データ構造 を定義 Write:プリンターファイル 「qprint」に「qprint_ds」 を書き出し

実⾏結果

(83)

Chapter 5 Display files

■ 表示装置ファイルの使用

■ DCL-Fで開始

ファイル名

キーワード

− DEVICEキーワード:WORKSTN

セミコロンで終了

(84)

サンプル・プログラム

表示装置ファイルの使用(1)

■ 事前準備:以下のソースを名前:RPGDSPF、タイプ:DSPFのソースメンバ ーに貼り付け、コンパイルし、表示装置ファイルを作成します ■ 以下のコードをソースメンバーに貼り付け、コンパイルし、実⾏します Rpgdspfをファイルとして定義 workstn:表示装置ファイルで あることを指定 exfmt: WRITE と READ の組み 合わせ 2つの命令が 同じレコード 様式に対して

(85)

サンプル・プログラム

表示装置ファイルの使用(2)

実⾏結果

名前を⼊⼒

(86)

参考情報

IBM Knowledge Center IBM i 7.2

■ ILE概念 • http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/ilec/ilecmain.htm?l ang=ja ■ ILE RPG解説書 • http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasd/rzasdmain.h tm?lang=ja ■ ILE RPGプログラマーの手引き • http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasc/rzascmain.h tm?lang=ja • ILE RPG プログラマーの手引き>新着情報>このリリースにおける新しい機能 − http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasc/rpgrelv7r2.htm?l

(87)

参照

関連したドキュメント

医学部附属病院は1月10日,医療事故防止に 関する研修会の一環として,東京電力株式会社

2021年12月17日

本株式交換契約承認定時株主総会基準日 (当社) 2022年3月31日 本株式交換契約締結の取締役会決議日 (両社) 2022年5月6日

委員長 山崎真人 委員 田中貞雄 委員 伊藤 健..

日本の伝統文化 (総合学習、 道徳、 図工) … 10件 環境 (総合学習、 家庭科) ……… 8件 昔の道具 (3年生社会科) ……… 5件.

加藤 由起夫 日本内航海運組合総連合会 理事長 理事 田渕 訓生 日本内航海運組合総連合会 (田渕海運株社長) 会長 山﨑 潤一 (一社)日本旅客船協会

(公財) 日本修学旅行協会 (公社) 日本青年会議所 (公社) 日本観光振興協会 (公社) 日本環境教育フォーラム

日本遠洋施網漁業協同組合、日本かつお・まぐろ漁業協同組合、 (公 財)日本海事広報協会、 (公社)日本海難防止協会、