# 社会保険管理システム 設計書(サブシステム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 — 被保険者データ受信変換 ```jcl //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件 ```jcl //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直積出力 ```jcl //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事業所・保険者判定 ```jcl //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 — 定時決定・月変改定 ```jcl //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) ```jcl //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 — 資格異動処理 ```jcl //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) ```jcl //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分割) ```jcl //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分割) ```jcl //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 |