6.4.2 各ボックスから生成される文の生成規則
- <この項の構成>
- (1) 連接ボックス
- (2) 反復ボックス(UNTIL型)
- (3) 反復ボックス(WHILE型)
- (4) 選択ボックス
- (5) 多分岐ボックス
- (6) 出口ボックス
- (7) 外部コールボックス
- (8) 内部コールボックス
- (9) ユーザボックス
- (10) 無条件分岐ボックス
- (11) ブロックコメントボックス
- (12) ラベルボックス
- (13) 処理ボックス
(1) 連接ボックス
- 次に示す文以外の文が生成されます。
CALL文,EVALUATE文,EXIT文,GO TO文,IF文,PERFORM文,SEARCH文及びSTOP文
- 無条件文に条件指定があるときは,明示範囲符(END-動詞)が自動生成されます。
- ボックス中の記述が「EXEC」で始まるときは,ボックスの内容がそのままソースプログラム上に展開された後,「END-EXEC」が自動生成されます。
- 空ボックスの場合は,シーケンス番号だけが出力されます。
連接ボックスと文との関係を図6-9に示します。
図6-9 連接ボックスと文との関係
![[図データ]](figure/zu060900.gif)
(2) 反復ボックス(UNTIL型)
(3) 反復ボックス(WHILE型)
- TEST BEFOREを指定する内PERFORM文又は何も指定しない内PERFORM文が生成されます。
- 「END-PERFORM」は,すべて自動生成されます。
- ボックス中で「PERFORM」が省略されていても,ソースプログラム中には「PERFORM」が自動生成されます。
- 空ボックスの場合は,「PERFORM」と「END-PERFORM」が生成されます。
反復ボックス(WHILE型)と文との関係を図6-11に示します。
図6-11 反復ボックス(WHILE型)と文との関係
![[図データ]](figure/zu061100.gif)
(4) 選択ボックス
- IF文が生成されます。
- ボックス内で「IF」が省略されていても,ソースプログラム中には「IF」が自動生成されます。
- 「THEN」,「ELSE」,及び「END-IF」は自動生成されます。
- 「THEN」,「ELSE」はこの前後改行され,前の行の先頭から2カラムずつ右にずらして生成されます。
- 空ボックスの場合は,「IF」,「THEN」,「ELSE」,及び「END-IF」が生成されます。
- 分岐先にボックスがない場合,及び分岐先のボックスが空ボックスの場合,「CONTINUE」が自動生成されます。
選択ボックスと文との関係を図6-12に示します。
図6-12 選択ボックスと文との関係
![[図データ]](figure/zu061200.gif)
(5) 多分岐ボックス
- EVALUATE文,又はSEARCH文が生成されます。
- ボックス内に「EVALUATE」,「SEARCH」を記述していない場合,「EVALUATE」は自動生成されますが,「SEARCH」は生成されません。
「SEARCH」は省略しないで,必ずボックス中に記述してください。
- 各ボックスから生成されるソースプログラムは,その内容によって自動的に改行されます。改行された行は,前の行の先頭から2カラムずつずらして生成されます。
- 空ボックスの場合は,「EVALUATE」と「END-EVALUATE」が生成されます。
- 分岐先にボックスがない場合,及び分岐先のボックスが空ボックスの場合,「WHEN」,「CONTINUE」が自動生成されます。
多分岐ボックスと文との関係を図6-13に示します。
図6-13 多分岐ボックスと文との関係
![[図データ]](figure/zu061300.gif)
(6) 出口ボックス
- STOP文,EXIT文,EXIT PROGRAM文,又はEXIT PERFORM文が生成されます。
- 空ボックスの場合は,シーケンス番号だけが出力されます。
出口ボックスと文との関係を図6-14に示します。
図6-14 出口ボックスと文との関係
![[図データ]](figure/zu061400.gif)
(7) 外部コールボックス
- CALL文が生成されます。
- ボックス内に「CALL」が省略されていても,ソースプログラム中には「CALL」が自動生成されます。
- 「END-CALL」は必要に応じて自動生成されます。
- 空ボックスの場合は,「CALL」だけが生成されます。
外部コールボックスと文との関係を図6-15に示します。
図6-15 外部コールボックスと文との関係
![[図データ]](figure/zu061500.gif)
(8) 内部コールボックス
- 外PERFORM文が生成されます。
- ボックス内に「PERFORM」が省略されていても,ソースプログラム中には「PERFORM」が自動生成されます。
- 空ボックスの場合は,「PERFORM」が生成されます。
内部コールボックスと文との関係を図6-16に示します。
図6-16 内部コールボックスと文との関係
![[図データ]](figure/zu061600.gif)
(9) ユーザボックス
- ユーザボックス内の文が生成されます。
- 文の前後にはSEWBコメント(*****U SEWB)が生成されます。
- 空ボックスの場合は,空白行を1行挟んでコメントだけが生成されます。
ユーザボックスと文との関係を図6-17に示します。
図6-17 ユーザボックスと文との関係
![[図データ]](figure/zu061700.gif)
(10) 無条件分岐ボックス
- GO TO文が生成されます。
- ボックス内に「GO TO」が省略されている場合,又は「GO」だけが指定されている場合でも,ソースプログラム中には「GO TO」が自動生成されます。
- 空ボックスの場合は,「GO TO」が生成されます。
無条件分岐ボックスと文との関係を図6-18に示します。
図6-18 無条件分岐ボックスと文との関係
![[図データ]](figure/zu061800.gif)
(11) ブロックコメントボックス
- ブロックコメントボックスに記述した内容が生成されます。
- コメントは,ボックスのレベルに関係なく,7カラム目に「*」が生成され,その後8カラム目から生成されます。ブロックコメント領域中のコメントの先頭文字が「*」や「/」の場合でも,その前に「*」が生成されます。
- 1行の文字数が半角で73文字を超えた場合は,超過分が切り捨てられて生成されます。
- 空ボックスの場合は,7カラム目に「*」だけが生成されます。
ブロックコメントボックスと文との関係を図6-19に示します。
図6-19 ブロックコメントボックスと文との関係
![[図データ]](figure/zu061900.gif)
(12) ラベルボックス
- ラベルボックスに記述した内容が,8カラム目から生成されます。
- ピリオドは自動生成されます。
- ユーザボックスの上にあるラベルボックスの内容は,ユーザボックス生成時に付くSEWBコメントの前に生成されます。
- 生成できるラベル名の長さには制限があります。ラベル名の長さ制限は,オプション設定で指定するレコード形式によって異なります。ラベル名の長さの制限値については,「付録A 制限値,限界値」を参照してください。
なお,ラベル名の長さが制限値を超えた場合は,超過分が切り捨てられて生成されます。
- 空ボックスの場合は,シーケンス番号だけが出力されます。
ラベルボックスと文との関係を図6-20に示します。
図6-20 ラベルボックスと文との関係
![[図データ]](figure/zu062000.gif)
(13) 処理ボックス
- セクション構成図の場合は,処理ボックス中のセクション名が,SEWBコメントとして生成されます。ただし,処理ボックス中のセクション名とタイトル領域のセクション名とが同じ場合は,SEWBコメントは生成されません。
処理ボックスと文との関係を図6-21に示します。
図6-21 処理ボックスと文との関係
![[図データ]](figure/zu062100.gif)