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

5.9 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
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で編集 エラー内容