- 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
23 KiB
23 KiB
社会保険管理システム 設計書(サブシステムD)
システム概要
本サブシステムは、日本年金機構・健康保険組合からの被保険者資格データを起点に、 標準報酬月額の算定・変更(定時決定・月変・随時改定)、社会保険料の計算、 資格異動管理、届出書類の作成・出力を行う。 給与計算サブシステム(C)と連携し、給与データを基にした月変・随時改定処理を実現する。
サブシステム情報
| 項目 | 内容 |
|---|---|
| サブシステムID | SHA(社会保険→SHAkai Hoken) |
| COBOLプログラム数 | 10 |
| JCL数 | 9 |
| DB | 1(INSURANCEDB / DB2、5テーブル) |
システム定数
| 定数 | 値 | 説明 |
|---|---|---|
| HEALTH-INS-SPLIT | 0.50 | 健康保険料折半率(50%事業主負担) |
| PENSION-SPLIT | 0.50 | 厚生年金保険料折半率(50%事業主負担) |
| PREFECTURE-COUNT | 25 | 都道府県グループ数(協会けんぽ支部) |
| INSURER-MAX | 100 | 最大保険者数 |
| HALF-WIDTH-LIMIT | 20 | 氏名カナ最大桁数(半角) |
| TEISI-TEIJI-MONTHS | 3 | 定時決定対象月数(4-6月の3ヶ月) |
| GETSUHEN-GRADE-DIFF | 2 | 月変該当等級差(2等級以上変動) |
サブシステム間連携
| 連携データ | 出力元 | 入力先 | 方式 | 備考 |
|---|---|---|---|---|
| INSURED-CSV-ASCII(被保険者資格データ) | 外部(年金機構・健保組合) | SHAJ010 | ファイル連携 | ASCII CSV、外部システムから受信 |
| SALARY-MONTHLY(給与月額データ) | C-サブシステム KYU06UPD | SHAJ050 | ファイル連携 | 月変・定時決定用給与明細(200B) |
| INS-DETAIL(標準報酬月額明細) | SHA03MNP | C-サブシステム KYU05DED | ファイル連携 | 控除計算用保険料明細(300B) |
| RPT-DATA(届出書データ) | SHA08SRT | 外部(年金事務所) | ファイル連携 | 算定基礎届・月変届・資格喪失届 |
ファイル一覧
| # | ファイル名 | 編成 | RECM | サイズ | 用途 | 区分 |
|---|---|---|---|---|---|---|
| 1 | INS-CSV-ASCII | SEQUENTIAL | FB | 可変 | 被保険者資格データ(ASCII CSV、外部受信) | 新規 |
| 2 | INSURED-DATA | SEQUENTIAL | FB | 200 | 被保険者EBCDIC固定長 | 新規 |
| 3 | EMP-INSURANCE | SEQUENTIAL | FB | 200 | 従業員×保険種別統合データ | 新規 |
| 4 | OFFICE-MST | SEQUENTIAL | FB | 80 | 事業所マスタ(事業所番号→都道府県・事業所名称) | 新規 |
| 5 | INSURER-MST | SEQUENTIAL | FB | 80 | 保険者マスタ(保険者コード→保険者名称・支部番号) | 新規 |
| 6 | GRADE-TBL | SEQUENTIAL | FB | 80 | 標準報酬等級テーブル | 新規 |
| 7 | GRADED-LIST | SEQUENTIAL | FB | 200 | 事業所・保険者情報付与被保険者一覧 | 新規 |
| 8 | UNMATCHED-LIST | SEQUENTIAL | FB | 200 | マッチング不一致データ | 新規 |
| 9 | SALARY-MONTHLY | SEQUENTIAL | FB | 200 | 給与月額データ(Cサブシステム出力) | C連携 |
| 10 | REVISED-GRADE | SEQUENTIAL | FB | 200 | 月変・随時改定結果 | 新規 |
| 11 | INS-DETAIL | SEQUENTIAL | FB | 300 | 保険料計算詳細(従業員×保険種別 M×N件) | 新規 |
| 12 | GRADE-INSURED | SEQUENTIAL | FB | 300 | 等級×従業員×料率組合せ(M:N→M:N中間結果) | 新規 |
| 13 | DEDUCTED-RESULT | SEQUENTIAL | FB | 300 | 保険料確定結果(M:N→M:N最終出力) | 新規 |
| 14 | CHG-SUMMARY | SEQUENTIAL | FB | 200 | 資格異動サマリ(キーブレイク後) | 新規 |
| 15 | CHG-DETAIL | SEQUENTIAL | FB | 200 | 資格異動明細 | 新規 |
| 16 | RPT-DATA | SEQUENTIAL | FB | 300 | 届出書データ(SORT後) | 新規 |
| 17 | PREF-OUT-01〜25 | SEQUENTIAL | FB | 300 | 都道府県支部別出力(25分割) | 新規 |
| 18 | INSURER-OUT-01〜99 | SEQUENTIAL | FB | 300 | 保険者別出力(100分割) | 新規 |
| 19 | APPLICABLE-RULES | SEQUENTIAL | FB | 80 | 適用条件テーブル(年齢・扶養・地域別) | 新規 |
| 20 | SD-SORTWORK | — | — | — | SORT作業用ファイル(I-O-CONTROL SAME SORT AREA指定) | 新規 |
| 21 | ERROR-LOG | SEQUENTIAL | VB | 最大200 | エラーレコード退避 | A・B・C共用 |
DB二重対応
本サブシステムのDB操作はDB2の埋め込みSQL(EXEC SQL)で直接記述する。
5テーブルは同一DB2インスタンス内の別スキーマ(INSURANCEDB)で管理する。
CサブシステムのSALARYDB(EMP-MASTER)はSALARYDB.EMP-MASTERでクロススキーマ参照する。
共通関数利用方針
既存のサブプログラム(SUB01DAT〜SUB05TIM)は本サブシステムでも利用する。
連絡領域のCOPY書式はサブシステム別にSHADATAC・SHAMSGAC・SHAENDAC・SHACHKACを新規作成する。
DB構成(INSURANCEDB)
DB名称:社会保険管理データベース(INSURANCEDB)
テーブル1:INSURED-MASTER(被保険者マスタ)
| カラム | 型 | 内容 |
|---|---|---|
| EMP-ID | CHAR(8) | 社員番号(PK) |
| INSURED-NO | CHAR(10) | 被保険者番号(番号体系:健康保険+厚生年金で共通) |
| OFFICE-NO | CHAR(4) | 事業所番号 |
| INSURER-CODE | CHAR(4) | 保険者コード |
| HEALTH-INS-TYPE | CHAR(1) | 健康保険種別(1=協会けんぽ / 2=組合健保) |
| PENSION-TYPE | CHAR(1) | 年金種別(1=厚生年金 / 2=共済) |
| BASE-MONTHLY | DECIMAL(9,0) | 現行標準報酬月額 |
| GRADE-CODE | CHAR(2) | 現行等級コード |
| STATUS | CHAR(1) | 状態(0=在籍 / 9=喪失) |
| UPDATED-AT | TIMESTAMP | 更新日時 |
テーブル2:INSURANCE-RATES(保険料率テーブル)
| カラム | 型 | 内容 |
|---|---|---|
| GRADE-CODE | CHAR(2) | 標準報酬等級コード(PK) |
| MONTHLY-FROM | DECIMAL(9,0) | 標準報酬月額下限 |
| MONTHLY-TO | DECIMAL(9,0) | 標準報酬月額上限 |
| HEALTH-RATE | DECIMAL(7,6) | 健康保険料率(折半後従業員負担率) |
| PENSION-RATE | DECIMAL(7,6) | 厚生年金保険料率(折半後従業員負担率) |
| EFFECTIVE-FROM | CHAR(6) | 適用開始年月 YYYYMM(PK) |
| EFFECTIVE-TO | CHAR(6) | 適用終了年月 YYYYMM(PK、999999=無期限) |
| UPDATED-AT | TIMESTAMP | 更新日時 |
テーブル3:GRADE-HISTORY(標準報酬等級履歴)
| カラム | 型 | 内容 |
|---|---|---|
| EMP-ID | CHAR(8) | 社員番号(PK) |
| YEAR-MONTH | CHAR(6) | 対象年月 YYYYMM(PK) |
| GRADE-CODE | CHAR(2) | 等級コード |
| MONTHLY-AMOUNT | DECIMAL(9,0) | 標準報酬月額 |
| CHANGE-TYPE | CHAR(1) | 変更要因(1=定時決定 / 2=月変 / 3=随時改定) |
| PREV-GRADE | CHAR(2) | 変更前等級コード |
| UPDATED-AT | TIMESTAMP | 更新日時 |
テーブル4:QUALIFICATION-CHANGES(資格異動テーブル)
| カラム | 型 | 内容 |
|---|---|---|
| CHG-ID | INTEGER | 異動ID(PK、自動採番) |
| EMP-ID | CHAR(8) | 社員番号 |
| CHG-DATE | CHAR(8) | 異動日 YYYYMMDD |
| CHG-TYPE | CHAR(2) | 異動種別(01=取得 / 02=喪失 / 03=種別変更 / 04=住所変更) |
| INSURER-CODE | CHAR(4) | 異動先保険者コード |
| PREV-INSURER | CHAR(4) | 異動元保険者コード |
| REASON | VARCHAR(100) | 異動理由 |
| UPDATED-AT | TIMESTAMP | 更新日時 |
テーブル5:INSURER-MASTER(保険者マスタ)
| カラム | 型 | 内容 |
|---|---|---|
| INSURER-CODE | CHAR(4) | 保険者コード(PK) |
| INSURER-NAME | VARCHAR(60) | 保険者名称 |
| PREF-CODE | CHAR(2) | 都道府県支部コード(01〜25) |
| INSURER-TYPE | CHAR(1) | 保険者種別(1=協会けんぽ / 2=組合健保 / 3=共済) |
| UPDATED-AT | TIMESTAMP | 更新日時 |
処理フロー
╞══ SHAJ010 ═══════════════════════════════════╡
│ SHA01CVT(ASCII→EBCDIC変換) PGMパターン: 29
│ INSPECT CONVERTING X"00"..."FF" TO X"00"..."FF" で変換
│ 被保険者番号・事業所番号の桁数チェック(内部処理)
│ SUB04CHK で数値妥当性チェック
├── 正常 → INSURED-DATA(200B EBCDIC固定長)
└── 異常 → ERROR-LOG
│
╞══ SHAJ020 ═══════════════════════════════════╡
│ SHA02MNC(M:N→M件マッチング) PGMパターン: 18
│ EMP-MASTER(DB2 SALARYDB.EMP-MASTER SELECT)×
│ INSURANCE-RATES(DB2 INSURANCEDB.INSURANCE-RATES SELECT)
│ M件の従業員 × N件の保険種別料率 → 従業員単位に統合
│ SEARCH ALL で該当GRADE-CODEを内部表検索
│ 社員番号昇順に出力
├── → EMP-INSURANCE(200B 従業員単位1件)
└── 異常 → ERROR-LOG
│
╞══ SHAJ030 ═══════════════════════════════════╡
│ SHA03MNP(M:N→M×N件直積出力) PGMパターン: 20
│ EMP-INSURANCE × INSURANCE-RATES(内部表LOAD)
│ 全従業員 × 全保険種別の直積出力(M×N件)
│ 従業員ごとに健康保険・厚生年金・雇用保険の保険料明細を生成
├── → INS-DETAIL(300B 全組合せ明細)
└── 異常 → ERROR-LOG
│
╞══ SHAJ040 ═══════════════════════════════════╡
│ SHA04TWO(2段階1:1→1:1マッチング) PGMパターン: 16
│ 第1段階: INSURED-DATA × OFFICE-MST(事業所マスタ)
│ 事業所番号一致→事業所名称・都道府県コード付加
│ 第2段階: 中間結果 × INSURER-MST(保険者マスタ)
│ 保険者コード一致→保険者名称・支部コード付加
│ DB2参照: INSURED-MASTER(履歴整合性確認)
│ PROGRAM-ID IS INITIAL 指定
│ USAGE PACKED-DECIMAL で金額項目定義
├── → GRADED-LIST(200B 事業所・保険者情報付き)
├── → UNMATCHED-LIST(200B 不一致データ)
└── 異常 → ERROR-LOG
│
╞══ SHAJ050 ═══════════════════════════════════╡
│ SHA05TWN(2段階N:1→N:1マッチング) PGMパターン: 17
│ 第1段階: SALARY-MONTHLY(複数月N件→社員別平均N:1)
│ 同一社員の複数月給与(定時決定:4-6月、月変:直近3月)を平均
│ ADD TO + END-ADD で累積、DIVIDE GIVING REMAINDER で平均
│ 第2段階: 平均値×GRADE-TBL(N:1で等級判定)
│ 平均標準報酬月額が該当する等級コードを特定
│ 現行等級と比較し2等級以上変動→月変該当
├── → REVISED-GRADE(200B 改定結果)
└── 異常 → ERROR-LOG
│
╞══ SHAJ060 ═══════════════════════════════════╡
│ SHA06TWM(2段階M:N→M:Nマッチング) PGMパターン: 22
│ 第1段階: EMP-INSURANCE(M) × INSURANCE-RATES(N)
│ 全従業員×全料率の組合せから該当する等級料率を特定
│ → GRADE-INSURED(M:N 中間ファイル)
│ 第2段階: GRADE-INSURED(M:N) × APPLICABLE-RULES(N)
│ 年齢・扶養人数・地域コード等の条件で正しい料率を確定
│ 通常MOVEで構造体転記(MOVE CORRは不使用)
├── → DEDUCTED-RESULT(300B 保険料確定結果)
└── 異常 → ERROR-LOG
│
╞══ SHAJ070 ═══════════════════════════════════╡
│ SHA07KBR(1:N+異キーキーブレイク) PGMパターン: 33
│ DB2 QUALIFICATION-CHANGES からEXEC SQL SELECT
│ 同一従業員内(1:N)で保険者コード(異キー)変更時キーブレイク
│ 保険者変更を検出した時点でサマリ出力、それ以外は明細出力
│ SUB04CHK/SUB02MSG でCALL(通常CALL、CANCEL不使用)
├── → CHG-SUMMARY(200B 保険者別異動サマリ)
├── → CHG-DETAIL(200B 全異動明細)
└── 異常 → ERROR-LOG
│
╞══ SHAJ080 ═══════════════════════════════════╡
│ SHA08SRT(SORT INPUT/OUTPUT PROCEDURE) PGMパターン: 34
│ SD-SORTWORK + SORT文
│ I-O-CONTROL. SAME SORT AREA FOR SD-SORTWORK
│ INPUT PROCEDURE: GRADED-LIST読込+届出対象抽出(STATUS=0)
│ OUTPUT PROCEDURE: 届出書形式に編集 + 集計
│ RETURN-CODE でSORT結果判定
│ RELEASE + RETURN 文でSORTデータ引渡し・受取
├── → RPT-DATA(300B 届出書データ)
└── 異常 → ERROR-LOG
│
╞══ SHAJ090 ═══════════════════════════════════╡
│ SHA09S25(25分割) PGMパターン: 11
│ RPT-DATA を都道府県支部コード(PREF-CODE 01〜25)で分割
│ SELECT ... ORGANIZATION IS SEQUENTIAL(明示的宣言)
│ CLOSE WITH LOCK で出力ファイル確定
├── → PREF-OUT-01〜25
└── 異常 → ERROR-LOG
│
╞══ SHAJ100 ═══════════════════════════════════╡
│ SHA10S10(100分割) PGMパターン: 12
│ RPT-DATA を保険者コード(INSURER-CODE 001〜099)で分割
│ CLOSE WITH LOCK で出力ファイル確定
├── → INSURER-OUT-01〜99
└── 異常 → ERROR-LOG
JCL
SHAJ010 — 被保険者データ受信変換
//SHAJ010 JOB (ACCT),'被保険者データ変換',CLASS=A
//*
//*--- パラメータ定義 ---
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: ASCII→EBCDIC変換(Type 29)
//*=====================================================================
//STEP010 EXEC PGM=SHA01CVT,PARM='YEARMONTH=&YEARMONTH'
//SHA01R01 DD DSN=INS-CSV-ASCII.DAT,DISP=SHR
//SHA01W01 DD DSN=INSURED-DATA.DAT,DISP=(NEW,CATLG)
//SHA01W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
SHAJ020 — 保険マッチングM件
//SHAJ020 JOB (ACCT),'保険マッチングM件',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: M:N→M件(Type 18)
//*=====================================================================
//STEP010 EXEC PGM=SHA02MNC,PARM='YEARMONTH=&YEARMONTH'
//SHA02W01 DD DSN=EMP-INSURANCE.DAT,DISP=(NEW,CATLG)
//SHA02W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
//* DB2参照(EMP-MASTER/INSURANCE-RATES)のためDD不要
SHAJ030 — M:N直積出力
//SHAJ030 JOB (ACCT),'M:N直積出力',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: M:N→M×N件(Type 20)
//*=====================================================================
//STEP010 EXEC PGM=SHA03MNP,PARM='YEARMONTH=&YEARMONTH'
//SHA03R01 DD DSN=EMP-INSURANCE.DAT,DISP=(OLD,DELETE)
//SHA03W01 DD DSN=INS-DETAIL.DAT,DISP=(NEW,CATLG)
//SHA03W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
//* INSURANCE-RATESは内部表LOADのためDB2参照(DD不要)
SHAJ040 — 2段階1:1事業所・保険者判定
//SHAJ040 JOB (ACCT),'事業所・保険者判定',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 2段階1:1→1:1(Type 16)
//*=====================================================================
//STEP010 EXEC PGM=SHA04TWO,PARM='YEARMONTH=&YEARMONTH'
//SHA04R01 DD DSN=INSURED-DATA.DAT,DISP=(OLD,DELETE)
//SHA04R02 DD DSN=OFFICE-MST.DAT,DISP=SHR
//SHA04R03 DD DSN=INSURER-MST.DAT,DISP=SHR
//SHA04W01 DD DSN=GRADED-LIST.DAT,DISP=(NEW,CATLG)
//SHA04W02 DD DSN=UNMATCHED-LIST.DAT,DISP=(NEW,PASS)
//SHA04W03 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
SHAJ050 — 定時決定・月変改定
//SHAJ050 JOB (ACCT),'定時決定・月変改定',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 2段階N:1→N:1(Type 17)
//*=====================================================================
//STEP010 EXEC PGM=SHA05TWN,PARM='YEARMONTH=&YEARMONTH'
//SHA05R01 DD DSN=SALARY-MONTHLY.DAT,DISP=SHR
//SHA05R02 DD DSN=GRADE-TBL.DAT,DISP=SHR
//SHA05W01 DD DSN=REVISED-GRADE.DAT,DISP=(NEW,CATLG)
//SHA05W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
SHAJ060 — 保険料確定(2段階M:N)
//SHAJ060 JOB (ACCT),'保険料確定',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 2段階M:N→M:N(Type 22)
//*=====================================================================
//STEP010 EXEC PGM=SHA06TWM,PARM='YEARMONTH=&YEARMONTH'
//SHA06R01 DD DSN=EMP-INSURANCE.DAT,DISP=SHR
//SHA06R02 DD DSN=APPLICABLE-RULES.DAT,DISP=SHR
//SHA06W01 DD DSN=DEDUCTED-RESULT.DAT,DISP=(NEW,CATLG)
//SHA06W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
//* INSURANCE-RATESはDB2参照
SHAJ070 — 資格異動処理
//SHAJ070 JOB (ACCT),'資格異動処理',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 1:N+異キーキーブレイク(Type 33)
//*=====================================================================
//STEP010 EXEC PGM=SHA07KBR,PARM='YEARMONTH=&YEARMONTH'
//SHA07W01 DD DSN=CHG-SUMMARY.DAT,DISP=(NEW,CATLG)
//SHA07W02 DD DSN=CHG-DETAIL.DAT,DISP=(NEW,PASS)
//SHA07W03 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
//* QUALIFICATION-CHANGESはDB2 SELECT(DD不要)
SHAJ080 — 届出書作成(SORT)
//SHAJ080 JOB (ACCT),'届出書作成',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: SORT INPUT/OUTPUT PROCEDURE(Type 34)
//*=====================================================================
//STEP010 EXEC PGM=SHA08SRT,PARM='YEARMONTH=&YEARMONTH'
//SHA08R01 DD DSN=GRADED-LIST.DAT,DISP=SHR
//SHA08W01 DD DSN=RPT-DATA.DAT,DISP=(NEW,CATLG)
//SHA08W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
//* SD-SORTWORKはプログラム内SORT作業ファイル(JCL DD不要)
SHAJ090 — 都道府県支部別分割出力(25分割)
//SHAJ090 JOB (ACCT),'支部別分割出力',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 25分割(Type 11)
//*=====================================================================
//STEP010 EXEC PGM=SHA09S25,PARM='YEARMONTH=&YEARMONTH'
//SHA09R01 DD DSN=RPT-DATA.DAT,DISP=(OLD,DELETE)
//SHA09W01 DD DSN=PREF-OUT-01.DAT,DISP=(NEW,CATLG)
//SHA09W02 DD DSN=PREF-OUT-02.DAT,DISP=(NEW,CATLG)
// ...
//SHA09W25 DD DSN=PREF-OUT-25.DAT,DISP=(NEW,CATLG)
//SHA09W98 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
SHAJ100 — 保険者別分割出力(100分割)
//SHAJ100 JOB (ACCT),'保険者別分割出力',CLASS=A
//*
//SETPARM SET YEARMONTH=202605
//*=====================================================================
//* STEP010: 100分割(Type 12)
//*=====================================================================
//STEP010 EXEC PGM=SHA10S10,PARM='YEARMONTH=&YEARMONTH'
//SHA10R01 DD DSN=RPT-DATA.DAT,DISP=(OLD,DELETE)
//SHA10W01 DD DSN=INSURER-OUT-01.DAT,DISP=(NEW,CATLG)
//SHA10W02 DD DSN=INSURER-OUT-02.DAT,DISP=(NEW,CATLG)
// ...
//SHA10W99 DD DSN=INSURER-OUT-99.DAT,DISP=(NEW,CATLG)
//SHA10W98 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS)
プログラム一覧
| # | PGM-ID | PGMパターン | 機能概要 | 使用COPY | DBアクセス | CALL先 |
|---|---|---|---|---|---|---|
| 1 | SHA01CVT | 29 ASCII→EBCDIC変換 | ASCII CSVをINSPECT CONVERTINGでEBCDIC固定長に変換 | SHA01REC, SHADATAC, SHAMSGAC, SHAENDAC, SHACHKAC | なし | SUB01DAT, SUB02MSG, SUB03END, SUB04CHK |
| 2 | SHA02MNC | 18 M:N→M件 | 従業員×保険種別→従業員単位統合 | SHA02REC, SHADATAC, SHAMSGAC, SHAENDAC, SHACHKAC | あり(EMP-MASTER SELECT, INSURANCE-RATES SELECT) | SUB01DAT, SUB02MSG, SUB03END, SUB04CHK |
| 3 | SHA03MNP | 20 M:N→M×N件 | 従業員×保険種別→全組合せ明細 | SHA03REC, SHADATAC, SHAMSGAC, SHAENDAC | あり(INSURANCE-RATES SELECT→内部表LOAD) | SUB01DAT, SUB02MSG, SUB03END |
| 4 | SHA04TWO | 16 2段階1:1→1:1 | 事業所マッチング→保険者マッチング | SHA04REC, SHADATAC, SHAMSGAC, SHAENDAC | あり(INSURED-MASTER SELECT, GRADE-HISTORY SELECT) | SUB01DAT, SUB02MSG, SUB03END |
| 5 | SHA05TWN | 17 2段階N:1→N:1 | 定時決定・月変改定(複数月平均→等級判定) | SHA05REC, SHADATAC, SHAMSGAC, SHAENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 6 | SHA06TWM | 22 2段階M:N→M:N | M従業員×N料率→適用条件で確定 | SHA06REC, SHADATAC, SHAMSGAC, SHAENDAC | あり(INSURANCE-RATES SELECT) | SUB01DAT, SUB02MSG, SUB03END |
| 7 | SHA07KBR | 33 1:N+異キーKB | 資格異動処理、保険者コード変更時KB | SHA07REC, SHADATAC, SHAMSGAC, SHAENDAC | あり(QUALIFICATION-CHANGES SELECT) | SUB01DAT, SUB02MSG, SUB03END, SUB04CHK |
| 8 | SHA08SRT | 34 SORT IP/OP | SORT + INPUT/OUTPUT PROCEDURE | SHA08REC, SHADATAC, SHAMSGAC, SHAENDAC | なし(SORT文、I-O-CONTROL SAME SORT AREA) | SUB01DAT, SUB02MSG, SUB03END |
| 9 | SHA09S25 | 11 25分割 | 都道府県支部別分割出力 | SHA09REC, SHADATAC, SHAMSGAC, SHAENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 10 | SHA10S10 | 12 100分割 | 保険者別分割出力 | SHA09REC, SHADATAC, SHAMSGAC, SHAENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
COPY書式一覧
| # | COPY ID | 用途 | サイズ | 備考 |
|---|---|---|---|---|
| 1 | SHA01REC | INSURED-DATA レコード | 200 | SHA01CVT出力、SHA04TWO入力 |
| 2 | SHA02REC | EMP-INSURANCE レコード | 200 | SHA02MNC出力、SHA03MNP/SHA06TWM入力 |
| 3 | SHA03REC | INS-DETAIL レコード | 300 | SHA03MNP出力 |
| 4 | SHA04REC | GRADED-LIST レコード | 200 | SHA04TWO出力、SHA08SRT入力 |
| 5 | SHA05REC | REVISED-GRADE レコード | 200 | SHA05TWN出力 |
| 6 | SHA06REC | DEDUCTED-RESULT レコード | 300 | SHA06TWM出力 |
| 7 | SHA07REC | CHG-SUMMARY/CHG-DETAIL レコード | 200 | SHA07KBR出力 |
| 8 | SHA08REC | RPT-DATA レコード | 300 | SHA08SRT出力、SHA09S25/SHA10S10入力 |
| 9 | SHA09REC | PREF-OUT/INSURER-OUT レコード | 300 | SHA09S25/SHA10S10出力 |
| 10 | SHADATAC | SUB01DAT連絡領域 | — | CALL I/F |
| 11 | SHAMSGAC | SUB02MSG連絡領域 | — | CALL I/F |
| 12 | SHAENDAC | SUB03END連絡領域 | — | CALL I/F |
| 13 | SHACHKAC | SUB04CHK連絡領域 | — | CALL I/F |