COPY (部分語置換)

ANSI'85 での特殊文字の使用例

ANSI'85 準拠のコンパイラで COPY 文を使用すると、コピー メンバーのソース内の語を部分的に変更できる。ただし、この構文が有効であるのは、特定の規則 (および特殊文字) を使用した場合のみである。このテクニックを使用してプログラミングする際には、変更可能な節を事前に設定したうえでコピー メンバーを設定する必要がある。実際、このテクニックを一度使用すると、置換が行われなかった場合には、コピー メンバーは正常に翻訳されなくなる。次に例を示す。

ソース ファイルのコード:

     copy Payroll
          replacing ==(TAG)== by ==Payroll==.

コピーブックのコード:

 01  (TAG).
     05 (TAG)-Week      pic s99.
     05 (TAG)-Gross-Pay pic s9(5)v99.
     05 (TAG)-Hours     pic s9(3)
                          occurs 1 to 52 times
                           depending on (TAG)-Week of (TAG).

これは、次のようにコーディングされた場合と同様に処理される。

 01  Payroll.
     05 Payroll-Week      pic s99.
     05 Payroll-Gross-Pay pic s9(5)v99.
     05 Payroll-Hours     pic s9(3)
                            occurs 1 to 52 times
                              depending on Payroll-Week of Payroll.

ISO 2002 および Micro Focus 方言の使用例

ISO 2002 と Micro Focus の両方の方言で、ISO 2002 COBOL 規格で指定されている部分的な語置換がサポートされている。上述のとおり、変更可能な節が事前に設定されている必要はあるが、特殊文字の使用は必要ではなく、置換が行われなくてもコピー メンバーは正常に翻訳される。

上記の例は、次のようにコーディングすることもできる。

     copy Payroll
          replacing leading ==TAG== by ==Payroll==.

コピーブックのコード:

 01  TAG.
     05 TAG-Week      pic s99.
     05 TAG-Gross-Pay pic s9(5)v99.
     05 TAG-Hours     pic s9(3)
                          occurs 1 to 52 times
                           depending on TAG-Week of TAG.

これは、ANSI'85 の例とまったく同様に処理される。