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

4.9 KiB
Raw Blame History

JIN07SUB 詳細設計書

プログラム概要

項目 内容
プログラムID JIN07SUB(人事→JINji, 07, 社員情報取得→SUB
プログラムタイプ サブプログラム(CALL される側)
PGMパターン 25(サブPGM
機能 指定 EMP-ID に一致する EMP-VALID レコードの項目を返却する
終了方式 EXIT PROGRAMGOBACK 不使用。キーワードカバー目的で基本設計書の承認に基づき例外的に採用)
DBアクセス なし
使用ファイル JIN07R01EMP-VALID, 200B, JIN01REC

前提条件

NO 対象ファイル 条件
1 EMP-VALID JIN01KNS でチェック済のデータであること
2 EMP-VALID 社員番号で 1 件ヒットすることを前提とする(複数ヒット時は先頭一致レコードを返却)

使用ファイル一覧

NO 使用ファイル名 識別子 DD名 I/O COPY群 形式 レコード長 媒体 備考
1 EMP-VALID R01 JIN07R01 I JIN01REC FB 200 PS 社員情報検索対象

キー項目一覧

NO ファイル名 マッチングキー キー条件
1 EMP-VALID EMP-ID 指定 EMP-ID と完全一致

入出力パラメータ(LINKAGE SECTION 個別引数)

OMITTED 引数対応のため、各引数を独立した 01 レベルで定義する(連絡領域 COPY は単一 01 のため OMITTED 引数を表現できない。個別引数方式を採用)。

NO 入出力 引数名 PIC 説明
1 I LK-EMP-ID X(8) 検索条件(社員番号)
2 O LK-KANA-SEI X(20) 一致レコード返却値
3 O LK-KANA-MEI X(20) 一致レコード返却値
4 O LK-KANJI-NAME N(40) 一致レコード返却値。CALL 時に OMITTED 指定可能
5 O LK-SUB-CODE X(4) 一致レコード返却値
6 O LK-BIRTH-DATE X(8) 一致レコード返却値
7 O LK-EMP-ID-OUT X(8) 一致レコード返却値(社員番号)
8 O LK-FILLER X(60) 一致レコード返却値
9 O LK-RESULT X(2) 検索結果('OK'=一致 / 'NG'=不一致)

呼出し例(JIN08TST

CALL 'JIN07SUB' USING LK-EMP-ID, LK-KANA-SEI, LK-KANA-MEI, LK-KANJI-NAME,
                      LK-SUB-CODE, LK-BIRTH-DATE, LK-EMP-ID-OUT, LK-FILLER,
                      LK-RESULT
CALL 'JIN07SUB' USING LK-EMP-ID, LK-KANA-SEI, LK-KANA-MEI, OMITTED,
                      LK-SUB-CODE, LK-BIRTH-DATE, LK-EMP-ID-OUT, LK-FILLER,
                      LK-RESULT

リターンコード一覧(LK-RESULT)

NO コード 説明
1 'OK' 一致レコードを検索し、返却値へ設定した
2 'NG' 一致レコードなし(返却値は初期状態のまま)

処理詳細

段落一覧(SOR規約名)

段落名 機能
0000MAINSOR 制御処理(ADDRESS OF 取得 → OPEN → 検索 → CLOSE → EXIT PROGRAM
1000FNDSOR EMP-VALID 順次検索(一致レコード項目返却 / IS OMITTED 判定)

処理フロー

1. 0000MAINSOR(制御処理)
   1-1. MOVE ADDRESS OF LK-EMP-ID TO WS-PTRADDRESS OF 予約語カバー)
   1-2. OPEN INPUT JIN07R01
   1-3. PERFORM 1000FNDSOR(社員検索)
   1-4. CLOSE JIN07R01
   1-5. EXIT PROGRAMGOBACK 不使用)

2. 1000FNDSOR(社員検索)
   2-1. PERFORM UNTIL LK-RESULT = 'OK' OR WRK-R01EOF-Y
   2-2. READ JIN07R01
        AT END → WRK-R01EOF='1''NG' のまま終了)
        NOT AT END → IF R01EMP-ID = LK-EMP-ID
          ・LK-KANA-SEI / LK-KANA-MEI / LK-SUB-CODE / LK-BIRTH-DATE /
            LK-EMP-ID-OUT / LK-FILLER へ転記
          ・IF LK-KANJI-NAME NOT OMITTED → LK-KANJI-NAME へ転記
            IS OMITTED 判定。OMITTED 時は返却スキップ)
          ・LK-RESULT = 'OK'PERFORM UNTIL 条件成立により次ループで検索終了)
        END-IF

カバレッジ対象キーワード

予約語/記号 区分 使用箇所
EXIT PROGRAM 予約語 0000MAINSOR: サブプログラム終了(GOBACK 不使用)
ADDRESS OF 予約語 0000MAINSOR: MOVE ADDRESS OF LK-EMP-ID TO WS-PTR
OMITTED 予約語 1000FNDSOR: IF LK-KANJI-NAME OMITTED 判定(呼出側は CALL USING ... OMITTED

補足

  • AGENTS.md 規約は「サブプログラムは GOBACK」だが、基本設計書の承認により JIN07SUB はキーワードカバー目的で EXIT PROGRAM を使用する。
  • EMP-VALID は 200B 固定長(JIN01REC)。R01 レコード 01 レベルは JIN01REC REPLACING (A)→R01。
  • 検索は順次 READ のみ(インデックスなし)。全件走査し一致レコードを返す。