元のソースコード
******************************************************************
* Author:
* Date:
* Purpose:
* Tectonics: cobc
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCOBOL5.
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.
01 WORKAREA.
03 WRKNAME PIC X(10).
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 I-O EMPF.
INIT-E.
EXIT.
MAIN-RTN SECTION.
MAIN-S.
DISPLAY "社員番号を入れてください".
ACCEPT EMPNO.
IF EMPNO = 999
GO TO MAIN-E.
READ EMPF KEY IS EMPKEY
INVALID
DISPLAY "《追加》"
NOT INVALID
PERFORM UPD-RTN
GO TO MAIN-E
END-READ.
DISPLAY "社員名をいれてください".
ACCEPT EMPNAME.
WRITE EMPF-REC.
MAIN-E.
EXIT.
END-RTN SECTION.
END-S.
CLOSE EMPF.
END-E.
EXIT.
UPD-RTN SECTION.
UPD-S.
DISPLAY "《更新》".
DISPLAY "社員名をいれてください:" EMPNAME.
ACCEPT WRKNAME.
EVALUATE WRKNAME
WHEN ""
CONTINUE
WHEN "D"
DELETE EMPF
DISPLAY "削除しました"
WHEN OTHER
MOVE WRKNAME TO EMPNAME
REWRITE EMPF-REC
END-EVALUATE.
UPD-E.
EXIT.
END PROGRAM TESTCOBOL5.
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"] {
+PERFORM UPD-RTN
}
class 4["セクションNO:4
END-RTN"]
class 5["セクションNO:5
UPD-RTN"]
%%ルート設定
1 -->2:perform
1 -->3:perform
1 -->4:perform
3 -->5: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;
%%データ項目
7(["29行目
セクション開始"])
8[/"31行目
「社員ファイル修正」を表示する"/]:::clrPattern5
9[["32行目
INIT-RTNセクションを1回だけ実行する"]]:::clrPattern3
10[/"33行目
従業員番号 = 999が満たされるまでMAIN-RTNセクシ
ョンを繰り返す
"\]:::clrPattern2
11[["33行目
MAIN-RTNセクションを1回だけ実行する"]]:::clrPattern3
12[\"33行目
繰返文終了"/]:::clrPattern2
13[["34行目
END-RTNセクションを1回だけ実行する"]]:::clrPattern3
14["35行目
実行を終了する"]
15(["37行目
セクション終了"])
%%ルート設定
7-->8
8-->9
9-->10
10-->11
11-->12
12-->|繰返文を継続する|10
12-->|繰返文を終了する|13
13-->14
14-->15
%%{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;
%%データ項目
16(["38行目
セクション開始"])
17[/"40行目
I-Oモードで従業員ファイルを開く"/]:::clrPattern4
18(["42行目
セクション終了"])
%%ルート設定
16-->17
17-->18
%%{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;
%%データ項目
19(["43行目
セクション開始"])
20[/"45行目
「社員番号を入れてください」を表示する"/]:::clrPattern5
21[/"46行目
従業員番号を入力する"/]:::clrPattern4
22{"47行目
条件文"}:::clrPattern1
24(["48行目
条件を満たす場合"])
25[/"48行目
MAIN-Eラベルへ制御を移す(GOTO)"/]:::clrPattern5
26(["48行目
条件文を終了する"])
27[/"49行目
従業員ファイルからKEYを使ってレコードを読み取る"/]:::clrPattern4
28{"50行目
条件文"}:::clrPattern1
30[/"51行目
「《追加》」を表示する"/]:::clrPattern5
31["52行目
ファイル操作に成功した場合"]
32[["53行目
UPD-RTNセクションを1回だけ実行する"]]:::clrPattern3
33[/"54行目
MAIN-Eラベルへ制御を移す(GOTO)"/]:::clrPattern5
34["55行目
読み込み終了する"]
35[/"56行目
「社員名をいれてください」を表示する"/]:::clrPattern5
36[/"57行目
従業員名を入力する"/]:::clrPattern4
37[/"58行目
従業員レコードに書き込む"/]:::clrPattern5
38[/"59行目
GOTO先段落|MAIN-E"/]:::clrPattern4
39(["60行目
セクション終了"])
%%ルート設定
19-->20
20-->21
21-->22
22-->|条件文 真 |24
22-->|条件文 偽 |26
24-->25
25-->38
26-->27
27-->28
28{データの
妥当性検査}
28-->|ファイル操作に失敗した場合|28True[50行目
操作に失敗した場合]--->30
28-->|ファイル操作に成功した場合|31
30-->34
31-->32
32-->33
33-->38
34-->35
35-->36
36-->37
37-->38
38-->39
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[ ]
22
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;
%%データ項目
40(["61行目
セクション開始"])
41[/"63行目
従業員ファイルを閉じる"/]:::clrPattern5
42(["65行目
セクション終了"])
%%ルート設定
40-->41
41-->42
%%{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;
%%データ項目
43(["66行目
セクション開始"])
44[/"68行目
「《更新》」を表示する"/]:::clrPattern5
45[/"69行目
「社員名をいれてください:」 従業員名を表示する"/]:::clrPattern5
46[/"70行目
入力従業員名を入力する"/]:::clrPattern4
47["71行目: 選択文を開始する
入力従業員名の値を評価して条件に応じた処理を行う"]:::clrPattern2
48["72行目
入力従業員名の値が 空文字列 の場合"]:::clrPattern1
49["73行目
何もしない"]
50(["73行目
条件文を終了する"])
51["74行目
入力従業員名の値が「D」の場合"]:::clrPattern1
52[/"75行目
従業員ファイルのレコードを削除する"/]:::clrPattern5
53[/"76行目
「削除しました」を表示する"/]:::clrPattern5
54(["76行目
条件文を終了する"])
55["77行目
入力従業員名の値がその他の場合"]:::clrPattern1
56["78行目
従業員名に入力従業員名を代入する"]
57[/"79行目
従業員レコードを更新する"/]:::clrPattern5
58(["79行目
条件文を終了する"])
59["80行目
選択文を終了する"]:::clrPattern2
60(["82行目
セクション終了"])
%%ルート設定
43-->44
44-->45
45-->46
46-->47
47-->|WHEN文へ|48
47-->|WHEN文へ|51
47-->|WHEN文へ|55
48-->49
49-->50
50-->59
51-->52
52-->53
53-->54
54-->59
55-->56
56-->57
57-->58
58-->59
59-->60