プロジェクト

全般

プロフィール

コードレビュー #10627

未完了

コードレビュー依頼

宮川 美佐 さんが2ヶ月前に追加. 2ヶ月前に更新.

ステータス:
フィードバック
優先度:
通常
担当者:
開始日:
期日:
進捗率:

0%

予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
QA分析:
方針(第一貨物):
テーブル種:
データ移行要否:
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
検査完了日:
検査依頼日:

ファイル

clipboard-202608311130-jvqnq.png (14.9 KB) clipboard-202608311130-jvqnq.png 渡邉 拓英, 2026-08-31 11:30 午前
clipboard-202608311257-2cuvs.png (11.4 KB) clipboard-202608311257-2cuvs.png 渡邉 拓英, 2026-08-31 12:57 午後
clipboard-202608311300-8g9yp.png (16.9 KB) clipboard-202608311300-8g9yp.png 渡邉 拓英, 2026-08-31 01:00 午後
clipboard-202608311319-zmrmj.png (1.33 KB) clipboard-202608311319-zmrmj.png 渡邉 拓英, 2026-08-31 01:19 午後
clipboard-202608311321-ioky0.png (24.1 KB) clipboard-202608311321-ioky0.png 渡邉 拓英, 2026-08-31 01:21 午後
clipboard-202608311321-qgjhr.png (6.95 KB) clipboard-202608311321-qgjhr.png 渡邉 拓英, 2026-08-31 01:21 午後
clipboard-202608311328-qmx54.png (6.24 KB) clipboard-202608311328-qmx54.png 渡邉 拓英, 2026-08-31 01:28 午後
clipboard-202608311329-czquj.png (9.71 KB) clipboard-202608311329-czquj.png 渡邉 拓英, 2026-08-31 01:29 午後
clipboard-202608311331-pduud.png (40.9 KB) clipboard-202608311331-pduud.png 渡邉 拓英, 2026-08-31 01:31 午後
clipboard-202608311342-2fblr.png (16.8 KB) clipboard-202608311342-2fblr.png 渡邉 拓英, 2026-08-31 01:42 午後
clipboard-202608311355-6owvp.png (7 KB) clipboard-202608311355-6owvp.png 渡邉 拓英, 2026-08-31 01:55 午後
clipboard-202608311441-pusrl.png (84.2 KB) clipboard-202608311441-pusrl.png 渡邉 拓英, 2026-08-31 02:41 午後
clipboard-202608311454-fia0v.png (21 KB) clipboard-202608311454-fia0v.png 渡邉 拓英, 2026-08-31 02:54 午後
clipboard-202608311454-52mon.png (2.08 KB) clipboard-202608311454-52mon.png 渡邉 拓英, 2026-08-31 02:54 午後
clipboard-202608311454-rsvxd.png (1.11 KB) clipboard-202608311454-rsvxd.png 渡邉 拓英, 2026-08-31 02:54 午後
clipboard-202608311455-o4rpk.png (25.8 KB) clipboard-202608311455-o4rpk.png 渡邉 拓英, 2026-08-31 02:55 午後
clipboard-202608311458-jntuz.png (19.8 KB) clipboard-202608311458-jntuz.png 渡邉 拓英, 2026-08-31 02:58 午後
clipboard-202608311130-jvqnq.png
clipboard-202608311257-2cuvs.png
clipboard-202608311300-8g9yp.png
clipboard-202608311319-zmrmj.png
clipboard-202608311321-ioky0.png
clipboard-202608311321-qgjhr.png
clipboard-202608311328-qmx54.png
clipboard-202608311329-czquj.png
clipboard-202608311331-pduud.png
clipboard-202608311342-2fblr.png
clipboard-202608311355-6owvp.png
clipboard-202608311441-pusrl.png
clipboard-202608311454-fia0v.png
clipboard-202608311454-52mon.png
clipboard-202608311454-rsvxd.png
clipboard-202608311455-o4rpk.png
clipboard-202608311458-jntuz.png

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311130-jvqnq.png を追加

