v1.0
This commit is contained in:
+347
@@ -0,0 +1,347 @@
|
||||
# DB定義書
|
||||
|
||||
## 変更履歴
|
||||
|
||||
| No | 変更内容 | 担当者 | 変更日 | 承認者 | 備考 |
|
||||
|----|---------|--------|--------|--------|------|
|
||||
| 1 | 新規作成(全8テーブル) | AI | 2026/06/23 | | サブシステムA(6) + B(2) |
|
||||
| 2 | SALARYDB 4テーブル追加 | AI | 2026/07/08 | | サブシステムC(給与計算) |
|
||||
|
||||
---
|
||||
|
||||
# EMP_MASTER — 社員マスタ
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | EMP_MASTER | — | PK: EMP_ID |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 部署ID | DEPT_ID | CHAR | 4 | | 4 | NOT NULL | | | | | | |
|
||||
| 3 | 氏名 | EMP_NAME | VARCHAR | 50 | | 50 | NOT NULL | | | | | | |
|
||||
| 4 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | '1'=在籍, '9'=退職 |
|
||||
|
||||
### 備考
|
||||
|
||||
- サブシステムA: 参照のみ(SELECT)
|
||||
- サブシステムB: 使用しない
|
||||
|
||||
---
|
||||
|
||||
# LEAVE_RECORDS — 休暇申請記録
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | LEAVE_RECORDS | — | PK: APPLICATION_ID |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 申請番号 | APPLICATION_ID | INTEGER | 10 | | 4 | NOT NULL | | ✓ | | | | 自動採番 |
|
||||
| 2 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | | | | | |
|
||||
| 3 | 休暇種別 | LEAVE_TYPE | CHAR | 2 | | 2 | NOT NULL | | | | | | 01/02/03/04 |
|
||||
| 4 | 開始日 | START_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD |
|
||||
| 5 | 開始時刻 | START_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM |
|
||||
| 6 | 終了日 | END_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD |
|
||||
| 7 | 終了時刻 | END_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM |
|
||||
| 8 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | '1'=有効, '9'=取消 |
|
||||
|
||||
### 備考
|
||||
|
||||
- KIN02UPDがINSERT/DELETEを実行
|
||||
- KIN03EXPがSELECT(日付展開用)
|
||||
- 取消はDELETE FROM で物理削除
|
||||
|
||||
---
|
||||
|
||||
# HOLIDAY_CALENDAR — 休日カレンダー
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | HOLIDAY_CALENDAR | — | PK: HOLIDAY_DATE |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 休日日付 | HOLIDAY_DATE | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD |
|
||||
| 2 | 説明 | DESCRIPTION | VARCHAR | 50 | | 50 | NULL許可 | NULL | | | | | 例:「建国記念の日」 |
|
||||
|
||||
### 備考
|
||||
|
||||
- 土日は曜日判定で処理するため、このテーブルには祝日のみ格納
|
||||
- KIN03EXP, KIN06CLDがSELECTで参照
|
||||
|
||||
---
|
||||
|
||||
# SICK_LEAVE_RATE — 病欠控除率
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | SICK_LEAVE_RATE | — | PK: LEAVE_TYPE |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 休暇種別 | LEAVE_TYPE | CHAR | 2 | | 2 | NOT NULL | | ✓ | | | | '04'固定 |
|
||||
| 2 | 控除率 | DEDUCTION_RATE | DECIMAL | 3 | 2 | 3 | NOT NULL | | | | | | 例:0.50(50%控除) |
|
||||
|
||||
### 備考
|
||||
|
||||
- 全社員共通の設定値
|
||||
- 現時点では参照プログラム未実装(設計上定義)
|
||||
|
||||
---
|
||||
|
||||
# DAILY_RECORDS — 日別勤怠記録
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | DAILY_RECORDS | — | PK: (EMP_ID, TARGET_DATE) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 対象日 | TARGET_DATE | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD |
|
||||
| 3 | 出勤時刻 | TIME_IN | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM, '0000'=打刻なし |
|
||||
| 4 | 退勤時刻 | TIME_OUT | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM, '0000'=打刻なし |
|
||||
| 5 | 年休時間 | ANNUAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 6 | 事假時間 | PERSONAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 7 | 因公特批假時間 | OFFICIAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 8 | 病欠時間 | SICK_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 9 | 未申請欠勤時間 | UNAPPROVED_ABSENT_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 10 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | DEFAULT CURRENT_TIMESTAMP |
|
||||
|
||||
### 備考
|
||||
|
||||
- KIN08DBUがKIN07DAIの出力ファイルからINSERT
|
||||
- 1社員1日=1レコード。出勤日のみ存在。
|
||||
|
||||
---
|
||||
|
||||
# MONTHLY_ABSENCE — 月次統計
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 勤怠休暇管理DB | MONTHLY_ABSENCE | — | PK: (EMP_ID, YEAR_MONTH) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 対象年月 | YEAR_MONTH | CHAR | 6 | | 6 | NOT NULL | | ✓ | | | | YYYYMM |
|
||||
| 3 | 年休合計 | ANNUAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 4 | 事假合計 | PERSONAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 5 | 因公特批假合計 | OFFICIAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 6 | 病欠合計 | SICK_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 7 | 未申請欠勤合計 | UNAPPROVED_ABSENT_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 8 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | DEFAULT CURRENT_TIMESTAMP |
|
||||
|
||||
### 備考
|
||||
|
||||
- KIN08DBUが月次集計後にUPSERT(MERGE)
|
||||
- サブシステムC(給与計算)への連携元
|
||||
|
||||
---
|
||||
|
||||
# OVT_APPLICATIONS — 個別加班申請テーブル
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 残業統計管理DB | OVT_APPLICATIONS | — | PK: APPL_ID |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 申請番号 | APPL_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD+SEQ |
|
||||
| 2 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | | | | | |
|
||||
| 3 | 申請日 | APPL_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD |
|
||||
| 4 | 残業種別 | OVT_TYPE | CHAR | 1 | | 1 | NOT NULL | | | | | | W=平日, H=休日 |
|
||||
| 5 | 開始時刻 | START_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM |
|
||||
| 6 | 終了時刻 | END_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM |
|
||||
| 7 | 加班時間 | OVT_HOURS | DECIMAL | 4 | 1 | 4 | NOT NULL | | | | | | 0.1h単位 |
|
||||
| 8 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | 0=有効, 9=取消 |
|
||||
| 9 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- ZAN06UPDがINSERT/UPDATEを実行
|
||||
- STATUS=9で取消(物理削除はしない)
|
||||
|
||||
---
|
||||
|
||||
# OVT_MONTHLY — 月次集計テーブル
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 残業統計管理DB | OVT_MONTHLY | — | PK: (EMP_ID, YEAR_MONTH, OVT_TYPE) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 対象年月 | YEAR_MONTH | CHAR | 6 | | 6 | NOT NULL | | ✓ | | | | YYYYMM |
|
||||
| 3 | 残業種別 | OVT_TYPE | CHAR | 1 | | 1 | NOT NULL | | ✓ | | | | W=平日, H=休日 |
|
||||
| 4 | 加班時間合計 | OVT_HOURS | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | |
|
||||
| 5 | 加班回数 | OVT_COUNT | INTEGER | 10 | | 4 | NOT NULL | | | | | | |
|
||||
| 6 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- ZAN06UPDが月次集計結果をUPSERT
|
||||
|
||||
---
|
||||
|
||||
# EMP-MASTER(SALARYDB) — 社員マスタ(給与計算用)
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 給与計算DB | EMP-MASTER | KYU01REC | PK: EMP-ID |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP-ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 氏名 | EMP-NAME | VARCHAR | 40 | | 40 | NOT NULL | | | | | | |
|
||||
| 3 | 部署コード | DEPT-CODE | CHAR | 2 | | 2 | NOT NULL | | | | | | |
|
||||
| 4 | 地域コード | REGION-CODE | CHAR | 2 | | 2 | NOT NULL | | | | | | |
|
||||
| 5 | 職種コード | CATEGORY-CODE | CHAR | 3 | | 3 | NOT NULL | | | | | | |
|
||||
| 6 | 基本給 | BASE-SALARY | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 7 | 時給 | HOURLY-RATE | DECIMAL | 7 | 0 | 4 | NOT NULL | | | | | | |
|
||||
| 8 | 扶養人数 | DEPENDENT-COUNT | SMALLINT | — | | 2 | NOT NULL | | | | | | |
|
||||
| 9 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | '0'=在籍, '9'=退職 |
|
||||
| 10 | 更新日時 | UPDATED-AT | TIMESTAMP | — | | 10 | NOT NULL | CURRENT TIMESTAMP | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- KYU02REGがINSERT/UPSERTを実行
|
||||
- KYU04CALがSELECTで参照
|
||||
|
||||
---
|
||||
|
||||
# TAX-TABLE(SALARYDB) — 所得税率テーブル
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 給与計算DB | TAX-TABLE | — | PK: (TAX-FROM, TAX-TO) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 課税下限 | TAX-FROM | DECIMAL | 9 | 0 | 5 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 課税上限 | TAX-TO | DECIMAL | 9 | 0 | 5 | NOT NULL | | ✓ | | | | |
|
||||
| 3 | 税率 | TAX-RATE | DECIMAL | 5 | 4 | 3 | NOT NULL | | | | | | |
|
||||
| 4 | 控除額 | DEDUCTION | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- KYU05DEDがSELECT ... BETWEENで参照
|
||||
- 課税所得に対する超過累進税率
|
||||
|
||||
---
|
||||
|
||||
# INSURANCE-TABLE(SALARYDB) — 社会保険料率テーブル
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 給与計算DB | INSURANCE-TABLE | — | PK: (INS-INCOME-FROM, INS-INCOME-TO) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 所得下限 | INS-INCOME-FROM | DECIMAL | 9 | 0 | 5 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 所得上限 | INS-INCOME-TO | DECIMAL | 9 | 0 | 5 | NOT NULL | | ✓ | | | | |
|
||||
| 3 | 健康保険料率 | INS-HEALTH-RATE | DECIMAL | 7 | 6 | 4 | NOT NULL | | | | | | |
|
||||
| 4 | 厚生年金保険料率 | INS-PENSION-RATE | DECIMAL | 7 | 6 | 4 | NOT NULL | | | | | | |
|
||||
| 5 | 更新日時 | UPDATED-AT | TIMESTAMP | — | | 10 | NOT NULL | CURRENT TIMESTAMP | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- KYU05DEDが内部テーブル(SEARCH ALL)に取込んで参照
|
||||
- 被保険者負担分のみ
|
||||
|
||||
---
|
||||
|
||||
# SALARY-RESULTS(SALARYDB) — 給与計算結果テーブル
|
||||
|
||||
## Layout(テーブル定義)
|
||||
|
||||
### DB基本情報
|
||||
|
||||
| DB名 | DB ID | COPY ID | INDEX |
|
||||
|------|-------|---------|-------|
|
||||
| 給与計算DB | SALARY-RESULTS | — | PK: (EMP-ID, YEAR-MONTH) |
|
||||
|
||||
### カラム定義
|
||||
|
||||
| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 |
|
||||
|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------|
|
||||
| 1 | 社員番号 | EMP-ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | |
|
||||
| 2 | 対象年月 | YEAR-MONTH | CHAR | 6 | | 6 | NOT NULL | | ✓ | | | | YYYYMM |
|
||||
| 3 | 総支給額 | GROSS-PAYMENT | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 4 | 源泉所得税 | INCOME-TAX | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 5 | 社会保険料 | INSURANCE | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 6 | 住民税 | RESIDENT-TAX | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 7 | 差引支給額 | NET-PAYMENT | DECIMAL | 9 | 0 | 5 | NOT NULL | | | | | | |
|
||||
| 8 | 更新日時 | UPDATED-AT | TIMESTAMP | — | | 10 | NOT NULL | CURRENT TIMESTAMP | | | | | |
|
||||
|
||||
### 備考
|
||||
|
||||
- KYU06UPDがINSERT/UPSERTを実行
|
||||
@@ -0,0 +1,435 @@
|
||||
# cobol_testgen v4 生成 JSON — 格式说明 v2.0
|
||||
|
||||
## 修订履历
|
||||
|
||||
| 版本 | 日期 | 变更内容 |
|
||||
|------|------|---------|
|
||||
| v2.0 | | 明确1个json文件=1组数据(group)的命名规则,格式本身与v1相同 |
|
||||
|
||||
## 说明
|
||||
|
||||
v2.0 **格式本身与v1完全一致**,仅补充:
|
||||
1. 一组数据单独放一个json文件
|
||||
2. 一个文件内的`records`数组包含该组的全部处理单元
|
||||
3. 命名规则追加 `_g{groupId}` 标识组号
|
||||
|
||||
---
|
||||
|
||||
## 完整规格 JSON(`output/json/{プログラム名}_g{groupId}.json`)
|
||||
|
||||
### 最外层结构
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "SAN01MAT",
|
||||
"records": [
|
||||
{
|
||||
"input": { ... }
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**1条record = 1次处理单元**。例如匹配(1:1)时:
|
||||
- 匹配成功:record内同时包含两个输入FD
|
||||
- R01-only:record内只含R01的FD
|
||||
- R02-only:record内只含R02的FD
|
||||
|
||||
多个record按处理顺序排列,组成一组完整的测试数据。
|
||||
|
||||
---
|
||||
|
||||
## 例1:单文件CSV输入(1组1条记录)
|
||||
|
||||
文件 `ZAN01CHK_g1.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "ZAN01CHK",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01LINE": "A0000000, , , , ,0, , "
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 例2:单文件二进制输入(1组多条记录)
|
||||
|
||||
文件 `ZAN02CHK_g1.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "ZAN02CHK",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01APPL-ID": "A0000001",
|
||||
"R01EMP-ID": "00000101",
|
||||
"R01APPL-DATE": "20000101",
|
||||
"R01START-TIME":"0201",
|
||||
"R01END-TIME": "0301",
|
||||
"R01STATUS": "B",
|
||||
"R01OVT-TYPE": "C",
|
||||
"R01FILLER": "D000000000000000000000000000000000000000000001"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01APPL-ID": "A0000002",
|
||||
"R01EMP-ID": "00000102",
|
||||
"R01APPL-DATE": "20000102",
|
||||
"R01START-TIME":"0202",
|
||||
"R01END-TIME": "0302",
|
||||
"R01STATUS": "C",
|
||||
"R01OVT-TYPE": "D",
|
||||
"R01FILLER": "D000000000000000000000000000000000000000000002"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 例3:多文件输入(与v1相同)
|
||||
|
||||
文件 `ZAN03CHK_g1.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "ZAN03CHK",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01APPL-ID": "A0000001",
|
||||
"R01EMP-ID": "00000101",
|
||||
"R01APPL-DATE": "20000101",
|
||||
"R01START-TIME":"0201",
|
||||
"R01END-TIME": "0301",
|
||||
"R01STATUS": "B",
|
||||
"R01OVT-TYPE": "C",
|
||||
"R01FILLER": "D000000000000000000000000000000000000000000001"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02EMP-ID": "00000401",
|
||||
"R02DATE": "20000101",
|
||||
"R02TIME-IN": "0501",
|
||||
"R02TIME-OUT": "0601",
|
||||
"R02FILLER": "E0000000000000000000000000000000000000000000000000000001"
|
||||
},
|
||||
"R03INNFIL": {
|
||||
"R03HOLIDAY-DATE": "20000101",
|
||||
"R03HOLIDAY-FLG": "F",
|
||||
"R03FILLER": "G0000000000000000000000000000000000000000000000000000000000000000000001"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 例4:二文件匹配(マッチング1:1)
|
||||
|
||||
v1中ZAN04MAT示例是1条record = 1次匹配处理。
|
||||
|
||||
对于匹配(1:1)测试,**1组数据 = 1个json文件**。1组内包含多条record(R01-only、R02-only、匹配),按处理顺序排列。
|
||||
|
||||
### 文件1:`SAN01MAT_g1.json`
|
||||
|
||||
两端不匹配:先处理R01-only(a001) → 3次匹配(a002/b002, a003/b003, a004/b004) → 最后R02-only(a005)。
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "SAN01MAT",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a001",
|
||||
"R01A002": "b001",
|
||||
"R01A003": "c001",
|
||||
"R01DATA": "c00000000011"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a002",
|
||||
"R01A002": "b002",
|
||||
"R01A003": "c002",
|
||||
"R01DATA": "c00000000012"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a002",
|
||||
"R02A002": "b002",
|
||||
"R02A003": "c002",
|
||||
"R02DATA": "c00000000012"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a003",
|
||||
"R01A002": "b003",
|
||||
"R01A003": "c003",
|
||||
"R01DATA": "c00000000013"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a003",
|
||||
"R02A002": "b003",
|
||||
"R02A003": "c003",
|
||||
"R02DATA": "c00000000013"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a004",
|
||||
"R01A002": "b004",
|
||||
"R01A003": "c004",
|
||||
"R01DATA": "c00000000014"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a004",
|
||||
"R02A002": "b004",
|
||||
"R02A003": "c004",
|
||||
"R02DATA": "c00000000014"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a005",
|
||||
"R02A002": "b005",
|
||||
"R02A003": "c005",
|
||||
"R02DATA": "c00000000015"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 文件2:`SAN01MAT_g2.json`
|
||||
|
||||
反向两端不匹配:先处理R02-only(a001) → 3次匹配 → 最后R01-only(a005)。
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "SAN01MAT",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a001",
|
||||
"R02A002": "b001",
|
||||
"R02A003": "c001",
|
||||
"R02DATA": "c00000000011"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a002",
|
||||
"R01A002": "b002",
|
||||
"R01A003": "c002",
|
||||
"R01DATA": "c00000000012"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a002",
|
||||
"R02A002": "b002",
|
||||
"R02A003": "c002",
|
||||
"R02DATA": "c00000000012"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a003",
|
||||
"R01A002": "b003",
|
||||
"R01A003": "c003",
|
||||
"R01DATA": "c00000000013"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a003",
|
||||
"R02A002": "b003",
|
||||
"R02A003": "c003",
|
||||
"R02DATA": "c00000000013"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a004",
|
||||
"R01A002": "b004",
|
||||
"R01A003": "c004",
|
||||
"R01DATA": "c00000000014"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a004",
|
||||
"R02A002": "b004",
|
||||
"R02A003": "c004",
|
||||
"R02DATA": "c00000000014"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a005",
|
||||
"R01A002": "b005",
|
||||
"R01A003": "c005",
|
||||
"R01DATA": "c00000000015"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 文件3:`SAN01MAT_g3.json`
|
||||
|
||||
中间不匹配:先匹配(a001) → R01-only(a003) → 匹配(a004) → R02-only(a002) → 匹配(a005)。
|
||||
|
||||
```json
|
||||
{
|
||||
"program": "SAN01MAT",
|
||||
"records": [
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a001",
|
||||
"R01A002": "b001",
|
||||
"R01A003": "c001",
|
||||
"R01DATA": "c00000000011"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a001",
|
||||
"R02A002": "b001",
|
||||
"R02A003": "c001",
|
||||
"R02DATA": "c00000000011"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a003",
|
||||
"R01A002": "b003",
|
||||
"R01A003": "c003",
|
||||
"R01DATA": "c00000000013"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a004",
|
||||
"R01A002": "b004",
|
||||
"R01A003": "c004",
|
||||
"R01DATA": "c00000000014"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a004",
|
||||
"R02A002": "b004",
|
||||
"R02A003": "c004",
|
||||
"R02DATA": "c00000000014"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a002",
|
||||
"R02A002": "b002",
|
||||
"R02A003": "c002",
|
||||
"R02DATA": "c00000000012"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"input": {
|
||||
"R01INNFIL": {
|
||||
"R01A001": "a005",
|
||||
"R01A002": "b005",
|
||||
"R01A003": "c005",
|
||||
"R01DATA": "c00000000015"
|
||||
},
|
||||
"R02INNFIL": {
|
||||
"R02A001": "a005",
|
||||
"R02A002": "b005",
|
||||
"R02A003": "c005",
|
||||
"R02DATA": "c00000000015"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DB类型时的输出
|
||||
|
||||
输入类型为DB时,每组生成一个独立的SQL insert文件。
|
||||
|
||||
| 文件种类 | 命名规则 | 例 |
|
||||
|---------|--------|-----|
|
||||
| Insert SQL(一组) | `{プログラムID}_g{groupId}.sql` | `SAN01MAT_g1.sql` |
|
||||
|
||||
例(组1):
|
||||
|
||||
```sql
|
||||
-- Group: 1
|
||||
-- 用途: 员工主表基础数据
|
||||
INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, BIRTH_DATE, SALARY) VALUES
|
||||
('0000000001', '测试太郎', '1990-04-01', 350000.00),
|
||||
('0000000002', '测试花子', '1995-07-15', 420000.00);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 字段值规则
|
||||
|
||||
| PIC | JSON内表示 | 例 |
|
||||
|-----|-----------|-----|
|
||||
| `PIC X(n)` | 左对齐 + 空格填充 | `"A0000001"` (8桁) |
|
||||
| `PIC 9(n)` | 右对齐 + 前补零 | `"00000101"` (8桁) |
|
||||
| `PIC S9(n)` | 符号 + 右对齐 + 前补零 | `"+0000101"` |
|
||||
| `PIC S9(n)V9(m)` | 符号 + 右对齐 + 含小数点 | `"+001234567"` (V9(2)时实际为 +0012345.67) |
|
||||
| `PIC S9(n) COMP` | 十进制数字字符串(含符号) | `"300"`、`"-100000"` |
|
||||
| `PIC S9(n) COMP-3` | 十进制数字字符串(含符号) | `"1234"`、`"-5678"` |
|
||||
| `PIC 9(n) COMP-3` | 十进制数字字符串(无符号) | `"1234"` |
|
||||
| FILLER(纯保留) | 字段名为`FILLER`的未使用区域 | 含有组ID和记录编号的可辨识模式 `"D000000...001"` |
|
||||
| FILLER(业务保留) | 字段名有具体名称但实际未使用的保留区 | PIC X(n)填全空格、PIC 9(n)填全零 |
|
||||
|
||||
---
|
||||
|
||||
## 输出目录结构
|
||||
|
||||
```
|
||||
output/
|
||||
├── json/ # 完整JSON(每组一个文件,输入类型=文件时输出)
|
||||
│ ├── SAN01MAT_g1.json
|
||||
│ ├── SAN01MAT_g2.json
|
||||
│ └── SAN01MAT_g3.json
|
||||
└── db/ # DB insert SQL(每组一个文件,输入类型=DB时输出)
|
||||
├── SAN01MAT_g1.sql
|
||||
├── SAN01MAT_g2.sql
|
||||
└── SAN01MAT_g3.sql
|
||||
```
|
||||
@@ -0,0 +1,432 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. SAN01MAT.
|
||||
*****************************************************************
|
||||
* システム名 : サンプルシステム *
|
||||
* プログラムID : SAN01MAT *
|
||||
* プログラム名 : XXXXXX処理 *
|
||||
* 作成日 : YYYY-MM-DD *
|
||||
* 処理概要 : マッチング(1:1)を行う。 *
|
||||
* マッチの場合、ファイルW01を出力する。 *
|
||||
* ファイルR01のみの場合ファイルW02を出力する。*
|
||||
* ファイルR02のみの場合ファイルW03を出力する。*
|
||||
* *
|
||||
*****************************************************************
|
||||
* 更新履歴 *
|
||||
*---------------------------------------------------------------*
|
||||
* 更新日付 担当者 更新内容 *
|
||||
*---------------------------------------------------------------*
|
||||
* YY-MM-DD @@@ 新規作成 *
|
||||
* *
|
||||
*****************************************************************
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
SOURCE-COMPUTER. IBM-ZSERIES.
|
||||
OBJECT-COMPUTER. IBM-ZSERIES.
|
||||
*
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT R01INNFIL ASSIGN TO SAN01R01.
|
||||
SELECT R02INNFIL ASSIGN TO SAN01R02.
|
||||
SELECT W010UTFIL ASSIGN TO SAN01W01.
|
||||
SELECT W020UTFIL ASSIGN TO SAN01W02.
|
||||
SELECT W030UTFIL ASSIGN TO SAN01W03.
|
||||
*
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* ##RO1## *
|
||||
*****************************************************************
|
||||
FD R01INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 RO1INNREC.
|
||||
COPY BBBBBFC REPLACING ==(A)== BY ==R01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* ##RO2## *
|
||||
*****************************************************************
|
||||
FD R02INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 RO2INNREC.
|
||||
COPY BBBBBFC REPLACING ==(A)== BY ==R02==.
|
||||
*
|
||||
*****************************************************************
|
||||
* ##WO1## *
|
||||
*****************************************************************
|
||||
FD W010UTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 WO10UTREC.
|
||||
COPY BBBBBFC REPLACING ==(A)== BY ==WO1==.
|
||||
*
|
||||
*****************************************************************
|
||||
* ##WO2## *
|
||||
*****************************************************************
|
||||
FD W020UTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 WO20UTREC.
|
||||
COPY BBBBBFC REPLACING ==(A)== BY ==WO2==.
|
||||
*
|
||||
*****************************************************************
|
||||
* ##W03## *
|
||||
*****************************************************************
|
||||
FD W030UTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 WO30UTREC.
|
||||
COPY BBBBBFC REPLACING ==(A)== BY ==WO3==.
|
||||
*
|
||||
WORKING-STORAGE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* SYSIN領域 *
|
||||
*****************************************************************
|
||||
*01 SYSARA.
|
||||
*
|
||||
*****************************************************************
|
||||
* コンスタント領域 *
|
||||
*****************************************************************
|
||||
01 CNSARA.
|
||||
03 CNS-PRGIDX PIC X(008) VALUE 'SAN01MAT'.
|
||||
03 CNS-UNYSUTKES-1 PIC X(001) VALUE '1'.
|
||||
03 CNS-CFKFCA PIC X(001) VALUE 'N'.
|
||||
03 CNS-MSGSTR PIC 9(003) VALUE 001.
|
||||
03 CNS-MSGFIN PIC 9(003) VALUE 002.
|
||||
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
|
||||
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
|
||||
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
|
||||
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
|
||||
03 CNS-KN0002 PIC 9(001) VALUE 2.
|
||||
03 CNS-ABD999 PIC 9(003) VALUE 999.
|
||||
*
|
||||
*****************************************************************
|
||||
* フラグ領域 *
|
||||
*****************************************************************
|
||||
*01 FLGARA.
|
||||
*
|
||||
*****************************************************************
|
||||
* カウンタ領域 *
|
||||
*****************************************************************
|
||||
01 CUNARA.
|
||||
03 CUN-RO1INN PIC S9(009) COMP-3 VALUE ZERO.
|
||||
03 CUN-R02INN PIC S9(009) COMP-3 VALUE ZERO.
|
||||
03 CUN-WO1OUT PIC S9(009) COMP-3 VALUE ZERO.
|
||||
03 CUN-WO2OUT PIC S9(009) COMP-3 VALUE ZERO.
|
||||
03 CUN-WO3OUT PIC S9(009) COMP-3 VALUE ZERO.
|
||||
*
|
||||
*****************************************************************
|
||||
* 作業領域 *
|
||||
*****************************************************************
|
||||
01 WRKARA.
|
||||
*** 運用日付
|
||||
03 WRK-U06 PIC 9(008).
|
||||
03 WRK-U06ARA REDEFINES WRK-U06.
|
||||
05 WRK-UYOYMX PIC 9(006).
|
||||
05 WRK-UYOHII PIC 9(002).
|
||||
*** マッチングキー
|
||||
03 WRK-R01KEY.
|
||||
05 WRK-R01KEY001 PIC X(010).
|
||||
05 WRK-R01KEY002 PIC X(010).
|
||||
05 WRK-R01KEY003 PIC X(010).
|
||||
03 WRK-R02KEY.
|
||||
05 WRK-R02KEY001 PIC X(010).
|
||||
05 WRK-R02KEY002 PIC X(010).
|
||||
05 WRK-R02KEY003 PIC X(010).
|
||||
*
|
||||
*****************************************************************
|
||||
* サブプログラム連絡領域 *
|
||||
*****************************************************************
|
||||
*** 運用日付取得
|
||||
COPY D01010AC.
|
||||
*** 入力件数表示/入力レコードシーケンスチェックSR用
|
||||
COPY S01MSGAC.
|
||||
*** メッセージ編集出力SR用
|
||||
COPY MSG000AC.
|
||||
*
|
||||
PROCEDURE DIVISION.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (0.0) *
|
||||
* サブモジュール名: 制御処理 *
|
||||
* 処理概要 : メインコントロール処理 *
|
||||
*****************************************************************
|
||||
0000MAJCOLSOR SECTION.
|
||||
*
|
||||
*** 初期処理
|
||||
PERFORM 1000ITTSOR.
|
||||
*
|
||||
*** メイン処理
|
||||
PERFORM 2000MAJSOR
|
||||
UNTIL WRK-R01KEY = HIGH-VALUE
|
||||
AND WRK-R02KEY = HIGH-VALUE.
|
||||
*
|
||||
*** 終了処理
|
||||
PERFORM 3000STPSOR.
|
||||
*
|
||||
0000MAJCOLSOREXT.
|
||||
GOBACK.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (1.0) *
|
||||
* サブモジュール名: 初期処理 *
|
||||
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
|
||||
*****************************************************************
|
||||
1000ITTSOR SECTION.
|
||||
*
|
||||
*** 開始メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGSTR TO M00MSGCOD.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** コンバイル日時出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGKEYINF TO M00MSGCOD.
|
||||
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22(1).
|
||||
MOVE 'COMPILED' TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** ワークエリア初期化
|
||||
INITIALIZE WRKARA.
|
||||
*
|
||||
*** 運用日付取得
|
||||
INITIALIZE D01UBSPAR.
|
||||
CALL 'DAT01S0' USING D01UBSPAR.
|
||||
IF D01FKICOD = ZERO
|
||||
MOVE D01U06 TO WRK-U06
|
||||
ELSE
|
||||
INITIALIZE M00MHOPAR
|
||||
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
||||
MOVE 'DAT01SO' TO M00UMKDATS22(1)
|
||||
MOVE D01FKICOD TO M00UMKDATS22(2)
|
||||
PERFORM 4000MSGOUTSOR
|
||||
PERFORM 9999ABDSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 入出力ファイルOPEN
|
||||
OPEN INPUT R01INNFIL
|
||||
R02INNFIL
|
||||
OUTPUT W010UTFIL
|
||||
W020UTFIL
|
||||
W030UTFIL.
|
||||
*
|
||||
*** #R01#を読み込み
|
||||
PERFORM 1100R01INNSOR.
|
||||
*** #R02#を読み込み
|
||||
PERFORM 1200R02INNSOR.
|
||||
*
|
||||
1000ITTSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.1) *
|
||||
* サブモジュール名:##RO1##読込処理 *
|
||||
* 処理概要 :レコード読込・キー設定・SEQチェック処理 *
|
||||
*****************************************************************
|
||||
1100R01INNSOR SECTION.
|
||||
*
|
||||
READ R01INNFIL
|
||||
AT END
|
||||
MOVE HIGH-VALUE TO WRK-R01KEY
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-RO1INN
|
||||
MOVE R01A001 TO WRK-R01KEY001
|
||||
MOVE R01A002 TO WRK-R01KEY002
|
||||
MOVE R01A003 TO WRK-R01KEY003
|
||||
*** 入力件数表示/シーケンスチェック処理
|
||||
MOVE 'SAN01R01' TO S01DDM.
|
||||
MOVE CNS-UNYSUTKES-1 TO SO1HYOKESKJCKUB
|
||||
MOVE CNS-CFKFCA TO S01JKDKIYFLG
|
||||
MOVE WRK-R01KEY TO SO1SEQCECKOM
|
||||
COPY CHK01SRP REPLACING ==(A)==BY ==S01==.
|
||||
END-READ.
|
||||
*
|
||||
1100R01INNSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.2) *
|
||||
* サブモジュール名:##RO2##読込処理 *
|
||||
* 処理概要 :レコード読込・キー設定・SEQチェック処理 *
|
||||
*****************************************************************
|
||||
1200R02INNSOR SECTION.
|
||||
*
|
||||
READ R02INNFIL
|
||||
AT END
|
||||
MOVE HIGH-VALUE TO WRK-R02KEY
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-R02INN
|
||||
MOVE R02A001 TO WRK-R02KEY001
|
||||
MOVE R02A002 TO WRK-R02KEY002
|
||||
MOVE R02A003 TO WRK-R02KEY003
|
||||
*** 入力件数表示/シーケンスチェック処理
|
||||
MOVE 'SAN01R02' TO S01DDM.
|
||||
MOVE CNS-UNYSUTKES-1 TO SO1HYOKESKJCKUB
|
||||
MOVE CNS-CFKFCA TO S01JKDKIYFLG
|
||||
MOVE WRK-R02KEY TO SO1SEQCECKOM
|
||||
COPY CHK01SRP REPLACING ==(A)== BY ==S01==.
|
||||
END-READ.
|
||||
*
|
||||
1200R02INNSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブプログラムNO:(2.0) *
|
||||
* サブプログラム名:主処理 *
|
||||
* 処理概要 :マッチング(1:1)を行う *
|
||||
*****************************************************************
|
||||
2000MAJSOR SECTION.
|
||||
*
|
||||
EVALUATE TRUE
|
||||
*** マッチ
|
||||
WHEN WRK-R01KEY = WRK-R02KEY
|
||||
*** #WO1#を編集出力処理
|
||||
PERFORM 2100W010UTSOR
|
||||
*
|
||||
*** #RO1#を読み込み
|
||||
PERFORM 1100R01INNSOR
|
||||
*** #RO2#を読み込み
|
||||
PERFORM 1200R02INNSOR
|
||||
*
|
||||
*** アンマッチ(##R01##のみ)
|
||||
WHEN WRK-R01KEY < WRK-R02KEY
|
||||
*** #WO2#を編集出力処理
|
||||
PERFORM 2200W020UTSOR
|
||||
*
|
||||
*** #RO1#を読み込み
|
||||
PERFORM 1100R01INNSOR
|
||||
*
|
||||
*** アンマッチ(##R02##のみ)
|
||||
WHEN WRK-R01KEY > WRK-R02KEY
|
||||
*** #WO3#を編集出力処理
|
||||
PERFORM 2300W030UTSOR
|
||||
*
|
||||
*** #R02#を読み込み
|
||||
PERFORM 1200R02INNSOR
|
||||
END-EVALUATE.
|
||||
*
|
||||
2000MAJSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.1) *
|
||||
* サブモジュール名:##WO1##編集出力処理 *
|
||||
* 処理概要 :レコード編集・出力処理 *
|
||||
*****************************************************************
|
||||
2100W010UTSOR SECTION.
|
||||
*
|
||||
MOVE RO1INNREC TO W010UTREC.
|
||||
MOVE R02INNREC TO W010UTREC.
|
||||
*
|
||||
WRITE WO1OUTREC.
|
||||
ADD 1 TO CUN-WO1OUT.
|
||||
|
||||
2100W010UTSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブプログラムNO:(2.2) *
|
||||
* サブプログラム名:##WO2#を編集出力処理 *
|
||||
* 処理概要 :レコード編集・出力処理 *
|
||||
*****************************************************************
|
||||
2200W020UTSOR SECTION.
|
||||
*
|
||||
MOVE RO1INNREC TO W020UTREC.
|
||||
*
|
||||
WRITE WO2OUTREC.
|
||||
ADD 1 TO CUN-WO2OUT.
|
||||
*
|
||||
2200W020UTSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブプログラムNO:(2.3) *
|
||||
* サブプログラム名:##WO3#を編集出力処理 *
|
||||
* 処理概要 :レコード編集・出力処理 *
|
||||
*****************************************************************
|
||||
2300W030UTSOR SECTION.
|
||||
*
|
||||
MOVE R02INNREC TO W03OUTREC.
|
||||
*
|
||||
WRITE WO3OUTREC.
|
||||
ADD 1 TO CUN-WO3OUT.
|
||||
*
|
||||
2300W030UTSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(3.0) *
|
||||
* サブモジュール名:終了処理 *
|
||||
* 処理概要 :ファイルクローズ・件数と終了メッセージ出力 *
|
||||
*****************************************************************
|
||||
3000STPSOR SECTION.
|
||||
*
|
||||
*** 入出力ファイルCLOSE
|
||||
CLOSE R01INNFIL
|
||||
R02INNFIL
|
||||
W010UTFIL
|
||||
W020UTFIL
|
||||
W030UTFIL.
|
||||
*
|
||||
*** 入出力ファイル件数出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'SAN01R01' TO M00UMKDATS22(1).
|
||||
MOVE CUN-RO1INN TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'SAN01R02' TO M00UMKDATS22(1).
|
||||
MOVE CUN-R02INN TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'SAN01W01' TO M00UMKDATS22(1).
|
||||
MOVE CUN-WO1OUT TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'SAN01W02' TO M00UMKDATS22(1).
|
||||
MOVE CUN-WO2OUT TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'SAN01W03' TO M00UMKDATS22(1).
|
||||
MOVE CUN-WO3OUT TO M00UMKDATS22(2).
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** 終了メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGFIN TO M00MSGCOD.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
3000STPSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブプログラムNO:(4.0) *
|
||||
* サブプログラム名:メッセージ編集出力処理 *
|
||||
* 処理概要 :メッセージ編集出力サブPGM呼出 *
|
||||
*****************************************************************
|
||||
4000MSGOUTSOR SECTION.
|
||||
*
|
||||
MOVE CNS-KN0002 TO M00KNOCOD
|
||||
MOVE CNS-KN0002 TO M00SYUCOD.
|
||||
MOVE CNS-PRGIDX TO M00PRGIDX.
|
||||
CALL 'MSG0SRP' USING M00MSGPAR.
|
||||
*
|
||||
4000MSGOUTSOREXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブプログラムNO:(9.9) *
|
||||
* サブプログラム名:ABEND処理 *
|
||||
* 処理概要 :ABENDサブPGM呼出 *
|
||||
*****************************************************************
|
||||
9999ABDSOR SECTION.
|
||||
*
|
||||
MOVE CNS-ABD999 TO M00ABDCOD.
|
||||
CALL 'END01TO' USING M00MSGPAR.
|
||||
*
|
||||
9999ABDSOREXT.
|
||||
EXIT.
|
||||
@@ -0,0 +1,141 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | サンプルシステム |
|
||||
| 2 | プログラムID | SAN01MAT |
|
||||
| 3 | プログラム名 | XXXXXX処理 |
|
||||
| 4 | PGMパターン | マッチング(1:1) |
|
||||
| 5 | 機能概要 | マッチング(1:1)を行う。 |
|
||||
| 6 | | マッチの場合、ファイルW01を出力する。 |
|
||||
| 7 | | ファイルR01のみの場合ファイルW02を出力する。 |
|
||||
| 8 | | ファイルR02のみの場合ファイルW03を出力する。 |
|
||||
|
||||
※PGMパターン:マッチング(1:1、1:N、M:N)、レイアウト編集のみ(GETPUT)、項目チェック、振り分け、キーブレイク、キーブレイク(集計、集約)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | ファイルR01 | キー項目A001>A002>A003で昇順でソート |
|
||||
| 2 | ファイルR02 | キー項目A001>A002>A003で昇順でソート |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | ファイルR01 | R01 | SAN01R01 | I | BBBBBFC | FB | | 120 | PS | |
|
||||
| 2 | ファイルR02 | R02 | SAN01R02 | I | BBBBBFC | FB | | 120 | PS | |
|
||||
| 3 | ファイルW01 | W01 | SAN01W01 | O | BBBBBFC | FB | | 120 | PS | |
|
||||
| 4 | ファイルW02 | W02 | SAN01W02 | O | BBBBBFC | FB | | 120 | PS | |
|
||||
| 5 | ファイルW03 | W03 | SAN01W03 | O | BBBBBFC | FB | | 120 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | ファイルR01 | A001>A002>A003(重複NG) | A001>A002>A003 |
|
||||
| 2 | ファイルR02 | A001>A002>A003(重複NG) | A001>A002>A003 |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 入力件数表示/シーケンスチェック処理SUB | CHK01SRP | S01MSGAC |
|
||||
| 2 | 運用日取得SUB | DAT01S0 | D01010AC |
|
||||
| 3 | メッセージ編集出力処理SUB | MSG0SRP | MSG000AC |
|
||||
| 4 | ABEND処理SUB | END01TO | MSG000AC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理(1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化
|
||||
1-4.運用日取得SUB(DAT01S0)により運用日を取得する。
|
||||
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
|
||||
【メッセージ編集】
|
||||
メッセージ番号:5(サブエラー)
|
||||
PARM1:'DAT01SO'
|
||||
PARM2:復帰コード
|
||||
【ABEND処理SUB】
|
||||
ABENDコード:999
|
||||
1-5.使用ファイルのオーブン
|
||||
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
1-7.R02を読み込む。(1200R02INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01、R02を全て読み終えるまで下記を繰り返す)
|
||||
2-1.マッチの場合
|
||||
2-1-1.R01をW01にそのまま出力する。(2100W010UTSOR)
|
||||
*出力編集(W01)を参照
|
||||
2-1-2.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
2-1-3.R02を読み込む。(1200R02INNSOR)(2件目以降)
|
||||
2-2.R01のみの場合
|
||||
2-2-1.R01をW02にそのまま出力する。(2200W020UTSOR)
|
||||
*出力編集(W02)を参照
|
||||
2-2-2.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
2-3.R02のみの場合
|
||||
2-3-1.R02をW03にそのまま出力する。(2300W030UTSOR)
|
||||
*出力編集(W03)を参照
|
||||
2-3-2.R02を読み込む。(1200R02INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | A001 | R01.同項目を設定 | |
|
||||
| 2 | A002 | R01.同項目を設定 | |
|
||||
| 3 | A003 | R01.同項目を設定 | |
|
||||
| 4 | … | | |
|
||||
| 5 | A020 | R01.同項目を設定 | |
|
||||
|
||||
### 出力ファイル2(W02)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | A001 | R01.同項目を設定 | |
|
||||
| 2 | A002 | R01.同項目を設定 | |
|
||||
| 3 | A003 | R01.同項目を設定 | |
|
||||
| 4 | … | | |
|
||||
| 5 | A020 | R01.同項目を設定 | |
|
||||
|
||||
### 出力ファイル3(W03)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | A001 | R02.同項目を設定 | |
|
||||
| 2 | A002 | R02.同項目を設定 | |
|
||||
| 3 | A003 | R02.同項目を設定 | |
|
||||
| 4 | … | | |
|
||||
| 5 | A020 | R02.同項目を設定 | |
|
||||
@@ -0,0 +1,142 @@
|
||||
# ファイル定義書
|
||||
|
||||
## 変更履歴
|
||||
|
||||
| No | 変更内容 | 担当者 | 変更日 | 承認者 | 備考 |
|
||||
|----|---------|--------|--------|--------|------|
|
||||
| 1 | 新規作成 | AI | YYYY/MM/DD | | |
|
||||
|
||||
## Layout(レコードレイアウト)
|
||||
|
||||
### ファイル基本情報
|
||||
|
||||
| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 |
|
||||
|-----------|---------|------|-------------|-----------|
|
||||
| | | PS | FB | |
|
||||
|
||||
### レコード定義
|
||||
|
||||
| No | レベル | 項目名 | 項目名(英字名) | 属性 | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 |
|
||||
|----|--------|--------|---------------|------|---------|--------|---------|-----------|-------------|------|
|
||||
| 1 | | | | | | | | | | |
|
||||
| 2 | | | | | | | | | | |
|
||||
| 3 | | | | | | | | | | |
|
||||
| 4 | | | | | | | | | | |
|
||||
|
||||
---
|
||||
|
||||
## 記載説明
|
||||
|
||||
| 項目 | 説明 |
|
||||
|------|------|
|
||||
| 媒体 | ファイル(PS)の場合は"PS"と記録 |
|
||||
| レコード形式 | 固定長(FB)または可変長(VB)と記録 |
|
||||
| レコード長 | レコード長は全項目のバイト数を合計して記録。FDのRECORD SIZEと一致させること。REDEFINES項目は合計に含まない。 |
|
||||
| レベル | レベル番号の定義:01, 03, 05, 07, 09... と飛び飛びのレベル番号とする。同じレベル番号は兄弟関係となる。 |
|
||||
| 属性(PIC TYPE) | 属性(TYPE)とバイト数を記入するものとする。原則PIC記法で記録。COBOL記述に沿ったシートの記載内容に準拠。 |
|
||||
|
||||
## COBOLデータ型一覧
|
||||
|
||||
| No | COBOL記述 | 略記法 | バイト数 | 説明 | 日本語説明 | 例 | バイト数(例) |
|
||||
|----|-----------|--------|---------|------|-----------|-----|-------------|
|
||||
| 1 | PIC X(n) | X(n) | n | 英数字 | 固定長英数字 | X(10) | 10 |
|
||||
| 2 | PIC G(n) | G(n) | n×2 | DBCS文字 | ダブルバイト文字(日本語) | G(20) | 40 |
|
||||
| 3 | PIC 9(n) | 9(n) | n | 数字・10進(符号無) | 符号無し整数 | 9(7) | 7 |
|
||||
| 4 | PIC S9(n) | S9(n) | n | 数字・10進(符号有) | 符号付き整数 | S9(7) | 7 |
|
||||
| 5 | PIC S9(n)V9(m) | S9(n)V9(m) | n+m | 数字・10進(符号有・小数) | 暗黙小数点付き(DISPLAY) | S9(7)V9(2) | 9 |
|
||||
| 6 | PIC S9(n) COMP-3 | S9(n) COMP-3 | INT((n+2)/2) | パック10進(符号有) | 内部10進数 | S9(7) COMP-3 | 4 |
|
||||
| 7 | PIC 9(n) COMP-3 | 9(n) COMP-3 | INT((n+1)/2) | パック10進(符号無) | 内部10進数(符号無) | 9(7) COMP-3 | 4 |
|
||||
| 8 | PIC S9(n)V9(m) COMP-3 | S9(n)V9(m) COMP-3 | INT((n+m+2)/2) | パック10進(符号有・小数) | 暗黙小数点付きCOMP-3 | S9(7)V9(2) COMP-3 | 5 |
|
||||
| 9 | PIC S9(4) COMP | S9(4) COMP | 2 | 2進(2バイト) | 半語長バイナリ | S9(4) COMP | 2 |
|
||||
| 10 | PIC S9(9) COMP | S9(9) COMP | 4 | 2進(4バイト) | 全語長バイナリ | S9(9) COMP | 4 |
|
||||
| 11 | PIC S9(18) COMP | S9(18) COMP | 8 | 2進(8バイト) | 2語長バイナリ | S9(18) COMP | 8 |
|
||||
| 12 | PIC S9(n)V9(m) COMP | S9(n)V9(m) COMP | n+m≦4→2, ≦9→4, ≦18→8 | 2進(符号有・小数) | 暗黙小数点付きCOMP | S9(9)V9(2) COMP | 8 |
|
||||
| 13 | PIC S9(n) BINARY | S9(n) BINARY | n≦4→2, n≦9→4, n≦18→8 | 2進(バイナリ) | COMPと同一 | S9(15) BINARY | 8 |
|
||||
| 14 | ZZZ9 | ZZZ9 | Zの数+9の数 | 数字編集パターン | ゼロ抑制編集 | ZZZZ9 | 5 |
|
||||
|
||||
## COBOL記述例
|
||||
|
||||
### 例1: 基本レイアウト
|
||||
|
||||
COBOL定義:
|
||||
```
|
||||
01 TEST-RECORD.
|
||||
03 FIELD-1 PIC X(10).
|
||||
03 FIELD-2 PIC S9(7) COMP-3.
|
||||
03 FIELD-3 PIC 9(4).
|
||||
03 FIELD-4 PIC S9(9) COMP.
|
||||
03 FILLER PIC X(5).
|
||||
```
|
||||
|
||||
FD記述:
|
||||
|
||||
| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 |
|
||||
|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------|
|
||||
| 1 | 01 | テストレコード | TEST-RECORD | | | | 1 | | | |
|
||||
| 2 | 03 | フィールド1 | FIELD-1 | X | 10 | | 1 | | TEST-RECORD | |
|
||||
| 3 | 03 | フィールド2 | FIELD-2 | S9(7) COMP-3 | 5 | | 11 | | TEST-RECORD | |
|
||||
| 4 | 03 | フィールド3 | FIELD-3 | 9(4) | 4 | | 16 | | TEST-RECORD | |
|
||||
| 5 | 03 | 予約 | FILLER | X(5) | 5 | | 20 | | TEST-RECORD | |
|
||||
|
||||
### 例2: REDEFINESを使用する場合
|
||||
|
||||
COBOL定義:
|
||||
```
|
||||
01 REDEF-REC.
|
||||
03 BASE-FIELD PIC X(10).
|
||||
03 REDEF-FIELD REDEFINES BASE-FIELD.
|
||||
05 INFO-1 PIC X(5).
|
||||
05 INFO-2 PIC X(5).
|
||||
```
|
||||
|
||||
FD記述:
|
||||
|
||||
| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 |
|
||||
|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------|
|
||||
| 1 | 01 | REDEFINESレコード | REDEF-REC | | | | 1 | | | |
|
||||
| 2 | 03 | ベースフィールド | BASE-FIELD | X(10) | 10 | | 1 | | REDEF-REC | |
|
||||
| 3 | 03 | 再定義フィールド | REDEF-FIELD | | | | 11 | BASE-FIELD | REDEF-REC | |
|
||||
| 4 | 05 | 情報1 | INFO-1 | 9(5) | 5 | | 11 | | REDEF-REC | |
|
||||
| 5 | 05 | 情報2 | INFO-2 | 9(5) | 5 | | 16 | | REDEF-REC | |
|
||||
|
||||
### 例3: OCCURSを使用する場合
|
||||
|
||||
COBOL定義:
|
||||
```
|
||||
01 OCCURS-REC.
|
||||
03 OCCURS-ITEM OCCURS 3.
|
||||
05 SUB-1 PIC X(5).
|
||||
03 AFTER-ITEM PIC 9(3).
|
||||
```
|
||||
|
||||
FD記述:
|
||||
|
||||
| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 |
|
||||
|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------|
|
||||
| 1 | 01 | OCCURSレコード | OCCURS-REC | | | | 1 | | | |
|
||||
| 2 | 03 | OCCURS項目 | OCCURS-ITEM | | | 3 | 1 | | OCCURS-REC | |
|
||||
| 3 | 05 | サブ項目1 | SUB-1 | X(5) | 5 | | 1 | | OCCURS-REC | |
|
||||
| 4 | 03 | OCCURS後 | AFTER-ITEM | 9(3) | 3 | | 16 | | OCCURS-REC | |
|
||||
|
||||
### 例4: OCCURSの多重入れ子
|
||||
|
||||
COBOL定義:
|
||||
```
|
||||
01 OCCURS-MULTI-REC.
|
||||
03 GRP-ITEM OCCURS 3.
|
||||
05 SUB1 PIC X(5).
|
||||
05 SUB2 OCCURS 4.
|
||||
07 SUB2-DATA PIC 9(3).
|
||||
03 AFTER-ITEM PIC 9(3).
|
||||
```
|
||||
|
||||
FD記述:
|
||||
|
||||
| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 |
|
||||
|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------|
|
||||
| 1 | 01 | OCCURS多重入れ子レコード | OCCURS-MULTI-REC | | | | 1 | | | |
|
||||
| 2 | 03 | グループ項目 | GRP-ITEM | | | 3 | 1 | | OCCURS-MULTI-REC | |
|
||||
| 3 | 05 | サブ項目1 | SUB-1 | X(5) | 5 | | 1 | | OCCURS-MULTI-REC | |
|
||||
| 4 | 05 | サブ項目2 | SUB-2 | | | 4 | 6 | | OCCURS-MULTI-REC | |
|
||||
| 5 | 07 | サブ項目2データ | SUB2-DATA | 9(3) | 3 | | 6 | | OCCURS-MULTI-REC | |
|
||||
| 6 | 03 | OCCURS後 | AFTER-ITEM | 9(3) | 3 | | 52 | | OCCURS-MULTI-REC | |
|
||||
@@ -0,0 +1,145 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | SSSSシステム |
|
||||
| 2 | プログラムID | SSSnnFFF |
|
||||
| 3 | プログラム名 | XXXXXX処理 |
|
||||
| 4 | PGMパターン | |
|
||||
| 5 | 機能概要 | |
|
||||
| 6 | | |
|
||||
| 7 | | |
|
||||
| 8 | | |
|
||||
|
||||
※PGMパターン:マッチング(1:1、1:N、M:N)、レイアウト編集のみ(GETPUT)、項目チェック、振り分け、キーブレイク、キーブレイク(集計、集約)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | | |
|
||||
| 2 | | |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | | | | | | | | | | |
|
||||
| 2 | | | | | | | | | | |
|
||||
| 3 | | | | | | | | | | |
|
||||
| 4 | | | | | | | | | | |
|
||||
| 5 | | | | | | | | | | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | | | |
|
||||
| 2 | | | |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | | | |
|
||||
| 2 | | | |
|
||||
| 3 | | | |
|
||||
| 4 | | | |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
大項目(1桁):「1.」「2.」「3.」のいずれか
|
||||
中項目(2桁):対応するパラグラフ名を括弧書きで併記
|
||||
小項目(3桁):個別処理の説明
|
||||
詳細:メッセージ番号、PARM、条件分岐、ABENDコード等
|
||||
```
|
||||
|
||||
### 処理詳細フォーマット(記入例)
|
||||
|
||||
```
|
||||
1.初期処理 (1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
メッセージ番号: 1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
メッセージ番号: 33(コンパイル日時)
|
||||
PARM1: コンパイル日時
|
||||
PARM2: 'COMPILED'
|
||||
1-3.ワークエリア初期化
|
||||
1-4.サブプログラム呼出(各種初期設定)
|
||||
戻りコードがZEROの場合、正常継続。
|
||||
それ以外の場合、メッセージ出力後、ABEND処理へ遷移。
|
||||
メッセージ番号: 5(サブエラー)
|
||||
PARM1: 呼出プログラム名
|
||||
PARM2: 戻りコード
|
||||
ABENDコード: 999
|
||||
1-5.入出力ファイルOPEN
|
||||
1-6.入力ファイル1を読み込み。
|
||||
1-7.入力ファイル2を読み込み。
|
||||
|
||||
2.主処理 (2000MAJSOR)(全入力ファイルを読み切り終了するまで繰り返し)
|
||||
2-1.条件Aの場合
|
||||
2-1-1.出力ファイル1に出力する。
|
||||
出力後、出力ファイル1のカウンタを加算
|
||||
2-1-2.入力ファイル1を読み込み。
|
||||
2-2.条件Bの場合
|
||||
2-2-1.出力ファイル2に出力する。
|
||||
出力後、出力ファイル2のカウンタを加算
|
||||
2-2-2.入力ファイル2を読み込み。
|
||||
2-3.条件Cの場合
|
||||
2-3-1.出力ファイル3に出力する。
|
||||
出力後、出力ファイル3のカウンタを加算
|
||||
2-3-2.入力ファイル2を読み込み。
|
||||
|
||||
3.終了処理 (3000STPSOR)
|
||||
3-1.入出力ファイルCLOSE
|
||||
3-2.入出力ファイル件数出力
|
||||
メッセージ番号: 6(入力件数)
|
||||
PARM1: 該当ファイルDD名
|
||||
PARM2: 該当ファイル件数
|
||||
メッセージ番号: 7(出力件数)
|
||||
PARM1: 該当ファイルDD名
|
||||
PARM2: 該当ファイル件数
|
||||
3-3.終了メッセージ出力
|
||||
メッセージ番号: 2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
出力ファイルごとに以下の形式で記述する。
|
||||
|
||||
### 出力ファイル1(例: W01)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | | | |
|
||||
| 2 | | | |
|
||||
| 3 | | | |
|
||||
| 4 | | | |
|
||||
| 5 | | | |
|
||||
|
||||
### 出力ファイル2(例: W02)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | | | |
|
||||
| 2 | | | |
|
||||
| 3 | | | |
|
||||
| 4 | | | |
|
||||
| 5 | | | |
|
||||
|
||||
### 出力ファイル3(例: W03)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | | | |
|
||||
| 2 | | | |
|
||||
| 3 | | | |
|
||||
| 4 | | | |
|
||||
| 5 | | | |
|
||||
Reference in New Issue
Block a user