feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,844 @@
|
||||
>>SOURCE FORMAT IS FREE
|
||||
*> ============================================================
|
||||
*> 28-sysin : SYSIN批量参数 (Batch SYSIN)
|
||||
*> Input : SYSIN (PARAM=VALUE形式の参数卡片)
|
||||
*> Output: REPORT-FILE (sysin-report.txt: 参数设定结果)
|
||||
*> AUDIT-FILE (sysin-audit.dat: 参数审计报告)
|
||||
*> Coverage: SY-N001~N003, SY-A001~A003, SY-R001
|
||||
*> Extensions: SECTION structure, dependency validation, bounds
|
||||
*> checking, error accumulation, override detection, audit,
|
||||
*> parameter loading report, default logging with status,
|
||||
*> batch control totals, FILE STATUS per I/O, timestamp trace
|
||||
*> ============================================================
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. Main28Sysin.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT SYSIN-FILE ASSIGN TO "SYSIN"
|
||||
ORGANIZATION IS LINE SEQUENTIAL
|
||||
FILE STATUS IS SYSIN-STATUS.
|
||||
SELECT REPORT-FILE ASSIGN TO "sysin-report.txt"
|
||||
ORGANIZATION IS LINE SEQUENTIAL
|
||||
FILE STATUS IS WS-RPT-STATUS.
|
||||
SELECT AUDIT-FILE ASSIGN TO "sysin-audit.dat"
|
||||
ORGANIZATION IS LINE SEQUENTIAL
|
||||
FILE STATUS IS WS-AUDIT-STATUS.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD SYSIN-FILE.
|
||||
01 SYSIN-RECORD PIC X(80).
|
||||
FD REPORT-FILE.
|
||||
01 REPORT-LINE PIC X(80).
|
||||
FD AUDIT-FILE.
|
||||
01 AUDIT-LINE PIC X(80).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
*> Copybook
|
||||
01 WS-TELECOM-REC.
|
||||
COPY "telecom/TEL-BILLING.cpy".
|
||||
*> File status
|
||||
01 SYSIN-STATUS PIC XX.
|
||||
88 SYSIN-EOF VALUE "10".
|
||||
01 WS-RPT-STATUS PIC XX.
|
||||
01 WS-AUDIT-STATUS PIC XX.
|
||||
*> Timestamp
|
||||
01 WS-CUR-DATE PIC X(08).
|
||||
01 WS-CUR-TIME PIC X(06).
|
||||
01 WS-TIMESTAMP PIC X(20).
|
||||
*> Parameter defaults
|
||||
01 WS-PARAMS.
|
||||
05 WS-SORT-KEY PIC X(10) VALUE "ASC".
|
||||
05 WS-OUTPUT-FMT PIC X(10) VALUE "SUMMARY".
|
||||
05 WS-MAX-RECORDS PIC 9(05) VALUE 50.
|
||||
05 WS-REPORT-TYPE PIC X(10) VALUE "STANDARD".
|
||||
05 WS-VERBOSE PIC X(01) VALUE "N".
|
||||
05 WS-DEBUG-MODE PIC X(01) VALUE "N".
|
||||
*> Batch control totals
|
||||
01 WS-CARD-COUNT PIC 9(05) VALUE 0.
|
||||
01 WS-ERROR-COUNT PIC 9(05) VALUE 0.
|
||||
01 WS-WARN-COUNT PIC 9(05) VALUE 0.
|
||||
01 WS-OVERRIDE-COUNT PIC 9(05) VALUE 0.
|
||||
01 WS-PARAM-SET-CNT PIC 9(05) VALUE 0.
|
||||
01 WS-DEFAULT-APP-CNT PIC 9(05) VALUE 0.
|
||||
01 WS-SKIPPED-COUNT PIC 9(05) VALUE 0.
|
||||
*> Override / set flags
|
||||
01 WS-SORT-KEY-SET PIC X(01) VALUE 'N'.
|
||||
01 WS-OUTPUT-FMT-SET PIC X(01) VALUE 'N'.
|
||||
01 WS-MAX-REC-SET PIC X(01) VALUE 'N'.
|
||||
01 WS-RPT-TYPE-SET PIC X(01) VALUE 'N'.
|
||||
01 WS-VERBOSE-SET PIC X(01) VALUE 'N'.
|
||||
01 WS-DEBUG-SET PIC X(01) VALUE 'N'.
|
||||
*> Card buffer and parse area
|
||||
01 WS-CARD-BUFFER.
|
||||
05 WS-CARD-TEXT PIC X(80).
|
||||
05 WS-CARD-LEN PIC 9(02).
|
||||
01 WS-PARSE-AREA.
|
||||
05 WS-EQUALS-POS PIC 9(02).
|
||||
05 WS-PARAM-NAME PIC X(20).
|
||||
05 WS-PARAM-VALUE PIC X(40).
|
||||
01 WS-PARAM-TRIM PIC X(20).
|
||||
*> Per-card validation result
|
||||
01 WS-VALID-OK PIC X(01).
|
||||
01 WS-VALID-STATUS PIC X(15).
|
||||
*> Error accumulation table
|
||||
01 WS-ERROR-MAX PIC 9(03) VALUE 100.
|
||||
01 WS-ERROR-TABLE.
|
||||
05 WS-ERR-ENTRY OCCURS 100 TIMES.
|
||||
10 WS-ERR-TEXT PIC X(60).
|
||||
01 WS-ERR-IDX PIC 9(03) VALUE 0.
|
||||
*> Report lines
|
||||
01 WS-PARAM-LINE.
|
||||
05 FILLER PIC X(10) VALUE " ".
|
||||
05 PL-NAME PIC X(20).
|
||||
05 FILLER PIC X(03) VALUE " = ".
|
||||
05 PL-VALUE PIC X(40).
|
||||
05 FILLER PIC X(10) VALUE SPACES.
|
||||
05 PL-STATUS PIC X(10).
|
||||
01 WS-LOADING-LINE.
|
||||
05 FILLER PIC X(02) VALUE " ".
|
||||
05 WS-LL-CARD PIC Z(04)9.
|
||||
05 FILLER PIC X(02) VALUE ": ".
|
||||
05 WS-LL-NAME PIC X(20).
|
||||
05 FILLER PIC X(03) VALUE " = ".
|
||||
05 WS-LL-VALUE PIC X(40).
|
||||
05 FILLER PIC X(02) VALUE " ".
|
||||
05 WS-LL-STATUS PIC X(15).
|
||||
*> Working fields
|
||||
01 WS-TEMP-LINE PIC X(80).
|
||||
01 WS-RPT-COUNT PIC Z(9)9.
|
||||
01 IDX PIC 9(02).
|
||||
01 WS-CHAR PIC X(01).
|
||||
01 WS-NUM-VAL PIC 9(05).
|
||||
|
||||
*> ============================================================
|
||||
PROCEDURE DIVISION.
|
||||
|
||||
MAIN.
|
||||
PERFORM 1000-INIT
|
||||
PERFORM 2000-OPEN-FILES
|
||||
PERFORM 3000-READ-INPUT
|
||||
PERFORM 4000-REPORT
|
||||
PERFORM 5000-AUDIT
|
||||
PERFORM 9000-EXIT
|
||||
STOP RUN.
|
||||
|
||||
*> ============================================================
|
||||
*> 1000-INIT — initialise state, log defaults
|
||||
*> ============================================================
|
||||
1000-INIT SECTION.
|
||||
1000-START.
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME
|
||||
DELIMITED BY SIZE INTO WS-TIMESTAMP
|
||||
DISPLAY '*** Main28Sysin START at ' WS-TIMESTAMP
|
||||
DISPLAY '[' WS-TIMESTAMP '] Defaults: SORT-KEY='
|
||||
WS-SORT-KEY ', OUTPUT-FMT=' WS-OUTPUT-FMT
|
||||
', MAX-RECORDS=' WS-MAX-RECORDS
|
||||
DISPLAY ' REPORT-TYPE=' WS-REPORT-TYPE
|
||||
', VERBOSE=' WS-VERBOSE ', DEBUG-MODE=' WS-DEBUG-MODE
|
||||
MOVE 6 TO WS-DEFAULT-APP-CNT
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 2000-OPEN-FILES — open files, write headers, check status
|
||||
*> ============================================================
|
||||
2000-OPEN-FILES SECTION.
|
||||
2000-START.
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME INTO WS-TIMESTAMP
|
||||
DISPLAY '[' WS-TIMESTAMP '] Opening files'
|
||||
|
||||
*> REPORT-FILE
|
||||
OPEN OUTPUT REPORT-FILE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] FATAL: REPORT-FILE open status='
|
||||
WS-RPT-STATUS
|
||||
MOVE 1 TO RETURN-CODE STOP RUN
|
||||
END-IF
|
||||
DISPLAY '[' WS-TIMESTAMP '] REPORT-FILE opened, status='
|
||||
WS-RPT-STATUS
|
||||
MOVE "SYSIN Parameter Test Report" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
|
||||
*> AUDIT-FILE
|
||||
OPEN OUTPUT AUDIT-FILE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] FATAL: AUDIT-FILE open status='
|
||||
WS-AUDIT-STATUS
|
||||
MOVE 1 TO RETURN-CODE STOP RUN
|
||||
END-IF
|
||||
DISPLAY '[' WS-TIMESTAMP '] AUDIT-FILE opened, status='
|
||||
WS-AUDIT-STATUS
|
||||
MOVE 'SYSIN Audit Report' TO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY 'AUD WR ERR ' WS-AUDIT-STATUS
|
||||
END-IF
|
||||
STRING 'Run: ' WS-TIMESTAMP INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY 'AUD WR ERR ' WS-AUDIT-STATUS
|
||||
END-IF
|
||||
MOVE SPACES TO AUDIT-LINE WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY 'AUD WR ERR ' WS-AUDIT-STATUS
|
||||
END-IF
|
||||
|
||||
*> SYSIN-FILE
|
||||
OPEN INPUT SYSIN-FILE
|
||||
IF SYSIN-STATUS NOT = "00"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] SYSIN open failed, status=' SYSIN-STATUS
|
||||
MOVE " SYSIN open failed - using defaults"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
STRING 'OPEN FAILED status=' SYSIN-STATUS
|
||||
INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY 'AUD WR ERR ' WS-AUDIT-STATUS
|
||||
END-IF
|
||||
ELSE
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] SYSIN opened successfully'
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 3000-READ-INPUT — read SYSIN cards, call validate/process
|
||||
*> ============================================================
|
||||
3000-READ-INPUT SECTION.
|
||||
3000-START.
|
||||
IF SYSIN-STATUS NOT = "00" EXIT SECTION END-IF
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME INTO WS-TIMESTAMP
|
||||
|
||||
*> Write loading report header
|
||||
MOVE "=== Parameter Loading Report ===" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
|
||||
*> Read loop
|
||||
PERFORM UNTIL SYSIN-EOF
|
||||
READ SYSIN-FILE INTO SYSIN-RECORD
|
||||
AT END SET SYSIN-EOF TO TRUE
|
||||
NOT AT END
|
||||
ADD 1 TO WS-CARD-COUNT
|
||||
MOVE SYSIN-RECORD TO WS-CARD-TEXT
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME
|
||||
INTO WS-TIMESTAMP
|
||||
DISPLAY '[' WS-TIMESTAMP '] Card '
|
||||
WS-CARD-COUNT ': '
|
||||
FUNCTION TRIM(WS-CARD-TEXT)
|
||||
PERFORM 3100-VALIDATE-RECORD
|
||||
IF WS-VALID-OK = 'Y'
|
||||
PERFORM 3200-PROCESS-RECORD
|
||||
END-IF
|
||||
PERFORM 3300-WRITE-OUTPUT
|
||||
END-READ
|
||||
IF SYSIN-STATUS NOT = "00" AND NOT = "10"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] READ ERROR: SYSIN status='
|
||||
SYSIN-STATUS
|
||||
END-IF
|
||||
END-PERFORM
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] Total cards read: ' WS-CARD-COUNT
|
||||
CLOSE SYSIN-FILE
|
||||
IF SYSIN-STATUS NOT = "00" AND NOT = "10"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] CLOSE SYSIN status=' SYSIN-STATUS
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 3100-VALIDATE-RECORD — parse card, bounds, dependencies
|
||||
*> ============================================================
|
||||
3100-VALIDATE-RECORD SECTION.
|
||||
3100-START.
|
||||
MOVE 'Y' TO WS-VALID-OK
|
||||
MOVE 'ACCEPTED' TO WS-VALID-STATUS
|
||||
MOVE FUNCTION TRIM(WS-CARD-TEXT) TO WS-CARD-BUFFER
|
||||
|
||||
*> Skip empty / comment
|
||||
IF WS-CARD-BUFFER = SPACES OR WS-CARD-BUFFER = ""
|
||||
DISPLAY " (empty line, skipped)"
|
||||
ADD 1 TO WS-SKIPPED-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'SKIPPED' TO WS-VALID-STATUS
|
||||
EXIT SECTION
|
||||
END-IF
|
||||
MOVE WS-CARD-BUFFER(1:1) TO WS-CHAR
|
||||
IF WS-CHAR = "*" OR WS-CHAR = "#"
|
||||
DISPLAY " (comment, skipped)"
|
||||
ADD 1 TO WS-SKIPPED-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'SKIPPED' TO WS-VALID-STATUS
|
||||
EXIT SECTION
|
||||
END-IF
|
||||
|
||||
*> Find '='
|
||||
MOVE 0 TO WS-EQUALS-POS
|
||||
PERFORM VARYING IDX FROM 1 BY 1
|
||||
UNTIL IDX > 80 OR WS-EQUALS-POS > 0
|
||||
IF WS-CARD-BUFFER(IDX:1) = "="
|
||||
MOVE IDX TO WS-EQUALS-POS
|
||||
END-IF
|
||||
END-PERFORM
|
||||
IF WS-EQUALS-POS = 0
|
||||
DISPLAY " ERROR: No '=' found in card"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE " ERROR (no '='): " TO WS-TEMP-LINE
|
||||
STRING WS-TEMP-LINE FUNCTION TRIM(WS-CARD-BUFFER)
|
||||
DELIMITED BY SIZE INTO WS-TEMP-LINE
|
||||
MOVE WS-TEMP-LINE TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WR ERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'ERROR' TO WS-VALID-STATUS
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
EXIT SECTION
|
||||
END-IF
|
||||
|
||||
*> Extract NAME, VALUE
|
||||
MOVE WS-CARD-BUFFER(1:WS-EQUALS-POS - 1) TO WS-PARAM-NAME
|
||||
COMPUTE IDX = WS-EQUALS-POS + 1
|
||||
MOVE WS-CARD-BUFFER(IDX:) TO WS-PARAM-VALUE
|
||||
MOVE FUNCTION UPPER-CASE(
|
||||
FUNCTION TRIM(WS-PARAM-NAME)) TO WS-PARAM-NAME
|
||||
MOVE FUNCTION TRIM(WS-PARAM-VALUE) TO WS-PARAM-VALUE
|
||||
DISPLAY " NAME='" FUNCTION TRIM(WS-PARAM-NAME)
|
||||
"' VALUE='" FUNCTION TRIM(WS-PARAM-VALUE)"'"
|
||||
|
||||
*> Bounds checking
|
||||
EVALUATE WS-PARAM-NAME
|
||||
WHEN "SORT-KEY"
|
||||
IF WS-PARAM-VALUE NOT = "ASC" AND
|
||||
WS-PARAM-VALUE NOT = "DESC"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'SORT-KEY invalid, must be ASC or DESC'
|
||||
TO WS-TEMP-LINE
|
||||
MOVE " ERROR: SORT-KEY must be ASC or DESC"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN "OUTPUT-FMT"
|
||||
IF WS-PARAM-VALUE NOT = "SUMMARY" AND
|
||||
WS-PARAM-VALUE NOT = "DETAIL" AND
|
||||
WS-PARAM-VALUE NOT = "RAW"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'OUTPUT-FMT invalid, must be SUMMARY, DETAIL, or RAW' TO WS-TEMP-LINE
|
||||
MOVE " ERROR: OUTPUT-FMT must be SUMMARY, DETAIL, or RAW" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN "MAX-RECORDS"
|
||||
MOVE WS-PARAM-VALUE TO WS-NUM-VAL
|
||||
IF WS-NUM-VAL < 1 OR WS-NUM-VAL > 99999
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
STRING 'MAX-RECORDS out of range (1-99999): '
|
||||
FUNCTION TRIM(WS-PARAM-VALUE)
|
||||
INTO WS-TEMP-LINE
|
||||
MOVE " ERROR: MAX-RECORDS range 1-99999"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN "REPORT-TYPE"
|
||||
IF WS-PARAM-VALUE NOT = "STANDARD" AND
|
||||
WS-PARAM-VALUE NOT = "CUSTOM" AND
|
||||
WS-PARAM-VALUE NOT = "BRIEF"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'REPORT-TYPE invalid, must be STANDARD, CUSTOM, or BRIEF' TO WS-TEMP-LINE
|
||||
MOVE " ERROR: REPORT-TYPE must be STANDARD, CUSTOM, or BRIEF" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN "VERBOSE"
|
||||
IF WS-PARAM-VALUE NOT = "Y" AND
|
||||
WS-PARAM-VALUE NOT = "N"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'VERBOSE must be Y or N'
|
||||
TO WS-TEMP-LINE
|
||||
MOVE " ERROR: VERBOSE must be Y or N"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN "DEBUG-MODE"
|
||||
IF WS-PARAM-VALUE NOT = "Y" AND
|
||||
WS-PARAM-VALUE NOT = "N"
|
||||
ADD 1 TO WS-ERROR-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'DEBUG-MODE must be Y or N'
|
||||
TO WS-TEMP-LINE
|
||||
MOVE " ERROR: DEBUG-MODE must be Y or N"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
WHEN OTHER
|
||||
ADD 1 TO WS-WARN-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK
|
||||
MOVE 'WARNING' TO WS-VALID-STATUS
|
||||
STRING 'Unknown parameter: '
|
||||
FUNCTION TRIM(WS-PARAM-NAME)
|
||||
INTO WS-TEMP-LINE
|
||||
MOVE " WARNING: Unknown parameter" TO REPORT-LINE
|
||||
STRING REPORT-LINE ' '
|
||||
FUNCTION TRIM(WS-PARAM-NAME) INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-EVALUATE.
|
||||
|
||||
*> Dependency validation
|
||||
IF WS-PARAM-NAME = "OUTPUT-FMT"
|
||||
AND WS-PARAM-VALUE = "DETAIL"
|
||||
AND WS-REPORT-TYPE = "SUMMARY"
|
||||
ADD 1 TO WS-WARN-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'Dependency: OUTPUT-FMT=DETAIL conflicts with REPORT-TYPE=SUMMARY' TO WS-TEMP-LINE
|
||||
MOVE " WARNING: OUTPUT-FMT=DETAIL conflicts with REPORT-TYPE=SUMMARY" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
IF WS-PARAM-NAME = "REPORT-TYPE"
|
||||
AND WS-PARAM-VALUE = "SUMMARY"
|
||||
AND WS-OUTPUT-FMT = "DETAIL"
|
||||
ADD 1 TO WS-WARN-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'Dependency: REPORT-TYPE=SUMMARY conflicts with OUTPUT-FMT=DETAIL' TO WS-TEMP-LINE
|
||||
MOVE " WARNING: REPORT-TYPE=SUMMARY conflicts with OUTPUT-FMT=DETAIL" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
IF WS-PARAM-NAME = "VERBOSE" AND WS-PARAM-VALUE = "Y"
|
||||
AND WS-DEBUG-MODE = "Y"
|
||||
ADD 1 TO WS-WARN-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'Dependency: VERBOSE=Y conflicts with DEBUG-MODE=Y'
|
||||
TO WS-TEMP-LINE
|
||||
MOVE " WARNING: VERBOSE=Y conflicts with DEBUG-MODE=Y"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
IF WS-PARAM-NAME = "DEBUG-MODE" AND WS-PARAM-VALUE = "Y"
|
||||
AND WS-VERBOSE = "Y"
|
||||
ADD 1 TO WS-WARN-COUNT
|
||||
MOVE 'N' TO WS-VALID-OK MOVE 'REJECTED' TO WS-VALID-STATUS
|
||||
MOVE 'Dependency: DEBUG-MODE=Y conflicts with VERBOSE=Y'
|
||||
TO WS-TEMP-LINE
|
||||
MOVE " WARNING: DEBUG-MODE=Y conflicts with VERBOSE=Y"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
PERFORM 6000-ERROR-HANDLE
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 3200-PROCESS-RECORD — apply parameter, detect override
|
||||
*> ============================================================
|
||||
3200-PROCESS-RECORD SECTION.
|
||||
3200-START.
|
||||
MOVE 'ACCEPTED' TO WS-VALID-STATUS
|
||||
EVALUATE WS-PARAM-NAME
|
||||
WHEN "SORT-KEY"
|
||||
IF WS-SORT-KEY-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: SORT-KEY was ' WS-SORT-KEY
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE TO WS-SORT-KEY
|
||||
MOVE 'Y' TO WS-SORT-KEY-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
WHEN "OUTPUT-FMT"
|
||||
IF WS-OUTPUT-FMT-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: OUTPUT-FMT was ' WS-OUTPUT-FMT
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE TO WS-OUTPUT-FMT
|
||||
MOVE 'Y' TO WS-OUTPUT-FMT-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
WHEN "MAX-RECORDS"
|
||||
IF WS-MAX-REC-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: MAX-RECORDS was ' WS-MAX-RECORDS
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE TO WS-MAX-RECORDS
|
||||
MOVE 'Y' TO WS-MAX-REC-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
WHEN "REPORT-TYPE"
|
||||
IF WS-RPT-TYPE-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: REPORT-TYPE was ' WS-REPORT-TYPE
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE TO WS-REPORT-TYPE
|
||||
MOVE 'Y' TO WS-RPT-TYPE-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
WHEN "VERBOSE"
|
||||
IF WS-VERBOSE-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: VERBOSE was ' WS-VERBOSE
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE(1:1) TO WS-VERBOSE
|
||||
MOVE 'Y' TO WS-VERBOSE-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
WHEN "DEBUG-MODE"
|
||||
IF WS-DEBUG-SET = 'Y'
|
||||
ADD 1 TO WS-OVERRIDE-COUNT
|
||||
MOVE 'OVERRIDE' TO WS-VALID-STATUS
|
||||
STRING 'OVERRIDE: DEBUG-MODE was ' WS-DEBUG-MODE
|
||||
' now ' WS-PARAM-VALUE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
END-IF
|
||||
MOVE WS-PARAM-VALUE(1:1) TO WS-DEBUG-MODE
|
||||
MOVE 'Y' TO WS-DEBUG-SET ADD 1 TO WS-PARAM-SET-CNT
|
||||
END-EVALUATE
|
||||
IF WS-VALID-STATUS = 'OVERRIDE'
|
||||
DISPLAY '[' WS-TIMESTAMP '] OVERRIDE: '
|
||||
FUNCTION TRIM(WS-PARAM-NAME)
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 3300-WRITE-OUTPUT — write card loading line to report
|
||||
*> ============================================================
|
||||
3300-WRITE-OUTPUT SECTION.
|
||||
3300-START.
|
||||
MOVE WS-CARD-COUNT TO WS-LL-CARD
|
||||
MOVE WS-PARAM-NAME TO WS-LL-NAME
|
||||
MOVE WS-PARAM-VALUE TO WS-LL-VALUE
|
||||
MOVE WS-VALID-STATUS TO WS-LL-STATUS
|
||||
MOVE WS-LOADING-LINE TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 4000-REPORT — final values, defaults, totals, errors
|
||||
*> ============================================================
|
||||
4000-REPORT SECTION.
|
||||
4000-START.
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME INTO WS-TIMESTAMP
|
||||
DISPLAY '[' WS-TIMESTAMP '] Generating parameter report'
|
||||
DISPLAY " "
|
||||
DISPLAY "=== Final Parameter Values ==="
|
||||
MOVE "=== Final Parameter Values ===" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
|
||||
MOVE SPACES TO PL-STATUS
|
||||
MOVE "SORT-KEY" TO PL-NAME MOVE WS-SORT-KEY TO PL-VALUE
|
||||
IF WS-SORT-KEY-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "OUTPUT-FMT" TO PL-NAME MOVE WS-OUTPUT-FMT TO PL-VALUE
|
||||
IF WS-OUTPUT-FMT-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "MAX-RECORDS" TO PL-NAME MOVE WS-MAX-RECORDS TO PL-VALUE
|
||||
IF WS-MAX-REC-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "REPORT-TYPE" TO PL-NAME MOVE WS-REPORT-TYPE TO PL-VALUE
|
||||
IF WS-RPT-TYPE-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "VERBOSE" TO PL-NAME MOVE WS-VERBOSE TO PL-VALUE
|
||||
IF WS-VERBOSE-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "DEBUG-MODE" TO PL-NAME MOVE WS-DEBUG-MODE TO PL-VALUE
|
||||
IF WS-DEBUG-SET = 'Y' MOVE "(from SYSIN)" TO PL-STATUS
|
||||
ELSE MOVE "(default)" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
|
||||
*> Batch control totals
|
||||
MOVE WS-CARD-COUNT TO WS-RPT-COUNT
|
||||
STRING "Cards read: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-PARAM-SET-CNT TO WS-RPT-COUNT
|
||||
STRING "Params set: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-ERROR-COUNT TO WS-RPT-COUNT
|
||||
STRING "Errors: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-WARN-COUNT TO WS-RPT-COUNT
|
||||
STRING "Warnings: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-OVERRIDE-COUNT TO WS-RPT-COUNT
|
||||
STRING "Overrides: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-DEFAULT-APP-CNT TO WS-RPT-COUNT
|
||||
STRING "Defaults used: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE WS-SKIPPED-COUNT TO WS-RPT-COUNT
|
||||
STRING "Skipped cards: " WS-RPT-COUNT INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
|
||||
*> Default Value Summary
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE "=== Default Value Summary ===" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
|
||||
MOVE SPACES TO PL-STATUS
|
||||
MOVE "SORT-KEY" TO PL-NAME MOVE WS-SORT-KEY TO PL-VALUE
|
||||
IF WS-SORT-KEY-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "OUTPUT-FMT" TO PL-NAME MOVE WS-OUTPUT-FMT TO PL-VALUE
|
||||
IF WS-OUTPUT-FMT-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "MAX-RECORDS" TO PL-NAME MOVE WS-MAX-RECORDS TO PL-VALUE
|
||||
IF WS-MAX-REC-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "REPORT-TYPE" TO PL-NAME MOVE WS-REPORT-TYPE TO PL-VALUE
|
||||
IF WS-RPT-TYPE-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "VERBOSE" TO PL-NAME MOVE WS-VERBOSE TO PL-VALUE
|
||||
IF WS-VERBOSE-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
MOVE "DEBUG-MODE" TO PL-NAME MOVE WS-DEBUG-MODE TO PL-VALUE
|
||||
IF WS-DEBUG-SET = 'Y' MOVE "overridden" TO PL-STATUS
|
||||
ELSE MOVE "default" TO PL-STATUS
|
||||
PERFORM 4900-REPORT-PARAM
|
||||
|
||||
*> Final dependency check (post-batch)
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE "=== Final Dependency Check ===" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
IF WS-OUTPUT-FMT = "DETAIL" AND WS-REPORT-TYPE = "SUMMARY"
|
||||
MOVE " WARNING: OUTPUT-FMT=DETAIL and REPORT-TYPE=SUMMARY conflict" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
END-IF
|
||||
IF WS-VERBOSE = "Y" AND WS-DEBUG-MODE = "Y"
|
||||
MOVE " WARNING: VERBOSE=Y and DEBUG-MODE=Y conflict"
|
||||
TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
END-IF
|
||||
|
||||
*> Accumulated errors
|
||||
IF WS-ERR-IDX > 0
|
||||
MOVE SPACES TO REPORT-LINE WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
MOVE "=== Accumulated Errors ===" TO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > WS-ERR-IDX
|
||||
MOVE SPACES TO REPORT-LINE
|
||||
STRING " " WS-ERR-TEXT(IDX) INTO REPORT-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00" DISPLAY 'RPT WERR ' WS-RPT-STATUS END-IF
|
||||
END-PERFORM
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
4900-REPORT-PARAM.
|
||||
STRING " " FUNCTION TRIM(PL-NAME) " = "
|
||||
FUNCTION TRIM(PL-VALUE)
|
||||
" " FUNCTION TRIM(PL-STATUS)
|
||||
DELIMITED BY SIZE INTO REPORT-LINE
|
||||
DISPLAY WS-PARAM-LINE
|
||||
WRITE REPORT-LINE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY 'RPT WERR ' WS-RPT-STATUS
|
||||
END-IF
|
||||
.
|
||||
|
||||
*> ============================================================
|
||||
*> 5000-AUDIT — write audit file with counts and timestamps
|
||||
*> ============================================================
|
||||
5000-AUDIT SECTION.
|
||||
5000-START.
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME INTO WS-TIMESTAMP
|
||||
DISPLAY '[' WS-TIMESTAMP '] Writing audit report'
|
||||
|
||||
MOVE SPACES TO AUDIT-LINE
|
||||
MOVE '=== Parameter Audit Summary ===' TO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-CARD-COUNT TO WS-RPT-COUNT
|
||||
STRING 'Cards read: ' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-PARAM-SET-CNT TO WS-RPT-COUNT
|
||||
STRING 'Params applied: ' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-ERROR-COUNT TO WS-RPT-COUNT
|
||||
STRING 'Errors: ' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-WARN-COUNT TO WS-RPT-COUNT
|
||||
STRING 'Warnings: ' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-OVERRIDE-COUNT TO WS-RPT-COUNT
|
||||
STRING 'Overrides: ' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE WS-DEFAULT-APP-CNT TO WS-RPT-COUNT
|
||||
STRING 'Defaults applied:' WS-RPT-COUNT INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
STRING 'Batch date: ' WS-CUR-DATE INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
STRING 'Batch time: ' WS-CUR-TIME INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING 'Audit end: ' WS-CUR-DATE '-' WS-CUR-TIME
|
||||
INTO AUDIT-LINE
|
||||
WRITE AUDIT-LINE
|
||||
IF WS-AUDIT-STATUS NOT = "00" DISPLAY 'AUD WERR ' WS-AUDIT-STATUS END-IF
|
||||
|
||||
CLOSE AUDIT-FILE
|
||||
IF WS-AUDIT-STATUS NOT = "00"
|
||||
DISPLAY '[' WS-TIMESTAMP '] CLOSE ERROR: AUDIT status='
|
||||
WS-AUDIT-STATUS
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 6000-ERROR-HANDLE — accumulate one error into table
|
||||
*> ============================================================
|
||||
6000-ERROR-HANDLE SECTION.
|
||||
6000-START.
|
||||
ADD 1 TO WS-ERR-IDX
|
||||
IF WS-ERR-IDX <= WS-ERROR-MAX
|
||||
MOVE WS-TEMP-LINE TO WS-ERR-TEXT(WS-ERR-IDX)
|
||||
ELSE
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] WARNING: Error table full'
|
||||
END-IF
|
||||
EXIT.
|
||||
|
||||
*> ============================================================
|
||||
*> 9000-EXIT — close report, display final summary
|
||||
*> ============================================================
|
||||
9000-EXIT SECTION.
|
||||
9000-START.
|
||||
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-CUR-DATE
|
||||
MOVE FUNCTION CURRENT-DATE (9:6) TO WS-CUR-TIME
|
||||
STRING WS-CUR-DATE '-' WS-CUR-TIME INTO WS-TIMESTAMP
|
||||
CLOSE REPORT-FILE
|
||||
IF WS-RPT-STATUS NOT = "00"
|
||||
DISPLAY '[' WS-TIMESTAMP
|
||||
'] CLOSE ERROR: REPORT-FILE status='
|
||||
WS-RPT-STATUS
|
||||
END-IF
|
||||
DISPLAY '*** Main28Sysin: Completed at ' WS-TIMESTAMP
|
||||
DISPLAY ' Cards=' WS-CARD-COUNT
|
||||
' Params set=' WS-PARAM-SET-CNT
|
||||
' Errors=' WS-ERROR-COUNT
|
||||
DISPLAY ' Warnings=' WS-WARN-COUNT
|
||||
' Overrides=' WS-OVERRIDE-COUNT
|
||||
' Defaults=' WS-DEFAULT-APP-CNT
|
||||
DISPLAY ' Reports: sysin-report.txt, sysin-audit.dat'
|
||||
EXIT.
|
||||
Reference in New Issue
Block a user