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) |
処理フロー
トランザクション種別(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 で定義。