STRING(連結)文

STRING(連結)文は、いくつかのデータ項目の内容の一部または全部をつなぎ合わせて、1つのデータ項目を作る。

一般形式

構文規則

  1. 各定数には、任意の表意定数を使用できる。ただし、ALLを除く。

  2. 定数は、すべて文字定数とする。一意名-4を除く一意名はすべて、明示的または暗黙的にUSAGE IS DISPLAYと記述されていなければならない。

  3. 一意名-3は、基本英数字データ項目とする。編集記号またはJUSTIFIED句を伴っていてはならない。

  4. 一意名-4は、整数の基本データ項目とする。その大きさは、一意名-3によって参照される領域の大きさに、1を加えた値を収められるほどでなければならない。一意名-4のPICTURE文字列には、"P" を含めることはできない。

  5. 一意名-1または一意名-2が基本数字データ項目である場合、PICTURE文字列には、"P" が含まれない整数として記述されていなければならない。

  6. 一意名-3を、部分参照してはならない。

  7. 一意名-3を、部分参照できる。

一般規則

  1. 一意名-1と定数-1は、送出し側項目を表わす。一意名-3は、受取り側項目を表わす。

  2. 一意名-2と定数-2は、転記の区切り文字を示す。SIZE指定を書くと、一意名-1または定数-1に指定したデータ項目の内容のすべてが転記される。区切り文字として表意定数を指定すると、それは1文字として扱われる。

  3. 定数-1または定数-2として表意定数を指定すると、暗黙的に用途がDISPLAYである1文字として扱われる。

  4. STRING文が実行されると、下記の規則に従ってデータが転記される。

    1. 英数字間の転記規則に従って、定数-1または一意名-1のデータ項目の内容が一意名-3に転記される。ただし、空白文字の穴埋めは行われない。(手続き部 - MERGE - OPENの章のMOVE(転記)文節を参照。)

    2. SIZE指定を書かずにDELIMITED指定を書くと、一意名-1によって参照されるデータ項目の内容または定数-1の値が受取り側データ項目に移送される。その順序はSTRING文に指定されたとおりであり、左端の文字から始まって左から右へ順に進み、データ項目の末尾に達するか、定数-2に指定された文字が出てくるか、一意名-2の内容によって指定された文字が出て来た時点で終了する。定数-2に指定された文字または一意名-2によって参照されたデータ項目に指定された文字は移送されない。

    3. DELIMITED BY指定にSIZEと書くと、定数-1の値または一意名-1のデータ項目の内容の全体が、一意名-3のデータ項目に転記される。送出し側のすべてのデータが転記されるか、または一意名-3のデータ項目の末尾に達した時点で、この転記処理は終了する。

  5. POINTER指定を書くと、プログラマが一意名-4を明示的に利用できるようになる。この初期値を設定するのは、プログラマの役割である。一意名-4の初期値は、1以上とする。

  6. POINTER指定を書かないと、暗黙的に一意名-4を指定し、その初期値を1としたものとして、以下の一般規則が適用される。

  7. 送出し側項目から受取り側項目に文字列が転記される処理は、文字が1つずつ取り出されて、一意名-3のデータ項目の内の一意名-4の値で示される文字位置に送られるように処理される。次の文字が送られる前に、一意名-4の値が1繰り上げられる。一意名-4の値は、STRING文の上記の処理以外では変えられることはない。

  8. STRING文の実行が終了した時点で、一意名-3の内容が変わっているのは、直接的に転記の対象となった部分だけである。一意名-3のそれ以外の部分には、STRING文を実行する前のデータ内容が残っている。.

  9. 各文字を転記する前の時点で、一意名-4のデータ項目の値が1より小さいか一意名-3のデータ項目の文字数よりも大きいと、それ以上転記は行われない。この場合、

    NOT ON OVERFLOW指定はあっても無視されて、

    STRING文の末尾に制御が移される。ただし、ON OVERFLOW指定があれば、無条件文-1に制御が移される。無条件文-1に制御が移された場合は、その中に記述されている文に関する規則に従って、プログラムの実行が進められる。手続き分岐文あるいは明示的に制御を移行させる条件文が実行されると、その文に関する規則に従って、制御が移される。そうでなければ、無条件文-1の実行が終わると、STRING文の末尾に制御が移される。

  10. STRING文の一般規則に従ってデータの転記が行われた後で、上記の一般規則9に示した状況が発生していなければ、ON OVERFLOW指定はあっても無視されて、STRING文の末尾に制御が移される。ただし、NOT ON OVERFLOW指定があれば、無条件文-2に制御が移される。無条件文-2に制御が移された場合は、その中に記述されている文に関する規則に従って、プログラムの実行が進められる。手続き分岐文あるいは明示的に制御を移行される条件文が実行されると、その文に関する規則に従って、制御が移される。そうでなければ、無条件文-2の実行が終わると、STRING文の末尾に制御が移される。

  11. END-STRING指定はSTRING文の範囲を区切る。(COBOL言語の概念の章の明示範囲符と暗黙範囲符節を参照。)