サブシステムEをJIN04PRT〜JIN08TST追加で9本に拡充(全48プログラム)。JIN01-09のIBM COBOL完全版・bin再ビルド版・設計書・使用資源一覧・カバレッジ統計・DDL(schema_jin)・COPY(DB-COMMON/JIN04RPT-REC/JIN05REC)をroot側最新に同期。KYU03AGG/KYU08PRI/SHA02MNC/SHA10S10再テスト済み(全PASS)
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
# JIN05UPD 詳細設計書
|
||||
|
||||
## プログラム概要
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| プログラムID | JIN05UPD(人事→JINji, 05, 人事異動DB更新→UPD) |
|
||||
| プログラムタイプ | 09(DB更新) |
|
||||
| 機能 | HR-TRANS(人事異動トランザクション)を読込み、DB2 EMPLOYEEテーブルをINSERT/UPDATEする |
|
||||
| CALL方式 | メインプログラム(JCLからCALL) |
|
||||
| DBアクセス | DB2 EMPLOYEE(CONNECT / INSERT / UPDATE) |
|
||||
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | HR-TRANS | JCL の SORT で社員番号昇順に並替済であること |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル名 | 識別子 | DD名 | I/O | COPY群 | 形式 | レコード長 | 媒体 | 備考 |
|
||||
|----|--------------|--------|------|-----|--------|------|-----------|------|------|
|
||||
| 1 | HR-TRANS | R01 | JIN05R01 | I | JIN05REC | FB | 200 | PS | 人事異動トランザクション |
|
||||
| 2 | VALID-ERROR | W01 | JIN05W01 | O | (内約80B) | FB | 80 | PS | エラー退避 |
|
||||
|
||||
> 補足:VALID-ERROR レコードは COPY を使用せず WORKING-STORAGE/W01OUTREC に内約定義(PROGRAMID 8B + EMP-ID 8B + CODE 4B + DETAIL 60B = 80B)。ID 設計上 COPY VALID-ERROR-REC を使用していない。将来は COPY 化推奨。
|
||||
|
||||
### DB 使用一覧
|
||||
|
||||
| NO | テーブル | I/O | 内容 |
|
||||
|----|---------|:---:|------|
|
||||
| 1 | EMPLOYEE | I/U | 人事異動の新規登録(INSERT)/ 更新(UPDATE) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 運用日付取得SUB | SUB01DAT | JINDATAC |
|
||||
| 2 | メッセージ編集出力SUB | SUB02MSG | JINMSGAC |
|
||||
| 3 | ABEND処理SUB | SUB03END | JINENDAC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
### 段落一覧(SOR規約名)
|
||||
|
||||
| 段落名 | 機能 |
|
||||
|:-------|:-----|
|
||||
| 0000MAJCOLSOR | メインコントロール(初期→読込→DB更新ループ→終了) |
|
||||
| 1000ITTSOR | 初期処理(開始表示・初期化・運用日付・CONNECT・OPEN・初回読込) |
|
||||
| 2000MAINSOR | 主処理(ホスト変数転記→種別判定→対応処理) |
|
||||
| 2100READSOR | R01読込・EOF判定 |
|
||||
| 3100INSERTSOR | INSERT処理(新規社員追加) |
|
||||
| 3200UPDATESOR | UPDATE処理(既存社員更新) |
|
||||
| 3300ERRSOR | 不明トランザクション→VALID-ERROR出力 |
|
||||
| 3400DBERRSOR | DBエラー(SQLCODE≠0)→VALID-ERROR出力 |
|
||||
| 4000STPSOR | 終了処理(統計表示・CLOSE・終了メッセージ) |
|
||||
| 9000ERRSOR | エラー処理(ABEND) |
|
||||
|
||||
### 処理フロー
|
||||
|
||||
```
|
||||
1. 0000MAJCOLSOR
|
||||
1-1. PERFORM 1000ITTSOR(初期処理)
|
||||
1-2. PERFORM 2000MAINSOR
|
||||
UNTIL WRK-R01EOF-Y OR WRK-COUNT >= CNS-MAX-TRANS
|
||||
(PERFORM UNTIL ... OR ... カバー。上限500件ガード)
|
||||
1-3. PERFORM 4000STPSOR
|
||||
1-4. GOBACK
|
||||
|
||||
2. 1000ITTSOR(初期処理)
|
||||
2-1. DISPLAY 'JIN05UPD START' UPON CONSOLE
|
||||
2-2. M00MHOPAR 初期化 → CALL SUB02MSG(開始 001)
|
||||
2-3. INITIALIZE WRKARA REPLACING NUMERIC BY ZEROS ALPHANUMERIC BY SPACES
|
||||
2-4. INITIALIZE CUNARA
|
||||
2-5. CALL SUB01DAT ... ON EXCEPTION → PERFORM 9000ERRSOR(CALL ON EXCEPTION カバー)
|
||||
2-6. EXEC SQL CONNECT(DB接続)
|
||||
2-7. OPEN INPUT R01INNFIL OUTPUT W01OUTFIL
|
||||
2-8. PERFORM 2100READSOR(初回読込)
|
||||
|
||||
3. 2000MAINSOR(主処理)
|
||||
3-1. ADD 1 TO WRK-COUNT(処理件数増)
|
||||
3-2. R01TRAN-* → HV-* へホスト変数転記
|
||||
3-3. MOVE R01TRAN-TYPE TO WRK-TRAN-TYPE
|
||||
3-4. EVALUATE TRUE
|
||||
WHEN WRK-TRAN-INSERT → PERFORM 3100INSERTSOR
|
||||
WHEN WRK-TRAN-UPDATE → PERFORM 3200UPDATESOR
|
||||
WHEN WRK-TRAN-DELETE → PERFORM 3300ERRSOR(削除未実装)
|
||||
WHEN OTHER → PERFORM 3300ERRSOR
|
||||
3-5. PERFORM 2100READSOR
|
||||
|
||||
4. 2100READSOR(読込)
|
||||
READ R01INNFIL AT END → WRK-R01EOF='1'
|
||||
NOT AT END → ADD 1 TO CUN-R01INN
|
||||
|
||||
5. 3100INSERTSOR(INSERT)
|
||||
EXEC SQL INSERT INTO EMPLOYEE(:HV-* 9カラム)
|
||||
IF SQLCODE NOT = 0 → 3400DBERRSOR
|
||||
ELSE → ADD 1 TO CUN-DBINS
|
||||
|
||||
6. 3200UPDATESOR(UPDATE)
|
||||
STRING 'UPDATING: ' HV-EMP-ID INTO WS-SQL-STR ON OVERFLOW
|
||||
DISPLAY WS-SQL-STR UPON CONSOLE WITH NO ADVANCING
|
||||
EXEC SQL UPDATE EMPLOYEE SET(:HV-* 8-カラム→9列)
|
||||
WHERE EMP_ID = :HV-EMP-ID
|
||||
IF SQLCODE NOT = 0 → 3400DBERRSOR
|
||||
ELSE → ADD 1 TO CUN-DBUPD
|
||||
|
||||
7. 3300ERRSOR(不明種別)
|
||||
W01ERR-PROGRAMID=PGMID / W01ERR-EMP-ID=HV-EMP-ID / W01ERR-CODE='0001'
|
||||
STRING `INVALID TRAN-TYPE:` ... INTO W01ERR-DETAIL → WRITE
|
||||
ADD 1 TO CUN-W01OUT
|
||||
|
||||
8. 3400DBERRSOR(DBエラー)
|
||||
MOVE SQLCODE → WS-SQLCODE-DISP
|
||||
STRING `DB ERROR SQLCODE=` ... INTO W01ERR-DETAIL
|
||||
W01ERR-CODE='0002' → WRITE
|
||||
CALL SUB02MSG USING BY CONTENT
|
||||
|
||||
9. 4000STPSOR(終了)
|
||||
DISPLAY READ/INSERT/UPDATE/ERROR 件数 UPON CONSOLE
|
||||
CLOSE R01INNFIL
|
||||
CLOSE W01OUTFIL WITH LOCK
|
||||
CALL SUB02MSG(終了 002)
|
||||
CALL SUB03END(正常終了)
|
||||
|
||||
10. 9000ERRSOR(ABEND)
|
||||
DISPLAY 'JIN05UPD ABEND' UPON CONSOLE
|
||||
CALL SUB03END(E01ABDCOD)
|
||||
```
|
||||
|
||||
### トランザクション種別(88-level)
|
||||
|
||||
| 88条件名 | VALUE | 対応処理 |
|
||||
|:---------|:------|:---------|
|
||||
| WRK-TRAN-INSERT | 'A' 'B' 'C' | 3100INSERTSOR |
|
||||
| WRK-TRAN-UPDATE | 'D' THRU 'G' | 3200UPDATESOR |
|
||||
| WRK-TRAN-DELETE | 'Z' | 3300ERRSOR(削除未実装) |
|
||||
| (WHEN OTHER) | 上記以外 | 3300ERRSOR |
|
||||
|
||||
> 88-level の複数VALUE('A' 'B' 'C')と VALUE THRU('D' THRU 'G')をカバー。
|
||||
|
||||
### カバレッジ対象キーワード
|
||||
|
||||
| 予約語/記号 | 使用箇所 |
|
||||
|:-----------|:---------|
|
||||
| PERFORM UNTIL ... OR ... | 0000MAJCOLSOR: ループ上限 |
|
||||
| INITIALIZE ... REPLACING | 1000ITTSOR: REPLACING NUMERIC / ALPHANUMERIC |
|
||||
| CALL ... ON EXCEPTION | 1000ITTSOR: SUB01DAT(異常時9000) |
|
||||
| EXEC SQL CONNECT / INSERT / UPDATE | DB操作 |
|
||||
| 88-level 複数VALUE + VALUE THRU | 種別判定 |
|
||||
| EVALUATE TRUE | 2000MAINSOR: WHEN分岐 |
|
||||
| STRING ... ON OVERFLOW | 3200/3300/3400 |
|
||||
| DISPLAY ... UPON CONSOLE WITH NO ADVANCING | 自編集 |
|
||||
| CALL ... BY CONTENT | 3400DBERRSOR |
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/VALID-ERROR)— COPY VALID-ERROR-REC 80B
|
||||
|
||||
| No | 項目名 | 設定元 | PIC | 備考 |
|
||||
|----|--------|--------|:---:|------|
|
||||
| 1 | ERR-PROGRAMID | CNS-PRGIDX | X(8) | 'JIN05UPD' |
|
||||
| 2 | ERR-EMP-ID | HV-EMP-ID | X(8) | 社員ID |
|
||||
| 3 | ERR-CODE | '0001'/'0002' | X(4) | エラー種別 |
|
||||
| 4 | ERR-DETAIL | STRING編集 | X(60) | 詳細メッセージ |
|
||||
|
||||
> ER-CODE: 0001=不明種別、0002=DBエラー。
|
||||
|
||||
### 入力レコード(R01/HR-TRANS)— JIN05REC 200B
|
||||
|
||||
| No | 項目名 | PIC | 備考 |
|
||||
|----|--------|:---:|------|
|
||||
| 1 | TRAN-TYPE | X(1) | A/B/C=Insert, D-G=Update |
|
||||
| 2 | TRAN-EMP-ID | X(8) | |
|
||||
| 3 | TRAN-KANA-SEI | X(20) | |
|
||||
| 4 | TRAN-KANA-MEI | X(20) | |
|
||||
| 5 | TRAN-KANJI-NAME | X(40) | |
|
||||
| 6 | TRAN-SUB-CODE | X(4) | |
|
||||
| 7 | TRAN-BIRTH-DATE | X(8) | |
|
||||
| 8 | TRAN-DEPT-CODE | X(4) | |
|
||||
| 9 | TRAN-ENTRY-DATE | X(8) | |
|
||||
| 10 | TRAN-STATUS | X(1) | |
|
||||
| 11 | FILLER | X(86) | |
|
||||
|
||||
> COPY JIN05REC(200B)を REPLACING (A)→R01 で定義。
|
||||
Reference in New Issue
Block a user