# JIN07SUB 詳細設計書 ## プログラム概要 | 項目 | 内容 | |------|------| | プログラムID | JIN07SUB(人事→JINji, 07, 社員情報取得→SUB) | | プログラムタイプ | サブプログラム(CALL される側) | | PGMパターン | 25(サブPGM) | | 機能 | 指定 EMP-ID に一致する EMP-VALID レコードの項目を返却する | | 終了方式 | EXIT PROGRAM(GOBACK 不使用。キーワードカバー目的で基本設計書の承認に基づき例外的に採用) | | DBアクセス | なし | | 使用ファイル | JIN07R01(EMP-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-PTR(ADDRESS OF 予約語カバー) 1-2. OPEN INPUT JIN07R01 1-3. PERFORM 1000FNDSOR(社員検索) 1-4. CLOSE JIN07R01 1-5. EXIT PROGRAM(GOBACK 不使用) 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 のみ(インデックスなし)。全件走査し一致レコードを返す。