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
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA01CVT |
|
||||
| 3 | プログラム名 | 被保険者資格データ変換処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 29(ASCII→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(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/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固定 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
@@ -0,0 +1,167 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA02MNC |
|
||||
| 3 | プログラム名 | 従業員保険情報統合処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 18(M:N→M件マッチング) |
|
||||
| 6 | 機能概要 | DB2 EMP-MASTER(SALARYDB)の従業員情報とINSURANCE-RATESの標準報酬等級テーブルをマッチングし、 |
|
||||
| 7 | | 従業員単位(M件)に統合したEMP-INSURANCEレコードを出力する。 |
|
||||
| 8 | | SEARCH/内部表を用いた等級判定により、標準報酬月額・等級コードを付与する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル/DB | 条件 |
|
||||
|----|---------------|------|
|
||||
| 1 | DB2 INSURANCE-RATES | EFFECTIVE-FROM~EFFECTIVE-TOに該当月が含まれること |
|
||||
| 2 | DB2 EMP-MASTER (SALARYDB) | 社員番号(EMP-ID)昇順ソート(DB2 ORDER BY) |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | EMP-INSURANCE | W01 | SHA02W01 | O | SHA02REC | FB | | 200 | PS | 従業員保険情報(M件) |
|
||||
| 2 | ERROR-LOG | W02 | SHA02W02 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
| 3 | INSURANCEDB | DB | — | I | — | DB2 | — | — | DASD | DB2: INSURANCE-RATES |
|
||||
| 4 | SALARYDB (参照) | DB | — | I | — | DB2 | — | — | DASD | DB2: EMP-MASTER(クロススキーマ) |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | EMP-MASTER | EMP-ID | なし(主処理は1件ずつFETCH) |
|
||||
| 2 | INSURANCE-RATES | GRADE-CODE | MONTHLY-FROM~MONTHLY-TOにBASE-SALARYが含まれること(範囲検索) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 運用日付取得SUB | SUB01DAT | SHADATAC |
|
||||
| 2 | メッセージ編集出力SUB | SUB02MSG | SHAMSGAC |
|
||||
| 3 | ABEND処理SUB | SUB03END | SHAENDAC |
|
||||
| 4 | PARM検証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.PARM取得(YEARMONTH)
|
||||
1-6.DB接続
|
||||
EXEC SQL CONNECT TO 'data/INSURANCE.db'
|
||||
1-7.INSURANCE-RATES内部表LOAD(1200RATELDASOR)
|
||||
DECLARE C1 CURSOR FOR
|
||||
SELECT GRADE-CODE, MONTHLY-FROM, MONTHLY-TO,
|
||||
HEALTH-RATE, PENSION-RATE
|
||||
FROM INSURANCE-RATES
|
||||
WHERE EFFECTIVE-FROM <= :WRK-YEAR-MONTH
|
||||
AND EFFECTIVE-TO >= :WRK-YEAR-MONTH
|
||||
ORDER BY GRADE-CODE
|
||||
OPEN C1
|
||||
PERFORM UNTIL SQLCODE≠0
|
||||
FETCH C1 INTO :DBV-xxx
|
||||
MOVE TO WRK-INS-RATES(WS-COUNT)
|
||||
ADD 1 TO WS-COUNT
|
||||
END-PERFORM
|
||||
CLOSE C1
|
||||
1-8.EMP-MASTERカーソル宣言・OPEN・初回FETCH
|
||||
DECLARE C2 CURSOR FOR
|
||||
SELECT EMP-ID, EMP-NAME, DEPT-CODE, BASE-SALARY
|
||||
FROM SALARYDB.EMP-MASTER
|
||||
ORDER BY EMP-ID
|
||||
OPEN C2
|
||||
FETCH C2 INTO :DBV-xxx(1300EMPFETCSOR)
|
||||
1-9.出力ファイルのオープン
|
||||
|
||||
2.主処理(2000MAJSOR)(EMP-MASTERを全て読み終えるまで下記を繰り返す)
|
||||
2-1.内部表検索(2010SRCHSOR)
|
||||
SEARCH(線形探索)でWRK-INS-RATESから
|
||||
WRK-MONTHLY-FROM <= DBV-BASE-SALARY
|
||||
かつ WRK-MONTHLY-TO >= DBV-BASE-SALARY
|
||||
を満たすGRADE-CODEを特定する。
|
||||
該当なし→ERROR-LOG出力(W02)→次従業員へ
|
||||
2-2.種別判定(2000MAJSOR内でインライン実装)
|
||||
DEPT-CODEによりEVALUATEでHEALTH-INS-TYPE/PENSION-TYPEを判定
|
||||
DEPT-CODE 01-10:HEALTH-INS-TYPE='1' PENSION-TYPE='1'
|
||||
DEPT-CODE 11-20:HEALTH-INS-TYPE='2' PENSION-TYPE='1'
|
||||
DEPT-CODE 21-30:HEALTH-INS-TYPE='1' PENSION-TYPE='2'
|
||||
上記以外:HEALTH-INS-TYPE='9' PENSION-TYPE='9'
|
||||
2-3.INSURER-CODE設定
|
||||
簡易判定:DEPT-CODEにより設定(01台→'0001', 11台→'0002', 21台→'0003')
|
||||
2-4.W01出力
|
||||
MOVE DBV-xxx + 検索結果 + 種別判定結果 → W01OUTREC
|
||||
WRITE W01OUTREC
|
||||
2-5.次従業員FETCH(1300EMPFETCSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.カーソルクローズ
|
||||
CLOSE C2
|
||||
3-2.出力ファイルのクローズ
|
||||
3-3.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'EMP-MASTER'
|
||||
PARM2:CUN-DB-EMP
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA02W01'
|
||||
PARM2:CUN-W01OUT
|
||||
PARM1:'SHA02W02'
|
||||
PARM2:CUN-W02OUT
|
||||
3-4.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/EMP-INSURANCE)
|
||||
|
||||
SHA02REC.cpyに従う。200B固定長。
|
||||
|
||||
| No | 項目名 | 属性 | 設定元 | 備考 |
|
||||
|----|--------|------|--------|------|
|
||||
| 1 | EMP-ID | 9(8) | DBV-EMP-ID(EMP-MASTER) | |
|
||||
| 2 | EMP-NAME | X(40) | DBV-EMP-NAME(EMP-MASTER) | |
|
||||
| 3 | DEPT-CODE | 9(2) | DBV-DEPT-CODE(EMP-MASTER) | |
|
||||
| 4 | BASE-SALARY | 9(9) | DBV-BASE-SALARY(EMP-MASTER) | |
|
||||
| 5 | MONTHLY-AMOUNT | 9(9) | INSURANCE-RATES該当レコードの範囲中央値 | 標準報酬月額 |
|
||||
| 6 | GRADE-CODE | 9(2) | INSURANCE-RATES該当レコードの等級コード | SEARCH結果 |
|
||||
| 7 | HEALTH-INS-TYPE | X(1) | DEPT-CODEによる判定結果 | '1'=協会けんぽ / '2'=組合健保 / '9'=その他 |
|
||||
| 8 | PENSION-TYPE | X(1) | DEPT-CODEによる判定結果 | '1'=厚生年金 / '2'=共済 / '9'=その他 |
|
||||
| 9 | INSURER-CODE | X(4) | DEPT-CODEによる簡易設定 | 事業所所属保険者 |
|
||||
| 10 | FILLER | X(124) | LOW-VALUES固定 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容(EMP-ID + エラー詳細) |
|
||||
@@ -0,0 +1,153 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA03MNP |
|
||||
| 3 | プログラム名 | 保険料計算明細出力処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 20(M:N→M×N件直積出力) |
|
||||
| 6 | 機能概要 | EMP-INSURANCE(SHA02MNC出力)の従業員情報とINSURANCE-RATESの料率を組合せ、 |
|
||||
| 7 | | 従業員ごとに健康保険・厚生年金の保険料明細をM×N件(全組合せ)出力する。 |
|
||||
| 8 | | 各組合せについて標準報酬月額×料率で保険料を算出する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル/DB | 条件 |
|
||||
|----|---------------|------|
|
||||
| 1 | EMP-INSURANCE | ソート済であること(SHA02MNC出力) |
|
||||
| 2 | DB2 INSURANCE-RATES | EFFECTIVE-FROM~EFFECTIVE-TOに該当月が含まれること |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | EMP-INSURANCE | R01 | SHA03R01 | I | SHA02REC | FB | | 200 | PS | 従業員保険情報(SHA02MNC出力) |
|
||||
| 2 | INS-DETAIL | W01 | SHA03W01 | O | SHA03REC | FB | | 300 | PS | 保険料計算明細(M×N件) |
|
||||
| 3 | ERROR-LOG | W02 | SHA03W02 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
| 4 | INSURANCEDB | DB | — | I | — | DB2 | — | — | DASD | DB2: INSURANCE-RATES |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | EMP-INSURANCE | EMP-ID(既定) | なし(ファイル順次読込) |
|
||||
| 2 | INSURANCE-RATES | GRADE-CODE | 全件組合せ(直積) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.PARM取得(YEARMONTH)
|
||||
1-6.DB接続
|
||||
EXEC SQL CONNECT TO 'data/INSURANCE.db'
|
||||
1-7.INSURANCE-RATES内部表LOAD(1200RATELDASOR)
|
||||
DECLARE C1 CURSOR FOR
|
||||
SELECT GRADE-CODE, MONTHLY-FROM, MONTHLY-TO,
|
||||
HEALTH-RATE, PENSION-RATE
|
||||
FROM INSURANCE-RATES
|
||||
WHERE EFFECTIVE-FROM <= :WRK-YEAR-MONTH
|
||||
AND EFFECTIVE-TO >= :WRK-YEAR-MONTH
|
||||
ORDER BY GRADE-CODE
|
||||
OPEN C1
|
||||
PERFORM UNTIL SQLCODE≠0
|
||||
FETCH C1 INTO :DBV-xxx
|
||||
MOVE TO WRK-INS-RATES(WS-COUNT)
|
||||
ADD 1 TO WS-COUNT
|
||||
END-PERFORM
|
||||
CLOSE C1
|
||||
1-8.使用ファイルのオープン
|
||||
1-9.R01を読み込む。(1300R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.直積組合せ生成+W01出力(2000MAJSOR内でインライン実装)
|
||||
取得した従業員レコードに対し、WRK-INS-RATESの全エントリを
|
||||
PERFORM VARYINGで走査し、以下の組合せレコードを生成する。
|
||||
【健康保険(INSURANCE-TYPE='1')】
|
||||
HEALTH-PREMIUM = MONTHLY-AMOUNT × HEALTH-RATE(ROUNDED)
|
||||
PENSION-PREMIUM = 0
|
||||
【厚生年金(INSURANCE-TYPE='2')】
|
||||
PENSION-PREMIUM = MONTHLY-AMOUNT × PENSION-RATE(ROUNDED)
|
||||
HEALTH-PREMIUM = 0
|
||||
2-2.W01出力
|
||||
各組合せのSHA03RECをWRITE(2-1と同一ループ内)
|
||||
2-3.エラー発生時は2100ERROUTSORでW02(ERROR-LOG)出力
|
||||
2-3.R01を読み込む。(1300R01INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'SHA03R01'
|
||||
PARM2:CUN-R01INN
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA03W01'
|
||||
PARM2:CUN-W01OUT
|
||||
PARM1:'SHA03W02'
|
||||
PARM2:CUN-W02OUT
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/INS-DETAIL)
|
||||
|
||||
SHA03REC.cpyに従う。300B固定長。
|
||||
|
||||
| No | 項目名 | 属性 | 設定元 | 備考 |
|
||||
|----|--------|------|--------|------|
|
||||
| 1 | EMP-ID | 9(8) | R01.EMP-ID | |
|
||||
| 2 | EMP-NAME | X(40) | R01.EMP-NAME | |
|
||||
| 3 | INSURANCE-TYPE | X(1) | 固定 | '1'=健康保険 / '2'=厚生年金 |
|
||||
| 4 | GRADE-CODE | 9(2) | WRK-INS-RATES.GRADE-CODE | 料率該当等級 |
|
||||
| 5 | MONTHLY-AMOUNT | 9(9) | R01.MONTHLY-AMOUNT | 標準報酬月額(従業員の該当額) |
|
||||
| 6 | HEALTH-RATE | 9(7) | WRK-INS-RATES.HEALTH-RATE | 健康保険料率 |
|
||||
| 7 | PENSION-RATE | 9(7) | WRK-INS-RATES.PENSION-RATE | 厚生年金料率 |
|
||||
| 8 | HEALTH-PREMIUM | 9(9) | MONTHLY-AMOUNT × HEALTH-RATE | 健康保険料(従業員負担分) |
|
||||
| 9 | PENSION-PREMIUM | 9(9) | MONTHLY-AMOUNT × PENSION-RATE | 厚生年金保険料(従業員負担分) |
|
||||
| 10 | FILLER | X(208) | LOW-VALUES固定 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
@@ -0,0 +1,159 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA04TWO |
|
||||
| 3 | プログラム名 | 事業所保険者マッチング処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | マッチング(1:1→1:1 2段階) |
|
||||
| 6 | 機能概要 | 被保険者データに対し、事業所マスタ(SHA02R02)と保険者マスタ(SHA03R03)の2段階1:1マッチングを実施する。 |
|
||||
| 7 | | 第1段階:事業所番号(OFFICE-NO)で事業所マスタとマッチング |
|
||||
| 8 | | 第2段階:保険者コード(INSURER-CODE)で保険者マスタとマッチング |
|
||||
| 9 | | 両段階ともマッチした場合GRADED-LISTに出力、いずれかで不一致の場合はUNMATCHED-LISTに出力 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | ファイルR01(INSURED-DATA) | 事業所番号(OFFICE-NO)+社員番号(EMP-ID)の昇順ソート済 |
|
||||
| 2 | ファイルR02(OFFICE-MST) | 事業所番号(OFFICE-NO)の昇順ソート済、重複なし |
|
||||
| 3 | ファイルR03(INSURER-MST) | 保険者コード(INSURER-CODE)の昇順ソート済、重複なし |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | INSURED-DATA | R01 | SHA04R01 | I | SHA01REC | FB | | 200 | PS | 被保険者データ(SHA01CVT出力) |
|
||||
| 2 | OFFICE-MST | R02 | SHA04R02 | I | 自前(80B) | FB | | 80 | PS | 事業所マスタ |
|
||||
| 3 | INSURER-MST | R03 | SHA04R03 | I | 自前(80B) | FB | | 80 | PS | 保険者マスタ |
|
||||
| 4 | GRADED-LIST | W01 | SHA04W01 | O | SHA04REC | FB | | 200 | PS | 両段階マッチ成功レコード |
|
||||
| 5 | UNMATCHED-LIST | W02 | SHA04W02 | O | 自前(200B) | FB | | 200 | PS | いずれかの段階で不一致レコード |
|
||||
| 6 | ERROR-LOG | W03 | SHA04W03 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
| 7 | INSURANCEDB | DB | — | I | — | DB2 | — | — | DASD | DB2: INSURED-MASTER |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | ファイルR01 | OFFICE-NO + EMP-ID | OFFICE-NO(第1段階) |
|
||||
| 2 | ファイルR02 | OFFICE-NO | OFFICE-NO(第1段階, 1:1) |
|
||||
| 3 | ファイルR03 | INSURER-CODE | INSURER-CODE(第2段階, 1:1) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.使用ファイルのオープン
|
||||
1-6.R02(OFFICE-MST)を全件読み込み、内部テーブル(OFFICE-TBL)に格納する。
|
||||
(1110R02LDASOR)
|
||||
1-7.R03(INSURER-MST)を全件読み込み、内部テーブル(INSURER-TBL)に格納する。
|
||||
(1120R03LDASOR)
|
||||
1-8.DB接続
|
||||
EXEC SQL CONNECT TO 'data/INSURANCEDB.db'
|
||||
1-9.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.第1段階マッチング(OFFICE-NO vs OFFICE-TBL):1:1マッチング(2010STG1SOR)
|
||||
2-1-1.OFFICE-TBLをOFFICE-NOで線形探索
|
||||
2-1-2.マッチ成功→第2段階へ
|
||||
2-1-3.マッチ失敗→UNMATCHED-LISTに出力(STATUS='1'=事業所未達)
|
||||
2-2.第2段階マッチング(INSURER-CODE vs INSURER-TBL):1:1マッチング(2020STG2SOR)
|
||||
2-2-1.INSURER-TBLをINSURER-CODEで線形探索
|
||||
2-2-2.マッチ成功→GRADED-LISTに出力
|
||||
2-2-3.マッチ失敗→UNMATCHED-LISTに出力(STATUS='2'=保険者未達)
|
||||
2-3.DB2整合性検証(2030W01OUTSOR内でインライン実装)
|
||||
2-3-1.GRADED-LIST出力時にINSURED-MASTERをSELECTし、
|
||||
履歴整合性を確認
|
||||
2-3-2.SQLCODE異常→ERROR-LOGに出力
|
||||
2-4.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/GRADED-LIST)
|
||||
|
||||
SHA04REC.cpyに従う。200B固定長。
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | EMP-ID | R01.EMP-ID | |
|
||||
| 2 | EMP-NAME | R01.EMP-NAME | |
|
||||
| 3 | OFFICE-NO | R01.OFFICE-NO | |
|
||||
| 4 | OFFICE-NAME | OFFICE-TBL.OFFICE-NAME | 第1段階マッチ結果 |
|
||||
| 5 | PREF-CODE | OFFICE-TBL.PREF-CODE | 第1段階マッチ結果 |
|
||||
| 6 | INSURER-CODE | R01.INSURER-CODE | |
|
||||
| 7 | INSURER-NAME | INSURER-TBL.INSURER-NAME | 第2段階マッチ結果 |
|
||||
| 8 | FILLER | 初期値 | |
|
||||
|
||||
### 出力ファイル2(W02/UNMATCHED-LIST)
|
||||
|
||||
自前レイアウト(200B固定長)。
|
||||
|
||||
| No | 項目名 | 属性 | 設定元 | 備考 |
|
||||
|----|--------|------|--------|------|
|
||||
| 1 | EMP-ID | 9(8) | R01.EMP-ID | |
|
||||
| 2 | EMP-NAME | X(40) | R01.EMP-NAME | |
|
||||
| 3 | OFFICE-NO | X(4) | R01.OFFICE-NO | |
|
||||
| 4 | OFFICE-NAME | X(40) | OFFICE-TBL.OFFICE-NAME | 未達時はSPACE |
|
||||
| 5 | PREF-CODE | 9(2) | OFFICE-TBL.PREF-CODE | 未達時はZERO |
|
||||
| 6 | INSURER-CODE | X(4) | R01.INSURER-CODE | |
|
||||
| 7 | INSURER-NAME | X(60) | INSURER-TBL.INSURER-NAME | 未達時はSPACE |
|
||||
| 8 | STATUS | X(1) | 固定 | '1'=事業所未達 / '2'=保険者未達 |
|
||||
| 9 | FILLER | X(41) | 初期値 | |
|
||||
|
||||
### 出力ファイル3(W03/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | DBエラー |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容(EMP-ID + SQLCODE) |
|
||||
@@ -0,0 +1,147 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA05TWN |
|
||||
| 3 | プログラム名 | 標準報酬月額等級判定処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | マッチング(N:1→N:1 2段階) |
|
||||
| 6 | 機能概要 | 月額給与データ(SALARY-MONTHLY)を社員番号(EMP-ID)でN:1集約し、平均標準報酬月額を算出する。 |
|
||||
| 7 | | 第1段階(N:1):社員番号キーブレイクで月額給与を平均化 |
|
||||
| 8 | | 第2段階(N:1):平均標準報酬月額と等級テーブル(GRADE-TBL)をマッチングし、等級改定判定を実施 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | ファイルR01(SALARY-MONTHLY) | 社員番号(EMP-ID)+対象年月(YEAR-MONTH)の昇順ソート済 |
|
||||
| 2 | ファイルR02(GRADE-TBL) | 等級コード(GRADE-CODE)の昇順ソート済、重複なし |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | SALARY-MONTHLY | R01 | SHA05R01 | I | 自前(200B) | FB | | 200 | PS | 月額給与データ(Cサブシステム由来) |
|
||||
| 2 | GRADE-TBL | R02 | SHA05R02 | I | 自前(80B) | FB | | 80 | PS | 等級定義テーブル |
|
||||
| 3 | REVISED-GRADE | W01 | SHA05W01 | O | SHA05REC | FB | | 200 | PS | 等級改定結果 |
|
||||
| 4 | ERROR-LOG | W02 | SHA05W02 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | ファイルR01 | EMP-ID + YEAR-MONTH | EMP-ID(第1段階キーブレイク, N:1) |
|
||||
| 2 | ファイルR02 | GRADE-CODE | 平均標準報酬月額(第2段階, N:1) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.ワークエリアの初期化
|
||||
PARM(対象年月 YYYYMM)をACCEPT COMMAND-LINEから取得
|
||||
未設定時はデフォルト'202607'を使用
|
||||
1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。
|
||||
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
|
||||
【メッセージ編集】
|
||||
メッセージ番号:5(サブエラー)
|
||||
PARM1:'SUB01DAT'
|
||||
PARM2:復帰コード
|
||||
【ABEND処理SUB】
|
||||
ABENDコード:999
|
||||
1-5.使用ファイルのオープン
|
||||
1-6.R02(GRADE-TBL)を全件読み込み、内部テーブル(GRADE-TBL)に格納する。(1110R02LDASOR)
|
||||
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.第1段階:キーブレイクN:1集約(2010KEYBRSOR)
|
||||
2-1-1.同一EMP-IDのレコードを集約
|
||||
2-1-2.MONTHLY-AMOUNTをADD TOで累積加算
|
||||
2-1-3.COUNTをADD 1でカウント
|
||||
2-1-4.グループ内の月数をカウント(WRK-MONTH-COUNT)
|
||||
2-1-5.キー変更時(新EMP-ID検出)、以下の処理を実行
|
||||
2-1-5-1.WRK-TOTAL ÷ WRK-COUNT = 平均標準報酬月額
|
||||
DIVIDE WRK-TOTAL BY WRK-COUNT GIVING WRK-AVG
|
||||
REMAINDER WRK-REM
|
||||
2-1-5-2.定時決定(4-6ヶ月平均)or 月変(3ヶ月平均)の判定
|
||||
IF WRK-MONTH-COUNT >= 4 → 定時決定(TYPE='A')
|
||||
IF WRK-MONTH-COUNT = 3 → 月変(TYPE='B')
|
||||
ELSE → ERROR-LOGに出力
|
||||
2-2.第2段階:等級テーブルN:1マッチング(2020GRADSOR)
|
||||
2-2-1.GRADE-TBLを平均標準報酬月額で線形探索
|
||||
IF WRK-AVG >= MONTHLY-FROM AND WRK-AVG <= MONTHLY-TO
|
||||
→ 該当等級コードを取得
|
||||
2-2-2.該当等級なし→ ERROR-LOGに出力
|
||||
2-2-3.該当等級あり→ 現在の等級と比較
|
||||
2-2-3-1.現在等級はGRADE-HISTORYから取得(直近有効レコード)
|
||||
2-2-3-2.OLD-GRADE ≠ NEW-GRADEの場合:REVISED-GRADEに出力
|
||||
REVISED-TYPE='A'(定時決定:4-6ヶ月平均)/'B'(月変:3ヶ月平均)
|
||||
2-2-3-3.OLD-GRADE = NEW-GRADEの場合:出力なし(変更不要)
|
||||
2-2-4.WRK-ACCUMをINITIALIZEし、次のキーブレイクに備える
|
||||
2-3.次のR01読み込み→次のキーグループへ(1100R01INNSOR)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.最終キーグループの処理(最終レコードの集約結果出力)
|
||||
3-3.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-4.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/REVISED-GRADE)
|
||||
|
||||
SHA05REC.cpyに従う。200B固定長。
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | EMP-ID | R01.EMP-ID | キーブレイク元の社員番号 |
|
||||
| 2 | EMP-NAME | R01.EMP-NAME | キーブレイク元の氏名 |
|
||||
| 3 | REVISED-YM | PARM(対象年月) | |
|
||||
| 4 | OLD-GRADE | GRADE-HISTORYより取得 | 変更前等級 |
|
||||
| 5 | NEW-GRADE | GRADE-TBLより取得 | 変更後等級 |
|
||||
| 6 | AVG-STD-MONTHLY | 第1段階算出値 | DIVIDE結果(整数) |
|
||||
| 7 | REVISED-TYPE | 'A'=定時決定/'B'=月変 | |
|
||||
| 8 | FILLER | 初期値 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | エラー種別 |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容(EMP-ID + エラー理由) |
|
||||
@@ -0,0 +1,153 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA06TWM |
|
||||
| 3 | プログラム名 | 保険料率適用・控除計算処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | マッチング(M:N→M:N 2段階) |
|
||||
| 6 | 機能概要 | 従業員保険情報データ(EMP-INSURANCE)をもとに、DB2 INSURANCE-RATESとAPPLICABLE-RULESの2段階M:Nマッチングで保険料を算出する。 |
|
||||
| 7 | | 第1段階(M×N):各従業員の給与等級に対応する保険料率をDB2より取得し、保険料を計算 |
|
||||
| 8 | | 第2段階(M:N):年齢・扶養人数・地域コードの条件に合致する適用ルールを探索し、料率を調整後、控除結果を出力 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | ファイルR01(EMP-INSURANCE) | 社員番号(EMP-ID)の昇順ソート済 |
|
||||
| 2 | ファイルR02(APPLICABLE-RULES) | ルールコード(RULE-CODE)の昇順ソート済 |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | EMP-INSURANCE | R01 | SHA06R01 | I | SHA02REC | FB | | 200 | PS | 従業員保険情報 |
|
||||
| 2 | APPLICABLE-RULES | R02 | SHA06R02 | I | 自前(80B) | FB | | 80 | PS | 適用ルール定義テーブル |
|
||||
| 3 | DEDUCTED-RESULT | W01 | SHA06W01 | O | SHA06REC | FB | | 300 | PS | 保険料確定結果 |
|
||||
| 4 | ERROR-LOG | W02 | SHA06W02 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
| 5 | INSURANCEDB | DB | — | I | — | DB2 | — | — | DASD | DB2: INSURANCE-RATES |
|
||||
| 6 | SALARYDB | DB | — | I | — | DB2 | — | — | DASD | DB2: EMP-MASTER(誕生日・扶養人数・地域コード取得) |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | ファイルR01 | EMP-ID | EMP-ID(第1段階) |
|
||||
| 2 | ファイルR02 | RULE-CODE | 年齢・扶養人数・地域コード(第2段階, M:N) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.使用ファイルのオープン
|
||||
1-6.DB接続
|
||||
EXEC SQL CONNECT TO 'data/INSURANCEDB.db'
|
||||
1-7.R02(APPLICABLE-RULES)を全件読み込み、内部テーブル(RULE-TBL)に格納する。(1110R02LDASOR)
|
||||
1-8.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.第1段階:保険料率M×Nマッチング(DB2 INSURANCE-RATES)(2010RATESOR)
|
||||
2-1-1.EMP-INSURANCEのGRADE-CODE(等級コード)をもとに
|
||||
DB2 INSURANCE-RATESテーブルをSELECT
|
||||
2-1-2.SQLCODE=0の場合→健康保険料率・厚生年金保険料率を取得
|
||||
2-1-3.SQLCODE=100の場合(該当なし)→ERROR-LOGに出力
|
||||
2-1-4.SQLCODE<0の場合→ERROR-LOGに出力、処理継続
|
||||
2-1-5.保険料計算
|
||||
HEALTH-PREMIUM = MONTHLY-AMOUNT × HEALTH-RATE / 1000000
|
||||
PENSION-PREMIUM = MONTHLY-AMOUNT × PENSION-RATE / 1000000
|
||||
2-1-6.COMPUTE文を使用し、ON SIZE ERROR処理を実装
|
||||
2-2.第2段階:適用ルールM:Nマッチング(APPLICABLE-RULES)(2020RULESCOL)
|
||||
2-2-1.年齢算出(運用日付 - BIRTH-DATEで満年齢)
|
||||
2-2-2.SALARYDB.EMP-MASTERをSELECTし、BIRTH-DATE・DEPENDENT-COUNT・
|
||||
REGION-CODEを取得。SQLCODE異常→ERROR-LOG出力。
|
||||
2-2-3.RULE-TBLを線形探索し、以下の条件すべて合致するルールを検索
|
||||
AGE >= AGE-FROM AND AGE <= AGE-TO
|
||||
DEPENDENTS >= DEPENDENTS-FROM AND DEPENDENTS <= DEPENDENTS-TO
|
||||
REGION-CODE = DBV-REGION-CODE
|
||||
2-2-4.合致ルールあり→HEALTH-RATE-ADJ / PENSION-RATE-ADJで料率調整
|
||||
IF 合致 AND HEALTH-RATE-ADJ > 0
|
||||
HEALTH-RATE = DB2取得率 + HEALTH-RATE-ADJ
|
||||
IF 合致 AND PENSION-RATE-ADJ > 0
|
||||
PENSION-RATE = DB2取得率 + PENSION-RATE-ADJ
|
||||
2-2-5.保険料再計算(調整後)
|
||||
2-2-6.DEDUCTED-RESULTに出力(W01)
|
||||
TOTAL-PREMIUM = HEALTH-PREMIUM + PENSION-PREMIUM
|
||||
2-3.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/DEDUCTED-RESULT)
|
||||
|
||||
SHA06REC.cpyに従う。300B固定長。
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | EMP-ID | R01.EMP-ID | |
|
||||
| 2 | EMP-NAME | R01.EMP-NAME | |
|
||||
| 3 | INSURANCE-TYPE | R01.HEALTH-INS-TYPE | 健康保険種別 |
|
||||
| 4 | GRADE-CODE | R01.GRADE-CODE | |
|
||||
| 5 | MONTHLY-AMOUNT | R01.MONTHLY-AMOUNT | |
|
||||
| 6 | HEALTH-RATE | DB2取得率(調整後) | 9(7) 小数点位置はプログラム内で規定 |
|
||||
| 7 | PENSION-RATE | DB2取得率(調整後) | 9(7) 小数点位置はプログラム内で規定 |
|
||||
| 8 | HEALTH-PREMIUM | 計算値 | MONTHLY-AMOUNT × HEALTH-RATE / 1000000 |
|
||||
| 9 | PENSION-PREMIUM | 計算値 | MONTHLY-AMOUNT × PENSION-RATE / 1000000 |
|
||||
| 10 | TOTAL-PREMIUM | 計算値 | HEALTH-PREMIUM + PENSION-PREMIUM |
|
||||
| 11 | FILLER | 初期値 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | エラー種別(DBエラー/等級該当なし) |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容(EMP-ID + SQLCODE or 理由) |
|
||||
@@ -0,0 +1,172 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA07KBR |
|
||||
| 3 | プログラム名 | 資格異動キーブレイク処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 33(1:N+異キーキーブレイク) |
|
||||
| 6 | 機能概要 | DB2 QUALIFICATION-CHANGESから資格異動データをFETCHし、従業員ごと(1:N)かつ保険者コード変更時(異キー)にキーブレイクしてサマリ・明細を出力する。 |
|
||||
| 7 | | 同一従業員内で保険者コードが変更された時点でサマリレコード(REC-TYPE=S)を出力、全レコードを明細レコード(REC-TYPE=D)として出力する。 |
|
||||
| 8 | | 各出力はSHA07REC書式(200B固定長)に従う。エラーはERROR-LOG(VB)に出力する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | QUALIFICATION-CHANGES(DB2) | EMP-ID, CHG-DATE昇順にSELECTする。ソートはSQLのORDER BYで担保する。 |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | QUALIFICATION-CHANGES(DB2) | — | — | I | なし | — | — | — | DB2 | DECLARE CURSOR / FETCH |
|
||||
| 2 | CHG-SUMMARY | W01 | SHA07W01 | O | SHA07REC | FB | | 200 | PS | REC-TYPE='S' |
|
||||
| 3 | CHG-DETAIL | W02 | SHA07W02 | O | SHA07REC | FB | | 200 | PS | REC-TYPE='D' |
|
||||
| 4 | ERROR-LOG | W03 | SHA07W03 | O | ZAN05REC | VB | | 200 | PS | エラー退避 |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | QUALIFICATION-CHANGES | EMP-ID昇順, CHG-DATE昇順 | 1:Nマッチング(従業員1件に対しN件の異動) |
|
||||
| 2 | 同上 | INSURER-CODE(異キー) | 従業員内で保険者コード変更時にキーブレイク |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.出力ファイルのオープン
|
||||
1-6.DB接続(EXEC SQL CONNECT)
|
||||
1-7.DECLARE CURSOR文でQUALIFICATION-CHANGESをSELECT
|
||||
SELECT対象:CHG-ID, EMP-ID, EMP-NAME(SALARYDB.EMP-MASTERとJOIN), CHG-DATE, CHG-TYPE, INSURER-CODE, PREV-INSURER, REASON
|
||||
ORDER BY:EMP-ID, CHG-DATE
|
||||
1-8.FETCHで1件目を取得し、WS-PREV-EMP-ID・WS-PREV-INSURERを初期設定(1100FETCSOR)
|
||||
|
||||
2.主処理(2000MAJSOR)(FETCH終了まで繰り返す)
|
||||
2-1.EMP-IDキーブレイク判定(2100KEYBRSOR)
|
||||
2-1-1.WS-PREV-EMP-ID(前回従業員ID)とDBV-EMP-ID(今回従業員ID)が異なる場合、主キーブレイク発生
|
||||
2-1-2.初回(WS-PREV-EMP-ID=HIGH-VALUES)はスキップ
|
||||
2-1-3.主キーブレイク時はサマリレコード出力(REC-TYPE='S')
|
||||
設定内容:前回従業員の最終保険者状態をサマリとして出力
|
||||
PREV-INSURER=前回レコードのINSURER-CODE、INSURER-CODE=SPACE
|
||||
EMP-ID=前回従業員ID
|
||||
2-2.INSURER-CODE異キーブレイク判定(2200DIFKBSOR)
|
||||
2-2-1.WS-PREV-INSURER(前回保険者コード)とDBV-INSURER-CODE(今回保険者コード)が異なる場合、異キーブレイク発生
|
||||
2-2-2.異キーブレイク時はサマリレコード出力(REC-TYPE='S')
|
||||
設定内容:前回保険者→今回保険者の変遷をサマリ
|
||||
PREV-INSURER=WS-PREV-INSURER
|
||||
INSURER-CODE=DBV-INSURER-CODE
|
||||
EMP-ID=DBV-EMP-ID
|
||||
CHG-DATE=DBV-CHG-DATE
|
||||
REASON='INSURER CHANGED'
|
||||
2-3.明細レコード出力(2300DETAILSOR)
|
||||
全FETCHレコードを明細出力(REC-TYPE='D')
|
||||
SHA07RECの全項目をDBV-から転記
|
||||
2-4.WS-PREV-EMP-ID、WS-PREV-INSURERに今回値を設定
|
||||
2-5.FETCHで次件取得(1100FETCSOR)
|
||||
|
||||
3.最終グループ処理(2500LSTKBRSOR)
|
||||
3-1.最終従業員グループのサマリレコードを出力
|
||||
3-2.最終詳細レコードを出力
|
||||
|
||||
4.終了処理(3000STPSOR)
|
||||
4-1.CLOSE CURSOR
|
||||
4-2.DISCONNECT DB
|
||||
4-3.出力ファイルのクローズ
|
||||
4-4.出力件数メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'DB2-QUALIFICATION-CHANGES'
|
||||
PARM2:FETCH件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA07W01(CHG-SUMMARY)'
|
||||
PARM2:サマリ件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA07W02(CHG-DETAIL)'
|
||||
PARM2:明細件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA07W03(ERROR-LOG)'
|
||||
PARM2:エラー件数
|
||||
4-5.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/CHG-SUMMARY)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | CHG-ID | DBV-CHG-ID | 最終レコードのCHG-ID |
|
||||
| 2 | EMP-ID | DBV-EMP-ID | 従業員ID |
|
||||
| 3 | EMP-NAME | DBV-EMP-NAME | 従業員名 |
|
||||
| 4 | CHG-DATE | DBV-CHG-DATE | 異動日 |
|
||||
| 5 | CHG-TYPE | '99'固定 | サマリ識別 |
|
||||
| 6 | INSURER-CODE | 異キー:DBV-INSURER-CODE / 主キー:SPACE | 主KB時はSPACE |
|
||||
| 7 | PREV-INSURER | WS-PREV-INSURER | 変更前保険者コード |
|
||||
| 8 | REASON | 'INSURER CHANGED' / SPACE | 異キー時のみ設定 |
|
||||
| 9 | REC-TYPE | 'S'固定 | サマリ識別子 |
|
||||
| 10 | FILLER | SPACE | |
|
||||
|
||||
### 出力ファイル2(W02/CHG-DETAIL)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | CHG-ID | DBV-CHG-ID | |
|
||||
| 2 | EMP-ID | DBV-EMP-ID | |
|
||||
| 3 | EMP-NAME | DBV-EMP-NAME | |
|
||||
| 4 | CHG-DATE | DBV-CHG-DATE | |
|
||||
| 5 | CHG-TYPE | DBV-CHG-TYPE | |
|
||||
| 6 | INSURER-CODE | DBV-INSURER-CODE | |
|
||||
| 7 | PREV-INSURER | DBV-PREV-INSURER | |
|
||||
| 8 | REASON | DBV-REASON | |
|
||||
| 9 | REC-TYPE | 'D'固定 | |
|
||||
| 10 | FILLER | SPACE | |
|
||||
|
||||
### 出力ファイル3(W03/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
@@ -0,0 +1,178 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 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) | |
|
||||
@@ -0,0 +1,149 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA09S25 |
|
||||
| 3 | プログラム名 | 都道府県支部別分割出力処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 11(25分割) |
|
||||
| 6 | 機能概要 | RPT-DATA(SHA08REC 300B)からPREF-CODE(都道府県コード01〜25)を判定し、25個の出力ファイル(PREF-OUT-01〜25)に振り分けて出力する。 |
|
||||
| 7 | | SELECT文にはORGANIZATION IS SEQUENTIALを明示指定する。 |
|
||||
| 8 | | 各出力ファイルはCLOSE WITH LOCKで確定する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | RPT-DATA(R01) | SHA08SRTの出力。PREF-CODE 01〜25のいずれかが設定されている。 |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | RPT-DATA | R01 | SHA09R01 | I | SHA08REC | FB | | 300 | PS | |
|
||||
| 2 | PREF-OUT-01 | W01 | SHA09W01 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=01 |
|
||||
| 3 | PREF-OUT-02 | W02 | SHA09W02 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=02 |
|
||||
| 4 | PREF-OUT-03 | W03 | SHA09W03 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=03 |
|
||||
| 5 | PREF-OUT-04 | W04 | SHA09W04 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=04 |
|
||||
| 6 | PREF-OUT-05 | W05 | SHA09W05 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=05 |
|
||||
| 7 | PREF-OUT-06 | W06 | SHA09W06 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=06 |
|
||||
| 8 | PREF-OUT-07 | W07 | SHA09W07 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=07 |
|
||||
| 9 | PREF-OUT-08 | W08 | SHA09W08 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=08 |
|
||||
| 10 | PREF-OUT-09 | W09 | SHA09W09 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=09 |
|
||||
| 11 | PREF-OUT-10 | W10 | SHA09W10 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=10 |
|
||||
| 12 | PREF-OUT-11 | W11 | SHA09W11 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=11 |
|
||||
| 13 | PREF-OUT-12 | W12 | SHA09W12 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=12 |
|
||||
| 14 | PREF-OUT-13 | W13 | SHA09W13 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=13 |
|
||||
| 15 | PREF-OUT-14 | W14 | SHA09W14 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=14 |
|
||||
| 16 | PREF-OUT-15 | W15 | SHA09W15 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=15 |
|
||||
| 17 | PREF-OUT-16 | W16 | SHA09W16 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=16 |
|
||||
| 18 | PREF-OUT-17 | W17 | SHA09W17 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=17 |
|
||||
| 19 | PREF-OUT-18 | W18 | SHA09W18 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=18 |
|
||||
| 20 | PREF-OUT-19 | W19 | SHA09W19 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=19 |
|
||||
| 21 | PREF-OUT-20 | W20 | SHA09W20 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=20 |
|
||||
| 22 | PREF-OUT-21 | W21 | SHA09W21 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=21 |
|
||||
| 23 | PREF-OUT-22 | W22 | SHA09W22 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=22 |
|
||||
| 24 | PREF-OUT-23 | W23 | SHA09W23 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=23 |
|
||||
| 25 | PREF-OUT-24 | W24 | SHA09W24 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=24 |
|
||||
| 26 | PREF-OUT-25 | W25 | SHA09W25 | O | SHA09REC | FB | | 300 | PS | PREF-CODE=25 |
|
||||
| 27 | ERROR-LOG | W98 | SHA09W98 | O | ZAN05REC | VB | | 200 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | RPT-DATA | なし | PREF-CODEで振分け(01〜25) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.入出力ファイルのオープン
|
||||
入力R01、出力W01〜W25、エラーW98
|
||||
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで繰り返す)
|
||||
2-1.PREF-CODE判定(2100SPLITSOR)
|
||||
EVALUATE PREF-CODE(01〜25)で該当する出力ファイルにWRITE
|
||||
【出力レコード編集】
|
||||
SHA09RECのPREF-CODEにR01のPREF-CODEを設定
|
||||
SHA09RECのINSURER-CODEにR01のINSURER-CODEを設定
|
||||
SHA09RECのRPT-BODYにR01のFILLER(実質レコード本体の先頭294B)を設定
|
||||
またはSHA08RECの全項目を編集してSHA09RECに転記
|
||||
2-2.W01〜W25のいずれかにWRITE
|
||||
2-3.R01を読み込む(1100R01INNSOR)(2件目以降)
|
||||
2-4.PREF-CODEが01〜25の範囲外の場合、ERROR-LOGに出力
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ(CLOSE WITH LOCKで出力ファイルを確定)
|
||||
3-2.入出力件数メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'SHA09R01'
|
||||
PARM2:入力件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:各出力ファイルDD名
|
||||
PARM2:各出力件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA09W98(ERROR-LOG)'
|
||||
PARM2:エラー件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1〜25(W01〜W25/PREF-OUT-01〜25)
|
||||
|
||||
SHA09REC.cpyに従う。300B固定長。
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | PREF-CODE | R01のPREF-CODE | 01〜25 |
|
||||
| 2 | INSURER-CODE | R01のINSURER-CODE | |
|
||||
| 3 | RPT-BODY | R01のFILLER領域相当 | ファイル本体データ(294B) |
|
||||
|
||||
### エラー出力ファイル(W98/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
@@ -0,0 +1,132 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 社会保険管理システム |
|
||||
| 2 | プログラムID | SHA10S10 |
|
||||
| 3 | プログラム名 | 保険者別分割出力処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 12(100分割) |
|
||||
| 6 | 機能概要 | RPT-DATA(SHA08REC 300B)からINSURER-CODE(保険者コード001〜099)を判定し、99個の出力ファイル(INSURER-OUT-01〜99)に振り分けて出力する。 |
|
||||
| 7 | | SELECT文にはORGANIZATION IS SEQUENTIALを明示指定する。 |
|
||||
| 8 | | 各出力ファイルはCLOSE WITH LOCKで確定する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | RPT-DATA(R01) | SHA08SRTの出力。INSURER-CODE 001〜099のいずれかが設定されている。 |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | RPT-DATA | R01 | SHA10R01 | I | SHA08REC | FB | | 300 | PS | |
|
||||
| 2 | INSURER-OUT-01 | W01 | SHA10W01 | O | SHA09REC | FB | | 300 | PS | INSURER-CODE=001 |
|
||||
| 3 | INSURER-OUT-02 | W02 | SHA10W02 | O | SHA09REC | FB | | 300 | PS | INSURER-CODE=002 |
|
||||
| 4 | INSURER-OUT-03 | W03 | SHA10W03 | O | SHA09REC | FB | | 300 | PS | INSURER-CODE=003 |
|
||||
| .. | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
|
||||
| 11 | INSURER-OUT-10 | W10 | SHA10W10 | O | SHA09REC | FB | | 300 | PS | INSURER-CODE=010 |
|
||||
| 12 | ERROR-LOG | W99 | SHA10W98 | O | ZAN05REC | VB | | 200 | PS |
|
||||
|
||||
※本実装では代表10ファイル(001〜010)で定義。本番z/OSでは全99ファイルに拡張予定。
|
||||
※エラーファイルの識別子はW99、DD名はSHA10W98。
|
||||
INSURER-CODE=000または011〜099はエラーとする。
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | RPT-DATA | なし | INSURER-CODEで振分け(001〜099) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| 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.入出力ファイルのオープン
|
||||
入力R01、出力W01〜W10、エラーW99(DD名SHA10W98)
|
||||
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで繰り返す)
|
||||
2-1.INSURER-CODE判定(2100SPLITSOR)
|
||||
EVALUATE INSURER-CODE(001〜099)で該当する出力ファイルにWRITE
|
||||
【出力レコード編集】
|
||||
SHA09RECのPREF-CODEにR01のPREF-CODEを設定
|
||||
SHA09RECのINSURER-CODEにR01のINSURER-CODEを設定
|
||||
SHA09RECのRPT-BODYにR01の本体部分(FILLER相当294B)を設定
|
||||
2-2.W01〜W10のいずれかにWRITE
|
||||
2-3.R01を読み込む(1100R01INNSOR)(2件目以降)
|
||||
2-4.INSURER-CODEが001〜010の範囲外の場合、ERROR-LOG(W99/DD:SHA10W98)に出力
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ(CLOSE WITH LOCKで出力ファイルを確定)
|
||||
3-2.入出力件数メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'SHA10R01'
|
||||
PARM2:入力件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:各出力ファイルDD名
|
||||
PARM2:各出力件数
|
||||
【メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'SHA10W98(ERROR-LOG)'
|
||||
PARM2:エラー件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1〜10(W01〜W10/INSURER-OUT-01〜10)
|
||||
|
||||
SHA09REC.cpyに従う。300B固定長。
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | PREF-CODE | R01のPREF-CODE | |
|
||||
| 2 | INSURER-CODE | R01のINSURER-CODE | 001〜099 |
|
||||
| 3 | RPT-BODY | R01のFILLER領域相当 | ファイル本体データ(294B) |
|
||||
|
||||
### エラー出力ファイル(W99/ERROR-LOG、DD名:SHA10W98)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
+10
-1
@@ -1,3 +1,12 @@
|
||||
## 詳細設計書_ZAN01CHK.md (MARKDOWN, 5.8 KB)
|
||||
|
||||
- **Format**: Markdown
|
||||
- **Word Count**: 512
|
||||
|
||||
- Words: 512 | Chars: 3,580
|
||||
|
||||
### Content
|
||||
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
@@ -141,4 +150,4 @@
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
Reference in New Issue
Block a user