戻る

出力サンプル -TESTCOBOL7-

元のソースコード

****************************************************************** * Author: * Date: * Purpose: * Tectonics: cobc ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. TESTCOBOL7. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPFW ASSIGN TO 'EMPFILEW' ORGANIZATION INDEXED ACCESS MODE IS RANDOM RECORD KEY IS EMPKEY. DATA DIVISION. FILE SECTION. FD EMPFW. 01 EMPF-REC. 03 EMPKEY PIC X(3). 03 EMPNO REDEFINES EMPKEY PIC 9(3). 03 EMPNAME PIC X(10). 03 EMPBDATE PIC X(8). WORKING-STORAGE SECTION. 01 CHECKDATE. 03 DATECENT PIC 9(2). 03 DATEINPUT PIC X(6). 03 CHECKDATEW REDEFINES DATEINPUT. 05 DATEYY PIC 9(2). 05 DATEMM PIC 9(2). 05 DATEDD PIC 9(2). 01 CDATE. 03 CYY PIC 9(2). 03 CMM PIC 9(2). 03 CDD PIC 9(2). 01 FLAG PIC 9. 01 TABLEWORK. 03 DDTBL PIC X(24) VALUE "312931303130313130313031". 03 DDT REDEFINES DDTBL PIC 9(2) OCCURS 12. 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 EMPFW. ACCEPT CDATE FROM DATE. INIT-E. EXIT. MAIN-RTN SECTION. MAIN-S. DISPLAY "社員番号を入れてください". ACCEPT EMPNO. IF EMPNO = 999 GO TO MAIN-E. DISPLAY "社員名をいれてください". ACCEPT EMPNAME. MOVE 1 TO FLAG PERFORM UNTIL FLAG = 0 DISPLAY "生年月日を6桁でいれてください。" ACCEPT DATEINPUT PERFORM CHECK-DATE-RTN END-PERFORM. MOVE CHECKDATE TO EMPBDATE. WRITE EMPF-REC. MAIN-E. EXIT. END-RTN SECTION. END-S. CLOSE EMPFW. END-E. EXIT. CHECK-DATE-RTN SECTION. CHECK1-S. MOVE 0 TO FLAG. IF DATEYY NOT NUMERIC THEN MOVE 1 TO FLAG ELSE IF DATEYY > CYY THEN MOVE 19 TO DATECENT ELSE MOVE 20 TO DATECENT. IF DATEMM NOT NUMERIC THEN MOVE 1 TO FLAG ELSE IF DATEMM < 0 OR DATEMM > 12 THEN MOVE 1 TO FLAG. IF DATEDD NOT NUMERIC THEN MOVE 1 TO FLAG ELSE IF DATEDD > DDT(DATEMM) THEN MOVE 1 TO FLAG. IF FLAG = 1 THEN DISPLAY "生年月日が正しくない". CHECK1-E. EXIT. END PROGRAM TESTCOBOL7.
セクション関係図
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 CHECK-DATE-RTN } class 4["セクションNO:4 END-RTN"] class 5["セクションNO:5 CHECK-DATE-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; %%データ項目 21(["46行目 セクション開始"]) 22[/"48行目 「社員ファイル作成」を表示する"/]:::clrPattern5 23[["49行目 INIT-RTNセクションを1回だけ実行する"]]:::clrPattern3 24[/"50行目 従業員番号 = 999が満たされるまでMAIN-RTNセクシ ョンを繰り返す "\]:::clrPattern2 25[["50行目 MAIN-RTNセクションを1回だけ実行する"]]:::clrPattern3 26[\"50行目 繰返文終了"/]:::clrPattern2 27[["51行目 END-RTNセクションを1回だけ実行する"]]:::clrPattern3 28["52行目 実行を終了する"] 29(["54行目 セクション終了"]) %%ルート設定 21-->22 22-->23 23-->24 24-->25 25-->26 26-->|繰返文を継続する|24 26-->|繰返文を終了する|27 27-->28 28-->29
セクション: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; %%データ項目 30(["55行目 セクション開始"]) 31[/"57行目 OUTPUTモードで従業員ファイル書き込みを開く"/]:::clrPattern4 32[/"58行目 現在の日付を入力する"/]:::clrPattern4 33(["61行目 セクション終了"]) %%ルート設定 30-->31 31-->32 32-->33
セクション: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; %%データ項目 34(["62行目 セクション開始"]) 35[/"64行目 「社員番号を入れてください」を表示する"/]:::clrPattern5 36[/"65行目 従業員番号を入力する"/]:::clrPattern4 37{"66行目 条件文"}:::clrPattern1 39(["67行目 条件を満たす場合"]) 40[/"67行目 MAIN-Eラベルへ制御を移す(GOTO)"/]:::clrPattern5 41(["67行目 条件文を終了する"]) 42[/"68行目 「社員名をいれてください」を表示する"/]:::clrPattern5 43[/"69行目 従業員名を入力する"/]:::clrPattern4 44["70行目 フラグに1を代入する"] 45[/"71行目 フラグ = 0が満たされるまで繰り返す"\]:::clrPattern2 46[/"72行目 「生年月日を6桁でいれてください。」を表示する"/]:::clrPattern5 47[/"74行目 入力日付を入力する"/]:::clrPattern4 48[["75行目 CHECK-DATE-RTNセクションを1回だけ実行する"]]:::clrPattern3 49[\"76行目 繰返文を終了する"/]:::clrPattern2 50["77行目 従業員の生年月日にチェック日付を代入する"] 51[/"78行目 従業員レコードに書き込む"/]:::clrPattern5 52[/"79行目 GOTO先段落|MAIN-E"/]:::clrPattern4 53(["80行目 セクション終了"]) %%ルート設定 34-->35 35-->36 36-->37 37-->|条件文 真 |39 37-->|条件文 偽 |41 39-->40 40-->52 41-->42 42-->43 43-->44 44-->45 45-->46 46-->47 47-->48 48-->49 49-->|繰返文を継続する|45 49-->|繰返文を終了する|50 50-->51 51-->52 52-->53 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[ ] 37 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; %%データ項目 54(["81行目 セクション開始"]) 55[/"83行目 従業員ファイル書き込みを閉じる"/]:::clrPattern5 56(["85行目 セクション終了"]) %%ルート設定 54-->55 55-->56
セクション:CHECK-DATE-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; %%データ項目 57(["86行目 セクション開始"]) 58["88行目 フラグに0を代入する"] 59{"89行目 条件文"}:::clrPattern1 61(["90行目 条件を満たす場合"]) 62["90行目 フラグに1を代入する"] 63(["91行目 そうでない場合"]) 64{"92行目 条件文"}:::clrPattern1 66(["93行目 条件を満たす場合"]) 67["93行目 西暦世紀に19を代入する"] 68(["94行目 そうでない場合"]) 69["94行目 西暦世紀に20を代入する"] 70(["94行目 条件文を終了する"]) 71(["94行目 条件文を終了する"]) 72{"95行目 条件文"}:::clrPattern1 74(["96行目 条件を満たす場合"]) 75["96行目 フラグに1を代入する"] 76(["97行目 そうでない場合"]) 77{"97行目 条件文"}:::clrPattern1 79(["98行目 条件を満たす場合"]) 80["98行目 フラグに1を代入する"] 81(["98行目 条件文を終了する"]) 82(["98行目 条件文を終了する"]) 83{"99行目 条件文"}:::clrPattern1 85(["100行目 条件を満たす場合"]) 86["100行目 フラグに1を代入する"] 87(["101行目 そうでない場合"]) 88{"101行目 条件文"}:::clrPattern1 90(["102行目 条件を満たす場合"]) 91["102行目 フラグに1を代入する"] 92(["102行目 条件文を終了する"]) 93(["102行目 条件文を終了する"]) 94{"103行目 条件文"}:::clrPattern1 96(["104行目 条件を満たす場合"]) 97[/"104行目 「生年月日が正しくない」を表示する"/]:::clrPattern5 98(["104行目 条件文を終了する"]) 99(["106行目 セクション終了"]) %%ルート設定 57-->58 58-->59 59-->|条件文 真 |61 59-->|条件文 偽 |63 61-->62 62-->71 63-->64 64-->|条件文 真 |66 64-->|条件文 偽 |68 66-->67 67-->70 68-->69 69-->70 70-->71 71-->72 72-->|条件文 真 |74 72-->|条件文 偽 |76 74-->75 75-->82 76-->77 77-->|条件文 真 |79 77-->|条件文 偽 |81 79-->80 80-->81 81-->82 82-->83 83-->|条件文 真 |85 83-->|条件文 偽 |87 85-->86 86-->93 87-->88 88-->|条件文 真 |90 88-->|条件文 偽 |92 90-->91 91-->92 92-->93 93-->94 94-->|条件文 真 |96 94-->|条件文 偽 |98 96-->97 97-->98 98-->99 style j1 color:red,fill-opacity:0, stroke-opacity:0 style j2 color:red,fill-opacity:0, stroke-opacity:0 subgraph j1["年(2桁) が数値ではない場合を評価する"] subgraph j2[ ] 59 end end style j3 color:red,fill-opacity:0, stroke-opacity:0 style j4 color:red,fill-opacity:0, stroke-opacity:0 subgraph j3["年(2桁) > 現在の年(2桁)を評価する"] subgraph j4[ ] 64 end end style j5 color:red,fill-opacity:0, stroke-opacity:0 style j6 color:red,fill-opacity:0, stroke-opacity:0 subgraph j5["月(2桁) が数値ではない場合を評価する"] subgraph j6[ ] 72 end end style j7 color:red,fill-opacity:0, stroke-opacity:0 style j8 color:red,fill-opacity:0, stroke-opacity:0 subgraph j7["月(2桁) < 0 OR 月(2桁) > 12を評価する"] subgraph j8[ ] 77 end end style j9 color:red,fill-opacity:0, stroke-opacity:0 style j10 color:red,fill-opacity:0, stroke-opacity:0 subgraph j9["日 が数値ではない場合を評価する"] subgraph j10[ ] 83 end end style j11 color:red,fill-opacity:0, stroke-opacity:0 style j12 color:red,fill-opacity:0, stroke-opacity:0 subgraph j11["日 > 月ごとの日数テーブル(月(2桁))を評価する"] subgraph j12[ ] 88 end end style j13 color:red,fill-opacity:0, stroke-opacity:0 style j14 color:red,fill-opacity:0, stroke-opacity:0 subgraph j13["フラグ = 1を評価する"] subgraph j14[ ] 94 end end