元のソースコード
******************************************************************
* Author:
* Date:
* Purpose:
* Tectonics: cobc
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCOBOL4.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPF ASSIGN TO 'EMPFILE'
ORGANIZATION INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS EMPKEY.
DATA DIVISION.
FILE SECTION.
FD EMPF.
01 EMPF-REC.
03 EMPKEY PIC X(3).
03 EMPNO REDEFINES EMPKEY
PIC 9(3).
03 EMPNAME PIC X(10).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN SECTION.
MAIN-PROCEDURE.
DISPLAY "社員ファイル作成".
PERFORM INIT-RTN.
PERFORM MAIN-RTN UNTIL EMPNO = 999.
PERFORM END-RTN.
STOP RUN.
MAIN-END.
EXIT.
INIT-RTN SECTION.
INIT-S.
OPEN OUTPUT EMPF.
INIT-E.
EXIT.
MAIN-RTN SECTION.
MAIN-S.
DISPLAY "社員番号を入れてください".
ACCEPT EMPNO.
IF EMPNO = 999
GO TO MAIN-E.
DISPLAY "社員名をいれてください".
ACCEPT EMPNAME.
WRITE EMPF-REC.
MAIN-E.
EXIT.
END-RTN SECTION.
END-S.
CLOSE EMPF.
END-E.
EXIT.
END PROGRAM TESTCOBOL4.
classDiagram
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'#ececff',
'primaryTextColor':'black',
'primaryBorderColor':'#000000',
'lineColor':'black',
'textColor':'black',
'fontSize':'15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
%%データ設定
class 1["セクションNO:1
MAIN"] {
+PERFORM INIT-RTN
+PERFORM MAIN-RTN
+PERFORM END-RTN
}
class 2["セクションNO:2
INIT-RTN"]
class 3["セクションNO:3
MAIN-RTN"]
class 4["セクションNO:4
END-RTN"]
%%ルート設定
1 -->2:perform
1 -->3:perform
1 -->4:perform
フローチャート図で表現したもの
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize''15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#ADFF2F,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ項目
5(["26行目
セクション開始"])
6[/"28行目
「社員ファイル作成」を表示する"/]:::clrPattern5
7[["29行目
INIT-RTNセクションを1回だけ実行する"]]:::clrPattern3
8[/"30行目
従業員番号 = 999が満たされるまでMAIN-RTNセクシ
ョンを繰り返す
"\]:::clrPattern2
9[["30行目
MAIN-RTNセクションを1回だけ実行する"]]:::clrPattern3
10[\"30行目
繰返文終了"/]:::clrPattern2
11[["31行目
END-RTNセクションを1回だけ実行する"]]:::clrPattern3
12["32行目
実行を終了する"]
13(["34行目
セクション終了"])
%%ルート設定
5-->6
6-->7
7-->8
8-->9
9-->10
10-->|繰返文を継続する|8
10-->|繰返文を終了する|11
11-->12
12-->13
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize''15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#ADFF2F,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ項目
14(["35行目
セクション開始"])
15[/"37行目
OUTPUTモードで従業員ファイルを開く"/]:::clrPattern4
16(["39行目
セクション終了"])
%%ルート設定
14-->15
15-->16
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize''15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#ADFF2F,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ項目
17(["40行目
セクション開始"])
18[/"42行目
「社員番号を入れてください」を表示する"/]:::clrPattern5
19[/"43行目
従業員番号を入力する"/]:::clrPattern4
20{"44行目
条件文"}:::clrPattern1
22(["45行目
条件を満たす場合"])
23[/"45行目
MAIN-Eラベルへ制御を移す(GOTO)"/]:::clrPattern5
24(["45行目
条件文を終了する"])
25[/"46行目
「社員名をいれてください」を表示する"/]:::clrPattern5
26[/"47行目
従業員名を入力する"/]:::clrPattern4
27[/"48行目
従業員レコードに書き込む"/]:::clrPattern5
28[/"49行目
GOTO先段落|MAIN-E"/]:::clrPattern4
29(["50行目
セクション終了"])
%%ルート設定
17-->18
18-->19
19-->20
20-->|条件文 真 |22
20-->|条件文 偽 |24
22-->23
23-->28
24-->25
25-->26
26-->27
27-->28
28-->29
style j1 color:red,fill-opacity:0, stroke-opacity:0
style j2 color:red,fill-opacity:0, stroke-opacity:0
subgraph j1["従業員番号 = 999を評価する"]
subgraph j2[ ]
20
end
end
%%{init: {'theme':'base','themeVariables':{
'primaryColor':'white',
'primaryTextColor':'#000000',
'primaryBorderColor':'#000000',
'lineColor':'#808080',
'textColor':'#6A7FABCC',
'fontSize''15px'}}}%%
%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
graph TD;
classDef default fill:#FFFFE0,stroke:#333,stroke-width:2px;
classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px;
classDef clrPattern2 fill:#F0E68C,stroke:#333,stroke-width:2px;
classDef clrPattern3 fill:#ADD8E6,stroke:#333,stroke-width:2px;
classDef clrPattern4 fill:#FFC0CB,stroke:#333,stroke-width:2px;
classDef clrPattern5 fill:#ADFF2F,stroke:#333,stroke-width:2px;
linkStyle default stroke:#808080,stroke-width:2px;
%%データ項目
30(["51行目
セクション開始"])
31[/"53行目
従業員ファイルを閉じる"/]:::clrPattern5
32(["55行目
セクション終了"])
%%ルート設定
30-->31
31-->32