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

スライド 1

N/A
N/A
Protected

Academic year: 2021

シェア "スライド 1"

Copied!
57
0
0

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

全文

(1)

Ver.

オープンソース協議会 2016年 第一回 勉強会

(2)
(3)

OS のバージョンと PTF

・V7R1

- テクノロジー・リフレッシュ(SF99707)11

- DB2 グループ (SF99071)Level 38

- SI51904:5770WDS Compiler ILE RPGⅣ

- SI58136:5770WDS Compiler ILE RPGⅣ

・V7R2

- テクノロジー・リフレッシュ(SF99717)3

- DB2 グループ(SF99072)Level 9

- SI58137: 5770WDS Compiler ILE RPGⅣ

(4)

開発環境

・RDi(Rational Developer for i)v9.5

- Eclipse ベースの IBM i 専用の開発環境

- コード補完、コンパイル、デバッグ、5250、etc ...

・5250 SEU

- 拡張はないが、F13→構文検査:N で利用可能

・テキストエディター

- 豊富なエディターが利用可能

- ファイルの CCSID は 5035 へ要変換(CPYとか)

・Orion:5733OPS OPTION 8

- Web版の Eclipse

- フリーフォームRPGのカラーシンタックスが用意されている

- ファイルの CCSID は 5035 へ要変換(CPYとか)

(5)
(6)
(7)
(8)
(9)

テキストエディター:vim

(10)

Orion

(11)

フリーフォームRPGの概要

・**free

- ソースがフリーフォームである事を示す

- 1桁目からコーディング可能

・大文字/小文字

- 区別なし(現状と同じ)

・ステートメントの開始

- 演算命令(命令コード)で開始

・ステートメントの終わり

- セミコロン(;)

・コメント

- //

(12)
(13)

利用可能な仕様書の種類

・制御(H)

・ファイル(F)

・定義(D)

・演算(C)

・プロシージャー(P)

※ 入力(I)、出力(O)は対象外

(14)

仕様書の順序

・従来通りの順序

1. 制御(H)

2. ファイル(F)、定義(D)

3. 演算(C)

4. プロシージャー(P)

・抜けは構わないが順序は守る

(15)

制御(H)仕様書

・構文

・解説

CTL-OPT {keyword1 keyword2 ..};

• 構文

⁃ CTL-OPT で開始

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ 複数キーワードはブランクで区切る

• 備考

⁃ 利用可能なキーワードは従来と同じ

⁃ 複数の制御ステートメントへの分割も可

(16)

ファイル(F)仕様書

・構文

・解説

DCL-F fileName {keyword1 keyword2 ..};

• 構文

⁃ DCL-F で開始

⁃ fileName : ファイル名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ ファイル装置キーワードの指定はキーワードの先頭に指定 ⁃ 複数キーワードはブランクで区切る

(17)

ファイル(F)仕様書

・主なキーワードと定位置フォームとの比較

定位置フォーム 定位置桁 指定方法 備考

ファイル・タイプ 17 USAGE キーワードの パラメーター *input, *output, *update *delete

ファイル指定 18 なし(全手順のみ) RPGサイクルはサポートされない ファイルに追加 20 USAGE(*OUTPUT) キーワード

ファイル形式 22 装置キーワードの パラメーター *ETX , レコード長

レコードアドレス・タイプ 34 KEYED キーワード 指定しない場合、RRN 順

(18)

定義(D)仕様書

・利用可能な定義

- 独立フィールド(変数)

- 名前付き固定情報フィールド(定数)

- データ構造

- プロトタイプ

- インターフェイス

(19)

独立フィールド(変数)定義

・構文

・解説

DCL-S fieldName keyword1 {keyword2 ..};

• 構文

⁃ DCL-S で開始

⁃ filedName : フィールド(変数)名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃ 複数キーワードはブランクで区切る

(20)

独立フィールド(変数)の定義

・主なデータタイプキーワード

データ・タイプ シンタックス 文字 CHAR(len) VARCHAR(len) dcl-s library char(10); dcl-s address varchar(300);

パック十進数 PACKED(digits {:decimal}) dcl-s number packed(5);

dcl-s price packed(7:2); ゾーン十進数 ZONED(digits {:decimal}) dcl-s number zoned(5);

dcl-s price zoned(7:2); 標識(ON / OFF value) IND dcl-s isValied ind;

日付 DATE {(format)} dcl-s startDate date;

dcl-s endDate date(*iso); 時刻 TIME {(format)} dcl-s startTime time;

dcl-s endTime time(*hms); タイムスタンプ TIMESTAMP dcl-s current timestamp;

