Files
cobol-tna-system/詳細設計書/詳細設計書_JIN06SRT.md

5.7 KiB
Raw Permalink Blame History

JIN06SRT 詳細設計書

プログラム概要

項目 内容
プログラムID JIN06SRT(人事→JINji, 06, 社員データ並替→SRT
プログラムタイプ 34SORT
機能 EMP-VALID200B)を INPUT PROCEDURE で読込み、EMP-ID 昇順に SORT し、OUTPUT PROCEDURE で RETURN して SORTED-EMP へ書出す
CALL方式 メインプログラム(JCLからCALL
DBアクセス なし
使用サブプログラム SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド)

前提条件

NO 対象ファイル 条件
1 EMP-VALID JIN01KNS でチェック済のデータであること
2 EMP-VALID 並替は COBOL の SORT 文で実施(本プログラム内)

キーワードカバー目的で、並替は COBOL の SORT 文(INPUT/OUTPUT PROCEDURE)を明示使用する。本番では JCL の SORTWK* でソートワーク領域を確保する。

使用ファイル一覧

NO 使用ファイル名 識別子 DD名 I/O COPY群 形式 レコード長 媒体 備考
1 EMP-VALID R01 JIN06R01 I JIN01REC FB 200 PS チェック済社員データ
2 SORTED-EMP W01 JIN06W01 O JIN01REC FB 200 PS 並替済社員データ
3 VALID-ERROR W02 JIN06W02 O VALID-ERROR-REC FB 80 PS 上限超過エラー
4 SORTWORK SD SORTWK01 JIN01REC FB 200 ワーク SORTファイル

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件
1 SORTWORK EMP-ID 昇順 ON ASCENDING KEY

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 運用日付取得SUB SUB01DAT JINDATAC
2 メッセージ編集出力SUB SUB02MSG JINMSGAC
3 ABEND処理SUB SUB03END JINENDAC

処理詳細

段落一覧(SOR規約名)

段落名 機能
0000MAJCOLSOR メインコントロール(初期→SORT→終了)
1000ITTSOR 初期処理(開始MSG・初期化・運用日付・出力OPEN)
2000MAJSOR SORT実行(ON ASCENDING KEY + INPUT/OUTPUT PROCEDURE + 復帰コード判定)
2110INPUTSOR INPUT PROCEDUREEOF 到達まで読込ループ + R01読込→RELEASE
2110READSOR 1件読込→SORTレコード転記→RELEASE / 上限超過はVALID-ERROR
2120OUTPUSOR OUTPUT PROCEDURERETURN→SORTED-EMP書出)
3000STPSOR 終了処理(統計表示・CLOSE・終了MSG)
4000MSGOUTSOR メッセージ編集出力SUB呼出
9000ERRSOR エラー処理(ABEND

処理フロー

1. 0000MAJCOLSOR
   1-1. PERFORM 1000ITTSOR(初期処理)
   1-2. PERFORM 2000MAJSORSORT処理)
   1-3. PERFORM 3000STPSOR(終了処理)
   1-4. GOBACK

2. 1000ITTSOR(初期処理)
   2-1. DISPLAY 'JIN06SRT START' UPON CONSOLE
   2-2. SUB02MSG で開始メッセージ(001)出力
   2-3. INITIALIZE WRKARA, CUNARA
   2-4. CALL SUB01DAT(運用日付取得)。異常時は 4000MSGOUTSOR9000ERRSOR
   2-5. OPEN OUTPUT W01OUTFIL, W02OUTFIL

3. 2000MAJSORSORT実行)
   3-1. SORT SORTWORK
        ON ASCENDING KEY SREMP-ID
        INPUT PROCEDURE 2110INPUTSOR
        OUTPUT PROCEDURE 2120OUTPUSOR
   3-2. MOVE RETURN-CODE TO WRK-SORT-STAT
   3-3. WRK-SORT-STAT ≠ 0 → 4000MSGOUTSOR + CALL SUB03ENDABEND

4. 2110INPUTSORINPUT PROCEDURE
   4-1. OPEN INPUT R01INNFIL
   4-2. PERFORM UNTIL WRK-R01EOF-YEOF 到達まで 2110READSOR を繰返す)
        ※READ は EOF まで行い、上限超過(WRK-SORT-CNT > 999)分を VALID-ERROR へ出力する
   4-3. CLOSE R01INNFIL

5. 2110READSOR(読込・RELEASE
   5-1. WRK-R01EOF-Y なら EXIT SECTION(上限到達後の空処理)
   5-2. READ R01INNFIL
        AT END → WRK-R01EOF='1'
        NOT AT END → CUN-R01INN +1、WRK-SORT-CNT +1
        R01→SR へ全項目転記
        WRK-SORT-CNT <= 999 → RELEASE SORTREC、CUN-SORT-IN +1
        WRK-SORT-CNT >  999 → VALID-ERROR9999WRITE、CUN-W02OUT +1

6. 2120OUTPUSOROUTPUT PROCEDURE
   6-1. PERFORM UNTIL 1=2
        RETURN SORTWORK RECORD
          AT END → EXIT PERFORM
          NOT AT END → SR→W01 へ転記 → WRITE W01OUTREC、CUN-W01OUT +1
        END-RETURN

7. 3000STPSOR(終了処理)
   7-1. DISPLAY READ/SORT/OUT/ERROR 件数 UPON CONSOLE
   7-2. CLOSE W01OUTFIL, W02OUTFIL
   7-3. SUB02MSG で終了メッセージ(002)出力

8. 9000ERRSOR(エラー処理)
   8-1. CALL SUB03ENDABEND

上限超過時のエラー出力(W02/VALID-ERROR

項目名 設定値 PIC 備考
ERR-PROGRAMID CNS-PRGIDX X(8) 'JIN06SRT'
ERR-EMP-ID SREMP-ID X(8) 超過レコードの社員番号
ERR-CODE '9999' X(4) 上限超過
ERR-DETAIL 'SORT LIMIT OVER' X(60)

カバレッジ対象キーワード

予約語/記号 区分 使用箇所
SORT 予約語 2000MAJSOR: SORT ファイル ON ASCENDING KEY + INPUT/OUTPUT PROCEDURE
RELEASE 予約語 2110READSOR: INPUT PROCEDURE 内で RELEASE 送出
RETURN 予約語 2120OUTPUSOR: RETURN SORTWORK RECORD / END-RETURN
PERFORM UNTIL 予約語 2110INPUTSOR: EOF 到達まで 2110READSOR を繰返す
SDSort Description 予約語 FILE SECTION: SD SORTWORK
SAME SORT AREA 予約語 ENVIRONMENT DIVISION: SAME SORT AREA 句(SHA08SRT と同様)