ALTLIBは「RDCODEMB_バッチ処理用コードマスター」になったのでは?
情報が伝わってない?(設計チームと相談)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311200-2y5f9.png を追加

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311221-cqsxf.png を追加
  • ファイル clipboard-202608311223-55doc.png を追加

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311224-5aff0.png を追加

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ステータス を 新規 から フィードバック に変更
  • 担当者 を 大場 淳 から 宮川 美佐 に変更

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • 担当者 を 宮川 美佐 から 渡邉 拓英 に変更

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル を削除 (clipboard-202608311221-cqsxf.png)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル を削除 (clipboard-202608311223-55doc.png)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル を削除 (clipboard-202608311224-5aff0.png)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル を削除 (clipboard-202608311200-2y5f9.png)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311257-2cuvs.png を追加

バッチ終了ログ出力はBaseJclで行うので不要です。

                // │ ログ出力[LSS1020].バッチ終了ログ出力 をコールする。
                LSS1020.outputBatchEndLog(Result.Success.name(),
                        BatchManager.getNowJobId(), BatchManager.getNowStepNo());

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311300-8g9yp.png を追加

outputBatchEndLog不要

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

DAIMNT3J_ND53500JD_INP
DAIMNT3J_ND53500TD

CLASS(Table)名がルールに沿ってない

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311319-zmrmj.png を追加
  • ファイル clipboard-202608311321-ioky0.png を追加

DAIMNT3J_ND53500JD_INP
現行踏襲で大文字のフィールド名だが、実装が小文字になっている。
現行とおり、大文字で。


渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311321-qgjhr.png を追加

FIXED BIN(15)は、DECIMAL15ではない

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311328-qmx54.png を追加

INC 顧客番号 PIC(7)9 — VKKANMSキー DECIMAL 7 0

char7桁では?

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311329-czquj.png を追加
  • ファイル clipboard-202608311331-pduud.png を追加

0埋めしないと正しいデータは取れないのでは?

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311342-2fblr.png を追加

PROGRAM_IDを使用してください。

" "が足りない
" " + this.getClass().getSimpleName() + " "

            LSS1020.outputSystemLog(
                    LSS1000.getSystemDate() + " " + PROGRAM_ID + " "
                            + " : Process End = 0 :" + e.getMessage(),
                    BatchManager.getNowJobId(),
                    BatchManager.getNowStepNo());

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311355-6owvp.png を追加

VKKANMSとSTKANBASEDで初期値が異なる。
単一PGでは動作するが、結合でバグにしかならない。合わせる必要があるのでは?

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311441-pusrl.png を追加

Oracle 全角フィールドにはSOSI抜きで実装する。

新(JAVA)でこの処理では、SOSIは不要になるのではないか?
SOSI分のByte数は削る必要があるのでは?
そもそも、構造体(STSGNM、STSGN2など)も不要では?
JCLのINやOUTで、ソケット通信や帳票出力があり、SOSIをしっかり管理するPGは別。
(設計チームに確認すること)

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311454-fia0v.png を追加
  • ファイル clipboard-202608311454-52mon.png を追加
  • ファイル clipboard-202608311454-rsvxd.png を追加

個々に実装しない

toInt()

    /**
     * 数値(文字列)項目の安全変換<br>
     *
     * @param value 変換対象の文字列数値
     * @return 変換後の整数値。変換失敗時は {@code 0}
     */
    private int parseIntOrZero(String value) {
        // ┌ 引数.文字列数値 = null の場合
        if (value == null) {
            // │ 0を返して処理を終了する。
            return 0;
        }
        // └ 『END IF』
        // 変数.トリム後文字列 ← 引数.文字列数値スペースを除いた値をセット
        String trimmed = value.trim();
        // ┌ 変数.トリム後文字列 = 空文字 の場合
        if (trimmed.isEmpty()) {
            // │ 0を返して処理を終了する。
            // └ 『END IF』
            return 0;
        }
        try {
            // 変数.トリム後文字列を返して処理を終了する。
            return Integer.parseInt(trimmed);
        } catch (NumberFormatException e) {
            // ■■■■例外処理■■■■
            // 数値変換エラーの場合
            // 0を返して処理を終了する。
            return 0;
        }
    }

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311455-o4rpk.png を追加

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • ファイル clipboard-202608311458-jntuz.png を追加