(21)

名前付き固定情報フィールド(定数)定義

・構文

・解説

DCL-C constantName value|const(value);

• 構文

⁃ DCL-C で開始

⁃ constantName : 名前付き固定情報(定数)名

⁃ value :

⁃ 値を指定 ⁃ const キーワードによる値の指定も可(同じ意味)

(22)

データ構造定義

・構文

・解説

DCL-DS dsName {keyword1 keyword2 ..};

{DCL-SUBF} subFieldName keyword1 {keyword2 ..}

END-DS {dsName};

• 構文:データ構造定義の開始と終了

⁃ DCL-DS で開始

⁃ dsName : データ構造名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃複数キーワードはブランクで区切る

⁃ END-DS で終了

⁃ LIKEDS、LIKEREC キーワードを指定したデータ構造は END-DS は指定されない

(23)

データ構造定義

・解説2

• 構文:データ構造のサブフィールド定義

⁃ DCL-SUBF で開始(省略可)

⁃ subFieldName : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃複数キーワードはブランクで区切る

DCL-DS dsName {keyword1 keyword2 ..};

{DCL-SUBF} subFieldName keyword1 {keyword2 ..} END-DS {dsName};

(24)

外部プログラムの呼び出し

・プロトタイプ定義

- 呼び出し側に定義

・V6R1 以前のRPGⅣは呼び出される側にもプロトタイプ定義が必要

- PLIST、PARM と同じ

・パラメーターの数、属性、順番の設定

・インターフェイス定義

- 呼び出される側に定義

- *ENTRY PLIST、PARM と同じ

・パラメーターの数、属性、順番の設定

・定義は一致させる

- パラメーターの数、属性、順番

*PGM

(呼び出す側)

*PGM

(呼び出される側)

プロトタイプ CALLP インターフェイス 一致させる

(25)

プロトタイプ定義(外部プログラム呼び出し)

・構文

・解説1

dcl-pr externalProgramName extpgm {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..}

END-PR {externalProgramName};

• 構文:プロトタイプの開始と終了

⁃ DCL-PR で開始

⁃ ernalProgramName : 外部プログラム名

⁃ EXTPGM キーワード

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃複数キーワードはブランクで区切る

⁃ END-PR で終了

呼び出し側

(26)

プロトタイプ定義(外部プログラム呼び出し)

・解説2

• 構文:パラメーター定義

⁃ DCL-PARM で開始(省略可)

⁃ subfieldname : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃複数キーワードはブランクで区切る

• 備考

⁃ プロトタイプで設定するパラメーター名は変数として利用不可

dcl-pr externalProgramName extpgm {keyword1 keyword2 ..}; {DCL-PARM} parameterName keyword1 {keyword2 ..}

END-PR {externalProgramName};

(27)

インターフェイス定義(外部プログラム呼び出し)

・構文

・解説1

DCL-PI interfaceName {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..};

END-PI {interfaceName};

• 構文:プロトタイプの開始と終了

⁃ DCL-PI で開始

⁃ interfaceName : インターフェイス名(任意)

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃複数キーワードはブランクで区切る

⁃ END-PI で終了

呼び出される側

(28)

インターフェイス定義(外部プログラム呼び出し)

・解説2

• 構文:パラメーター定義

⁃ DCL-PARM で開始(省略可)

⁃ subfieldname : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃複数キーワードはブランクで区切る

• 備考

⁃ インターフェイスで設定するパラメーター名は変数として利用可

DCL-PI interfaceName {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..}; END-PI {interfaceName};

(29)

演算(C)仕様書

・構文

・解説

operationCode factor1 factor2 result;

• 構文

⁃ operetionCode : 演算命令

⁃ eval, callp などは省略可

⁃ factor1 : 演算項目1

⁃ factor2 : 演算項目2

⁃ result : 結果のフィールド

(30)

演算(C)仕様書

・フリーフォームで利用できなくなる演算命令(一部)

演算命令 代用 演算命令 代用

ADD +, += LOOKUP %LOOKUP,%TLOOKUP ADDDUR %YEARS, %MONTHS MOVE EVAL,EVALR

ANDxx AND MOVEA %SUBARR CALL CALLP MOVEL EVAL

CAT + MULT *,*=

CHECK %CHECK MVR %REM COMP -,=,<,<=,>,>=,<> OCCUR %OCCUR

DIV -/、=/、%DEV PARM,PLIST プロトタイプ, インターフェイス

DO FOR SCAN %SCAN

DOUXX DOU SUB -,-=

