[comp.benchmarks] Here's a Cobol benchmark: what are your times?

john@beaudin.UUCP (John Beaudin) (12/09/90)

# I aplogize for not cross-posting this in alt.cobol (I foolishly posted
# it directly to that newsgroup before I remembered comp.benchmarks).

# It should compile most everywhere due to its simple nature.

# My ACUCobol times on a SCO Unix SysV 3.2.2, multi-user mode, 1
# user logged in (the benchmark) were
# Everex 386/33: ESDI drive, 71 secs
# Compaq Systempro 486/33-840: IDA controller, data guarding, 44 secs
 
# The benchmark could have coded in ansi free-style format, but would not
# have been as portable. ACUCobol is an interpretive compiler with a
# runtime.
#	John Beaudin

#!/bin/sh
# This is a shell archive (shar 3.47)
# made 12/08/1990 17:19 UTC by root@beaudin
# Source directory /u/acu/src
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#  29632 -rw-rw-rw- acubench.src
#
# ============= acubench.src ==============
if test -f 'acubench.src' -a X"$1" != X"-c"; then
	echo 'x - skipping acubench.src (File already exists)'
else
echo 'x - extracting acubench.src (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'acubench.src' &&
X       IDENTIFICATION DIVISION.
X       PROGRAM-ID.  ACUBENCH.
X      
X      * This program performs various file I/O tests for benchmarking
X      * purposes.  It should be compiled under ACUCOBOL with the 
X      * following command: 
X      *    
X      *    ccbl -Cr -Si ACU acubench.cbl
X      *
X      * Under RM/COBOL-85, it can be compiled by: 
X      *
X      *    rmcobol acubench
X      *
X      * This program is similar to the file benchmark in the REALIA
X      * comprehensive benchmark program.   It provides a test of a 
X      * fairly representative series of I/O operations that roughly
X      * simulate various "real world" scenarios.  Both sequential and
X      * random access is tested.  The two indexed files created are
X      * both fairly realistic.  One contains one 10-byte key that is
X      * written in strictly increasing order (sequential access).  The
X      * second contains a primary 10-byte key that is written in
X      * increasing order and one 40-byte alternate key that is written
X      * in random order (sequential and random access).  The first
X      * file is similar to a historical file or a simple line transaction
X      * file.  The second is similar to most master files and multi-key
X      * transaction files.  
X
X      * This program quotes times for ACUCOBOL-85 and RM/COBOL-85.
X      * These times were obtained on a Toshiba T-5100 computer.  This
X      * is a 16-Mhz 80386 machine running MS-DOS.  Each test was run
X      * twice for both compilers and the best time for each sub-test
X      * taken.  The expanded memory in the Toshiba was turned off 
X      * prior to running the test.  With the expanded memory installed,
X      * the times for ACUCOBOL are more than twice as fast.  
X
X      * Date written: 2/16/89 - T. Drake Coker
X      * Copyright (c) 1989 by ACUCOBOL, Inc.
X
X      * Modification history:
X      *
X      * 4/13/89 - Changed summary times to reflect version 1.3B ACUCOBOL.
X
X       ENVIRONMENT DIVISION.
X       CONFIGURATION SECTION.
X
X      * Note: if SWITCH-1 is set, then the test is not actually run
X      * This is useful when debugging the program or if you want to
X      * get to the summary screen without waiting for the tests to
X      * finish.
X
X       SPECIAL-NAMES.
X           SWITCH-1, ON STATUS IS SKIP-TEST.
X
X       INPUT-OUTPUT SECTION.
X       FILE-CONTROL.
X           SELECT SEQ-1-FILE
X           ASSIGN TO DISK "SEQ1.DAT"
X           BINARY SEQUENTIAL
X           STATUS IS SEQ-1-STATUS.
X
X           SELECT SEQ-2-FILE
X           ASSIGN TO DISK "SEQ2.DAT"
X           BINARY SEQUENTIAL.
X
X           SELECT IDX-1-FILE
X           ASSIGN TO DISK "IDX1.DAT"
X           ORGANIZATION IS INDEXED
X           ACCESS IS DYNAMIC
X           RECORD KEY IS IDX-1-KEY
X           STATUS IS IDX-1-STATUS.
X
X           SELECT IDX-2-FILE
X           ASSIGN TO DISK "IDX2.DAT"
X           ORGANIZATION IS INDEXED
X           ACCESS IS DYNAMIC
X           RECORD KEY IS IDX-2-KEY
X           ALTERNATE RECORD KEY IS IDX-2-ALT-KEY
X               WITH DUPLICATES
X           STATUS IS IDX-2-STATUS.
X
X           SELECT SORT-FILE
X           ASSIGN TO SORT.
X
X       DATA DIVISION.
X       FILE SECTION.
X       FD  SEQ-1-FILE.
X       01  SEQ-1-RECORD.
X           03  SEQ-1-KEY                       PIC 9(10).
X           03  SEQ-1-ALT-KEY.
X               05  SEQ-1-ALT-KEY-A             PIC X(30).
X               05  SEQ-1-ALT-KEY-B             PIC 9(10).
X           03  SEQ-1-BODY                      PIC X(50).
X
X       FD  SEQ-2-FILE.
X       01  SEQ-2-RECORD                        PIC X(100).
X
X       FD  IDX-1-FILE.
X       01  IDX-1-RECORD.
X           03  IDX-1-KEY                       PIC X(10).
X           03  IDX-1-ALT-KEY.
X               05  IDX-1-ALT-KEY-A             PIC X(30).
X               05  IDX-1-ALT-KEY-B             PIC X(10).
X           03  IDX-1-BODY                      PIC X(50).
X
X       FD  IDX-2-FILE.
X       01  IDX-2-RECORD.
X           03  IDX-2-KEY                       PIC X(10).
X           03  IDX-2-ALT-KEY.
X               05  IDX-2-ALT-KEY-A             PIC X(30).
X               05  IDX-2-ALT-KEY-B             PIC X(10).
X           03  IDX-2-BODY                      PIC X(50).
X
X       SD  SORT-FILE.
X       01  SORT-RECORD.
X           03  SORT-KEY                        PIC X(10).
X           03  SORT-ALT-KEY                    PIC X(40).
X           03  FILLER                          PIC X(50).
X
X
X       WORKING-STORAGE SECTION.
X
X       77  SEQ-1-STATUS                        PIC X(2).
X       77  IDX-1-STATUS                        PIC X(2).
X       77  IDX-2-STATUS                        PIC X(2).
X
X       77  LINE-NO                             PIC 9(2).
X
X       77  SYNC-TIME-1                         PIC 9(8).
X       77  SYNC-TIME-2                         PIC 9(8).
X       77  ELAPSED-TIME                        PIC ZZZZZZ.9.
X       77  TOTAL-TIME                          PIC 9(7)V9 VALUE ZERO.
X       77  TIME-DIFF                           PIC 9(6)V9.
X       77  BEGIN-TIME                          PIC 9(8).
X       01  BEGIN-TIME-FIELDS REDEFINES BEGIN-TIME.
X           03  BEGIN-HOURS                     PIC 9(2).
X           03  BEGIN-MINUTES                   PIC 9(2).
X           03  BEGIN-SECONDS                   PIC 9(2).
X           03  BEGIN-HUNDRETHS                 PIC 9(2).
X       77  END-TIME                            PIC 9(8).
X       01  END-TIME-FIELDS REDEFINES END-TIME.
X           03  END-HOURS                       PIC 9(2).
X           03  END-MINUTES                     PIC 9(2).
X           03  END-SECONDS                     PIC 9(2).
X           03  END-HUNDRETHS                   PIC 9(2).
X
X       01  TIMING-TABLE.
X           03  TEST-TIME OCCURS 10 TIMES       PIC ZZZZZZ.9.
X
X       01  ACUCOBOL-TIMES.
X           03  PIC X(8) VALUE "    12.5".
X           03  PIC X(8) VALUE "    38.4".
X           03  PIC X(8) VALUE "    42.0".
X           03  PIC X(8) VALUE "    47.5".
X           03  PIC X(8) VALUE "     9.1".
X           03  PIC X(8) VALUE "   197.5".
X           03  PIC X(8) VALUE "    65.0".
X           03  PIC X(8) VALUE "   412.0".
X
X       01  ACUCOBOL-TIMES-TABLE
X           REDEFINES ACUCOBOL-TIMES.
X           03  ACU-TIME
X               OCCURS 8 TIMES                  PIC X(8).
X
X       01  RMCOBOL-TIMES.
X           03  PIC X(8) VALUE "    11.4".
X           03  PIC X(8) VALUE "   131.0".
X           03  PIC X(8) VALUE "   101.3".
X           03  PIC X(8) VALUE "    45.5".
X           03  PIC X(8) VALUE "     8.6".
X           03  PIC X(8) VALUE "   414.2".
X           03  PIC X(8) VALUE "   107.8".
X           03  PIC X(8) VALUE "   819.8".
X
X       01  RMCOBOL-TIMES-TABLE
X           REDEFINES RMCOBOL-TIMES.
X           03  RM-TIME
X               OCCURS 8 TIMES                  PIC X(8).
X
X       77  KEY-VALUE                           PIC 9(10).
X       01  ALT-KEY-VALUE.
X           03  ALT-KEY-VALUE-A                 PIC 9(15) VALUE
X                                               842765989876543.
X           03  ALT-KEY-VALUE-B                 PIC 9(8) VALUE
X                                               62305671.
X           03  ALT-KEY-VALUE-C                 PIC 9(7) VALUE
X                                               2639004.
X       01  ALT-KEY-VALUE-1 REDEFINES ALT-KEY-VALUE.
X           03  ALT-CHAR OCCURS 30 TIMES        PIC X.
X
X      * This table comes from the REALIA benchmark.
X      * It contains a file action code and a key to operate on.
X      * The file action code is "I" for "insert", "U" for "update",
X      * and "D" for "delete".  For inserts and updates, a
X      * random alternate key is generated.  This table is used more
X      * than once by modifying the third character of the key on
X      * different passes through the table.
X
X       01  UPDATE-TABLE-VALUES.
X           03  PIC X(7) VALUE 'I000001'.
X           03  PIC X(7) VALUE 'I000002'.
X           03  PIC X(7) VALUE 'I000003'.
X           03  PIC X(7) VALUE 'I000004'.
X           03  PIC X(7) VALUE 'U000010'.
X           03  PIC X(7) VALUE 'I000011'.
X           03  PIC X(7) VALUE 'I000012'.
X           03  PIC X(7) VALUE 'I000013'.
X           03  PIC X(7) VALUE 'I000014'.
X           03  PIC X(7) VALUE 'I000015'.
X           03  PIC X(7) VALUE 'I000016'.
X           03  PIC X(7) VALUE 'I000017'.
X           03  PIC X(7) VALUE 'I000018'.
X           03  PIC X(7) VALUE 'I000019'.
X           03  PIC X(7) VALUE 'U000020'.
X           03  PIC X(7) VALUE 'D000030'.
X           03  PIC X(7) VALUE 'I000035'.
X           03  PIC X(7) VALUE 'U000040'.
X           03  PIC X(7) VALUE 'D000050'.
X           03  PIC X(7) VALUE 'I000055'.
X           03  PIC X(7) VALUE 'I000061'.
X           03  PIC X(7) VALUE 'I000062'.
X           03  PIC X(7) VALUE 'I000063'.
X           03  PIC X(7) VALUE 'I000064'.
X           03  PIC X(7) VALUE 'U000070'.
X           03  PIC X(7) VALUE 'I000071'.
X           03  PIC X(7) VALUE 'I000072'.
X           03  PIC X(7) VALUE 'I000073'.
X           03  PIC X(7) VALUE 'I000074'.
X           03  PIC X(7) VALUE 'I000075'.
X           03  PIC X(7) VALUE 'I000076'.
X           03  PIC X(7) VALUE 'I000077'.
X           03  PIC X(7) VALUE 'I000078'.
X           03  PIC X(7) VALUE 'I000079'.
X           03  PIC X(7) VALUE 'U000080'.
X           03  PIC X(7) VALUE 'D000090'.
X           03  PIC X(7) VALUE 'I000091'.
X           03  PIC X(7) VALUE 'I000092'.
X           03  PIC X(7) VALUE 'I000093'.
X           03  PIC X(7) VALUE 'I000094'.
X      *
X           03  PIC X(7) VALUE 'I000301'.
X           03  PIC X(7) VALUE 'I000302'.
X           03  PIC X(7) VALUE 'I000303'.
X           03  PIC X(7) VALUE 'I000304'.
X           03  PIC X(7) VALUE 'U000310'.
X           03  PIC X(7) VALUE 'I000311'.
X           03  PIC X(7) VALUE 'I000312'.
X           03  PIC X(7) VALUE 'I000313'.
X           03  PIC X(7) VALUE 'U000320'.
X           03  PIC X(7) VALUE 'I000324'.
X           03  PIC X(7) VALUE 'I000325'.
X           03  PIC X(7) VALUE 'I000326'.
X           03  PIC X(7) VALUE 'I000327'.
X           03  PIC X(7) VALUE 'I000328'.
X           03  PIC X(7) VALUE 'I000329'.
X           03  PIC X(7) VALUE 'D000330'.
X           03  PIC X(7) VALUE 'D000340'.
X           03  PIC X(7) VALUE 'U000350'.
X           03  PIC X(7) VALUE 'I000351'.
X           03  PIC X(7) VALUE 'I000352'.
X           03  PIC X(7) VALUE 'I000361'.
X           03  PIC X(7) VALUE 'I000362'.
X           03  PIC X(7) VALUE 'I000363'.
X           03  PIC X(7) VALUE 'I000364'.
X           03  PIC X(7) VALUE 'U000370'.
X           03  PIC X(7) VALUE 'I000371'.
X           03  PIC X(7) VALUE 'I000372'.
X           03  PIC X(7) VALUE 'I000373'.
X           03  PIC X(7) VALUE 'U000380'.
X           03  PIC X(7) VALUE 'I000384'.
X           03  PIC X(7) VALUE 'I000385'.
X           03  PIC X(7) VALUE 'I000386'.
X           03  PIC X(7) VALUE 'I000387'.
X           03  PIC X(7) VALUE 'I000388'.
X           03  PIC X(7) VALUE 'I000389'.
X           03  PIC X(7) VALUE 'D000390'.
X           03  PIC X(7) VALUE 'I000391'.
X           03  PIC X(7) VALUE 'I000392'.
X           03  PIC X(7) VALUE 'I000393'.
X           03  PIC X(7) VALUE 'I000394'.
X      *
X           03  PIC X(7) VALUE 'I000501'.
X           03  PIC X(7) VALUE 'I000502'.
X           03  PIC X(7) VALUE 'I000503'.
X           03  PIC X(7) VALUE 'I000504'.
X           03  PIC X(7) VALUE 'U000510'.
X           03  PIC X(7) VALUE 'I000517'.
X           03  PIC X(7) VALUE 'I000518'.
X           03  PIC X(7) VALUE 'I000519'.
X           03  PIC X(7) VALUE 'U000520'.
X           03  PIC X(7) VALUE 'D000530'.
X           03  PIC X(7) VALUE 'D000540'.
X           03  PIC X(7) VALUE 'I000551'.
X           03  PIC X(7) VALUE 'I000552'.
X           03  PIC X(7) VALUE 'I000553'.
X           03  PIC X(7) VALUE 'I000561'.
X           03  PIC X(7) VALUE 'I000565'.
X           03  PIC X(7) VALUE 'I000568'.
X           03  PIC X(7) VALUE 'U000580'.
X           03  PIC X(7) VALUE 'D000590'.
X           03  PIC X(7) VALUE 'I000595'.
X           03  PIC X(7) VALUE 'I000601'.
X           03  PIC X(7) VALUE 'I000602'.
X           03  PIC X(7) VALUE 'I000603'.
X           03  PIC X(7) VALUE 'I000604'.
X           03  PIC X(7) VALUE 'U000610'.
X           03  PIC X(7) VALUE 'I000617'.
X           03  PIC X(7) VALUE 'I000618'.
X           03  PIC X(7) VALUE 'I000619'.
X           03  PIC X(7) VALUE 'U000620'.
X           03  PIC X(7) VALUE 'D000630'.
X           03  PIC X(7) VALUE 'D000640'.
X           03  PIC X(7) VALUE 'I000651'.
X           03  PIC X(7) VALUE 'I000652'.
X           03  PIC X(7) VALUE 'I000653'.
X           03  PIC X(7) VALUE 'I000661'.
X           03  PIC X(7) VALUE 'I000665'.
X           03  PIC X(7) VALUE 'I000668'.
X           03  PIC X(7) VALUE 'U000680'.
X           03  PIC X(7) VALUE 'D000690'.
X           03  PIC X(7) VALUE 'I000695'.
X      *
X           03  PIC X(7) VALUE 'I000701'.
X           03  PIC X(7) VALUE 'I000702'.
X           03  PIC X(7) VALUE 'I000703'.
X           03  PIC X(7) VALUE 'I000704'.
X           03  PIC X(7) VALUE 'U000720'.
X           03  PIC X(7) VALUE 'U000730'.
X           03  PIC X(7) VALUE 'I000731'.
X           03  PIC X(7) VALUE 'I000732'.
X           03  PIC X(7) VALUE 'I000733'.
X           03  PIC X(7) VALUE 'D000740'.
X           03  PIC X(7) VALUE 'I000742'.
X           03  PIC X(7) VALUE 'I000744'.
X           03  PIC X(7) VALUE 'I000745'.
X           03  PIC X(7) VALUE 'I000746'.
X           03  PIC X(7) VALUE 'I000748'.
X           03  PIC X(7) VALUE 'I000751'.
X           03  PIC X(7) VALUE 'D000760'.
X           03  PIC X(7) VALUE 'U000780'.
X           03  PIC X(7) VALUE 'D000790'.
X           03  PIC X(7) VALUE 'I000795'.
X           03  PIC X(7) VALUE 'I000801'.
X           03  PIC X(7) VALUE 'I000802'.
X           03  PIC X(7) VALUE 'I000803'.
X           03  PIC X(7) VALUE 'I000804'.
X           03  PIC X(7) VALUE 'U000820'.
X           03  PIC X(7) VALUE 'U000830'.
X           03  PIC X(7) VALUE 'I000831'.
X           03  PIC X(7) VALUE 'I000832'.
X           03  PIC X(7) VALUE 'I000833'.
X           03  PIC X(7) VALUE 'D000840'.
X           03  PIC X(7) VALUE 'I000842'.
X           03  PIC X(7) VALUE 'I000844'.
X           03  PIC X(7) VALUE 'I000845'.
X           03  PIC X(7) VALUE 'I000846'.
X           03  PIC X(7) VALUE 'I000848'.
X           03  PIC X(7) VALUE 'I000851'.
X           03  PIC X(7) VALUE 'D000860'.
X           03  PIC X(7) VALUE 'U000880'.
X           03  PIC X(7) VALUE 'D000890'.
X           03  PIC X(7) VALUE 'I000895'.
X      *
X           03  PIC X(7) VALUE 'I000901'.
X           03  PIC X(7) VALUE 'I000902'.
X           03  PIC X(7) VALUE 'I000903'.
X           03  PIC X(7) VALUE 'I000904'.
X           03  PIC X(7) VALUE 'U000910'.
X           03  PIC X(7) VALUE 'I000911'.
X           03  PIC X(7) VALUE 'I000912'.
X           03  PIC X(7) VALUE 'I000913'.
X           03  PIC X(7) VALUE 'I000914'.
X           03  PIC X(7) VALUE 'I000915'.
X           03  PIC X(7) VALUE 'I000916'.
X           03  PIC X(7) VALUE 'I000917'.
X           03  PIC X(7) VALUE 'I000918'.
X           03  PIC X(7) VALUE 'I000919'.
X           03  PIC X(7) VALUE 'U000920'.
X           03  PIC X(7) VALUE 'I000921'.
X           03  PIC X(7) VALUE 'D000930'.
X           03  PIC X(7) VALUE 'D000940'.
X           03  PIC X(7) VALUE 'D000950'.
X           03  PIC X(7) VALUE 'I000951'.
X           03  PIC X(7) VALUE 'I000952'.
X           03  PIC X(7) VALUE 'I000953'.
X           03  PIC X(7) VALUE 'I000954'.
X           03  PIC X(7) VALUE 'I000955'.
X           03  PIC X(7) VALUE 'U000960'.
X           03  PIC X(7) VALUE 'I000961'.
X           03  PIC X(7) VALUE 'I000962'.
X           03  PIC X(7) VALUE 'I000963'.
X           03  PIC X(7) VALUE 'I000964'.
X           03  PIC X(7) VALUE 'I000965'.
X           03  PIC X(7) VALUE 'I000966'.
X           03  PIC X(7) VALUE 'I000967'.
X           03  PIC X(7) VALUE 'I000968'.
X           03  PIC X(7) VALUE 'I000969'.
X           03  PIC X(7) VALUE 'U000970'.
X           03  PIC X(7) VALUE 'D000980'.
X           03  PIC X(7) VALUE 'D000990'.
X           03  PIC X(7) VALUE 'I000991'.
X           03  PIC X(7) VALUE 'I000992'.
X           03  PIC X(7) VALUE 'I000993'.
X
X       01  UPDATE-TABLE REDEFINES UPDATE-TABLE-VALUES.
X           03  UPDATE-ENTRY OCCURS 200 TIMES.
X               05  UPDATE-CODE                 PIC X.
X                   88  UPDATE-WRITE            VALUE "I".
X                   88  UPDATE-REWRITE          VALUE "U".
X                   88  UPDATE-DELETE           VALUE "D".
X               05  UPDATE-KEY.
X                   07  FILLER                  PIC 9(2).
X                   07  UPDATE-CHANGE           PIC 9.
X                   07  FILLER                  PIC 9(3).
X
X       77  INDX                                PIC 9(4) COMP-1.
X       77  UPDATE-CHAR                         PIC 9.
X       01  UPDATE-FULL-KEY.
X           03  FILLER                          PIC X(4) VALUE ZEROS.
X           03  UPDATE-SHORT-KEY                PIC X(6).
X
X       PROCEDURE DIVISION.
X       DECLARATIVES.
X       SEQ-1-ERR-HANDLING SECTION.
X           USE AFTER STANDARD ERROR PROCEDURE ON SEQ-1-FILE.
X       SEQ-1-ERR.
X           DISPLAY "*** FILE ERROR #", LINE 23, ERASE EOL, HIGH,
X               SEQ-1-STATUS, HIGH, " ON SEQ1.DAT ***", HIGH.
X           DISPLAY "*** TEST ABORTED ***", HIGH.
X           STOP RUN.
X
X       IDX-1-ERR-HANDLING SECTION.
X           USE AFTER STANDARD ERROR PROCEDURE ON IDX-1-FILE.
X       IDX-1-ERR.
X           DISPLAY "*** FILE ERROR #", LINE 23, ERASE EOL, HIGH,
X               IDX-1-STATUS, HIGH, " ON IDX1.DAT ***", HIGH.
X           DISPLAY "*** TEST ABORTED ***", HIGH.
X           STOP RUN.
X
X       IDX-2-ERR-HANDLING SECTION.
X           USE AFTER STANDARD ERROR PROCEDURE ON IDX-2-FILE.
X       IDX-2-ERR.
X           DISPLAY "*** FILE ERROR #", LINE 23, ERASE EOL, HIGH,
X               IDX-2-STATUS, HIGH, " ON IDX2.DAT ***", HIGH.
X           DISPLAY "*** TEST ABORTED ***", HIGH.
X           STOP RUN.
X
X       END DECLARATIVES.
X
X
X       LEVEL-1 SECTION.
X       MAIN-LOGIC.
X           PERFORM INTRODUCTION.
X           PERFORM SEQ-WRITE-TEST.
X           PERFORM SORT-TEST.
X           PERFORM LOAD-IDX-1-TEST.
X           PERFORM READ-IDX-1-TEST.
X           PERFORM UPDATE-IDX-1-TEST.
X           PERFORM LOAD-IDX-2-TEST.
X           PERFORM UPDATE-IDX-2-TEST.
X           PERFORM END-TEST.
X           PERFORM SUMMARY.
X
X           STOP RUN.
X
X       LEVEL-2 SECTION.
X       SEQ-WRITE-TEST.
X           DISPLAY "Write Sequential File (3,000 100-byte records):",
X                   LINE 3, POSITION 1.
X           OPEN OUTPUT SEQ-1-FILE WITH LOCK.
X           IF SKIP-TEST
X               MOVE 1 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               PERFORM VARYING KEY-VALUE FROM 10 BY 10 
X                               UNTIL KEY-VALUE IS > 30000
X                   MOVE KEY-VALUE TO SEQ-1-KEY, SEQ-1-ALT-KEY-B
X                   MOVE 
X                    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw"
X                                               TO SEQ-1-BODY
X                   PERFORM GENERATE-ALT-KEY
X                   MOVE ALT-KEY-VALUE TO SEQ-1-ALT-KEY-A
X                   WRITE SEQ-1-RECORD
X               END-PERFORM
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE SEQ-1-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(1).
X           DISPLAY ELAPSED-TIME, LINE 3, POSITION 55, " seconds".
X           
X       SORT-TEST.
X           DISPLAY "Sort Sequential File (40-byte key):", 
X                   LINE 5, POSITION 1.
X           IF SKIP-TEST
X               MOVE 2 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               SORT SORT-FILE ON ASCENDING KEY SORT-ALT-KEY
X                   USING SEQ-1-FILE GIVING SEQ-2-FILE
X               PERFORM STOP-TIMER
X           END-IF.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(2).
X           DISPLAY ELAPSED-TIME, LINE 5, POSITION 55, " seconds".
X           
X       LOAD-IDX-1-TEST.
X           DISPLAY "Load Indexed File 1 (10-byte key):",
X                   LINE 7, POSITION 1.
X           OPEN INPUT SEQ-1-FILE WITH LOCK.
X           OPEN OUTPUT IDX-1-FILE WITH LOCK.                            !ACU
X      *    OPEN OUTPUT IDX-1-FILE WITH MASS-UPDATE.                     ACU
X           IF SKIP-TEST
X               MOVE 3 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               READ SEQ-1-FILE RECORD
X               PERFORM UNTIL SEQ-1-STATUS IS NOT = "00"
X                   WRITE IDX-1-RECORD FROM SEQ-1-RECORD
X                   READ SEQ-1-FILE RECORD, AT END CONTINUE END-READ
X               END-PERFORM
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE SEQ-1-FILE, IDX-1-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(3).
X           DISPLAY ELAPSED-TIME, LINE 7, POSITION 55, " seconds".
X           
X       READ-IDX-1-TEST.
X           DISPLAY "Read Indexed File 1 (read and skip 20 times):",
X                   LINE 9, POSITION 1.
X           OPEN INPUT IDX-1-FILE WITH LOCK.
X           IF SKIP-TEST
X               MOVE 4 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               PERFORM READ-IDX-1-PASS 20 TIMES
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE IDX-1-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(4).
X           DISPLAY ELAPSED-TIME, LINE 9, POSITION 55, " seconds".
X
X       READ-IDX-1-PASS.
X            PERFORM VARYING KEY-VALUE FROM 900 BY 1000
X                            UNTIL KEY-VALUE IS > 30000
X               MOVE KEY-VALUE TO IDX-1-KEY
X               START IDX-1-FILE KEY NOT LESS THAN IDX-1-KEY
X               PERFORM 10 TIMES
X                   READ IDX-1-FILE NEXT RECORD
X                        AT END CONTINUE END-READ
X               END-PERFORM
X           END-PERFORM.
X
X       UPDATE-IDX-1-TEST.
X           DISPLAY "Update Indexed File 1 (600 updates):",
X                   LINE 11, POSITION 1.
X           OPEN I-O IDX-1-FILE WITH LOCK.                               !ACU
X      *    OPEN I-O IDX-1-FILE WITH MASS-UPDATE.                        ACU
X           IF SKIP-TEST
X               MOVE 5 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               PERFORM UPDATE-IDX-1-SET VARYING UPDATE-CHAR FROM ZERO
X                                        BY 1 UNTIL UPDATE-CHAR IS > 2
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE IDX-1-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(5).
X           DISPLAY ELAPSED-TIME, LINE 11, POSITION 55, " seconds".
X           
X       UPDATE-IDX-1-SET.
X           PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX IS > 200
X               MOVE UPDATE-CHAR TO UPDATE-CHANGE( INDX )
X               MOVE UPDATE-KEY( INDX ) TO UPDATE-SHORT-KEY
X               MOVE UPDATE-FULL-KEY TO IDX-1-KEY,
X                                       IDX-1-ALT-KEY-B
X               MOVE ZEROS TO IDX-1-BODY
X               PERFORM GENERATE-ALT-KEY
X               MOVE ALT-KEY-VALUE TO IDX-1-ALT-KEY-A
X               EVALUATE UPDATE-CODE( INDX )
X                 WHEN "I"    WRITE IDX-1-RECORD
X                 WHEN "U"    REWRITE IDX-1-RECORD
X                 WHEN "D"    DELETE IDX-1-FILE RECORD
X               END-EVALUATE
X           END-PERFORM.
X
X       LOAD-IDX-2-TEST.
X           DISPLAY "Load Indexed File 2 (10-byte key and 40-byte key):",
X                   LINE 13, POSITION 1.
X           OPEN INPUT SEQ-1-FILE WITH LOCK.
X           OPEN OUTPUT IDX-2-FILE WITH LOCK.                            !ACU
X      *    OPEN OUTPUT IDX-2-FILE WITH MASS-UPDATE.                     ACU
X           IF SKIP-TEST
X               MOVE 6 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               READ SEQ-1-FILE RECORD
X               PERFORM UNTIL SEQ-1-STATUS IS NOT = "00"
X                   WRITE IDX-2-RECORD FROM SEQ-1-RECORD
X                   READ SEQ-1-FILE RECORD, AT END CONTINUE END-READ
X               END-PERFORM
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE SEQ-1-FILE, IDX-2-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(6).
X           DISPLAY ELAPSED-TIME, LINE 13, POSITION 55, " seconds".
X           
X       UPDATE-IDX-2-TEST.
X           DISPLAY "Update Indexed File 2 (600 updates):",
X                   LINE 15, POSITION 1.
X           OPEN I-O IDX-2-FILE WITH LOCK.                               !ACU
X      *    OPEN I-O IDX-2-FILE WITH MASS-UPDATE.                        ACU
X           IF SKIP-TEST
X               MOVE 7 TO TIME-DIFF
X           ELSE
X               PERFORM START-TIMER
X               PERFORM UPDATE-IDX-2-SET VARYING UPDATE-CHAR FROM ZERO
X                                        BY 1 UNTIL UPDATE-CHAR IS > 2
X               PERFORM STOP-TIMER
X           END-IF.
X           CLOSE IDX-2-FILE.
X           ADD TIME-DIFF TO TOTAL-TIME.
X           MOVE TIME-DIFF TO ELAPSED-TIME, TEST-TIME(7).
X           DISPLAY ELAPSED-TIME, LINE 15, POSITION 55, " seconds".
X           
X       UPDATE-IDX-2-SET.
X           PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX IS > 200
X               MOVE UPDATE-CHAR TO UPDATE-CHANGE( INDX )
X               MOVE UPDATE-KEY( INDX ) TO UPDATE-SHORT-KEY
X               MOVE UPDATE-FULL-KEY TO IDX-2-KEY,
X                                       IDX-2-ALT-KEY-B
X               MOVE ZEROS TO IDX-2-BODY
X               PERFORM GENERATE-ALT-KEY
X               MOVE ALT-KEY-VALUE TO IDX-2-ALT-KEY-A
X               EVALUATE UPDATE-CODE( INDX )
X                 WHEN "I"    WRITE IDX-2-RECORD
X                 WHEN "U"    REWRITE IDX-2-RECORD
X                 WHEN "D"    DELETE IDX-2-FILE RECORD
X               END-EVALUATE
X           END-PERFORM.
X
X       END-TEST.
X           DISPLAY "--------" LINE 16, POSITION 55.
X           DISPLAY "Total Time:" LINE 17, POSITION 1.
X           MOVE TOTAL-TIME TO ELAPSED-TIME.
X           DISPLAY ELAPSED-TIME, LINE 17, POSITION 55.
X           DISPLAY "Test Complete, press <enter>: ", LINE 20.
X           ACCEPT SEQ-1-STATUS, POSITION 0, TAB.
X
X       SUMMARY.
X           DISPLAY SPACE, LINE 2, ERASE EOS.
X           DISPLAY "--- 16-Mhz 80386 MS-DOS ---", LINE 3, POSITION 45.
X           DISPLAY "Your Times", LINE 5, POSITION 26.
X           DISPLAY "ACUCOBOL-85 v1.3B   RM/COBOL-85 v2.01", LINE 5,
X                   POSITION 41.
X           DISPLAY "Write Sequential:", LINE 7.
X           DISPLAY "Sort Sequential:", LINE 8.
X           DISPLAY "Load Index 1:", LINE 9.
X           DISPLAY "Read Index 1:", LINE 10.
X           DISPLAY "Update Index 1:", LINE 11.
X           DISPLAY "Load Index 2:", LINE 12.
X           DISPLAY "Update Index 2:", LINE 13.
X           DISPLAY "Total:", LINE 15.
X
X           PERFORM VARYING INDX FROM 1 BY 1 UNTIL INDX IS > 7
X               ADD INDX, 6 GIVING LINE-NO
X               DISPLAY TEST-TIME(INDX), LINE LINE-NO, POSITION 25
X               DISPLAY ACU-TIME(INDX), LINE LINE-NO, POSITION 45
X               DISPLAY RM-TIME(INDX), LINE LINE-NO, POSITION 65
X           END-PERFORM.
X          
X           MOVE TOTAL-TIME TO ELAPSED-TIME.
X           DISPLAY ELAPSED-TIME, LINE 15, POSITION 25.
X           DISPLAY ACU-TIME(8), LINE 15, POSITION 45.
X           DISPLAY RM-TIME(8), LINE 15, POSITION 65.
X
X           DISPLAY "Press <enter> to exit program: ", LINE 18.
X           ACCEPT SEQ-1-STATUS, POSITION 0, TAB, NO BEEP.
X
X       LEVEL-99 SECTION.
X       INTRODUCTION.
X           DISPLAY " FILE I/O BENCHMARK ", ERASE, LINE 1,
X                   POSITION 30, REVERSE.
X           DISPLAY "This program performs various file I/O", 
X                   LINE 5, POSITION 20.
X           DISPLAY "timing tests.  It constructs a Sequential",
X                   LINE 6, POSITION 20.
X           DISPLAY "file containing semi-random keys and",
X                   LINE 7, POSITION 20.
X           DISPLAY "then sorts this file.  It then uses it",
X                   LINE 8, POSITION 20.
X           DISPLAY "to create two Indexed files, one with",
X                   LINE 9, POSITION 20.
X           DISPLAY "one 10-byte key and a second with a",
X                   LINE 10, POSITION 20.
X           DISPLAY "10-byte key and a 40-byte key.  Finally",
X                   LINE 11, POSITION 20.
X           DISPLAY "performs various updates on these files.",
X                   LINE 12, POSITION 20.
X           DISPLAY "Times for each portion of the test are shown.",
X                   LINE 13, POSITION 20.
X
X           DISPLAY "Press <enter> to continue: ", LINE 15, POSITION 20.
X           ACCEPT SEQ-1-STATUS, POSITION 0, NO BEEP, TAB.
X
X           DISPLAY SPACE, LINE 2, ERASE EOS.
X
X       GENERATE-ALT-KEY.
X           MULTIPLY ALT-KEY-VALUE-B BY ALT-KEY-VALUE-C
X                                    GIVING ALT-KEY-VALUE-A.
X           MOVE ALT-CHAR(1) TO ALT-CHAR(29).
X           MOVE ALT-CHAR(2) TO ALT-CHAR(25).
X           MOVE ALT-CHAR(3) TO ALT-CHAR(20).
X           MOVE ALT-CHAR(4) TO ALT-CHAR(22).
X           MOVE ALT-CHAR(5) TO ALT-CHAR(17).
X           MOVE ALT-CHAR(6) TO ALT-CHAR(30).
X           MOVE ALT-CHAR(7) TO ALT-CHAR(23).
X           MOVE ALT-CHAR(8) TO ALT-CHAR(16).
X
X       START-TIMER.
X           ACCEPT SYNC-TIME-1 FROM TIME.
X           PERFORM WITH TEST AFTER UNTIL SYNC-TIME-1 NOT = SYNC-TIME-2
X               ACCEPT SYNC-TIME-2 FROM TIME
X           END-PERFORM.
X           ACCEPT BEGIN-TIME FROM TIME.
X
X       STOP-TIMER.
X           ACCEPT END-TIME FROM TIME.
X           COMPUTE TIME-DIFF ROUNDED = 
X                   ( END-HOURS - BEGIN-HOURS ) * 3600
X                   + ( END-MINUTES - BEGIN-MINUTES ) * 60 
X                   + ( END-SECONDS - BEGIN-SECONDS ) 
X                   + ( END-HUNDRETHS - BEGIN-HUNDRETHS ) / 100.
X
SHAR_EOF
chmod 0666 acubench.src ||
echo 'restore of acubench.src failed'
Wc_c="`wc -c < 'acubench.src'`"
test 29632 -eq "$Wc_c" ||
	echo 'acubench.src: original size 29632, current size' "$Wc_c"
fi
exit 0
-- 
My .signature is awaiting apropriate display technology