Files
cobol-tna-system/詳細設計書/詳細設計書_SHA08SRT.md
qiuqiuqiu 71232af484 Add Subsystem D (SHA01-10): social insurance subsystem + design-resource consistency fixes
- Add SHA01CVT-SHA10S10: all 10 programs, COPY books (13), binaries,
  design docs, resource usage lists, DDL schema_sha.sql
- Add KYU01REC-KYU06REC COPY books (previously missing from git)
- Fix design-code inconsistencies detected in audit:
  - SHA07KBR: remove dead SHACHKAC COPY (SUB04CHK never called)
  - SHA02MNC: 2020TYPSOR paragraph -> inline EVALUATE; SUB04CHK = PARM val
  - SHA05TWN: REVISED-TYPE values 'C'/'N' -> 'A'(定期決定)/'B'(月変)
  - SHA03MNP: 2010CALCSOR/2020WRTSOR -> inline implementation
  - SHA04TWO: remove GRADE-HISTORY from DB table list (not accessed)
  - SHA06TWM: add SALARYDB.EMP-MASTER to DB table list
  - SHA10S10: fix error file W99OUTFIL, 10+1 file count
- Fix comment column alignment (Area A col 7) in SHA07KBR, SHA08SRT
- Update KYU source/design docs: BOM removal, classification comment cleanup
- Update README: Subsystem D added, program count 39
2026-07-15 20:32:51 +08:00

179 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 1 | システム名 | 社会保険管理システム |
| 2 | プログラムID | SHA08SRT |
| 3 | プログラム名 | 届出書データSORT編集処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | 34SORT INPUT/OUTPUT PROCEDURE |
| 6 | 機能概要 | GRADED-LISTSHA04REC 200B)をすべてSORT文のINPUT PROCEDUREでRELEASEし、都道府県・事業所・従業員昇順にSORT後、OUTPUT PROCEDUREでRETURNしてレイアウト編集したRPT-DATASHA08REC 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'
PARM2RETURN-CODE
【ABEND処理SUB】
ABENDコード:100
2-1.入力手続き(2110INPPSOR
2-1-1.INPUT PROCEDURE内でR01GRADED-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-DATEWRK-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(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/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 | |
### 出力ファイル2W02/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 01で固定 | |
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
### SD-SORTWORKSORT内部ファイル)
自前定義。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) | |