1

SQLRPGLEプログラムの最後に作成されてから削除されるテーブルがあります

     //Delete the temporary table
     shell('DLTF FILE(QTEMP/STVRECONWK)':IGNORE_ERROR);

     // create temporary table
     exec sql
       create table qtemp/stvreconwk (
         sysid integer,
         barcode varchar(100),
         description varchar(100),
         matchflag char(1)
       )
     ;

WebSphereからコンパイルしようとすると、次のようになります。

SQL1103:QTEMPの表STVRECONWKの24桁目の列定義が見つかりません。

問題は、テーブルが存在しないことです。ターミナルセッションからテーブルを作成してからコンパイルすると(ターミナルからも)、コンパイラが同じジョブで実行されているテーブルを検証できるため、テーブルが機能します。

WebSphereでこれを行うにはどうすればよいですか?

4

2 に答える 2

1

QTEMPで作成されているが、コンパイラーによって「外部記述」ファイルとしてもアクセスされるファイルは、「モデル」ファイルの複製として作成する必要があります。外部ファイルの説明を参照する必要があるプログラムは、常に存在する必要がある「モデル」ファイルを参照するようにコンパイルする必要があります。'model'は、コンパイラーに必要なすべての属性を提供します。オーバーライドは、実行時にプログラムの複製へのアクセスを提供します。'model'は、コンパイル時にライブラリリストのライブラリに存在する単なるファイルの説明です。

最近のバージョンのコンパイラでは、オーバーライドは必要ありません。RPGの場合、F仕様にはEXTDESC()またはEXTFILE()キーワードを含めて、「モデル」ファイルまたはランタイムファイルのいずれかに注意することができます。

ほとんどの場合、競合を避けるために、「モデル」は別の名前を使用してQTEMPファイルに複製されます。

于 2014-04-04T13:21:31.343 に答える
0

デフォルトでは、WebSphereは新しいジョブで各コマンドを実行します。これはwindow->preferences->iseries->コマンドの実行で変更でき、「compileinbatch」のチェックを外します

于 2011-03-23T21:34:44.103 に答える