# 詳細設計書 ## 基本情報 | # | 項目 | 内容 | |---|------|------| | 1 | システム名 | 社会保険管理システム | | 2 | プログラムID | SHA08SRT | | 3 | プログラム名 | 届出書データSORT編集処理 | | 4 | PGMタイプ | メイン | | 5 | PGMパターン | 34(SORT INPUT/OUTPUT PROCEDURE) | | 6 | 機能概要 | GRADED-LIST(SHA04REC 200B)をすべてSORT文のINPUT PROCEDUREでRELEASEし、都道府県・事業所・従業員昇順にSORT後、OUTPUT PROCEDUREでRETURNしてレイアウト編集したRPT-DATA(SHA08REC 300B)を出力する。GRADED-LISTはSHA04TWOでマッチング成功した全件が有効レコードのため、STATUSフィルタは不要。 | | 7 | | SORT作業用ファイルはSD-SORTWORKで定義し、I-O-CONTROLでSAME SORT AREAを指定する。 | | 8 | | RETURN-CODEでSORT結果を判定し、異常時はABEND処理を行う。 | ※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 ### 前提条件 | NO | 対象ファイル | 条件 | |----|-------------|------| | 1 | GRADED-LIST(R01) | 事前に事業所マッチング・保険者マッチング済みのSHA04TWO出力。ソート不要(SORT文で並替え)。 | ### 使用ファイル一覧 | NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | |----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| | 1 | GRADED-LIST | R01 | SHA08R01 | I | SHA04REC | FB | | 200 | PS | | | 2 | SD-SORTWORK | — | — | I/O | 自前 | — | — | 200 | 内部 | SORT作業用 | | 3 | RPT-DATA | W01 | SHA08W01 | O | SHA08REC | FB | | 300 | PS | | | 4 | ERROR-LOG | W02 | SHA08W02 | O | ZAN05REC | VB | | 200 | PS | | ### キー項目一覧 | NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | |----|-----------|---------------------|-------------------------------------------| | 1 | SD-SORTWORK | PREF-CODE昇順, OFFICE-NO昇順, EMP-ID昇順 | なし(SORTのみ) | ### 使用モジュール一覧 | NO | 機能 | プログラムID | 使用COPY名 | |----|------|-------------|-----------| | 1 | 運用日付取得SUB | SUB01DAT | SHADATAC | | 2 | メッセージ編集出力SUB | SUB02MSG | SHAMSGAC | | 3 | ABEND処理SUB | SUB03END | SHAENDAC | --- ## 処理詳細 ``` 1.初期処理(1000ITTSOR) 1-1.開始メッセージ出力 【メッセージ編集】 メッセージ番号:1(開始メッセージ) 1-2.コンパイル日時出力 【メッセージ編集】 メッセージ番号:33(コンパイル日時) PARM1:コンパイル日時 PARM2:'COMPILED' 1-3.ワークエリアの初期化 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 【メッセージ編集】 メッセージ番号:5(サブエラー) PARM1:'SUB01DAT' PARM2:復帰コード 【ABEND処理SUB】 ABENDコード:999 1-5.出力ファイルのオープン(W01 / W02) 1-6.入力ファイルR01のオープン 2.主処理(2000MAJSOR) 2-1.SORT文の実行(2100SORTSOR) SORT SD-SORTWORK ON ASCENDING KEY SR-PREF-CODE SR-OFFICE-NO SR-EMP-ID INPUT PROCEDURE IS 2110INPPSOR OUTPUT PROCEDURE IS 2120OUTPSOR. 2-2.SORT結果判定(RETURN-CODE) RETURN-CODE ≠ 0 の場合: メッセージ出力 【メッセージ編集】 メッセージ番号:5(サブエラー) PARM1:'SORT FAILED' PARM2:RETURN-CODE 【ABEND処理SUB】 ABENDコード:100 2-1.入力手続き(2110INPPSOR) 2-1-1.INPUT PROCEDURE内でR01(GRADED-LIST)を全件読み込み 2-1-2.全件をRELEASEでSD-SORTWORKに出力(GRADED-LISTはSHA04TWOの有効マッチング結果のためフィルタ不要) 2-1-3.SR-STATUSにはCNS-STATUS-0('0')を設定 2-1-4.READ AT ENDで入力手続き終了 2-1-5.EXITでINPUT PROCEDUREを抜ける 2-2.出力手続き(2120OUTPSOR) 2-2-1.RETURNでSD-SORTWORKから1件取得 2-2-2.AT ENDまで以下の処理を繰り返す 2-2-3.ソート済みSDレコード→W01出力レコードに編集転記 編集内容: RPT-BODYにSHA08RECの全項目を設定 REPORT-TYPE='01'(届出書種別:算定基礎届) REPORT-DATE=WRK-U06(運用日) MONTHLY-AMOUNTはSR-MONTHLY-AMOUNTから転記(SHA04REC由来) GRADE-CODEはSR-GRADE-CODEから転記(SHA04REC由来) 2-2-4.WRITE W01OUTRECでRPT-DATAに出力 2-2-5.RETURNで次のレコード取得 3.終了処理(3000STPSOR) 3-1.入出力ファイルのクローズ 3-2.SORT入出力件数メッセージ出力 【メッセージ編集】 メッセージ番号:6(入力件数メッセージ) PARM1:'SHA08R01(GRADED-LIST)' PARM2:入力件数 【メッセージ編集】 メッセージ番号:7(出力件数メッセージ) PARM1:'SHA08W01(RPT-DATA)' PARM2:出力件数 【メッセージ編集】 メッセージ番号:7(出力件数メッセージ) PARM1:'SHA08W02(ERROR-LOG)' PARM2:エラー件数 3-3.終了メッセージ出力 【メッセージ編集】 メッセージ番号:2(終了メッセージ) ``` --- ## 出力レコード定義 ### 出力ファイル1(W01/RPT-DATA) SHA08REC.cpyに従う。300B固定長。 | No | 項目名 | 設定元 | 備考 | |----|--------|--------|------| | 1 | EMP-ID | SR-EMP-ID | | | 2 | EMP-NAME | SR-EMP-NAME | | | 3 | OFFICE-NO | SR-OFFICE-NO | | | 4 | OFFICE-NAME | SR-OFFICE-NAME | | | 5 | INSURER-CODE | SR-INSURER-CODE | | | 6 | INSURER-NAME | SR-INSURER-NAME | | | 7 | PREF-CODE | SR-PREF-CODE | | | 8 | MONTHLY-AMOUNT | SR-MONTHLY-AMOUNT | SHA04RECから保持(SHA04TWO時点では0) | | 9 | GRADE-CODE | SR-GRADE-CODE | SHA04RECから保持(SHA04TWO時点では0) | | 10 | REPORT-TYPE | '01'固定 | | | 11 | REPORT-DATE | WRK-U06 | 運用日 | | 12 | FILLER | SPACE | | ### 出力ファイル2(W02/ERROR-LOG) | No | 項目名 | 設定元 | 備考 | |----|--------|--------|------| | 1 | ERR-CATEGORY | 01で固定 | | | 2 | ERR-DETAIL | STRINGで編集 | エラー内容 | ### SD-SORTWORK(SORT内部ファイル) 自前定義。200B。SHA04REC相当+SORT管理領域。 | No | 項目名 | 属性 | 備考 | |----|--------|------|------| | 1 | SR-EMP-ID | 9(008) | SORTキー3 | | 2 | SR-EMP-NAME | X(040) | | | 3 | SR-OFFICE-NO | X(004) | SORTキー2 | | 4 | SR-OFFICE-NAME | X(040) | | | 5 | SR-PREF-CODE | 9(002) | SORTキー1 | | 6 | SR-INSURER-CODE | X(004) | | | 7 | SR-INSURER-NAME | X(060) | | | 8 | SR-MONTHLY-AMOUNT | 9(009) | SHA04RECから転記 | | 9 | SR-GRADE-CODE | 9(002) | SHA04RECから転記 | | 10 | SR-STATUS | X(001) | CNS-STATUS-0で固定(全件有効扱い) | | 11 | SR-FILLER | X(030) | |