1

SQLRPGLE プログラムのセットを作成、作成、およびコンパイルする一連のプログラムを作成しています。私のプログラムの最初のコードの多くは、私が持っているすべてのプログラムで繰り返されるので、これを参照ソースに入れることは理にかなっています...それはおおよそ次の形式です

    H some h specs
    D a load of d specs

    /free
       my nice free formatted code that I use everywhere

その後、私のメタプログラムがやってきて、たくさんのコードを追加します。この時点で、私のプログラムは次のようになります

    /copy *libl/qrpgleref,myRefPgm

      lots of nice rpg and sql

    /end-free

これをコンパイルするとうまくいきません。これは、プログラムが /free と /end-free を適切に一致させることができないためだと思います...そうですか? それとも、ここでもっと微妙なものが欠けていますか?

乾杯

4

3 に答える 3

4

質問で提供されたサンプルのみに基づいて、プログラムがコンパイルされない理由は、H 仕様と D 仕様が自由形式の計算仕様と混合されているためだと思います。RPG では順序が重要であり、それを台無しにすることはできません。コピーしたコードに D 仕様と H 仕様が必要な場合は、次の 2 つのオプションがあります。

  • H、D、および C (自由形式) 仕様の別の /copy ソース メンバーを作成します。次に、RPG プログラムの適切な場所にコピーします。
  • *MODULE または *SRVPGM を作成してから、プロトタイプの D 仕様のみを RPG プログラムにコピーします。あなたが質問で提起したことだけに基づいて、最善の解決策はサービス プログラムを作成することだと思います。サービス・プログラムを RPG プログラムにバインドしやすくするために、バインディング・ディレクトリーを作成してから、H 仕様を RPG プログラムに配置します: H BNDDIR( library/bnddir )。そうすれば、PDM で通常の 14 でコンパイルできます。
于 2012-06-08T12:47:42.853 に答える
2

IBM ILE RPGLE 言語リファレンス (SC09-2508-08) による

/COPY または /INCLUDE ディレクティブに含まれるすべてのステートメントは、固定構文の計算と見なされます。/COPY メンバー内の自由形式ステートメントは、/FREE および/END-FREEディレクティブで区切る必要があります。

また、次の点に注意してください。

/END-FREE を指定すると、自由形式の計算ブロックが終了します。

/copybooks はできるだけ避けることをお勧めします。

于 2012-06-22T09:29:09.860 に答える