Q.RDiでテーブルのコンパイルをする際、既に存在している場合、PDMと同様に既存テーブルを削除、コンパイルできないか?
というご質問です。
RPG,COBOL,etc.のコンパイルの場合、コンパイルコマンドに既存オブジェクトが存在する場合、REPLACEしていいか?のパラメーターがあります。が、テーブル、ビュー作成コマンド(CRTPF, CRTLF)にはありません。
PDMで既にテーブルがある場合にコンパイルすると、、
下記のような確認画面が出て、リプレースしていいか(既存テーブルを削除していいか?)聞かれます。
これはCRTPF, CRTLFコマンドがしているのではなくて、PDMでコンパイルコマンドを呼び出した際、PDMが出してくれてるんですね。
RDiでPDMと同様な動作ができるか?
RDiでコンパイルするにはソースメンバーを右クリックして、コンパイル または コンパイル(プロンプト) を選択します。
下記はプロンプトの例です。画面上は途中で切れてしまっていますが、スクロールするとすべてのコンパイルパラメーターを指定(変更)可能です。
・・がここには既存オブジェクトの置換YES(NO)はありません。当然ですね…
代替案の一つは、RDiではIBM i OSコマンドなどをユーザーで登録する機能があります。これにDLTFコマンドを登録しておけば、5250など別なコマンドラインを起動せずに置換したいテーブル(ビュー)を削除することはできます。
下記はユーザーコマンドを作成している例です。ソースを右クリック→コンパイルコマンドの処理 を選択すると、ユーザー独自のコマンドを登録できます。パラメーターの組み立てにはアシスト機能もあり、使いやすいとは思います。
上記コマンドを登録すると、右クリックで呼び出せます。
この方法でも一先ず代替できますが、ファイル削除、コンパイルと2つコマンド投入が必要になってしまいます。
RDi PDMパースペクティブではできないか?
RDiには 5250 PDM環境をエミュレートするPDMパースペクティブという機能が追加されています。(RDi V9.6.0.4以降から)
ウィンドウのパースペクティブを開くから PDM を選択します。無い場合は その他からすべてのパースペクティブを検索すれば見つかると思います。
① DDS(PF)を編集する際は、下記のように左下の窓で、編集したいソースやライブラリー名などを入力します。ここはPDMと同様です。
② 右下に①で指定したオブジェクトが表示されます。たとえば 2 (PDMのエディター起動)を選択すると、画面上部にソースが読み込まれ編集モードで開きます。
②のオプションOptionに 14 コンパイルを指定してみますと・・
無効なオプション(Invalid Option 14)となってしまいました。。どうやらPDMのパネル(今回だと既存ファイルを置換する YES/NO )は使えないようです。。
他に方法はないか?
RDiの中を調べたのですができそうなものはありませんでした・・
RDi以外ですと、下記のACS SQLスクリプトの例に CREATE or REPLASE というのが見つかりました。
これですと既存テーブルが存在する場合削除&コンパイルを実行できそうです。
ACS SQLスクリプト実行画面 -> 編集 -> 例 -> 例から挿入
CREATE OR REPLACE TABLE table1 (column1 INTEGER NOT NULL, column2 VARCHAR(100) ALLOCATE(20));