Files
jcl-cobol-git/run_all.ps1
T

98 lines
4.5 KiB
PowerShell

# COBOL+JCL 信用卡月结系统 完整运行脚本
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " 信用卡月结批处理系统 - 运行脚本" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
$ROOT = $PSScriptRoot
$COBOL_DIR = Join-Path $ROOT "cobol"
$COPYBOOK_DIR = Join-Path $ROOT "copybooks"
$DATA_INPUT = Join-Path $ROOT "data\input"
$DATA_WORK = Join-Path $ROOT "data\work"
$DATA_OUTPUT = Join-Path $ROOT "data\output"
$BIN_DIR = Join-Path $ROOT "bin"
$JCL_DIR = Join-Path $ROOT "jcl"
# Clean work/output directories
Remove-Item "$DATA_WORK\*" -Force -ErrorAction SilentlyContinue
Remove-Item "$DATA_OUTPUT\*" -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path $BIN_DIR -Force | Out-Null
$env:COBCPY = $COPYBOOK_DIR
Write-Host "`n[STEP 0] Compiling COBOL programs..." -ForegroundColor Yellow
# Compile data generator
Write-Host " GENDATA.cbl ..." -NoNewline
$r = & cobc -x "$COBOL_DIR\GENDATA.cbl" -o "$BIN_DIR\GENDATA.exe" 2>&1
if ($LASTEXITCODE -ne 0) { Write-Host " FAILED" -ForegroundColor Red; $r; exit 1 }
Write-Host " OK" -ForegroundColor Green
# Compile CRDVAL
Write-Host " CRDVAL.cbl ..." -NoNewline
$r = & cobc -x "$COBOL_DIR\CRDVAL.cbl" -o "$BIN_DIR\CRDVAL.exe" 2>&1
if ($LASTEXITCODE -ne 0) { Write-Host " FAILED" -ForegroundColor Red; $r; exit 1 }
Write-Host " OK" -ForegroundColor Green
# Compile CRDCALC
Write-Host " CRDCALC.cbl ..." -NoNewline
$r = & cobc -x "$COBOL_DIR\CRDCALC.cbl" -o "$BIN_DIR\CRDCALC.exe" 2>&1
if ($LASTEXITCODE -ne 0) { Write-Host " FAILED" -ForegroundColor Red; $r; exit 1 }
Write-Host " OK" -ForegroundColor Green
# Compile CRDRPT
Write-Host " CRDRPT.cbl ..." -NoNewline
$r = & cobc -x "$COBOL_DIR\CRDRPT.cbl" -o "$BIN_DIR\CRDRPT.exe" 2>&1
if ($LASTEXITCODE -ne 0) { Write-Host " FAILED" -ForegroundColor Red; $r; exit 1 }
Write-Host " OK" -ForegroundColor Green
# Generate test data
Write-Host "`n[STEP 0.5] Generating test data..." -ForegroundColor Yellow
& "$BIN_DIR\GENDATA.exe"
if ($LASTEXITCODE -ne 0) { Write-Host "GENDATA FAILED" -ForegroundColor Red; exit 1 }
# Move generated files to data/input
Move-Item "$ROOT\MEMOUT" "$DATA_INPUT\member.dat" -Force -ErrorAction SilentlyContinue
Move-Item "$ROOT\TXOUT" "$DATA_INPUT\transactions.dat" -Force -ErrorAction SilentlyContinue
Move-Item "$ROOT\RATEOUT" "$DATA_INPUT\rate.dat" -Force -ErrorAction SilentlyContinue
Write-Host " Test data -> data/input/" -ForegroundColor Green
Write-Host "`n[STEP 1] SORT transactions by card + date..." -ForegroundColor Yellow
Get-Content "$DATA_INPUT\transactions.dat" | Sort-Object { $_.Substring(0, 16) }, { $_.Substring(16, 8) } | Set-Content "$DATA_WORK\sorted_tx.dat" -Encoding Ascii
Write-Host " SORTED -> data/work/sorted_tx.dat" -ForegroundColor Green
Write-Host "`n[STEP 2] CRDVAL - Validate transactions..." -ForegroundColor Yellow
$env:TRANSIN = "$DATA_WORK\sorted_tx.dat"
$env:MEMBER = "$DATA_INPUT\member.dat"
$env:VALIDOUT = "$DATA_WORK\validated_tx.dat"
$env:REJECT = "$DATA_OUTPUT\rejected_tx.dat"
$env:REPORTERR = "$DATA_OUTPUT\error_report.dat"
& "$BIN_DIR\CRDVAL.exe"
if ($LASTEXITCODE -ne 0) { Write-Host "CRDVAL FAILED (RC=$LASTEXITCODE)" -ForegroundColor Red }
Write-Host "`n[STEP 3] CRDCALC - Calculate interest and fees..." -ForegroundColor Yellow
$env:VALIDIN = "$DATA_WORK\validated_tx.dat"
$env:RATE = "$DATA_INPUT\rate.dat"
$env:CALCOUT = "$DATA_WORK\billing_result.dat"
& "$BIN_DIR\CRDCALC.exe"
if ($LASTEXITCODE -ne 0) { Write-Host "CRDCALC FAILED (RC=$LASTEXITCODE)" -ForegroundColor Red }
Write-Host "`n[STEP 4] CRDRPT - Generate statements and summary..." -ForegroundColor Yellow
$env:BILLING = "$DATA_WORK\billing_result.dat"
$env:STMT = "$DATA_OUTPUT\monthly_statement.dat"
$env:SUMMARY = "$DATA_OUTPUT\summary_report.dat"
& "$BIN_DIR\CRDRPT.exe"
if ($LASTEXITCODE -ne 0) { Write-Host "CRDRPT FAILED (RC=$LASTEXITCODE)" -ForegroundColor Red }
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host " ALL STEPS COMPLETED" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Output files:"
Write-Host " Statement: $DATA_OUTPUT\monthly_statement.dat"
Write-Host " Summary: $DATA_OUTPUT\summary_report.dat"
Write-Host " Rejected: $DATA_OUTPUT\rejected_tx.dat"
Write-Host " Error Rpt: $DATA_OUTPUT\error_report.dat"
Write-Host ""
Write-Host "To run via JCL runner instead:"
Write-Host " python jcl-runner/main.py jcl\CREDIT25.jcl --root $ROOT"
Write-Host ""