Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


STRING ステートメント

STRING ステートメントは、 2 つ以上のデータ項目やリテラルの内容の一部または全部を一緒にして 1 つのデータ項目にまとめます。

MOVE ステートメントをいくつも並べる代わりに 1 つの STRING ステートメントで済ませることができます。

フォーマット
構文図を読む構文図をスキップする>>-STRING------------------------------------------------------->
 
   .-------------------------------------------------------.  
   | .----------------.                                    |  
   V V                |                                    |  
>------+-ID-1-------+-+--DELIMITED--+----+--+-ID-2-------+-+---->
       '-リテラル-1-'               '-BY-'  +-リテラル-2-+    
                                            '-SIZE-------'    
 
>--INTO--ID-3--+-------------------------+---------------------->
               '-+------+--POINTER--ID-4-'  
                 '-WITH-'                   
 
>--+----------------------------------------+------------------->
   '-+----+--OVERFLOW--命令ステートメント-1-'  
     '-ON-'                                    
 
>--+---------------------------------------------+-------------->
   '-NOT--+----+--OVERFLOW--命令ステートメント-2-'  
          '-ON-'                                    
 
>--+------------+----------------------------------------------><
   '-END-STRING-'  
 
ID-1, リテラル-1
これは送り出しフィールド を表します。
DELIMITED BY 句
ストリングの限界を設定します。
ID-2リテラル-2
これらは区切り文字です。つまり、転送するデータを区切る文字です。
SIZE
この指定をすると送り出し領域全体を転送します。
 
INTO 句
受け取りフィールドを示します。
ID-3
これは受け取りフィールド を表します。
 
POINTER 句
受け取りフィールド内の文字位置を指します。ポインター・フィールドは、受け取りフィールドの使用法が DISPLAY、DISPLAY-1、または NATIONAL のときに、それぞれ相対的な英数字文字位置、DBCS 文字位置、国別文字位置を示します。
ID-4
ポインター・フィールド を表します。ID-4 は、受け取りフィールドの長さに 1 を加えた値を入れられる十分な大きさにする必要があります。
 

次の規則が適用されます。

添え字、参照変更、可変長、可変位置、および関数 ID の評価は、STRING ステートメントの実行開始時に 1 回のみ行われます。したがって、ID-3 または ID-4 が、STRING ステートメントの中で添え字、参照修飾子、または関数の引数として使用されているか、あるいは STRING ステートメントの中のいずれかの ID の長さまたは位置に影響する場合、これらの添え字、参照修飾子、可変長、可変位置、および関数について計算される値は、STRING ステートメントの結果によって影響されません。

ID-3 および ID-4 が同じストレージ域を占めると、 たとえそれらの ID が同じデータ記述項目によって定義されていても、未定義の結果が生じます。

ID-1 または ID-2 が、ID-3 または ID-4 と同じストレージ域を占めると、 たとえそれらの ID が同じデータ記述項目によって定義されていても、未定義の結果が生じます。

STRING ステートメントの処理の詳細については、以下の データ・フローを参照してください。

ON OVERFLOW 句

命令ステートメント-1
ここにあるステートメントは、 ポインター値が明示的または暗黙のうちに次のような値になると実行されます。

上記の状態のいずれかが生じると、オーバーフロー条件が起こり、 データはそれ以上転送されません。 ついで STRING 処理が終了し、NOT ON OVERFLOW 句が指定されている場合には、 それが無視され、制御は STRING ステートメントの終わりに移されるか、 または ON OVERFLOW 句が指定されていれば、命令ステートメント-1 に制御が移されます。

制御が命令ステートメント-1 に移された場合、命令ステートメント-1 に指定された各ステートメントの規則に従って、実行が継続されます。プロシージャー・ブランチまたは明示的な制御の移動を引き起こす条件ステートメントが実行される場合、制御はそれを起こすステートメントの規則に従って移されます。そうでない場合、命令ステートメント-1 の実行完了時に、 制御は STRING ステートメントの最後に転送されます。

STRING ステートメントの実行時にオーバーフロー条件を生じる状態にならなければ、 データ転送の完了後、ON OVERFLOW 句は指定されていても無視されます。 そして、制御は STRING ステートメントの終わりか、 または NOT ON OVERFLOW 句が指定されていれば命令ステートメント-2 に移されます。

制御が命令ステートメント-2 に移された場合、命令ステートメント-2 に指定された各ステートメントの規則に従って、実行が継続されます。明示的な制御の移動を起こす、プロシージャーのブランチ・ステートメントや条件ステートメントが実行された場合は、制御はそのステートメントの規則に従って移されます。それ以外の場合は、命令ステートメント-2 の実行が完了すると、 制御は STRING ステートメントの終わりに移されます。

 

END-STRING 句

この明示的範囲終了符号は、STRING ステートメントの範囲を区切るために使用されます。 END-STRING 句を使用することによって、 条件 STRING ステートメントを他の条件ステートメントの中にネストすることができます。 END-STRING 句は、命令 STRING ステートメントと共に使用することもできます。

詳しくは、範囲区切りステートメントを参照してください。

データ・フロー

STRING ステートメントの実行時に、文字は送り出しフィールドから受け取りフィールドに転送されます。 送り出しフィールドが処理される順序は、それらが指定されている順序です。次の規則が適用されます。

STRING ステートメントの実行が完了すると受け取りフィールドは、 データが移動された部分だけが変更されます。受け取りフィールドの残りの部分には、 STRING ステートメントの今回の実行以前に存在していたデータが入っています。

次に示す STRING ステートメントを実行すると得られる結果は、ステートメントの後の図に図解したようなものになります。

STRING ID-1 ID-2 DELIMITED BY ID-3
       ID-4 ID-5 DELIMITED BY SIZE
  INTO ID-7 WITH POINTER ID-8
END-STRING

説明の開始。この図は、STRING ステートメントの処理を示しています。説明の終わり。

詳細へのリンク。

ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)