DOWXX DOW SUBDUR %YEARS、%MONTHS、%DIFF EXTRCT %SUBDT SUBST %SUBST

GOTO LEAVE,LEAVESR,ITER,RETURN TIME %DATE、%TIME、%TIMESTAMP KFLD,KLIST %KDS WHENXX WHEN

(31)

演算(C)仕様書

・例:KLIST → %KDS 関数を利用する

(32)

プログラムの作成(コンパイル)

・ CRTBNDRPG コマンド

-

デバッグ用ソースコードの組み込み

DBGVIEW:*SOURCE

-

IFS のソースファイルを指定する場合

SRCSTMF:

・ 例:ソースファイルにコーディング

-

CRTBNDRPG PGM(KIT/PGM010) SRCFILE(KIT/QRPGLESRC)

DBGVIEW(*SOURCE)

・ 例:IFS のストリームファイルにコーディング

-

CRTBNDRPG PGM(KIT/PGM010)

SRCSTMF('/home/kit/qrpglesrc/pgm010')

DBGVIEW(*SOURCE)

(33)
(34)

ILEについて

・統合化言語環境

(Integrated Language Envionment)

- IBM i におけるプログラム開発の強化を目的として設計された環境

- ツールのセットおよび関連するシステム・サポートを指す

・ILE コンパイラーで作成されたプログラムのみが利用可

- ILE RPG, ILE COBOL, ILE C / C++, ILE CL

・ILE プログラムの構造

- プログラムは、1つ以上のモジュールから成る

・モジュールはバインドされプログラムに結合される

・結合されているため、呼び出しのスピードが速い

・異なる言語で作成されたモジュールもバインド可能

- モジュールは、1つ以上のプロシージャーから成る

・プログラム内部の変数は限定されたスコープ

(後述)で共有される

プログラム(*PGM) モジュール(*MODULE) モジュール(*MODULE) プロシージャー プロシージャー プロシージャー

(35)

モジュールの構造

・メイン・ソース・セクション

- 最初の行から、最初のプロシージャーまでのソース

・メイン・プロシージャーが含まれる場合がある

・メイン・プロシージャー

- コンパイラーが生成するプロシージャー

- プログラムの入り口点となる

・制御仕様書の NOMAIN 指定で生成なし

・サブ・プロシージャー

- メイン・ソース・セクションのあとに定義する

- C言語などの関数と同じと考えて良い

・実行コードの最小限のグループ

- プロシージャー仕様書で指定する

モジュール(*MODULE) サブ・プロシージャー サブ・プロシージャー メイン・ソース・セクション メイン・プロシージャー

(36)

変数のスコープ

・グローバール変数

- メイン・ソース・セクションに定義された変数

- 同一モジュール内の全プロシージャーから利用できる

・ローカル変数

- 各プロシージャー内に定義された変数

- 各プロシージャー内でのみ利用できる

モジュール(*MODULE) サブ・プロシージャー 定義仕様書 サブ・プロシージャー 定義仕様書 メイン・ソース・セクション 定義仕様書 メイン・プロシージャー ローカル・ スコープ変数 グローバル・ スコープ変数

(37)

プロシージャーの構造

・利用可能な仕様書の種類と順序

1. プロシージャー(P)仕様書

2. ファイル(F)仕様書、定義(D)仕様書

3. 演算(C)仕様書

(38)

プロシージャー1:内部プロシージャー呼び出し

・呼び出し側と同じモジュール内のプロシージャーを呼び出す

モジュール(*MODULE) サブ・プロシージャー サブ・プロシージャー メイン・ソース・セクション メイン・プロシージャー

(39)

プロシージャー(P)仕様書:内部プロシージャー呼び出し

・構文

・解説

DCL-PROC procedureName;

... procedure code ...

END-PROC {procedureName};

• 構文:プロシージャーの開始と終了

⁃ DCL-PROC で開始

⁃ procedureName : プロシージャー名(任意)

⁃ END-PROC で終了

(40)

定義(D)仕様書:内部プロシージャー呼び出し

・呼び出される側にインターフェイスを定義する

・インターフェイスには、外部から呼び出される情報を定義

- パラメーターの数や属性

- 戻り値の属性

・呼び出される側のプログラムに定義する

・プロトタイプは不要

- V7R1以降、内部プロシージャー呼び出しにおけるプロトタイプは不要

・呼び出し側、呼び出される側ともにコンパイラーが自動で生成

モジュール(*MODULE)

プロシージャー

(呼び出す側)

プロシージャー

(呼び出される側)

インターフェイス 呼び出し

(41)

定義(D)仕様書:インターフェイス

