Admin Production rocket
Current Publication

プリプロセッサを記述する際の考慮事項

Enterprise Developer for Eclipse (including UNIX Components) (Japanese) V8.0
Rocket® Enterprise Developer (formerly a product of Micro Focus or formerly a product of Open Text) documentation, created before Rocket Software acquired certain products from OpenText, may include outdated references to "Micro Focus" or "OpenText", both of which are trademarks of OpenText or its affiliates. Rocket Software is not affiliated with Micro Focus or OpenText and has since rebranded these products as Rocket® products. You may also encounter outdated links in this documentation. If you do, please contact Rocket Support (support@rocketsoftware.com) for assistance.

プリプロセッサを記述する際の考慮事項

注:

この統合プリプロセッサはネイティブ COBOL 用にのみサポートされます。

ソース コードに加えられた変更によって、ユーザーが選択した COBOL 方言またはデータ名との間で競合が生じる可能性があります。ここでは、そのような問題を回避するための注意点を説明します。

  • ユーザーが選択した COBOL 方言との競合

    ユーザーのコードが、プリプロセッサで使用する必要がある機能をサポートしていない方言に準拠している場合には、考慮すべき事項が 2 つあります。1 つは、その方言に準拠しないコードがフラグ付けされる点、もう 1 つは必要な予約語が辞書に格納されていない可能性がある点です。

    フラグ付けの問題を解決するには、コンパイラで、プリプロセッサが挿入した行にフラグを付けないようにします。すべての必要な予約語を使用できるようにするには、プリプロセッサで $SET 文を生成して ANS85 などの指令を指定できるようにします。

    ただし、この方法では予期しない副作用が発生します。一部の文の動作が変わり、有効であったデータ名が予約語となり受け付けられなくなる可能性があります。

    解決策の 1 つとして、どの語が実際に必要かを調べ、ADDRSV 指令を使用して実際に必要な語のみを追加するという方法があります。たとえば、予約語 FUNCTION が必要な場合は、ADDRSV(FUNCTION) 指令を使用して追加することができます。ただし、この場合も、ユーザー コードで FUNCTION がデータ名として宣言されていると、問題が発生することになります。最善の解決方法は、ADDSYN 指令を使用し、FUNCTION の代わりにユーザーが使用しそうもない語を選択することです。

    たとえば、指令 ADDSYN "FUNCTION" = "PREPGEN--FUNCTION" を生成した後、コードを生成する際に FUNCTION ではなく PREPGEN--FUNCTION を使用します。

    注:

    複数のプリプロセッサで同じソースを処理する場合には、ADDSYN で定義した同意語が、後続のプリプロセッサで正しく認識されない可能性があります。

  • データ名との競合

    プリプロセッサがそれ自体で使用するためにデータを作成する必要がある場合は、ユーザーが選択しそうもない名前を選択してください。上記の場合では、USERID のみでは問題が発生する可能性がありますが、PREPGEN--USERID のような名前を選択すれば、ユーザーが選択した名前と競合する可能性は少なくなります。

  • UNIX 環境

    UNIX では大文字と小文字が区別されます。呼び出し文で大文字と小文字を正しく使用する必要があります。たとえば、プログラムの名前が xxx.cbl である場合、CALL (XXX) という文は RTS173 エラーを返します。