機能
REPLACE(置換)文は、原文を翻訳単位に置き換えるために使用する。
一般形式
形式 1
形式 2
構文規則
- REPLACE文は、翻訳集団中で文字列を書くことができる場所ならば、どこにでも書くことができる。翻訳集団中の先頭の文でない場合は、REPLACE文の前に分離符の終止符(.)を打つこと。
- REPLACE文は、分離符の終止符(.)によって止める。
- 仮原文-1には、1語以上の原文語を含める。
- 仮原文-2には、原文語を含めなくても、1語以上の原文語を含めてもよい。
- 仮原文-1および仮原文-2の中の文字列は、次の行へ継続できる。
- 仮原文中の原文語の長さは、1文字から322文字の間とする。
- 仮原文-1は、そのすべてが分離符のカンマまたはセミコロンから構成されていてはならない。
- 注記項の中または注記項を記してもよい場所に語REPLACEがあると、注記項の一部とみなされる。
-
語-1は、1つの原文語のみから成る。
-
語-2は、1つの原文語のみからなる。または、空の語である。
-
文字定数および各国語定数のいずれも語-1または語-2として指定してはならない。
一般規則
- 仮原文-1には、仮原文-2によって置き換える原文を指定する。
-
語-1は、語-2により置き換えられる原文を指定する。
- 形式 22のREPLACE文は、現在働いている原文置換機能を停止することを指定する。
- いったん指定した REPLACE文の効力は、次のREPLACE文の指定が出てくるか、そのプログラムの終わりに達するまで持続する。
- 原始単位中に含まれるREPLACE文の処理は、その原始単位中に含まれるCOPY文があればその処理の後で行われる。
- REPLACE文を処理した結果の原文には、COPY文もREPLACE文も含まれていてはならない。
- 原文を置換するか否かを判定するための比較はREPLACE文の直後に開始され、以下のように行われる。
- 原始文中の左端の原文語と最初の仮原文-1から始まって、仮原文-1が原始文中の連続する同じ文字数の原文語と比較される。
- 仮原文-1は、それを構成する原文語の並びが原始文中の原文語の並びと同じであるときにだけ、等しいと判定される。
LEADINGを指定した場合、部分語-1は、それを構成する文字の並びが、原文語の左端文字位置から続く、同じ数の文字の並びと、逐一同じであるときにだけ原文語と等しいと判定される。TRAILINGを指定した場合、部分語-1は、それを構成する文字の並びが、原文語の右端文字位置で終わる、同じ数の文字の並びと、逐一同じであるときにだけ原文語と等しいと判定される。
- 照合の目的で、以下の規則が適用される。
- 仮原文-1または原文の中に現れる分離符の各カンマ、セミコロン、または空白は、単一の空白と見なされる。1個以上連続する空白分離符は、単一の空白と見なされる。
- 文字定数または各国語定数で使用されるものを除き、小文字は、COBOL文字集合に指定されている、対応する大文字と同等に扱われる。
- デバッグ行内の語は、標識領域に"D"がないものとして、比較に使用される。
-

連結式の各作用対象と各演算子は異なる原文語である。
- 照合結果が一致しなかった場合、以降の各仮原文-1または語-1を対象にして比較が繰り返される。このようにして、一致するものが見つかるか、仮原文-1または語-1の続きがなくなるまで、比較は繰り返し続けられる。
- 含まれている仮原文-1または語-1のすべてが比較され、一致するものがなかった場合、次に続く原文語が左端の原文語と見なされ、 最初の仮原文-1または語-1から始まって、比較周期が再び開始される。
- 仮原文-1と原始文中の原文との間で比較結果が一致した場合、原始文中のその原文が対応する仮原文-2によって置き換えられる。
仮原文-1と原始文中の原文との間で比較結果が一致した場合、原始文中のその文字は、語-2によって置き換えられる。または、語-2が空の場合は削除される。
比較の対象とされた原始文中の原文部分のうちの右端の原文語のすぐ後ろの語が、原始文中の左端の原文語であるとみなされて、最初の仮原文-1から始まって、比較周期が再び開始される。
- この処理は、原始文の原文中の右端の原文語がREPLACE文の範囲内の左端の原文語とみなされて比較され、照合結果が一致するかまたは比較周期を完了したところで、終了する。
- 原始文中の原文および仮原文-1の中に現れる注記行または空白行は、照合の目的上は無視される。原始文中の原文および仮原文-1の中の原文語の順序は、正書法に関する規則に従って判定される。詳細については、COBOLプログラムの概念の章の正書法の表現節を参照。原始文中の原文が仮原文-2によって置換される場合は、仮原文-2の中の注記行または空白行は結果の原始文にそのまま入れられる。原始文中にあって仮原文-1に一致する一連の原文語の中に現れる注記行または空白行は、結果の原始文には入れられない。
- すべてのCOPY文とREPLACE文の処理が完了した後でだけ、残りの原始コードの構文の正しさを判定できる。
- REPLACE文を処理した結果として原始文中に挿入される原文語は、正書法に関する規則に従って原始文中に配置される。詳細については、 COBOLプログラムの概念の章の参照形式節を参照。仮原文-2の原文語を原始文に挿入するときに、追加の空白を組み込むことができるのは、既に空白が空いている原文語の間だけである(原始行の間に想定される空白を含む)。
- REPLACE文を処理した結果として原始文中に行が追加される場合、追加される行の標識領域には置換される行の先頭の文字が入れられる。ただし、置換される行の先頭の文字がハイフン(-)である場合は、空白が入れられる。
仮原文-2の中の定数が1行に収まりきらないほど長く、かつその定数がデバッグ行上にない場合、あふれる分を収容する継続行が後ろに追加される。置換の結果、定数の続きがデバッグ行にかかる場合は、翻訳単位はエラーとなる。
-
REPLACING指定が含まれる場合は、登録集原文に EXEC HTML文が含まれていてはならない。 この規則に反すると、予期しない動作や構文エラーが発生する可能性がある。