# JIN06SRT 詳細設計書 ## プログラム概要 | 項目 | 内容 | |------|------| | プログラムID | JIN06SRT(人事→JINji, 06, 社員データ並替→SRT) | | プログラムタイプ | 34(SORT) | | 機能 | EMP-VALID(200B)を 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 PROCEDURE(EOF 到達まで読込ループ + R01読込→RELEASE) | | 2110READSOR | 1件読込→SORTレコード転記→RELEASE / 上限超過はVALID-ERROR | | 2120OUTPUSOR | OUTPUT PROCEDURE(RETURN→SORTED-EMP書出) | | 3000STPSOR | 終了処理(統計表示・CLOSE・終了MSG) | | 4000MSGOUTSOR | メッセージ編集出力SUB呼出 | | 9000ERRSOR | エラー処理(ABEND) | ### 処理フロー ``` 1. 0000MAJCOLSOR 1-1. PERFORM 1000ITTSOR(初期処理) 1-2. PERFORM 2000MAJSOR(SORT処理) 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(運用日付取得)。異常時は 4000MSGOUTSOR+9000ERRSOR 2-5. OPEN OUTPUT W01OUTFIL, W02OUTFIL 3. 2000MAJSOR(SORT実行) 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 SUB03END(ABEND) 4. 2110INPUTSOR(INPUT PROCEDURE) 4-1. OPEN INPUT R01INNFIL 4-2. PERFORM UNTIL WRK-R01EOF-Y(EOF 到達まで 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-ERROR(9999)WRITE、CUN-W02OUT +1 6. 2120OUTPUSOR(OUTPUT 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 SUB03END(ABEND) ``` ### 上限超過時のエラー出力(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 を繰返す | | SD(Sort Description) | 予約語 | FILE SECTION: SD SORTWORK | | SAME SORT AREA | 予約語 | ENVIRONMENT DIVISION: SAME SORT AREA 句(SHA08SRT と同様) |