Files
cobol-tna-system/詳細設計書/詳細設計書_KIN02UPD.md
T

5.6 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 勤怠休暇管理システム
2 プログラムID KIN02UPD
3 プログラム名 休暇申請DB更新処理
4 PGMタイプ メイン
5 PGMパターン DB更新
6 機能概要 WORK-LEAVEファイルの各レコードをDB2テーブルLEAVE_RECORDSに反映する。
7 ステータスによって新規登録(INSERT)、変更(DELETE+INSERT)、取消(DELETE)を行う。

※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新

前提条件

NO 対象ファイル 条件
1 KIN01W01 KIN01INPの出力順に従う。ソート不要。

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 WORK-LEAVE R01 KIN01W01 I KIN01REC FB 80 PS
2 ERROR-LOG W01 KIN02W01 O KIN05REC VB 200 PS DBエラー時出力
3 LEAVE_RECORDS DB I/U/D DB SQLite

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 WORK-LEAVE なし なし

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 メッセージ編集出力SUB SUB02MSG ZANMSGAC
2 ABEND処理SUB SUB03END ZANENDAC

処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
  1-3.ワークエリアの初期化
  1-4.DB接続
    EXEC SQL CONNECT TO 'data/kin.db'
   1-5.R01ファイルOPEN(入力)+ W01ファイルOPEN(出力)
   1-6.R01を初回読込(1100R01INNSOR)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
  2-1.レコード処理(2100PROCSOR)
    2-1-1.R01各項目をホスト変数(WS-*)にMOVEする。
    2-1-2.ロジック分岐判定(EVALUATE)
      2-1-2-1.STATUS='1' AND APPL-ID=0(新規)の場合
        INSERT処理(2110INSERTSOR)
        【SQL】
        INSERT INTO LEAVE_RECORDS
            (EMP_ID, LEAVE_TYPE, START_DATE, START_TIME,
             END_DATE, END_TIME, STATUS)
        VALUES
            (:WS-EMP-ID, :WS-LEAVE-TYPE,
             :WS-START-DATE, :WS-START-TIME,
             :WS-END-DATE, :WS-END-TIME,
             :WS-STATUS)
        SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
        CUN-DBXINSを+1する。
      2-1-2-2.STATUS='1' AND APPL-ID>0(変更)の場合
        UPDATE処理(2120UPDATESOR)
        【SQL】
        DELETE FROM LEAVE_RECORDS
            WHERE APPLICATION_ID = :WS-APPL-ID
        INSERT INTO LEAVE_RECORDS
            (EMP_ID, LEAVE_TYPE, START_DATE, START_TIME,
             END_DATE, END_TIME, STATUS)
        VALUES
            (:WS-EMP-ID, :WS-LEAVE-TYPE,
             :WS-START-DATE, :WS-START-TIME,
             :WS-END-DATE, :WS-END-TIME,
             :WS-STATUS)
        各SQLでSQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
        CUN-DBXUPDを+1する。
      2-1-2-3.STATUS='9'(取消)の場合
        DELETE処理(2130DELETESOR)
        【SQL】
        DELETE FROM LEAVE_RECORDS
            WHERE APPLICATION_ID = :WS-APPL-ID
        SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
        CUN-DBXDELを+1する。
      2-1-2-4.その他
        何も処理しない(CONTINUE)
  2-2.次レコード読込(1100R01INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.COMMIT
    EXEC SQL COMMIT WORK
  3-2.入出力ファイルのクローズ
  3-3.件数メッセージ出力
    【メッセージ編集】
    メッセージ番号:6(入力件数)
    PARM1'KIN01W01'
    PARM2:入力件数
    PARM1'INS'、'UPD'、'DEL'
    PARM2:各処理件数
  3-4.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

4.DBエラー処理(9100DBERRSOR
  4-1.ROLLBACK
    EXEC SQL ROLLBACK WORK
   4-2.ERROR-LOG出力(W01OUTFIL
     【MOVE → INITIALIZE & WRITE】
     MOVE SQLCODE TO WRK-SQLCODE-DISP
     W01ERR-CATEGORY = '01'(固定)
     W01ERR-DETAIL = 'KIN02UPD SQLCODE=' + WRK-SQLCODE-DISP + ' APPL-ID=' + WS-APPL-ID
     CUN-W01OUTを+1する。
  4-3.エラーメッセージ出力
    【メッセージ編集】
    メッセージ番号:5(サブエラー)
    PARM1'KIN02UPD SQL ERROR'
    PARM2SQLCODE
    PARM3WS-APPL-ID
  4-4.ABEND処理SUB呼出(9999ABDSOR)
    ABENDコード:999

出力レコード定義

出力ファイル1W01/ERROR-LOG

No 項目名 設定元 備考
1 ERR-CATEGORY 01で固定 DBエラー
2 ERR-DETAIL STRINGで編集 KIN02UPD SQLCODE= + WRK-SQLCODE-DISP + APPL-ID= + WS-APPL-ID

DB更新結果

LEAVE_RECORDSテーブルに直接反映される。