Files
cobol-tna-system/詳細設計書/詳細設計書_SHA01CVT.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

136 lines
5.9 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 | SHA01CVT |
| 3 | プログラム名 | 被保険者資格データ変換処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | 29ASCII→EBCDIC変換) |
| 6 | 機能概要 | 日本年金機構・健康保険組合から受信した被保険者資格データ(ASCII CSV)をEBCDIC固定長レコードに変換する。 |
| 7 | | 変換テーブルを用いてASCIIコードからEBCDICコードに変換。 |
| 8 | | 出力レコードの項目桁数チェック(半角桁数)を内部処理として行う。 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | INS-CSV-ASCII | ソート不要。ASCIIコード、カンマ区切り、LF改行 |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | INS-CSV-ASCII | R01 | SHA01R01 | I | 自前 | F | | 可変 | PS | ASCII CSV、カンマ区切り |
| 2 | INSURED-DATA | W01 | SHA01W01 | O | SHA01REC | FB | | 200 | PS | EBCDIC固定長 |
| 3 | ERROR-LOG | W02 | SHA01W02 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | INS-CSV-ASCII | なし | なし |
### 使用モジュール一覧
| NO | 機能 | プログラムID | 使用COPY名 |
|----|------|-------------|-----------|
| 1 | 運用日付取得SUB | SUB01DAT | SHADATAC |
| 2 | メッセージ編集出力SUB | SUB02MSG | SHAMSGAC |
| 3 | ABEND処理SUB | SUB03END | SHAENDAC |
| 4 | 項目チェックSUB | SUB04CHK | SHACHKAC |
---
## 処理詳細
```
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.使用ファイルのオープン
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.CSVの分解
UNSTRINGでカンマ区切りのCSVを各項目に分解する。(2010CSVSOR)
2-2.半角桁数チェック(2020HALFSOR
2-2-1.氏名カナ(半角20桁以内)チェック。超過→W02出力
2-2-2.被保険者番号(半角10桁以内)チェック。超過→W02出力
2-2-3.事業所番号(半角4桁以内)チェック。超過→W02出力
2-2-4.日付妥当性チェック(SUB04CHK)。エラー→W02出力
2-2-5.数値妥当性チェック(SUB04CHK)。エラー→W02出力
2-3.ASCII→EBCDIC変換(2030CNVSOR
2-3-1.変換テーブル(WORKING-STORAGEに定義)を使用し各バイトを変換
2-3-2.USAGE BINARYでテーブルインデックスを管理
2-3-3.変換後INSURED-DATAレコードにMOVE
2-4.W01出力(2040WRTSOR
2-5.R01を読み込む。(1100R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.入出力ファイルのクローズ
3-2.入出力件数出力メッセージ出力
【入力メッセージ編集】
メッセージ番号:6(入力件数メッセージ)
PARM1:当該入力ファイルのDD名
PARM2:当該入力ファイルの件数
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1:当該出力ファイルのDD名
PARM2:当該出力ファイルの件数
3-3.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/INSURED-DATA
SHA01REC.cpyに従う。EBCDIC固定長200B。
| No | 項目名 | 属性 | 設定元 | 備考 |
|----|--------|------|--------|------|
| 1 | 社員番号 | 9(8) | CSV同項目を変換後設定 | |
| 2 | 被保険者番号 | X(10) | CSV同項目を変換後設定 | 半角10桁以内 |
| 3 | 事業所番号 | X(4) | CSV同項目を変換後設定 | 半角4桁以内 |
| 4 | 保険者コード | X(4) | CSV同項目を変換後設定 | |
| 5 | 氏名 | X(40) | CSV同項目を変換後設定 | |
| 6 | 氏名カナ | X(20) | CSV同項目を変換後設定 | 半角20桁以内 |
| 7 | 生年月日 | 9(8) | CSV同項目を変換後設定 | |
| 8 | 性別 | X(1) | CSV同項目を変換後設定 | |
| 9 | 資格取得日 | 9(8) | CSV同項目を変換後設定 | |
| 10 | 健康保険種別 | X(1) | CSV同項目を変換後設定 | |
| 11 | 年金種別 | X(1) | CSV同項目を変換後設定 | |
| 12 | ステータス | X(1) | CSV同項目を変換後設定 | |
| 13 | 予約 | X(94) | LOW-VALUES固定 | |
### 出力ファイル2W02/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 01で固定 | |
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |