RDiを実際に使用してソースを編集してみる
RDiのバージョン:9.8.0.5
環境設定
PVS利用の場合はトンネリングの設定が必要
Opensshもしくはターミナルで以下のポートを追加してください。
ssh [PVSアカウント]@[PVSのIP] -L 22:localhost:22 -L 50000:localhost:23 -L 446:localhost:446 -L 449:localhost:449 -L 2001:localhost:2001 -L 2002:localhost:2002 -L 2003:localhost:2003 -L 2007:localhost:2007 -L 2323:localhost:2323 -L 2300:localhost:2300 -L 3001:localhost:3001 -L 3002:localhost:3002 -L 8470:localhost:8470 -L 8471:localhost:8471 -L 8472:localhost:8472 -L 8473:localhost:8473 -L 8474:localhost:8474 -L 8475:localhost:8475 -L 8476:localhost:8476 -o ExitOnForwardFailure=yes -o ServerAliveInterval=15 -o ServerAliveCountMax=3
- 8470: IBM i セントラルサーバー
- 8475: IBM i リモート コマンド サーバー
- 8476: IBM i サインオンサーバー
- 446: IBM i DRDA® (レコード アクセス) サーバー
- 449: IBM i サーバー マッパー サーバー
参考:RDiのポートについて(英語のBlog)
Windows10未満でOpensshが利用できない場合は、別紙のPuTTyでの設定方法を参考にしてください。
RDiの起動
-
Windowsのスタートメニューから、「IBM Sofrware Delivery Platform」、「IBM Rationl
Developer for i V9.8」をクリックして起動します。 -
ワークスペースランチャーが表示されます。
ワークスペースとは、これから行う作業環境を保存するフォルダです。
1台のPCを1人のユーザーが占有して使用するのであれば特にワークスペースを変更する必要はありません、OKボタンを押します。 -
RDiが起動され「ようこそ」ページが表示されます。「ようこそ」は✖️ボタンで閉じます。
セキュア通信方式を使用のチェックを外します。
「終了」をクリックします。これで接続が可能になりました。
接続設定
※IBM iと接続された後、ライブラリー・リストに指定したライブラリーが追加されます(ADDLIBLEコマンドが実行されます)。
※現行ライブラリーにライブラリーを指定することもできます。
パスワード横のボタンを押すことでパスワードが表示されます。
(あくまで一例、以前ハンズオンで利用したID/パスワードで現在この環境は存在しません)
- 接続が成功すると、リモート・システム・ビューにライブラリーが表示されます。
「User libraries」の下にご自身のライブラリーが表示されます。
- プロパティを開き、必要なサービスが開始/接続されているかを確認します。
接続されていなければ、接続を押します。
固定長ソースメンバーの編集/コンパイル
固定長のRPGLEプログラムをRDiで編集し、コンパイルを実施します。
コンパイル実施後、プログラムを実行し、スプールファイルを確認します。
前提
参照・編集対象のソース・ファイルに利用ユーザーがアクセスできるよう、必要に応じて権限(*OBJOPR/*READ/*UPD 等)を付与してください。
例:GRTOBJAUT OBJ(STUDENTXX/QRPGLESRC) …(具体的な権限付与は運用ポリシーに合わせて実施)
物理ファイルの確認
今回使用する物理ファイル「TOKMSP」の中身を確認します。
TOKMSP.mbrを右クリックし、テーブルでの表示をクリックします。
「データテーブル」タブに表形式でデータが表示されます。
ソースメンバーの編集
「LPEX エディター」を用いてソースメンバーを編集します。
RSEのオブジェクトビューから、ライブラリー(STUDENTXX) → ソース・ファイル(QRPGLESRC) → ソース・メンバー(ILE10R) を辿り、対象メンバー(ILE10R)を右クリック
アプリケーションから開く → LPEX エディター を選択して開く
※PowerVSの接続状況により、表示に時間がかかる場合があります。右下にメンバーのダウンロード状況が表示されます。
ソース・プロンプター
ソースを完成させます。
RPG/DDS いずれも、ソース行にカーソル → F4 でプロンプター起動します
<この状態でF4を押す>
今回は以下のように記入していきます。
-
行タイプに「H:制御」を入力
以下のように入力します。 -
行タイプに「F:ファイル記述」を選択します。
-
以下のように入力し、適用ボタンを押します。
- ファイル名:TOKMSP
- ファイル・タイプ:「I」
- ファイル指定:「F」
- ファイルフォーマット:「E」
- レコードアドレスタイプ:「K」
- 装置:「DISK」
- 行タイプを「C:演算拡張演算項目2」に変更します。同様に以下のように入力します。
- 演算命令と拡張:READ
- 拡張演算項目2:TOKMSP
- 行タイプを「O:出力、レコードID」に変更します。同様に以下のように入力します。
- ファイル名QPRINT
- タイプ:「E」
- EXCEPT名:MEISAI
- 印刷後スペース:「1」
<参考>行の挿入と削除:
SEU 風の行コマンド(C, M, D など)も LPEX で扱えます。Enter で前行の種別を引き継がないようにする設定も可能です。
例)左側のメニューバーにて挿入したい場合は「I」、削除したい場合は「D」を選択することで、行の挿入・削除ができます。
コンパイル
編集したソースをCtrl+Sで保存します。
保存した後、QRPGLESRC/ILE10R を右クリック→コンパイル→CRTBNDRPGを選択します。
コンパイルが完了すると結果がコマンドログおよびエラーリストに表示されます。
コンパイルしたプログラムの存在を確認します、
ライブラリを右クリックし、更新します。
STUDENT に生成されたプログラムILE10Rを確認します。
プログラム実行
プログラムを実行します。
RDiのコマンドログの下方のコマンドから実行します。
5250画面からの実行も可能です、その場合はジョブが異なるため5250画面側でもライブラリーリストを更新してください
まずCALLコマンド実行前にスプールを出力するOUTQを作成し、属性を変更します。
CRTOUTQ OUTQ(STUDENTXX/STUDENTXXQ)
OVRPRTF FILE(QPRINT) OUTQ(STUDENTXX/STUDENTXXQ)
その後プログラムを実行します。
CALL STUDENT/ILE10R
WRKOUTQ STUDENTXX/STUDENTXXQ
でスプールファイルを確認するか、ACSのプリンター出力から印刷内容を確認します。
<参考>固定長ソースをFF RPGに変換
固定長ソースを全選択肢、右クリックをすると「選択をフリー・フォームに変換」が表示されます。
こちらを実行することで固定長ソースをFF RPGに変換できます。
RDiでのストリング検索およびコンパイルについて
「管理エリア」にカーソルを合わせ、RDiの検索(Ctrl+H)で表示される「IBM i Search / Multi-File Search」でライブラリ/ソースファイル/メンバーをまたいだ文字列検索が可能です。
右側の「リモート検索欄」に結果が表示されます。
検索でヒットしたものに対して複数選択を実施し、コンパイルすることが可能です。
スクリーンデザイナーで画面ファイルを編集
Screen Designerを使用し、画面ファイルHIN010Sを編集しコンパイルを実施する。
その後、関連プログラムHIN010のコンパイルも実施したのち、5250画面でプログラムを実行し、挙動を確認する。
Screen Designer の起動
ライブラリ(STUDENTXX)->ファイル(QDDSSRC)->HIN010Sを右クリックし、Screen Designerを選択します。
Screen Designer が起動します。
画面レイアウトの基本操作
「設計ビュー」にてレコード様式を選択します。
画面上部の「設計ページ画面制御」からFMT01を選択します。
「パレット・ビュー」にて、レコードおよびフィールドの追加を行います。
ドラッグアンドドロップで、設計ビューにレコード/フィールドの追加ができます。
今回はパレットから時刻定数を選択します。
ドロップで配置したい位置に持っていきます。
今回は時間と日付が空欄になっています、入力してみてください
「プロパティー・ビュー」にて、レコードやフィールドの定義を設定/確認します。
選択した要素はプロパティー・ビューで各項目(基本/ファンクション/キーワード 等)を編集できます。
プロパティを確認したい要素を右クリックすると、プロパティー・ビューが表示されます。
<プロパティー・ビューの中身>
「アウトライン・ビュー」にてレコードやフィールド定義の確認が一覧でできます。
ソース・メンバーの表示と連携
設計横のソースをクリックすることで、DDSソースの表示ができます。
↑このボタンです
Screen Designerで設計した要素は LPEXエディターと連動しています。
右上でビューの切り替えを実施できます。
コンパイル(CRTDSPF)
保存(Ctrl+S)したのち、コンパイルを実施します
ソース・メンバー(QDDSSRC/HIN010S)を右クリック → [コンパイル(プロンプト)→ CRTDSPF]を選択します。
コマンド・ログで作成結果が確認できます。
プログラム(QRPGLRSRC/HIN010)もコンパイルを実施します。
実行確認
プログラムを実行します。
今回は対話型のため、5250画面からプログラムをCallします。
※5250画面上でライブラリリストにSTUDENTXXを追加してください。
CALL (STUDENTXX/HIN010)
を実施。
以下のような対話式プログラムが表示されます。
参考
デバッグ機能の起動
※本ハンズオンでは使用していない3825ポートへのトンネリングを実施してください。
設定にてデバッグサーバーの設定を確認します。
プログラムの実行中に実働ファイルを更新する場合は、設定の「IBM i デバッグ」の実働ファイルを更新するにチェックを入れてください。
設定が完了したら適用して閉じるを選択します。
localhostの下にあるオブジェクトを右クリックし、リモートサーバー-> デバッグ->開始を選択します。
※5250画面からSTRBGSSVRコマンドを起動するのと同じ操作をしています。
RDiからエントリーブレークポイントを設定する「サービスエントリーポイント機能」を起動します。
デバッグを行いたいプログラムを右クリックし、「デバッグまたはコード・カバレッジ(サービス・エントリー)」「サービス・エントリー・ポイントの設定」を選択します。
サービス・エントリー・ポイントがしく設定されたことを示すメッセージおよび「IBM i サービス・エントリー・ポイント」ビューが表示されます。
プログラムをCallすると以下のような切り替え画面が表示されます。
SQLの実行
localhostの下にあるオブジェクトを右クリックし、
リモートサーバー->SQLスクリプト実行の軌道を選択します。
ACSのSQLスクリプト実行画面が起動します。
接続ポートについて
今回トンネリングしたポートの内訳を以下に記載いたします。
ローカル:リモート | サービス名(IBM i) | 主な用途(代表クライアント) | 備考 |
---|---|---|---|
22 → 22 | SSH (sshd) | SSHログイン/ポートフォワード | ローカル22は既存sshdと競合の可能性。任意のローカル番号に変えてもOK(例: -L 10022:localhost:22 )。 |
50000 → 23 | Telnet (TN5250/平文) | 5250エミュレータ(ACS 5250等) | 50000はローカル便宜ポート。先の23はIBM i側Telnet。暗号化は992推奨。 |
446 → 446 | DRDA/DDM(平文) | Db2 DRDAクライアント(RDi/ACSでは通常は8471/9471) | 検証用や暗号化不要時。TLSなら448を使用。 |
449 → 449 | Server Mapper | 各ホストサーバ仲介/RDi/ACSで必須 | 847x系とセットで開けることが多い。 |
2001 → 2001 | HTTP Administration (*ADMIN) | 管理UI(HTTP) | 新Navigator for i 証明書管理など管理群の基盤。 |
2002 → 2002 | Navigator for i (HTTP) | 新Navigator(非TLS) | 通常は2003(HTTPS)を推奨。 |
2003 → 2003 | Navigator for i (HTTPS) | 新Navigator(TLS) | 運用は基本こちら。 |
2007 → 2007 | Digital Certificate Manager (HTTPS) | 証明書管理 | 7.6でもDCMで証明書配布を実施。 |
2323 → 2323 | Operations Console (LAN) | LANコンソール | HMCなしの接続で利用。 |
2300 → 2300 | Operations Console (LAN) | LANコンソール | 環境により必要。 |
3001 → 3001 | Operations Console (LAN) | LANコンソール | 3002と併用されることが多い。 |
3002 → 3002 | Operations Console (LAN/安全側) | LANコンソール | 3001とセットで許可。 |
8470 → 8470 | as-central(中央) | RDi/ACSの基盤サービス | 8470〜8476はホストサーバ群。 |
8471 → 8471 | as-database(DB) | ACSのRun SQL、RDiのDB連携 | JDBC/ODBC/SQL系はこちらが本線。 |
8472 → 8472 | as-dtaq(データキュー) | データキュー操作 | 必要時のみ開放。 |
8473 → 8473 | as-file(IFS) | IFS操作(RDi/ACS) | |
8474 → 8474 | as-netprt(ネット印刷) | プリンタ関連 | |
8475 → 8475 | as-rmtcmd(リモートコマンド) | RDi/ACSのRMTCMD | RDi操作で重要。 |
8476 → 8476 | as-signon(サインオン) | 認証/セッション確立 | RDi/ACS接続時の必須ポート。 |
3825 → 3825 | デバッガー | RDi統合デバッガ | 今回は未使用、デバッガー利用時はトンネリング必須。 |
メンバー編集ができない場合
- レコードアクセスサービスの使用状況を確認
使用不可になっていた場合、DDM request accessがREJECTされている可能性があります。
DSPNETA
でDDMサーバーへの権限を確認します。
REJECTだった場合はCHGNETA DDMACC(*OBJAUT)
実施後、
以下コマンド実施でDDMサーバーを再起動します。
ENDTCPSVR SERVER(*DDM)
ENDPJ SBS(QUSRWRK) PGM(QSYS/QRWTSRVR) OPTION(*IMMED)
STRTCPSVR SERVER(*DDM)
- 権限を確認
ソースファイルの権限を確認します
DSPOBJAUT OBJ(STUDENT/QRPGLESRC) OBJTYPE(*FILE)
権限がなかった場合は以下を実行
CHGAUT OBJ(‘/QSYS.LIB/STUDENTXX.LIB/QRPGLESRC.FILE’) USER(*PUBLIC) DTAAUT(*RWX) OJAUT(*ALL)