戻る

出力サンプル -TESTCOBOL5(日本語表示版) ―

元のソースコード

****************************************************************** * 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


フローチャート図で表現したもの

セクション:MAIN
%%{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-RTN
%%{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
セクション:MAIN-RTN
%%{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
セクション:END-RTN
%%{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
セクション:UPD-RTN
%%{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