・構文

・解説1

DCL-PI interfaceName {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..};

END-PI {interfaceName};

• 構文:プロトタイプの開始と終了

⁃ DCL-PI で開始

⁃ interfaceName : インターフェイス名

⁃ プロシージャー名と一致させる

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ 戻り値を設定する場合、データタイプ キーワードをキーワードの先頭に指定する ⁃複数キーワードはブランクで区切る

⁃ END-PI で終了

(42)

定義(D)仕様書:インターフェイス

・解説2

• 構文:パラメーター定義

⁃ DCL-PARM で開始(省略可)

⁃ subfieldname : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃ 複数キーワードはブランクで区切る

• 備考

⁃ インターフェイスで設定する

パラメーター名は変数として利用可

(43)

プロシージャー1:内部プロシージャー呼び出し

・呼び出し方

{CALLP} procedureName ({parameter1 parameer2 ..});

モジュール(*MODULE)

サブ・プロシージャー メイン・ソース・セクション

メイン・プロシージャー

(44)

プロシージャー2:外部プロシージャー呼び出し

・バインドされた別モジュールのプロシージャーを呼び出す

プログラム(*PGM) モジュール(*MODULE) サブ・プロシージャー サブ・プロシージャー メイン・ソース・セクション メイン・プロシージャー モジュール(*MODULE) サブ・プロシージャー サブ・プロシージャー メイン・ソース・セクション メイン・プロシージャー

(45)

プロシージャー(P)仕様書:外部プロシージャー呼び出し

・構文

・解説

DCL-PROC procedureName EXPORT;

... procedure code ...

END-PROC {procedureName};

• 構文:プロシージャーの開始と終了

⁃ DCL-PROC で開始

⁃ procedureName : プロシージャー名(任意)

⁃ EXPORT キーワードを指定

⁃ END-PROC で終了

(46)

定義(D)仕様書:外部プロシージャー呼び出し

・呼び出し側にプロトタイプを定義する

・呼び出される側にプロトタイプを定義する

・呼び出される側にインターフェイスを定義する

・プロトタイプ、インターフェイスには、外部から呼び出されるた

めの情報を定義

- パラメーターの数や属性

- 戻り値の属性

プロシージャー

(呼び出す側)

(呼び出される側)

プロシージャー

プロトタイプ 呼び出し 同じ定義 インターフェイス プロトタイプ

(47)

定義(D)仕様書:プロトタイプ

・構文

・解説1

dcl-pr externalProcedureName {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..}

END-PR {externalProcedureName};

• 構文:プロトタイプの開始と終了

⁃ DCL-PR で開始

⁃ ernalProcedureName : プロシージャー名

⁃ プロシージャー名と一致させる

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ 戻り値を指定する場合、データタイプ・キーワード をキーワードの先頭に指定する ⁃ 複数キーワードはブランクで区切る

⁃ END-PR で終了

呼び出し側

呼び出される側

(48)

定義(D)仕様書:プロトタイプ

・解説2

• 構文:パラメーター定義

⁃ DCL-PARM で開始(省略可)

⁃ subfieldname : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃複数キーワードはブランクで区切る

• 備考

⁃ プロトタイプで設定するパラメーター名

は変数として利用不可

dcl-pr externalProcedureName {keyword1 keyword2 ..}; {DCL-PARM} parameterName keyword1 {keyword2 ..} END-PR {externalProgramName};

(49)

定義(D)仕様書:インターフェイス

・構文

・解説1

DCL-PI interfaceName {keyword1 keyword2 ..};

{DCL-PARM} parameterName keyword1 {keyword2 ..};

END-PI {interfaceName};

• 構文:プロトタイプの開始と終了

⁃ DCL-PI で開始

⁃ interfaceName : インターフェイス名

⁃ プロシージャー名と一致させる

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ 戻り値を設定する場合、データタイプ キーワードをキーワードの先頭に指定する ⁃複数キーワードはブランクで区切る

⁃ END-PI で終了

呼び出される側

(50)

定義(D)仕様書:インターフェイス

・解説2

• 構文:パラメーター定義

⁃ DCL-PARM で開始(省略可)

⁃ subfieldname : サブフィールド名

⁃ keyword :

⁃ ゼロから複数のキーワード ⁃ データタイプ・キーワードの指定はキーワードの先頭に指定 ⁃ 複数キーワードはブランクで区切る

• 備考

⁃ インターフェイスで設定する

パラメーター名は変数として利用可

呼び出される側

(51)

プロシージャー2:外部プロシージャー呼び出し

・呼び出し方

