COBOL原始プログラムの中へCOBOL登録集を複写するCOPY文。
REPLACING指定を付けることで、キーワードを指定された文字列で置換することができます。
初心者様向けの「COBOL教育サービス」始めました。
ソース
COPY XXXX REPLACING ==ZZ== BY ==WK1==.
COBOL登録集
01 ZZ-REC.
02 ZZ-A PIC X(08).
02 ZZ PIC X(08).
翻訳結果
COPY文で取り込まれた結果は、以下になります。
01 ZZ-REC.
02 ZZ-A PIC X(08).
02 WK1 PIC X(08).
しかし、単語単位の置換はできますが、語の一部を置換することはできません。
(上の例ではZZ-Aの”ZZ”部分は置換されない)
語の一部を置換したい場合には左右の括弧を使用します。
ソース
COPY XXXX REPLACING ==()== BY ==WK1==.
COBOL登録集
01 ()-REC.
02 ()-A PIC X(08).
02 () PIC X(08).
02 XX()YY PIC X(08).
翻訳結果
01 WK1-REC.
02 WK1-A PIC X(08).
02 WK1 PIC X(08).
02 XXWK1YY PIC X(08).
また、引用符を使っても可能です。
ソース
COPY XXXX REPLACING =="X"== BY ==WK1==.
COBOL登録集
01 "X"-REC.
02 "X"-A PIC X(08).
02 "X" PIC X(08).
02 XX"X"YY PIC X(08).
翻訳結果
01 WK1-REC.
02 WK1-A PIC X(08).
02 WK1 PIC X(08).
02 XXWK1YY PIC X(08).
※引用符は翻訳オプションの引用符に合わせる必要があります。
ですが、括弧と引用符では違いがあります。
括弧の場合は囲まれた中が対象文字列、引用符の場合は引用符を含めて対象文字列となります。
なので、登録集の中が括弧の場合は括弧を付けなくても中の文字列は置換え可能です。
ソース
COPY XXXX REPLACING ==ZZZ== BY ==IX1==.
COBOL登録集
MOVE DATA(ZZZ) TO ITEM1.
MOVE DATA(ZZZ IX2) TO ITEM1.
MOVE DATA(ZZZ:LEN) TO ITEM1.
翻訳結果
MOVE DATA(IX1) TO ITEM1.
MOVE DATA(IX1 IX2) TO ITEM1.
MOVE DATA(IX1:LEN) TO ITEM1.
このような使い方ができるようです。