戻る

出力サンプル -COBOLサンプル3(TESTCOBOL6)-

社員一覧表を出力するプログラムです。

元のソースコード

****************************************************************** * Author: * Date: * Purpose: * Tectonics: cobc ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. TESTCOBOL6. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPF ASSIGN TO 'EMPFILE' ORGANIZATION INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS EMPKEY. SELECT PRINTF ASSIGN TO 'EMPDATA.TXT'. 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). FD PRINTF. 01 PRINT-REC PIC X(22). WORKING-STORAGE SECTION. 01 PRINT-H. 03 FILLER PIC X(10) VALUE "社員番号". 03 FILLER PIC X(10) VALUE "社員名". 03 FILLER PIC XX VALUE X"0D0A". 01 PRINT-D. 03 FILLER PIC X(2) VALUE SPACE. 03 EMPKEY-P PIC X(3). 03 FILLER PIC X(5) VALUE SPACE. 03 EMPNAME-P PIC X(10). 03 FILLER PIC XX VALUE X"0D0A". 77 END-F PIC X. 77 人数 PIC ZZZ. 77 NIN PIC 999. PROCEDURE DIVISION. MAIN-PROCEDURE. DISPLAY "社員一覧表出力中" OPEN INPUT EMPF OUTPUT PRINTF. WRITE PRINT-REC FROM PRINT-H. PERFORM UNTIL END-F = "E" READ EMPF AT END MOVE "E" TO END-F NOT AT END DISPLAY NIN ADD 1 TO NIN MOVE EMPKEY TO EMPKEY-P MOVE EMPNAME TO EMPNAME-P WRITE PRINT-REC FROM PRINT-D END-READ END-PERFORM. MOVE NIN TO 人数. DISPLAY "社員は" 人数 "人". CLOSE EMPF PRINTF. STOP RUN. END PROGRAM TESTCOBOL6.

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

セクションブロック以外
%%{init: {'theme':'base','themeVariables':{ 'primaryColor':'white', 'primaryTextColor':'#000000', 'primaryBorderColor':'#000000', 'lineColor':'#000000', '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:#FFA500,stroke:#333,stroke-width:2px; classDef clrPattern3 fill:#ADFF2F,stroke:#333,stroke-width:2px; classDef clrPattern4 fill:#FFC0CB,stroke:#333,stroke-width:2px; classDef clrPattern5 fill:#FFC0CB,stroke:#333,stroke-width:2px; linkStyle default stroke:#000000,stroke-width:2px; s(処理開始)--> %%データ定義 22[/" 【出力】 46: DISPLAY ゛社員一覧表出力中゛"/]:::clrPattern3 23[/" 【入力】 47: OPEN INPUT EMPF OUTPUT PRINTF "/]:::clrPattern4 24[/" 【出力】 48: WRITE PRINT-REC FROM PRINT-H "/]:::clrPattern3 25[/" 【繰返し文開始】 49: PERFORM UNTIL EN D-F = ゛E゛ "\]:::clrPattern2 28{"50: READ文開始"}:::clrPattern1 30["51: MOVE ゛E゛ TO END-F"] 31["52: NOT AT END"] 32["53: ADD 1 TO NIN"] 33["54: MOVE EMPKEY TO EMPKEY-P "] 34["55: MOVE EMPNAME TO EMPNAME-P "] 35[/" 【出力】 56: WRITE PRINT-REC FROM PRINT-D "/]:::clrPattern3 36(("【READ文終了】 57: END-READ")) 37[\"58:繰返文終了"/]:::clrPattern2 38["59: MOVE NIN TO 人数"] 39[/" 【出力】 60: DISPLAY ゛社員は゛ 人数 ゛人゛"/]:::clrPattern3 40[/" 【CLOSE文】 61: CLOSE EMPF PRINTF"/]:::clrPattern3 %%ルート 22-->23 23-->24 24-->25 25-->|ループ開始|28 28-->|読み込み終了時の処理|30 28-->|読み込み実行時の処理|31 30-->36 31-->32 32-->33 33-->34 34-->35 35-->36 36-->37 37-->|ループ終了|25 37-->|ループ継続|38 38-->39 39-->40 style sg1 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg1["READ EMPF AT END"] 28 end