操作
コードレビュー #10627
未完了コードレビュー依頼
開始日:
期日:
進捗率:
0%
予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
QA分析:
方針(第一貨物):
テーブル種:
データ移行要否:
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
検査完了日:
検査依頼日:
ファイル
渡邉 拓英 さんが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-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-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));
}
操作










