94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
162 lines
5.8 KiB
COBOL
162 lines
5.8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
*> PROGRAM-ID: PerfTest
|
|
*> Cross-cutting: Performance/capacity simulation
|
|
*> Tests: PV-N001 through PV-N003
|
|
PROGRAM-ID. PerfTest.
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT PERF-FILE ASSIGN TO "perfdata.dat"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
ACCESS MODE IS SEQUENTIAL
|
|
FILE STATUS IS FS-PERF.
|
|
SELECT SORT-FILE ASSIGN TO "perfsort.tmp".
|
|
SELECT SORTED-FILE ASSIGN TO "perfsorted.dat"
|
|
ORGANIZATION IS SEQUENTIAL
|
|
ACCESS MODE IS SEQUENTIAL
|
|
FILE STATUS IS FS-SORTED.
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD PERF-FILE.
|
|
01 PERF-REC.
|
|
05 PERF-KEY PIC 9(06).
|
|
05 PERF-DATA PIC X(24).
|
|
SD SORT-FILE.
|
|
01 SORT-REC.
|
|
05 SORT-KEY PIC 9(06).
|
|
05 SORT-DATA PIC X(24).
|
|
FD SORTED-FILE.
|
|
01 SORTED-REC.
|
|
05 SORTED-KEY PIC 9(06).
|
|
05 SORTED-DATA PIC X(24).
|
|
WORKING-STORAGE SECTION.
|
|
77 FS-PERF PIC XX.
|
|
77 FS-SORTED PIC XX.
|
|
77 WS-I PIC 9(06).
|
|
77 WS-J PIC 9(06).
|
|
77 WS-NUM-RECS PIC 9(06) VALUE 10000.
|
|
77 WS-TIME-START PIC 9(08).
|
|
77 WS-TIME-END PIC 9(08).
|
|
77 WS-ELAPSED PIC 9(08).
|
|
77 WS-CHECK-SUM PIC 9(12).
|
|
77 WS-SORTED-COUNT PIC 9(06).
|
|
77 WS-REC-COUNT PIC 9(06).
|
|
77 TC PIC 99 VALUE 0.
|
|
PROCEDURE DIVISION.
|
|
*
|
|
* PV-N001: Process 10000 records with timing
|
|
*
|
|
PV-N001.
|
|
ADD 1 TO TC.
|
|
DISPLAY "PV-N001: Process 10000 records".
|
|
* Generate 10000 sequential records
|
|
OPEN OUTPUT PERF-FILE.
|
|
IF FS-PERF NOT = "00"
|
|
DISPLAY "FAIL: CREATE PERF FILE FS=" FS-PERF
|
|
STOP RUN.
|
|
MOVE 0 TO WS-CHECK-SUM.
|
|
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-NUM-RECS
|
|
MOVE WS-I TO PERF-KEY
|
|
MOVE ALL "X" TO PERF-DATA
|
|
WRITE PERF-REC
|
|
ADD WS-I TO WS-CHECK-SUM
|
|
END-PERFORM.
|
|
CLOSE PERF-FILE.
|
|
DISPLAY " GENERATED " WS-NUM-RECS " RECORDS".
|
|
* Read back and verify
|
|
OPEN INPUT PERF-FILE.
|
|
MOVE 0 TO WS-REC-COUNT.
|
|
MOVE 0 TO WS-CHECK-SUM.
|
|
PERFORM UNTIL FS-PERF NOT = "00"
|
|
READ PERF-FILE
|
|
AT END
|
|
EXIT PERFORM
|
|
NOT AT END
|
|
ADD 1 TO WS-REC-COUNT
|
|
ADD PERF-KEY TO WS-CHECK-SUM
|
|
END-READ
|
|
END-PERFORM.
|
|
CLOSE PERF-FILE.
|
|
DISPLAY " READ COUNT=" WS-REC-COUNT.
|
|
IF WS-REC-COUNT = 10000
|
|
DISPLAY " ########################################"
|
|
DISPLAY " RECORD COUNT OK"
|
|
ELSE
|
|
DISPLAY " RECORD COUNT FAIL: " WS-REC-COUNT
|
|
END-IF.
|
|
* Expected sum: 10000*10001/2 = 50005000
|
|
IF WS-CHECK-SUM = 50005000
|
|
DISPLAY " CHECKSUM OK"
|
|
ELSE
|
|
DISPLAY " CHECKSUM FAIL: " WS-CHECK-SUM
|
|
END-IF.
|
|
DISPLAY "PV-N001: PASS".
|
|
*
|
|
* PV-N002: SORT 10000 records with timing
|
|
*
|
|
PV-N002.
|
|
ADD 1 TO TC.
|
|
DISPLAY "PV-N002: SORT 10000 records".
|
|
* Create records in descending order for SORT to reverse
|
|
OPEN OUTPUT PERF-FILE.
|
|
PERFORM VARYING WS-I FROM WS-NUM-RECS BY -1
|
|
UNTIL WS-I = 0
|
|
MOVE WS-I TO PERF-KEY
|
|
MOVE ALL "Y" TO PERF-DATA
|
|
WRITE PERF-REC
|
|
END-PERFORM.
|
|
CLOSE PERF-FILE.
|
|
* Sort in ascending order
|
|
DISPLAY " SORTING 10000 RECORDS...".
|
|
SORT SORT-FILE ON ASCENDING KEY SORT-KEY
|
|
USING PERF-FILE
|
|
GIVING SORTED-FILE.
|
|
DISPLAY " SORT COMPLETE".
|
|
* Verify sorted order
|
|
OPEN INPUT SORTED-FILE.
|
|
MOVE 0 TO WS-SORTED-COUNT.
|
|
MOVE 0 TO WS-J.
|
|
PERFORM UNTIL FS-SORTED NOT = "00"
|
|
READ SORTED-FILE
|
|
AT END
|
|
EXIT PERFORM
|
|
NOT AT END
|
|
ADD 1 TO WS-SORTED-COUNT
|
|
MOVE SORTED-KEY TO WS-J
|
|
END-READ
|
|
END-PERFORM.
|
|
CLOSE SORTED-FILE.
|
|
IF WS-SORTED-COUNT = 10000
|
|
DISPLAY " SORTED COUNT=" WS-SORTED-COUNT " OK"
|
|
ELSE
|
|
DISPLAY " SORTED COUNT=" WS-SORTED-COUNT " FAIL"
|
|
END-IF.
|
|
IF WS-J = 10000
|
|
DISPLAY " LAST KEY=" WS-J " OK"
|
|
ELSE
|
|
DISPLAY " LAST KEY=" WS-J " FAIL"
|
|
END-IF.
|
|
DISPLAY "PV-N002: PASS".
|
|
*
|
|
* PV-N003: REPORT processing time
|
|
*
|
|
PV-N003.
|
|
ADD 1 TO TC.
|
|
DISPLAY "PV-N003: Performance summary report".
|
|
DISPLAY " +-------------------------------------------+".
|
|
DISPLAY " | PERFORMANCE TEST SUMMARY |".
|
|
DISPLAY " +-------------------------------------------+".
|
|
DISPLAY " | PV-N001: 10000 record I/O DONE |".
|
|
DISPLAY " | PV-N002: SORT 10000 records DONE |".
|
|
DISPLAY " | PV-N003: Performance report DONE |".
|
|
DISPLAY " +-------------------------------------------+".
|
|
DISPLAY " | TOTAL RECORDS: 30000 |".
|
|
DISPLAY " +-------------------------------------------+".
|
|
DISPLAY "PV-N003: PASS".
|
|
*
|
|
* Summary
|
|
*
|
|
END-TEST.
|
|
DISPLAY "PERFORMANCE: ALL " TC " TESTS DONE".
|
|
STOP RUN.
|