下記項目の設定は不要では?

        // 引数.DAIMNT3J_ND53500TD.SYSCRDTS[SYSTEM_CRDTS] ← 現在日時をセット
        daimnt3JNd53500TD.setSYSCRDTS(LSS1000.getNow());
        // 引数.DAIMNT3J_ND53500TD.SYSCRTID[SYSTEM_CRTID] ← ホスト名をセット
        daimnt3JNd53500TD.setSYSCRTID(LSS1000.getHostName());

下記、共通側で設定済みなはず

@Profile("batch")
@Component
public class AuditingCallbackBatch implements BeforeSaveCallback<Auditable> {
  
  @Override
  public Auditable onBeforeSave(Auditable aggregate, MutableAggregateChange<Auditable> aggregateChange) {

    // 現在時刻
    var now = LSS1000.getNow();

    StepExecution stepExecution = StepExecutionContext.getStepExecution();
    // if (stepExecution != null) {
    // // StepExecution を使った処理
    // System.out.println("StepExecution ID: " + stepExecution.getId());
    // } else {
    // System.out.println("No StepExecution found.");
    // }

    //
    JobExecution jobExecution = stepExecution.getJobExecution();

    // PROGRAM_ID取得
    // String PGID = (String) jobExecution.getExecutionContext().get("PROGRAM_ID");;
    String pcName = (String) jobExecution.getExecutionContext().get("TRM_CODE");;
    String userId = (String) jobExecution.getExecutionContext().get("JG_CODE");;

    // 作成日時、更新日時:現在日時
    // 作成端末、更新端末:ローカルPC名
    // 作成ユーザー、更新ユーザー:BATCH
    // 作成処理ID、更新処理ID:JCL名 or PG名

    // 監査項目の登録・更新
    if (aggregate.getSYSCRDTS() == null) {
      // 作成日時 SYSCRDTS
      aggregate.setSYSCRDTS(now);
      // 作成端末 SYSCRTID
      aggregate.setSYSCRTID(pcName);
      // 作成ユーザー SYSCRJCD
      aggregate.setSYSCRJCD(userId);
      // 作成処理ID SYSCRPID
      aggregate.setSYSCRPID(ExecutionProgramIdContext.getProcessID());
      // 作成処理バージョン
      aggregate.setSYSCRVER(AppProps.getAppVersion());
    }
    // 更新日時 SYSUPDTS
    aggregate.setSYSUPDTS(now);
    // 更新端末 SYSUPTID
    aggregate.setSYSUPTID(pcName);
    // 更新ユーザー SYSUPJCD
    aggregate.setSYSUPJCD(userId);
    // 更新処理ID SYSUPPID
    aggregate.setSYSUPPID(ExecutionProgramIdContext.getProcessID());
    // SYSUPVER 更新処理バージョン
    aggregate.setSYSUPVER(AppProps.getAppVersion());
    // Lockバージョン
    // 

    return aggregate;
  }
}

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

・参考までに

下記、処理は、在ってもよいが、
本来の処理通りに実装できているのであれば、substringのみでエラーにならないはず。
エラーが発生する場合、処理が間違っているのではないか?

    /**
     * 安全なsubstring処理<br>
     *
     * @param s     対象文字列
     * @param start 開始位置(0-based、含む)
     * @param end   終了位置(0-based、exclusive)
     * @return 取り出した部分文字列。取得不可の場合は空文字列
     */
    private String safeSubstring(String s, int start, int end) {
        // ┌ 引数.対象文字列 = null の場合
        // │ 空文字列を返して処理を終了する。
        // └ 『END IF』
        if (s == null) return STRING_EMPTY;
        // 変数.長さ ← 引数.対象文字列の長さをセット
        int len = s.length();
        // ┌ 引数.開始位置 >= 変数.長さ の場合
        // │ 空文字列を返して処理を終了する。
        // └ 『END IF』
        if (start >= len) return STRING_EMPTY;
        //対象文字列の引数.開始位置~引数.終了位置文字目をセットを返して処理を終了する。
        return s.substring(start, Math.min(end, len));
    }

渡邉 拓英 さんが2ヶ月前に更新 · 編集済み

  • 担当者 を 渡邉 拓英 から 宮川 美佐 に変更

他の形式にエクスポート: Atom PDF