308 lines
7.6 KiB
COBOL
308 lines
7.6 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
|
|
PROGRAM-ID. INDEX01.
|
|
|
|
AUTHOR. JFMOBACH.
|
|
|
|
* DATE-WRITTEN.
|
|
* 18-10-1997.
|
|
*
|
|
* OMSCHRIJVING :
|
|
*
|
|
* Testprogramm to :
|
|
* - build an indexed file with 100.000 records,
|
|
* - update that file with 50.000 records,
|
|
* - add 50.000 records to that file,
|
|
* - read via indexes 50.000 records, and
|
|
* - read the file sequential.
|
|
* Timestamps of start en end of each phase will be showed.
|
|
|
|
ENVIRONMENT DIVISION.
|
|
|
|
CONFIGURATION SECTION.
|
|
* SOURCE-COMPUTER.
|
|
* IBM-PC.
|
|
* OBJECT-COMPUTER.
|
|
* IBM-PC.
|
|
|
|
SPECIAL-NAMES.
|
|
DECIMAL-POINT IS COMMA.
|
|
|
|
*
|
|
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
|
|
SELECT FIDXWERKBESTANDSORT
|
|
ASSIGN TO "CURRFILENAME"
|
|
ORGANIZATION IS INDEXED
|
|
ACCESS MODE IS DYNAMIC
|
|
RECORD KEY IS IDXSORTEERVELD
|
|
* LOCK MODE IS MANUAL
|
|
.
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD FIDXWERKBESTANDSORT
|
|
LABEL RECORDS ARE STANDARD
|
|
*V* RECORD IS VARYING IN SIZE DEPENDING ON RECORDLENGTE
|
|
.
|
|
01 RIDXWERKBESTANDSORT.
|
|
03 IDXSORTEERVELD PIC X(0013).
|
|
03 FILLER REDEFINES IDXSORTEERVELD.
|
|
05 IDXSORTEERVELD-N PIC 9(13).
|
|
03 IDXSORTEERDATA PIC X(0326).
|
|
|
|
*
|
|
|
|
WORKING-STORAGE SECTION.
|
|
|
|
* 01 RECORDLENGTE PIC 9(04) COMP SYNC.
|
|
01 RECORDLENGTE PIC 9(04) COMP.
|
|
|
|
01 DATUM-TIJD-VELDEN.
|
|
03 DATUM PIC 9(06).
|
|
03 FILLER REDEFINES DATUM.
|
|
05 SYS-JJ PIC 99.
|
|
05 SYS-MM PIC 99.
|
|
05 SYS-DD PIC 99.
|
|
03 TIJD PIC 9(08).
|
|
03 FILLER REDEFINES TIJD.
|
|
05 SYS-UUR PIC 99.
|
|
05 SYS-MIN PIC 99.
|
|
05 SYS-SEC PIC 99.
|
|
05 SYS-HSS PIC 99.
|
|
*
|
|
01 KOPREGEL-1.
|
|
03 K1-NAAM PIC X(30) VALUE SPACES.
|
|
03 FILLER PIC X(9) VALUE " Datum: ".
|
|
03 K1-DD PIC 9(2).
|
|
03 FILLER PIC X VALUE "-".
|
|
03 K1-MM PIC 9(2).
|
|
03 FILLER PIC X VALUE "-".
|
|
03 K1-JJ PIC 9(2).
|
|
03 FILLER PIC X(7) VALUE " Tijd: ".
|
|
03 K1-UUR PIC 9(2).
|
|
03 FILLER PIC X VALUE ":".
|
|
03 K1-MIN PIC 9(2).
|
|
03 FILLER PIC X VALUE ":".
|
|
03 K1-SEC PIC 9(2).
|
|
03 FILLER PIC X(3) VALUE " # ".
|
|
* 03 K1-AANTAL PIC ZZZ.ZZ9 BLANK ZERO.
|
|
03 K1-AANTAL PIC ZZZ.ZZ9 VALUE 0.
|
|
*
|
|
01 WERKVELDEN.
|
|
03 CURRFILENAME PIC X(0030) VALUE "TESTDATA".
|
|
03 SLEUTELWAARDE PIC 9(13).
|
|
03 SLEUTEL-MAX PIC 9(13) VALUE 1000000.
|
|
03 SLEUTEL-INTERVAL PIC 9(13).
|
|
03 AANTAL-RECORDS PIC 9(06).
|
|
|
|
*
|
|
*
|
|
PROCEDURE DIVISION.
|
|
|
|
BESTURING SECTION.
|
|
P00.
|
|
*
|
|
*
|
|
MOVE 0 TO AANTAL-RECORDS
|
|
MOVE "FILE CONSTRUCTION : START " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
OPEN OUTPUT FIDXWERKBESTANDSORT
|
|
PERFORM GENEREER-RECORD
|
|
VARYING SLEUTELWAARDE FROM 1 BY 10
|
|
UNTIL SLEUTELWAARDE > SLEUTEL-MAX
|
|
CLOSE FIDXWERKBESTANDSORT
|
|
*
|
|
MOVE "FILE CONSTRUCTION : STOP " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
*
|
|
MOVE 0 TO AANTAL-RECORDS
|
|
MOVE "UPDATE 50.000 : START " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
OPEN I-O FIDXWERKBESTANDSORT
|
|
COMPUTE SLEUTEL-INTERVAL = SLEUTEL-MAX / 50000
|
|
PERFORM WIJZIG-RECORD
|
|
VARYING SLEUTELWAARDE FROM 1 BY SLEUTEL-INTERVAL
|
|
UNTIL SLEUTELWAARDE > SLEUTEL-MAX
|
|
CLOSE FIDXWERKBESTANDSORT
|
|
*
|
|
MOVE "UPDATE 50.000 : STOP " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
*
|
|
MOVE 0 TO AANTAL-RECORDS
|
|
MOVE "INSERT 50.000 : START " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
OPEN I-O FIDXWERKBESTANDSORT
|
|
COMPUTE SLEUTEL-INTERVAL = SLEUTEL-MAX / 50000
|
|
PERFORM WIJZIG-RECORD
|
|
VARYING SLEUTELWAARDE FROM 3 BY SLEUTEL-INTERVAL
|
|
UNTIL SLEUTELWAARDE > SLEUTEL-MAX
|
|
CLOSE FIDXWERKBESTANDSORT
|
|
*
|
|
MOVE "INSERT 50.000 : STOP " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
*
|
|
MOVE 0 TO AANTAL-RECORDS
|
|
MOVE "INDEXED READ : START " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
OPEN I-O FIDXWERKBESTANDSORT
|
|
PERFORM LEES-INDEXED
|
|
VARYING SLEUTELWAARDE FROM 1 BY 10
|
|
UNTIL SLEUTELWAARDE > SLEUTEL-MAX
|
|
CLOSE FIDXWERKBESTANDSORT
|
|
*
|
|
MOVE "INDEXED READ : STOP " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
*
|
|
MOVE 0 TO AANTAL-RECORDS
|
|
MOVE "FILE READ : START " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
*
|
|
OPEN INPUT FIDXWERKBESTANDSORT
|
|
PERFORM LEES-RECORD
|
|
VARYING SLEUTELWAARDE FROM 1 BY 10
|
|
UNTIL SLEUTELWAARDE > SLEUTEL-MAX
|
|
CLOSE FIDXWERKBESTANDSORT
|
|
*
|
|
MOVE "FILE READ : STOP " TO K1-NAAM
|
|
PERFORM TOON-TIJD
|
|
.
|
|
END-OF-SECTION.
|
|
STOP RUN.
|
|
*/
|
|
* * * *
|
|
* * * * TOON-TIJD :
|
|
* * * * TOON DATUM EN TIJD DER ACTIE.
|
|
* * * *
|
|
*
|
|
TOON-TIJD SECTION.
|
|
P00.
|
|
ACCEPT DATUM FROM DATE
|
|
ACCEPT TIJD FROM TIME
|
|
MOVE SYS-DD TO K1-DD
|
|
MOVE SYS-MM TO K1-MM
|
|
MOVE SYS-JJ TO K1-JJ
|
|
MOVE SYS-UUR TO K1-UUR
|
|
MOVE SYS-MIN TO K1-MIN
|
|
MOVE SYS-SEC TO K1-SEC
|
|
MOVE AANTAL-RECORDS TO K1-AANTAL
|
|
DISPLAY KOPREGEL-1
|
|
.
|
|
*
|
|
* UITGANG.
|
|
*
|
|
END-OF-SECTION.
|
|
EXIT.
|
|
/
|
|
* * * *
|
|
* * * * GENEREER-RECORD :
|
|
* * * * GENEREER EEN RECORD IN HET BESTAND.
|
|
* * * *
|
|
*
|
|
GENEREER-RECORD SECTION.
|
|
P00.
|
|
ADD 1 TO AANTAL-RECORDS
|
|
MOVE SLEUTELWAARDE TO IDXSORTEERVELD-N
|
|
MOVE SPACES TO IDXSORTEERDATA
|
|
WRITE RIDXWERKBESTANDSORT
|
|
INVALID KEY
|
|
DISPLAY "WRIT INVALID KEY " SLEUTELWAARDE
|
|
STOP RUN
|
|
.
|
|
*
|
|
* UITGANG.
|
|
*
|
|
END-OF-SECTION.
|
|
EXIT.
|
|
/
|
|
* * * *
|
|
* * * * WIJZIG-RECORD :
|
|
* * * * WIJZIG EEN RECORD IN HET BESTAND.
|
|
* * * *
|
|
*
|
|
WIJZIG-RECORD SECTION.
|
|
P00.
|
|
ADD 1 TO AANTAL-RECORDS
|
|
MOVE SLEUTELWAARDE TO IDXSORTEERVELD-N
|
|
READ FIDXWERKBESTANDSORT
|
|
INVALID KEY
|
|
GO TO P50
|
|
.
|
|
MOVE "UPDATE" TO IDXSORTEERDATA
|
|
REWRITE RIDXWERKBESTANDSORT
|
|
INVALID KEY
|
|
DISPLAY "REWR INVALID KEY " SLEUTELWAARDE
|
|
STOP RUN
|
|
.
|
|
GO TO END-OF-SECTION
|
|
.
|
|
P50.
|
|
MOVE "INSERT" TO IDXSORTEERDATA
|
|
MOVE SLEUTELWAARDE TO IDXSORTEERVELD-N
|
|
WRITE RIDXWERKBESTANDSORT
|
|
INVALID KEY
|
|
DISPLAY "WRIT INVALID KEY " SLEUTELWAARDE
|
|
STOP RUN
|
|
.
|
|
*
|
|
* UITGANG.
|
|
*
|
|
END-OF-SECTION.
|
|
EXIT.
|
|
/
|
|
* * * *
|
|
* * * * LEES-INDEXED :
|
|
* * * * LEES EEN RECORD VIA DE INDEX UIT HET BESTAND.
|
|
* * * *
|
|
*
|
|
LEES-INDEXED SECTION.
|
|
P00.
|
|
ADD 1 TO AANTAL-RECORDS
|
|
MOVE SLEUTELWAARDE TO IDXSORTEERVELD-N
|
|
READ FIDXWERKBESTANDSORT
|
|
INVALID KEY
|
|
DISPLAY "READ INVALID KEY " SLEUTELWAARDE
|
|
STOP RUN
|
|
.
|
|
*
|
|
* UITGANG.
|
|
*
|
|
END-OF-SECTION.
|
|
EXIT.
|
|
/
|
|
* * * *
|
|
* * * * LEES-RECORD :
|
|
* * * * LEES EEN RECORD UIT HET BESTAND.
|
|
* * * *
|
|
*
|
|
LEES-RECORD SECTION.
|
|
P00.
|
|
ADD 1 TO AANTAL-RECORDS
|
|
READ FIDXWERKBESTANDSORT
|
|
NEXT RECORD
|
|
AT END
|
|
ADD SLEUTEL-MAX, 1 GIVING SLEUTELWAARDE
|
|
.
|
|
*
|
|
* UITGANG.
|
|
*
|
|
END-OF-SECTION.
|
|
EXIT.
|
|
*
|
|
* SERVICE ROUTINES.
|
|
*
|
|
IO-CALL SECTION.
|
|
P00.
|
|
DUMMY-SECTION.
|
|
END-OF-SECTION.
|
|
EXIT.
|