{CALLP} procedureName ({parameter1 parameer2 ..});

呼び出し側

(モジュールA)

呼び出される側

(モジュールB)

(52)

ILE プログラムの作成

・ソースコードから直接プログラム(*PGM)は作成できない

・以下の手順で作成

1. モジュールの作成:CRTRPGMOD

・ ソースコードからコンパイルを行い、モジュール(*MODULE) を作成する

・ モジュールを実行することはできない

2. プログラムの作成:CRTPGM

・ 作成されたモジュールを結合(バインド)しプログラムを作成する

・ プログラムの開始点となるモジュールを指定する

* M O D U L E * M O D U L E * M O D U L E I L E R P G ソ ー ス コ ー ド * P G M I L E C O B O L ソ ー ス コ ー ド I L E C ソ ー ス コ ー ド CRTRPGMOD CRTCBLMOD CRTCMOD CRTPGM CRTBNDRPG

(53)

モジュールの作成(コンパイル)

1. CRTRPGMOD

-

ソースコードからコンパイルを行い、モジュール(*MODULE)を作成

-

デバッグ用ソースコードの組み込み

DBGVIEW パラメーターに *SOURCE を指定

-

IFS のソースファイルを指定する場合

SRCSTMF パラメーターに指定

・ 例

-

CRTRPGMOD MODULE(KIT/MOD010) SRCFILE(KIT/QRPGLESRC)

DBGVIEW(*SOURCE)

-

CRTRPGMOD MODULE(KIT/MOD020) SRCFILE(KIT/QRPGLESRC)

DBGVIEW(*SOURCE)

* M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 1 0 * P G M CRTRPGMOD CRTPGM * M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 2 0 CRTRPGMOD

(54)

プログラムの作成(バインド)

2. CRTPGM

-

作成済みのモジュールを結合(バインド)し、プログラム(*PGM)を作成

-

モジュールの指定

MODULE パラメーターに指定(複数可)

-

プログラム入口プロシージャーモジュールの指定

ENTMOD パラメーターに指定(初期値:*FIRST)

・ 例

-

CRTPGM PGM(KIT/PGM010)

MODULE(KIT/MOD010 KIT/MOD020)

* M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 1 0 * P G M CRTRPGMOD CRTPGM * M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 2 0 CRTRPGMOD

(55)

プログラムの更新

・UPDPGM

- 作成済み *PGM にバインドされている *MODULE を更新した際

に実行する

・例

- CRTRPGMOD MODULE(KIT/MOD020)

SRCFILE(KIT/QRPGLESRC) DBGVIEW(*SOURCE)

- UPDPGM PGM(KIT/PMG010) MODULE(KIT/MOD020)

* M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 1 0 * P G M CRTRPGMOD CRTPGM * M O D U L E I L E R P G ソ ー ス コ ー ト ゙ M O D 0 2 0 CRTRPGMOD

(56)
(57)

「優しさ」と「信頼」で

お客様のビジネスに “Goode Cycle” を。

受託開発

顧客研修

技術開発

信頼性においては定評 のある IBM i をメイン としたアプリケーショ ン開発を行います。お 客様とのコミュニケー ションを第一に考え、 最適なソリューション をご提案しています。 外部研修にて IBM i コースを担当する専任 のインストラクターが います。また、お客様 のご要望に応じたオー ダーメイドの研修コー スの提供も行います。 IBM i の最新技術だ けでなく、お客様に とって必要になるで あろうコンピュータ 技術を日々蓄積して います。

ティアンドトラスト株式会社

〒111-0053 東京都台東区浅草橋4-16-4 ウィングエイトビル6F フリーダイヤル:0120-913-474 代表:03-5821-3666

+ =

α

T&T

http://www.tat.co.jp

56

参照

関連したドキュメント

題が検出されると、トラブルシューティングを開始するために必要なシステム状態の情報が Dell に送 信されます。SupportAssist は、 Windows

         --- 性状及び取り扱いに関する情報の義務付け   354 物質中  物質中  PRTR PRTR

(a)第 50 類から第 55 類まで、第 60 類及び、文脈により別に解釈される場合を除くほか、第 56 類から第 59 類までには、7に定義する製品にしたものを含まない。.

討することに意義があると思われる︒ 具体的措置を考えておく必要があると思う︒

更新 新許 許可 可申 申請 請書 書及 及び び 優 優良 良認 認定 定申 申請 請書 書提 提出

概念と価値が芸術を作る過程を通して 改められ、修正され、あるいは再確認

[r]

「今後の見通し」として定義する報告が含まれております。それらの報告はこ