home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-05-03 | 235.6 KB | 7,425 lines |
- ::::::::::
- piwga831.inc
- ::::::::::
- --
- -- PIWG TAPE_8_31_86, Part A
- --
- A000001.ADA
- A000002.ADA
- A000011.ADA
- A000012.ADA
- A000013.ADA
- A000014.ADA
- A000015.ADA
- A000016.ADA
- A000021.ADA
- A000022.ADA
- A000031.ADA
- A000032.ADA
- A000033.ADA
- A000041.ADA
- A000042.ADA
- A000043.ADA
- A000044.ADA
- A000049.ADA
- A000051.ADA
- A000052.ADA
- A000053.ADA
- A000054.ADA
- A000055.ADA
- A000091.ADA
- A000092.ADA
- A000093.ADA
- A000094.ADA
- A000098.ADA
- A000099.ADA
- A000100.ADA
- A000101.ADA
- A000102.ADA
- A000103.ADA
- A000104.ADA
- A000105.ADA
- A000106.ADA
- A000107.ADA
- ACOMPILE.CLI
- ACOMPILE.COM
- ACOMPILE.LR1
- C000001.ADA
- C000002.ADA
- C000003.ADA
- COMPILE.CLI
- COMPILE.COM
- COMPILE.L78
- COMPILE.L86
- COPY.COM
- COPY.R10
- ::::::::::
- A000001.ADA
- ::::::::::
- with TEXT_IO ; use TEXT_IO ;
-
- package DURATION_IO is new FIXED_IO ( DURATION ) ;
- ::::::::::
- A000002.ADA
- ::::::::::
- ::::::::::
- A000011.ADA
- ::::::::::
-
- -- This is a universal Ada function to get CPU time in seconds
- -- of type DURATION on non time_sharring systems where a
- -- tailored CPU_TIME_CLOCK is not reasonable
- -- Do not cross a midnight boundry
-
- with CALENDAR ; use CALENDAR ;
-
- function CPU_TIME_CLOCK return DURATION is
-
- NOW : TIME := CLOCK ;
- begin
-
- return SECONDS ( NOW ) ;
-
- end CPU_TIME_CLOCK ;
- ::::::::::
- A000012.ADA
- ::::::::::
-
- -- This is a VAX Ada function to get CPU time in seconds of type DURATION
-
- with SYSTEM ; use SYSTEM ;
- with CONDITION_HANDLING ; use CONDITION_HANDLING ;
- with STARLET ; use STARLET ;
-
- function CPU_TIME_CLOCK return DURATION is
-
- CPUTIM : INTEGER ;
- pragma VOLATILE ( CPUTIM ) ;
- JPI_STATUS : COND_VALUE_TYPE ;
- JPI_ITEM_LIST : constant ITEM_LIST_TYPE :=
- ( ( 4 , JPI_CPUTIM , CPUTIM'ADDRESS , ADDRESS_ZERO ) ,
- ( 0 , 0 , ADDRESS_ZERO , ADDRESS_ZERO ) ) ;
-
- CPU_TIME_AS_DURATION : DURATION ;
- begin
-
- -- Call GETJPI to set CPUTIM to total accumulated CPU time
- -- (in 10-millisecond tics)
-
- GETJPI ( STATUS => JPI_STATUS , ITMLST => JPI_ITEM_LIST ) ;
- CPU_TIME_AS_DURATION := DURATION ( LONG_FLOAT ( CPUTIM ) / 100.0 ) ;
- return CPU_TIME_AS_DURATION ;
-
- end CPU_TIME_CLOCK ;
- ::::::::::
- A000013.ADA
- ::::::::::
- -- This is the Data General MV series computers function
- -- to get CPU time in seconds of type DURATION .
-
- with SYS_CALLS ; use SYS_CALLS ;
- function CPU_TIME_CLOCK return DURATION is
- type MEMORY_DESCRIPTOR is
- record
- UNSHARED_PAGES_IN_PROGRAM_FILE : INTEGER ;
- UNSHARED_PAGES_BEING_USED : INTEGER ;
- SHARED_PAGES_IN_PROGRAM_FILE : INTEGER ;
- FIRST_SHARED_MEMORY_PAGE : INTEGER ;
- STARTING_PAGE : INTEGER ;
- PROGRAMS_FIRST_SHARED_MEMORY_PAGE : INTEGER ;
- end record ;
- type MEMORY_DESCRIPTORS is array ( 1 .. 7 ) of MEMORY_DESCRIPTOR ;
- type PROCESS_STATISTICS is
- record
- FATHER_PID : SHORT_INTEGER ;
- SONS1 : SHORT_INTEGER ;
- SONS2 : SHORT_INTEGER ;
- SONS3 : SHORT_INTEGER ;
- SONS4 : SHORT_INTEGER ;
- SONS5 : SHORT_INTEGER ;
- SONS6 : SHORT_INTEGER ;
- SONS7 : SHORT_INTEGER ;
- SONS8 : SHORT_INTEGER ;
- SONS9 : SHORT_INTEGER ;
- SONS10 : SHORT_INTEGER ;
- SONS11 : SHORT_INTEGER ;
- SONS12 : SHORT_INTEGER ;
- SONS13 : SHORT_INTEGER ;
- SONS14 : SHORT_INTEGER ;
- SONS15 : SHORT_INTEGER ;
- SONS16 : SHORT_INTEGER ;
- TASKS_BLOCKED_ON_IREC : SHORT_INTEGER ;
- TASKS_BLOCKED_AWAITING_STACKS : SHORT_INTEGER ;
- PROCESS_STATUS_WORD : SHORT_INTEGER ;
- PRIORITY_QUEUE_FACTOR : SHORT_INTEGER ;
- FLAG_WORD1 : SHORT_INTEGER ;
- FLAG_WORD2 : SHORT_INTEGER ;
- FLAG_WORD3 : SHORT_INTEGER ;
- FLAG_WORD4 : SHORT_INTEGER ;
- RESERVED : SHORT_INTEGER ;
- PRIORITY : SHORT_INTEGER ;
- WORKING_SET_SIZE : SHORT_INTEGER ;
- PRIVILEGE_BITS : SHORT_INTEGER ;
- TIME_SLICE_EXPONENT : SHORT_INTEGER ;
- PROCESS_ID : SHORT_INTEGER ;
- ELAPSED_TIME : INTEGER ;
- CPU_TIME : INTEGER ;
- IO_USAGE : INTEGER ;
- PAGE_SECONDS : INTEGER ;
- REMAINING_SUBSLICES : SHORT_INTEGER ;
- MAX_LOGICAL_PAGES : SHORT_INTEGER ;
- MAX_WORKING_SET_SIZE : SHORT_INTEGER ;
- MIN_WORKING_SET_SIZE : SHORT_INTEGER ;
- PAGE_FAULT_COUNT : SHORT_INTEGER ;
- MEMORY : MEMORY_DESCRIPTORS ;
- BLOCKS_READ_OR_WRITTEN : INTEGER ;
- FAULTS_NOT_REQUIRING_DISK : INTEGER ;
- end record ;
- PROCESS_INFO : PROCESS_STATISTICS ;
- ACC0 : INTEGER := - 1 ;
- ACCUM1 : INTEGER := 0 ;
- ERROR_INFO : ERROR_CODE ;
- PT_PSTAT : INTEGER ;
- begin
- PT_PSTAT := INTEGER ( PROCESS_INFO'ADDRESS ) ;
-
- -- This is the call to obtain process statistics
-
- SYS ( PSTAT , ACC0 , ACCUM1 , PT_PSTAT , ERROR_INFO ) ;
- return DURATION ( FLOAT( PROCESS_INFO.CPU_TIME ) / 1000.0) ;
- end CPU_TIME_CLOCK ;
- ::::::::::
- A000014.ADA
- ::::::::::
- --
- -- this function returns the user time on a Unix system
- -- by interfacing to the c library to access the times
- -- routine
- -- (This version tested on Gould 9780)
- --
- function CPU_TIME_CLOCK return DURATION is
- type BUF is array(1..4) of INTEGER;
- CPU_TIME_AS_DURATION : DURATION;
- TIME_BUF : BUF;
- procedure TIMES (TIME_BUF: out BUF);
- pragma INTERFACE (C,TIMES);
- begin
- --
- -- times returns the user time and system time in units of
- -- 1/60 seconds
- --
- TIMES(TIME_BUF);
- CPU_TIME_AS_DURATION := DURATION(DURATION(TIME_BUF(1))/60.0);
- -- CPU_TIME_AS_DURATION := DURATION(DURATION(TIME_BUF(1) + TIME_BUF(2))/60.0);
- return CPU_TIME_AS_DURATION;
- end CPU_TIME_CLOCK;
- ::::::::::
- A000015.ADA
- ::::::::::
-
- -- This is a R1000 function to get CPU time in seconds of type DURATION
-
- with SYSTEM_UTILITIES ;
- function CPU_TIME_CLOCK return DURATION is
- begin
- return SYSTEM_UTILITIES.CPU ;
- end CPU_TIME_CLOCK ;
- ::::::::::
- A000016.ADA
- ::::::::::
- -- This is a UNIX VAX Ada function to get CPU time in seconds of type DURATION
- -- ( it uses pragma INTERFACE to the C language )
-
- with SYSTEM ; use SYSTEM ;
-
- function CPU_Time_Clock return duration is
-
- type Break_Time_Record is record
- Seconds : integer ;
- Min : integer ;
- Hour : integer ;
- Day : integer ;
- Mon : integer ;
- Year : integer ;
- wday : integer ;
- yday : integer ;
- idst : integer ;
- end record ;
-
- type Time_Record is record
- Seconds : integer ;
- Microseconds : integer ;
- end record;
-
- type Zone_Record is record
- Seconds : integer ;
- Microseconds : integer ;
- end record ;
-
- type Time_Pointer_Type is access Time_Record ;
- type Zone_Pointer_Type is access Zone_Record ;
- type Break_Time_Record_Pointer is access Break_Time_Record ;
-
- Break_Time_Pointer : Break_Time_Record_Pointer := new Break_Time_Record ;
- Time_Pointer : Time_Pointer_Type := new Time_Record ;
- Zone_Pointer : Zone_Pointer_Type := new Zone_Record ;
- Return_Time : integer ;
- Time_As_Duration : duration ;
-
- -- This procedure gets the time and zone of day from the ULTRIX operating
- -- system. The time is returned in seconds and microseconds.
-
- procedure gettimeofday ( Time_Pointer : Time_Pointer_Type ;
- Zone_Pointer : Zone_Pointer_Type ) ;
-
- pragma interface(c,gettimeofday) ;
-
- -- This procedure takes as input the time returned by gettimeofday and
- -- breaks up the time into a structure as described in Break_Time_Record.
-
- function localtime (Time : Time_Pointer_Type )
- return Break_Time_Record_Pointer ;
-
- pragma interface (c, localtime) ;
-
- begin
-
- gettimeofday (Time_Pointer, Zone_Pointer ) ;
- Break_Time_Pointer := localtime ( Time_Pointer ) ;
- Return_Time := Break_Time_Pointer.Hour * 3600 +
- Break_Time_Pointer.Min * 60 +
- Break_Time_Pointer.Seconds ;
- Time_As_Duration := duration ( float(Return_Time) +
- ( float(Time_Pointer.Seconds) / 1000000.0 ) ) ;
-
- return Time_As_Duration ;
-
- end CPU_Time_Clock ;
- ::::::::::
- A000021.ADA
- ::::::::::
- package REMOTE_GLOBAL is -- for explicit control of optimization
-
- A_ONE : INTEGER; -- a constant 1 that can not be optimized away
- -- A_ONE is intentionally visible. DO NOT CHANGE IT
- --
- GLOBAL : INTEGER := 1 ; -- global object can not be optimized away
- -- GLOBAL is changed by measurement programs
- -- the initialization to 1 is used in the body
- -- but could be changed by elaboration order
- --
- procedure REMOTE; -- do to calls to this procedure, no compiler
- -- can optimize away the computation an GLOBAL
- --
- procedure CHECK_TIME ( TEST_DURATION : in DURATION ) ;
- -- Just print message if TEST_DURATION less then
- -- 100 * SYSTEM.TICK or DURATION'SMALL
- --
- end REMOTE_GLOBAL;
- ::::::::::
- A000022.ADA
- ::::::::::
- with SYSTEM, TEXT_IO ;
-
- package body REMOTE_GLOBAL is -- must be compiled last
- -- for explicit control of optimization
- LOCAL : INTEGER;
-
- procedure REMOTE is -- this is an optimization control procedure
- begin
- GLOBAL := GLOBAL + LOCAL; -- be sure procedure is not optimized away
- exception
- when NUMERIC_ERROR =>
- REMOTE ; -- can not happen if test is working ( prevents inlining )
- end REMOTE;
-
- procedure CHECK_TIME ( TEST_DURATION : in DURATION ) is
- begin
- if TEST_DURATION < 100 * DURATION'SMALL or
- TEST_DURATION < 100 * SYSTEM.TICK then
- TEXT_IO.PUT_LINE ( " ***** TEST_DURATION not large compared to "
- & "DURATION'SMALL or SYSTEM.TICK " ) ;
- end if ;
- end CHECK_TIME ;
-
- begin
-
- A_ONE := 1 ; -- must not be changed by measurement programs
- LOCAL := GLOBAL - A_ONE; -- really a zero but compiler doesn't know
-
- end REMOTE_GLOBAL;
- ::::::::::
- A000031.ADA
- ::::::::::
- -- This is the ITERATION_COUNT control package for feature measurements
- -- The set of procedures provide the automatic stabilizing of the
- -- timing measurement. The measurement CPU time must be greater than:
- -- 1.0 second, DURATION'SMALL * 100 , SYSTEM.TICK * 100
- --
- -- Note: If there is no control loop, the START_CONTROL and STOP_CONTROL
- -- do not need to be called.
-
- package ITERATION is -- A000031.ADA
-
- procedure START_CONTROL ;
-
- procedure STOP_CONTROL ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) ;
-
- procedure START_TEST ;
-
- procedure STOP_TEST ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) ;
-
- procedure FEATURE_TIMES ( CPU_TIME : out DURATION ;
- WALL_TIME : out DURATION ) ;
-
- procedure INITIALIZE ( ITERATION_COUNT : out INTEGER ) ;
-
- procedure TEST_STABLE ( ITERATION_COUNT : in out INTEGER ;
- STABLE : out BOOLEAN ) ;
- end ITERATION ;
- ::::::::::
- A000032.ADA
- ::::::::::
- -- Iteration control package body
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with SYSTEM ; -- used to get value of TICK
- with TEXT_IO ; -- only for diagnostics
-
- package body ITERATION is -- A000032.ADA
-
- --
- -- CPU time variables
- --
- CONTROL_TIME_INITIAL : DURATION ; -- sampled from CPU_TIME_CLOCK at beginning
- CONTROL_TIME_FINAL : DURATION ; -- sampled from CPU_TIME_CLOCK at end
- CONTROL_DURATION : DURATION ; -- (FINAL-INITIAL) the measured time in seconds
- TEST_TIME_INITIAL : DURATION ; -- ditto for TEST
- TEST_TIME_FINAL : DURATION ;
- TEST_DURATION : DURATION ;
- --
- -- WALL time variables
- --
- WALL_CONTROL_TIME_INITIAL : DURATION ; -- sampled from CLOCK at beginning
- WALL_CONTROL_TIME_FINAL : DURATION ; -- sampled from CLOCK at end
- WALL_CONTROL_DURATION : DURATION ; -- (FINAL-INITIAL) measured time in seconds
- WALL_TEST_TIME_INITIAL : DURATION ; -- ditto for TEST
- WALL_TEST_TIME_FINAL : DURATION ;
- WALL_TEST_DURATION : DURATION ;
- --
- MINIMUM_TIME : DURATION := 1.0 ; -- required minimum value of test time
- -- MINIMUM_TIME : DURATION := 10.0 ; -- suggested minimum value for fast machines
- TEMP_TIME : FLOAT ; -- for scaling to microseconds
- ITERATION_COUNT : INTEGER ; -- change to make timing stable
- CHECK : INTEGER ; -- saved from STOP_TEST call for scaling
-
- procedure START_CONTROL is
- begin
- CONTROL_TIME_INITIAL := CPU_TIME_CLOCK ;
- WALL_CONTROL_TIME_INITIAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- end START_CONTROL ;
-
- procedure STOP_CONTROL ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) is
- begin
- CONTROL_TIME_FINAL := CPU_TIME_CLOCK ;
- CONTROL_DURATION := CONTROL_TIME_FINAL - CONTROL_TIME_INITIAL ;
- WALL_CONTROL_TIME_FINAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- WALL_CONTROL_DURATION := WALL_CONTROL_TIME_FINAL -
- WALL_CONTROL_TIME_INITIAL ;
- --
- if CHECK /= GLOBAL then
- TEXT_IO.PUT_LINE ( " Fix control loop before making measurements." ) ;
- TEXT_IO.PUT_LINE ( INTEGER'IMAGE ( GLOBAL ) & " = GLOBAL " ) ;
- raise PROGRAM_ERROR ;
- end if ;
- end STOP_CONTROL ;
-
- procedure START_TEST is
- begin
- TEST_TIME_INITIAL := CPU_TIME_CLOCK ;
- WALL_TEST_TIME_INITIAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- end START_TEST ;
-
- procedure STOP_TEST ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) is
- begin
- TEST_TIME_FINAL := CPU_TIME_CLOCK ;
- TEST_DURATION := TEST_TIME_FINAL - TEST_TIME_INITIAL ;
- WALL_TEST_TIME_FINAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- WALL_TEST_DURATION := WALL_TEST_TIME_FINAL - WALL_TEST_TIME_INITIAL ;
- --
- ITERATION.CHECK := CHECK ;
- if CHECK /= GLOBAL then
- TEXT_IO.PUT_LINE ( " Fix test loop before making measurements." ) ;
- TEXT_IO.PUT_LINE ( INTEGER'IMAGE ( GLOBAL ) & " = GLOBAL " ) ;
- raise PROGRAM_ERROR ;
- end if ;
- end STOP_TEST ;
-
- procedure FEATURE_TIMES ( CPU_TIME : out DURATION ;
- WALL_TIME : out DURATION ) is
- begin
- --
- -- compute scaled results
- --
- begin
- -- choose 1st and 3rd to uncomment, 2nd and 4th to comment if overflow
- -- TEMP_TIME := FLOAT ( TEST_DURATION - CONTROL_DURATION ) ;
- TEMP_TIME := FLOAT ( (TEST_DURATION-CONTROL_DURATION)*1000 ) ;
- -- TEMP_TIME := (1_000_000.0 * TEMP_TIME) /
- TEMP_TIME := (1_000.0 * TEMP_TIME) /
- ( FLOAT ( ITERATION_COUNT ) * FLOAT (CHECK) );
- if TEMP_TIME < 0.0 then
- CPU_TIME := 0.0 ;
- else
- CPU_TIME := DURATION ( TEMP_TIME ) ;
- end if ;
- exception
- when others => -- bail out if trouble in conversion
- CPU_TIME := 0.0 ;
- end ;
- --
- begin
- -- choose 1st and 3rd to uncomment, 2nd and 4th to comment if overflow
- -- TEMP_TIME := FLOAT ( WALL_TEST_DURATION - WALL_CONTROL_DURATION ) ;
- TEMP_TIME := FLOAT ( (WALL_TEST_DURATION-WALL_CONTROL_DURATION)*1000 ) ;
- -- TEMP_TIME := (1_000_000.0 * TEMP_TIME) /
- TEMP_TIME := (1_000.0 * TEMP_TIME) /
- ( FLOAT ( ITERATION_COUNT ) * FLOAT (CHECK) );
- if TEMP_TIME < 0.0 then
- WALL_TIME := 0.0 ;
- else
- WALL_TIME := DURATION ( TEMP_TIME ) ;
- end if ;
- exception
- when others =>
- WALL_TIME := 0.0 ;
- end ;
-
- end FEATURE_TIMES ;
-
-
- procedure INITIALIZE ( ITERATION_COUNT : out INTEGER ) is
- begin
- ITERATION_COUNT := 1 ;
- ITERATION.ITERATION_COUNT := 1 ;
- end INITIALIZE ;
-
- procedure TEST_STABLE ( ITERATION_COUNT : in out INTEGER ;
- STABLE : out BOOLEAN ) is
- begin
- if TEST_DURATION > MINIMUM_TIME then
- if TEST_DURATION < CONTROL_DURATION and ITERATION_COUNT < 1024 then
- STABLE := FALSE ;
- else
- STABLE := TRUE ;
- end if ;
- elsif ITERATION_COUNT >= 16384 then
- TEXT_IO.PUT_LINE ( "***** INCOMPLETE MEASUREMENT *****" ) ;
- STABLE := TRUE ;
- else
- ITERATION_COUNT := ITERATION_COUNT + ITERATION_COUNT ;
- ITERATION.ITERATION_COUNT := ITERATION_COUNT ;
- STABLE := FALSE ;
- end if;
- end TEST_STABLE ;
-
-
- --
- begin
-
- if SYSTEM.TICK * 100 > MINIMUM_TIME then
- MINIMUM_TIME := SYSTEM.TICK * 100 ;
- end if;
-
- if DURATION'SMALL * 100 > MINIMUM_TIME then
- MINIMUM_TIME := DURATION'SMALL * 100 ;
- end if;
-
- -- MINIMUM_TIME is now the larger of 1.0 second, (10.0 fast machines)
- -- 100*SYSTEM.TICK,
- -- 100*DURATION'SMALL
-
- CONTROL_DURATION := 0.0 ;
- WALL_CONTROL_DURATION := 0.0 ;
-
- end ITERATION ;
- ::::::::::
- A000033.ADA
- ::::::::::
- -- Iteration control package body ( for test development )
- -- This version is instrumented and may interefere with some
- -- types of tests
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with SYSTEM ; -- used to get value of TICK
- with TEXT_IO ; -- only for diagnostics
- with DURATION_IO ;
-
- package body ITERATION is -- A000032.ADA
-
- --
- -- CPU time variables
- --
- CONTROL_TIME_INITIAL : DURATION ; -- sampled from CPU_TIME_CLOCK at beginning
- CONTROL_TIME_FINAL : DURATION ; -- sampled from CPU_TIME_CLOCK at end
- CONTROL_DURATION : DURATION ; -- (FINAL-INITIAL) the measured time in seconds
- TEST_TIME_INITIAL : DURATION ; -- ditto for TEST
- TEST_TIME_FINAL : DURATION ;
- TEST_DURATION : DURATION ;
- --
- -- WALL time variables
- --
- WALL_CONTROL_TIME_INITIAL : DURATION ; -- sampled from CLOCK at beginning
- WALL_CONTROL_TIME_FINAL : DURATION ; -- sampled from CLOCK at end
- WALL_CONTROL_DURATION : DURATION ; -- (FINAL-INITIAL) measured time in seconds
- WALL_TEST_TIME_INITIAL : DURATION ; -- ditto for TEST
- WALL_TEST_TIME_FINAL : DURATION ;
- WALL_TEST_DURATION : DURATION ;
- --
- MINIMUM_TIME : DURATION := 1.0 ; -- required minimum value of test time
- TEMP_TIME : FLOAT ; -- for scaling to microseconds
- ITERATION_COUNT : INTEGER ; -- change to make timing stable
- CHECK : INTEGER ; -- saved from STOP_TEST call for scaling
-
- procedure START_CONTROL is
- begin
- CONTROL_TIME_INITIAL := CPU_TIME_CLOCK ;
- WALL_CONTROL_TIME_INITIAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- end START_CONTROL ;
-
- procedure STOP_CONTROL ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) is
- begin
- CONTROL_TIME_FINAL := CPU_TIME_CLOCK ;
- CONTROL_DURATION := CONTROL_TIME_FINAL - CONTROL_TIME_INITIAL ;
- WALL_CONTROL_TIME_FINAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- WALL_CONTROL_DURATION := WALL_CONTROL_TIME_FINAL -
- WALL_CONTROL_TIME_INITIAL ;
- --
- if CHECK /= GLOBAL then
- TEXT_IO.PUT_LINE ( " Fix control loop before making measurements." ) ;
- TEXT_IO.PUT_LINE ( INTEGER'IMAGE ( GLOBAL ) & " = GLOBAL " ) ;
- raise PROGRAM_ERROR ;
- end if ;
- TEXT_IO.PUT_LINE ( "Iteration " & INTEGER'IMAGE ( ITERATION_COUNT ) ) ;
- DURATION_IO.PUT ( CONTROL_TIME_INITIAL );
- DURATION_IO.PUT ( CONTROL_TIME_FINAL );
- DURATION_IO.PUT ( CONTROL_TIME_DURATION );
- TEXT_IO.NEW_LINE ;
- end STOP_CONTROL ;
-
- procedure START_TEST is
- begin
- TEST_TIME_INITIAL := CPU_TIME_CLOCK ;
- WALL_TEST_TIME_INITIAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- end START_TEST ;
-
- procedure STOP_TEST ( GLOBAL : INTEGER ;
- CHECK : INTEGER ) is
- begin
- TEST_TIME_FINAL := CPU_TIME_CLOCK ;
- TEST_DURATION := TEST_TIME_FINAL - TEST_TIME_INITIAL ;
- WALL_TEST_TIME_FINAL := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- WALL_TEST_DURATION := WALL_TEST_TIME_FINAL - WALL_TEST_TIME_INITIAL ;
- --
- ITERATION.CHECK := CHECK ;
- if CHECK /= GLOBAL then
- TEXT_IO.PUT_LINE ( " Fix test loop before making measurements." ) ;
- TEXT_IO.PUT_LINE ( INTEGER'IMAGE ( GLOBAL ) & " = GLOBAL " ) ;
- raise PROGRAM_ERROR ;
- end if ;
- end STOP_TEST ;
-
- procedure FEATURE_TIMES ( CPU_TIME : out DURATION ;
- WALL_TIME : out DURATION ) is
- begin
- --
- -- compute scaled results
- --
- begin
- TEMP_TIME := FLOAT ( TEST_DURATION - CONTROL_DURATION ) ;
- TEMP_TIME := (1_000_000.0 * TEMP_TIME) /
- ( FLOAT ( ITERATION_COUNT ) * FLOAT (CHECK) );
- CPU_TIME := DURATION ( TEMP_TIME ) ;
- exception
- when others => -- bail out if trouble in conversion
- CPU_TIME := 0.0 ;
- end ;
- --
- begin
- TEMP_TIME := FLOAT ( WALL_TEST_DURATION - WALL_CONTROL_DURATION ) ;
- TEMP_TIME := (1_000_000.0 * TEMP_TIME) /
- ( FLOAT ( ITERATION_COUNT ) * FLOAT (CHECK) );
- WALL_TIME := DURATION ( TEMP_TIME ) ;
- exception
- when others =>
- WALL_TIME := 0.0 ;
- end ;
-
- end FEATURE_TIMES ;
-
-
- procedure INITIALIZE ( ITERATION_COUNT : out INTEGER ) is
- begin
- ITERATION_COUNT := 1 ;
- ITERATION.ITERATION_COUNT := 1 ;
- end INITIALIZE ;
-
- procedure TEST_STABLE ( ITERATION_COUNT : in out INTEGER ;
- STABLE : out BOOLEAN ) is
- begin
- if TEST_DURATION > MINIMUM_TIME then
- STABLE := TRUE ;
- elsif ITERATION_COUNT >= 16384 then
- TEXT_IO.PUT_LINE ( "***** INCOMPLETE MEASUREMENT *****" ) ;
- STABLE := TRUE ;
- else
- ITERATION_COUNT := ITERATION_COUNT + ITERATION_COUNT ;
- ITERATION.ITERATION_COUNT := ITERATION_COUNT ;
- STABLE := FALSE ;
- END IF;
- end TEST_STABLE ;
-
-
- --
- begin
-
- if SYSTEM.TICK * 100 > MINIMUM_TIME then
- MINIMUM_TIME := SYSTEM.TICK * 100 ;
- end if;
-
- if DURATION'SMALL * 100 > MINIMUM_TIME then
- MINIMUM_TIME := DURATION'SMALL * 100 ;
- end if;
-
- -- MINIMUM_TIME is now the larger of 1.0 second,
- -- 100*SYSTEM.TICK,
- -- 100*DURATION'SMALL
-
- CONTROL_DURATION := 0.0 ;
- WALL_CONTROL_DURATION := 0.0 ;
-
- end ITERATION ;
- ::::::::::
- A000041.ADA
- ::::::::::
- -- This is the universal specification for collecting output
- -- Various bodies supplied on the distribution tape include :
- -- A000042.ADA for screen or printed output
- -- A000043.ADA for saving results on disk
- -- A000044.ADA for saving result in memory ( No TEXT_IO )
- --
- -- CPU_DELTA and WALL_DELTA come from the package ITERATION.
- -- These values are the time for one feature, in microseconds, of type
- -- duration. Thus the limit is 86,400 microseconds.
-
- package PIWG_IO is -- A000041.ADA
-
- SAVE_CPU_TIME : DURATION := 0.0 ; -- find this location in memory if using
- SAVE_WALL_TIME : DURATION := 0.0 ; -- A000044.ADA as body.
-
- procedure PIWG_OUTPUT ( TESTNAME : in STRING ; -- only 12 characters saved
- CLASSNAME : in STRING ; -- only 12 characters saved
- CPU_DELTA : in DURATION ; -- scaled microseconds
- WALL_DELTA : in DURATION ; -- scaled microseconds
- NUM_OF_ITERATIONS : in INTEGER ;
- TEST_DESC_1 : in STRING ; -- only 80 characters saved
- TEST_DESC_2 : in STRING ; -- only 80 characters saved
- TEST_DESC_3 : in STRING ) ; -- ditto
-
- -- Note that subtypes are not used because the calling programs would all
- -- have to supply exactly the correct length strings for all parameters.
-
- end PIWG_IO ;
- ::::::::::
- A000042.ADA
- ::::::::::
- -- This is one of a number of optional PIWG_IO bodies.
- -- This body is for systems that have TEXT_IO and want either
- -- screen or printed output.
-
- with TEXT_IO ; use TEXT_IO ;
- with DURATION_IO ; -- A000001.ADA or A000002.ADA
-
- package body PIWG_IO is -- A000042.ADA
-
- procedure PIWG_OUTPUT ( TESTNAME : in STRING ;
- CLASSNAME : in STRING ;
- CPU_DELTA : in DURATION ;
- WALL_DELTA : in DURATION ;
- NUM_OF_ITERATIONS : in INTEGER ;
- TEST_DESC_1 : in STRING ;
- TEST_DESC_2 : in STRING ;
- TEST_DESC_3 : in STRING ) is
- begin
- NEW_LINE ;
- PUT ( "Test Name: " ) ;
- PUT ( TESTNAME ) ;
- PUT ( " Class Name: " ) ;
- PUT_LINE ( CLASSNAME ) ;
-
- PUT ( "CPU Time: " ) ;
- DURATION_IO.PUT ( CPU_DELTA , 6 , 1 ) ;
- PUT_LINE ( " microseconds " ) ;
-
- PUT ( "Wall Time: " ) ;
- DURATION_IO.PUT ( WALL_DELTA , 6 , 1 ) ;
- PUT ( " microseconds. Iteration Count: " ) ;
- PUT_LINE ( INTEGER'IMAGE( NUM_OF_ITERATIONS )) ;
-
- PUT_LINE ( "Test Description:" ) ;
- PUT_LINE ( TEST_DESC_1 ) ;
- PUT_LINE ( TEST_DESC_2 ) ;
- PUT_LINE ( TEST_DESC_3 ) ;
- NEW_LINE ( 2 ) ;
-
- end PIWG_OUTPUT ;
-
- end PIWG_IO ;
- ::::::::::
- A000043.ADA
- ::::::::::
- with TEXT_IO; use TEXT_IO;
- with DIRECT_IO;
- with DURATION_IO ; use DURATION_IO ;
-
- package body PIWG_IO is
-
- subtype name_string is STRING(1..12);
- subtype line_string is STRING(1..80);
-
- type io_record is
- record
- testname : name_string;
- classname : name_string;
- cpu_delta : DURATION;
- wall_delta : DURATION;
- num_of_iterations : INTEGER;
- test_desc_1 : line_string;
- test_desc_2 : line_string;
- test_desc_3 : line_string;
- end record;
-
- package PIWG_DIRECT_IO is new DIRECT_IO( IO_RECORD );
- use PIWG_DIRECT_IO;
-
- disk_file : PIWG_DIRECT_IO.file_type;
- record_index : PIWG_DIRECT_IO.count;
-
- ------------------------------------
- procedure OPEN_OUTPUT is
- begin
- begin
- OPEN(disk_file, INOUT_FILE, "PIWGRES" );
- exception
- when PIWG_DIRECT_IO.NAME_ERROR =>
- CREATE( disk_file, INOUT_FILE, "PIWGRES" );
- when others =>
- TEXT_IO.put ( "Error in opening disk file - PIWGRES ");
- TEXT_IO.new_line;
- TEXT_IO.put ( "Please check file namings for your particular host" );
- TEXT_IO.new_line;
- end;
- end OPEN_OUTPUT;
-
- ------------------------------------
- procedure CLOSE_OUTPUT is
- begin
- CLOSE( disk_file );
- end CLOSE_OUTPUT;
-
- -----------------------------------
- procedure PIWG_OUTPUT ( testname : in string;
- classname : in string;
- cpu_delta : in DURATION;
- wall_delta : in DURATION;
- num_of_iterations : in INTEGER;
- test_desc_1 : in string;
- test_desc_2 : in string;
- test_desc_3 : in string) is
-
- data_rec : io_record;
-
- function make_12( name : string ) return name_string is
- begin
- if name'length < 12 then
- return name & ( name'length+1 .. 12 => ' ' ) ;
- else
- return name(1..12);
- end if ;
- end make_12;
-
- function make_80( name : string ) return line_string is
- begin
- if name'length < 80 then
- return name & ( name'length+1 .. 80 => ' ' ) ;
- else
- return name(1..80);
- end if ;
- end make_80;
-
- begin
-
- if not IS_OPEN( disk_file )
- then
- OPEN_OUTPUT;
- end if;
-
- record_index := SIZE( disk_file ) + PIWG_DIRECT_IO.COUNT(1);
-
- DATA_REC.testname := make_12 ( testname ) ;
- DATA_REC.classname := make_12 ( classname ) ;
- DATA_REC.cpu_delta := cpu_delta;
- DATA_REC.wall_delta := wall_delta;
- DATA_REC.num_of_iterations := num_of_iterations;
- DATA_REC.test_desc_1 := make_80 ( test_desc_1 ) ;
- DATA_REC.test_desc_2 := make_80 ( test_desc_2 ) ;
- DATA_REC.test_desc_3 := make_80 ( test_desc_3 ) ;
-
- WRITE( disk_file, DATA_REC, record_index );
-
- CLOSE_OUTPUT;
-
- end PIWG_OUTPUT;
-
- end PIWG_IO;
- ::::::::::
- A000044.ADA
- ::::::::::
- -- This is one of a number of optional PIWG_IO bodies.
- -- This body is for systems that DO NOT have TEXT_IO
- -- the results are saved in memory, use debugger or other
- -- method to read out.
- --
- -- Note : some other references to TEXT_IO may have to be removed.
- --
-
- package body PIWG_IO is -- A000044.ADA
-
- procedure PIWG_OUTPUT ( TESTNAME : in STRING ;
- CLASSNAME : in STRING ;
- CPU_DELTA : in DURATION ;
- WALL_DELTA : in DURATION ;
- NUM_OF_ITERATIONS : in INTEGER ;
- TEST_DESC_1 : in STRING ;
- TEST_DESC_2 : in STRING ;
- TEST_DESC_3 : in STRING ) is
- begin
- SAVE_CPU_TIME := CPU_DELTA ;
- SAVE_WALL_TIME := WALL_DELTA ;
- end PIWG_OUTPUT ;
-
- end PIWG_IO ;
- ::::::::::
- A000049.ADA
- ::::::::::
- -- This is the report generator to execute if A000043.ADA was
- -- used for PIWG_IO
-
- with TEXT_IO ; use TEXT_IO ;
- with DIRECT_IO ;
- with DURATION_IO ; use DURATION_IO ;
-
- procedure A000049 is
- subtype NAME_STRING is STRING ( 1 .. 12 ) ;
- subtype LINE_STRING is STRING ( 1 .. 80 ) ;
- USED_NAME : NAME_STRING := "************" ;
-
- --
- type IO_RECORD is
- record
- TESTNAME : NAME_STRING ;
- CLASSNAME : NAME_STRING ;
- CPU_DELTA : DURATION ;
- WALL_DELTA : DURATION ;
- NUM_OF_ITERATIONS : INTEGER ;
- TEST_DESC_1 : LINE_STRING ;
- TEST_DESC_2 : LINE_STRING ;
- TEST_DESC_3 : LINE_STRING ;
- end record ;
-
- --
- DATA_REC : IO_RECORD ;
-
-
- package PIWG_DIRECT_IO is new DIRECT_IO ( IO_RECORD ) ;
- use PIWG_DIRECT_IO ;
-
- --
- type DATA_ARRAY is array ( PIWG_DIRECT_IO.COUNT range <> ) of IO_RECORD ;
-
- --
- DISK_DATA : DATA_ARRAY ( 1 .. 2000 ) ;
- CPU_TIMES : array ( 1 .. 20 ) of DURATION ;
- WALL_TIMES : array ( 1 .. 20 ) of DURATION ;
- COUNT_TIMES : POSITIVE ;
-
- --
- DISK_FILE : PIWG_DIRECT_IO.FILE_TYPE ;
- RECORD_INDEX : PIWG_DIRECT_IO.COUNT ;
- RECORD_INDEX_FIRST : PIWG_DIRECT_IO.COUNT ;
- RECORD_INDEX_LAST : PIWG_DIRECT_IO.COUNT ;
- RECORD_SEARCH : PIWG_DIRECT_IO.COUNT ;
-
- --
- TESTNAME : NAME_STRING ;
- CLASSNAME : NAME_STRING ;
- CPU_DELTA : DURATION ;
- WALL_DELTA : DURATION ;
- NUM_OF_ITERATIONS : INTEGER ;
- TEST_DESC_1 : LINE_STRING ;
- TEST_DESC_2 : LINE_STRING ;
- TEST_DESC_3 : LINE_STRING ;
-
- --
-
- procedure OPEN_INPUT is
- begin
- begin
- OPEN ( DISK_FILE , IN_FILE , "PIWGRES" ) ;
- exception
- when others =>
- PUT ( "Error in opening disk file - PIWGRES " ) ;
- NEW_LINE ;
- PUT ( "Please check file namings for your particular host" ) ;
- NEW_LINE ;
- end ;
- end OPEN_INPUT ;
-
- --
-
- procedure CLOSE_INPUT is
- begin
- CLOSE ( DISK_FILE ) ;
- end CLOSE_INPUT ;
-
- --
-
- procedure PIWG_OUTPUT ( TESTNAME : in STRING ;
- CLASSNAME : in STRING ;
- CPU_DELTA : in DURATION ;
- WALL_DELTA : in DURATION ;
- NUM_OF_ITERATIONS : in INTEGER ;
- SAMPLE_COUNT : POSITIVE ;
- TEST_DESC_1 : in STRING ;
- TEST_DESC_2 : in STRING ;
- TEST_DESC_3 : in STRING ) is
- begin
- NEW_LINE ;
- PUT ( "Test Name: " ) ;
- PUT ( TESTNAME ) ;
- PUT ( " Class Name: " ) ;
- PUT_LINE ( CLASSNAME ) ;
- PUT ( "CPU Time: " ) ;
- DURATION_IO.PUT ( CPU_DELTA , 6 , 1 ) ;
- PUT_LINE ( " microseconds " ) ;
- PUT ( "Wall Time: " ) ;
- DURATION_IO.PUT ( WALL_DELTA , 6 , 1 ) ;
- PUT ( " microseconds. Iteration Count: " ) ;
- PUT_LINE ( INTEGER'IMAGE( NUM_OF_ITERATIONS )) ;
- PUT ( " number of samples:" ) ;
- PUT_LINE ( POSITIVE'IMAGE( SAMPLE_COUNT )) ;
- PUT_LINE ( "Test Description:" ) ;
- PUT_LINE ( TEST_DESC_1 ) ;
- PUT_LINE ( TEST_DESC_2 ) ;
- PUT_LINE ( TEST_DESC_3 ) ;
- NEW_LINE ( 2 ) ;
- end PIWG_OUTPUT ;
-
- --
- begin
- PUT_LINE ( "A000049 report beginning" ) ;
- if not IS_OPEN ( DISK_FILE ) then
- OPEN_INPUT ;
- end if ;
-
- --
- RECORD_INDEX_LAST := SIZE ( DISK_FILE ) ;
- RECORD_INDEX_FIRST := PIWG_DIRECT_IO.COUNT ( 1 ) ;
- RECORD_INDEX := RECORD_INDEX_FIRST ;
-
- --
- while RECORD_INDEX <= RECORD_INDEX_LAST loop
- READ ( DISK_FILE , DATA_REC , RECORD_INDEX ) ;
- DISK_DATA ( RECORD_INDEX ) := DATA_REC ;
- RECORD_INDEX := RECORD_INDEX + PIWG_DIRECT_IO.COUNT ( 1 ) ;
- end loop ;
- CLOSE_INPUT ;
- RECORD_INDEX := RECORD_INDEX_FIRST ;
- --
- while RECORD_INDEX <= RECORD_INDEX_LAST loop
- TESTNAME := DISK_DATA ( RECORD_INDEX ).TESTNAME ;
- if TESTNAME /= USED_NAME then
- CLASSNAME := DISK_DATA ( RECORD_INDEX ).CLASSNAME ;
- NUM_OF_ITERATIONS := DISK_DATA ( RECORD_INDEX ).NUM_OF_ITERATIONS ;
- TEST_DESC_1 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_1 ;
- TEST_DESC_2 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_2 ;
- TEST_DESC_3 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_3 ;
- COUNT_TIMES := 1 ;
- CPU_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_INDEX ).CPU_DELTA ;
- WALL_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_INDEX ).WALL_DELTA ;
-
- --
- RECORD_SEARCH := RECORD_INDEX + 1 ;
- while RECORD_SEARCH <= RECORD_INDEX_LAST loop
- if TESTNAME = DISK_DATA ( RECORD_SEARCH ).TESTNAME then
- DISK_DATA ( RECORD_SEARCH ).TESTNAME := USED_NAME ;
- COUNT_TIMES := COUNT_TIMES + 1 ;
- CPU_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_SEARCH ).CPU_DELTA ;
- WALL_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_SEARCH ).WALL_DELTA ;
- end if ;
- RECORD_SEARCH := RECORD_SEARCH + 1 ;
- end loop ;
- CPU_DELTA := 0.0 ;
- WALL_DELTA := 0.0 ;
- for I in 1 .. COUNT_TIMES loop
- CPU_DELTA := CPU_DELTA + CPU_TIMES ( I ) ;
- WALL_DELTA := WALL_DELTA + WALL_TIMES ( I ) ;
- end loop ;
- CPU_DELTA := DURATION ( CPU_DELTA / DURATION ( COUNT_TIMES ) ) ;
- WALL_DELTA := DURATION ( WALL_DELTA / DURATION ( COUNT_TIMES ) ) ;
- PIWG_OUTPUT ( TESTNAME , CLASSNAME , CPU_DELTA , WALL_DELTA ,
- NUM_OF_ITERATIONS , COUNT_TIMES , TEST_DESC_1 , TEST_DESC_2 ,
- TEST_DESC_3 ) ;
-
- --
- end if ;
- RECORD_INDEX := RECORD_INDEX + PIWG_DIRECT_IO.COUNT ( 1 ) ;
- end loop ;
- PUT_LINE ( "A000049 report complete" ) ;
- end A000049 ;
- ::::::::::
- A000051.ADA
- ::::::::::
- -- A000051
- --
- -- This is an executable procedure that can be called outside
- -- whatever is being measured.
- -- This version just prints present WALL time and CPU time.
- -- Other versions are avaliable that compute differences and save
- -- results on disk.
- --
- -- USAGE :
- -- A000051 (1)
- -- A000051 (2)
- -- A000051 (3)
- -- run being measured
- -- A000051 (4)
- --
- -- RESULT :
- -- ( (4) - (3) ) - ( (2) - (1) ) is the measurement
- --
- -- The second expression takes out the time to make the
- -- measurement. As a check, (3) - (2) should be close to (2) - (1)
- --
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with TEXT_IO ; -- for printing times
- with DURATION_IO ; -- for printing times
-
- procedure A000051 is
- begin
- TEXT_IO.PUT ( " CPU time now=" ) ;
- DURATION_IO.PUT ( CPU_TIME_CLOCK ) ;
- TEXT_IO.PUT ( " WALL time now=" ) ;
- DURATION_IO.PUT ( CALENDAR.SECONDS(CALENDAR.CLOCK) ) ;
- TEXT_IO.PUT_LINE ( " seconds." ) ;
- end A000051 ;
- ::::::::::
- A000052.ADA
- ::::::::::
- -- A000052
- --
- -- This is an executable procedure that can be called outside
- -- whatever is being measured.
- -- This version works in conjunction with A000053,A000054,A000055
- -- to measure CPU time and WALL time without modifying the tests
- -- There will be a file named A000052D created and used by these
- -- procedures.
- --
- -- USAGE :
- -- A000052
- -- optional control
- -- A000053
- -- A000054
- -- test being measured
- -- A000055
- --
- -- RESULT :
- -- ( (55) - (54) ) - ( (53) - (52) ) is the measurement
- --
- -- The second expression takes out the time to make the
- -- measurement. As a check, (3) - (2) should be close to (2) - (1)
- --
- -- The printout gives the CPU and WALL time in seconds for
- -- the run being measured.
- --
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with TEXT_IO ; -- for printing times
- with DURATION_IO ; -- for printing times
-
- procedure A000052 is
- MY_FILE : TEXT_IO.FILE_TYPE ;
- begin
- TEXT_IO.CREATE ( MY_FILE , TEXT_IO.OUT_FILE , "A000052D" ) ;
- TEXT_IO.PUT ( MY_FILE , " '52 CPU time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CPU_TIME_CLOCK ) ;
- TEXT_IO.PUT ( MY_FILE , " WALL time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CALENDAR.SECONDS(CALENDAR.CLOCK) ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , " seconds." ) ;
- end A000052 ;
- ::::::::::
- A000053.ADA
- ::::::::::
- -- A000053
- --
- -- This is an executable procedure that can be called outside
- -- whatever is being measured.
- -- This version works in conjunction with A000052,A000054,A000055
- -- to measure CPU time and WALL time without modifying the tests
- -- There will be a file named A000052D created and used by these
- -- procedures.
- --
- -- USAGE :
- -- A000052
- -- optional control
- -- A000053
- -- A000054
- -- test being measured
- -- A000055
- --
- -- RESULT :
- -- ( (55) - (54) ) - ( (53) - (52) ) is the measurement
- --
- -- The second expression takes out the time to make the
- -- measurement. As a check, (3) - (2) should be close to (2) - (1)
- --
- -- The printout gives the CPU and WALL time in seconds for
- -- the run being measured.
- --
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with TEXT_IO ; -- for printing times
- with DURATION_IO ; -- for printing times
-
- procedure A000053 is
- MY_FILE : TEXT_IO.FILE_TYPE ;
- HOLD : STRING ( 1 .. 80 ) ;
- LENGTH : NATURAL ;
- CPU_SECONDS_NOW : DURATION := CPU_TIME_CLOCK ;
- WALL_SECONDS_NOW : DURATION := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
-
- begin
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.IN_FILE , "A000052D" ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD , LENGTH ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.OUT_FILE , "A000052D" ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT ( MY_FILE , " '53 CPU time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CPU_SECONDS_NOW) ;
- TEXT_IO.PUT ( MY_FILE , " WALL time =" ) ;
- DURATION_IO.PUT ( MY_FILE , WALL_SECONDS_NOW ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , " seconds." ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- end A000053 ;
- ::::::::::
- A000054.ADA
- ::::::::::
- -- A000054
- --
- -- This is an executable procedure that can be called outside
- -- whatever is being measured.
- -- This version works in conjunction with A000052,A000054,A000055
- -- to measure CPU time and WALL time without modifying the tests
- -- There will be a file named A000052D created and used by these
- -- procedures.
- --
- -- USAGE :
- -- A000052
- -- optional control
- -- A000053
- -- A000054
- -- test being measured
- -- A000055
- --
- -- RESULT :
- -- ( (55) - (54) ) - ( (53) - (52) ) is the measurement
- --
- -- The second expression takes out the time to make the
- -- measurement. As a check, (3) - (2) should be close to (2) - (1)
- --
- -- The printout gives the CPU and WALL time in seconds for
- -- the run being measured.
- --
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with TEXT_IO ; -- for printing times
- with DURATION_IO ; -- for printing times
-
- procedure A000054 is
- MY_FILE : TEXT_IO.FILE_TYPE ;
- HOLD_1 : STRING ( 1 .. 80 ) ;
- HOLD_2 : STRING ( 1 .. 80 ) ;
- LENGTH : NATURAL ;
- begin
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.IN_FILE , "A000052D" ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD_1 , LENGTH ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD_2 , LENGTH ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.OUT_FILE , "A000052D" ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD_1 ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD_2 ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT ( MY_FILE , " '54 CPU time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CPU_TIME_CLOCK ) ;
- TEXT_IO.PUT ( MY_FILE , " WALL time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CALENDAR.SECONDS(CALENDAR.CLOCK) ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , " seconds." ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- end A000054 ;
- ::::::::::
- A000055.ADA
- ::::::::::
- -- A000055
- --
- -- This is an executable procedure that can be called outside
- -- whatever is being measured.
- -- This version works in conjunction with A000052,A000054,A000055
- -- to measure CPU time and WALL time without modifying the tests
- -- There will be a file named A000052D created and used by these
- -- procedures.
- --
- -- USAGE :
- -- A000052
- -- optional control
- -- A000053
- -- A000054
- -- test being measured
- -- A000055
- --
- -- RESULT :
- -- ( (55) - (54) ) - ( (53) - (52) ) is the measurement
- --
- -- The second expression takes out the time to make the
- -- measurement. As a check, (3) - (2) should be close to (2) - (1)
- --
- -- The printout gives the CPU and WALL time in seconds for
- -- the run being measured.
- --
-
- with CPU_TIME_CLOCK ; -- various choices on tape
- with CALENDAR ; -- used for WALL clock times
- with TEXT_IO ; -- for printing times
- with DURATION_IO ; -- for printing times
-
- procedure A000055 is
- MY_FILE : TEXT_IO.FILE_TYPE ;
- HOLD_1 : STRING ( 1 .. 80 ) ;
- HOLD_2 : STRING ( 1 .. 80 ) ;
- HOLD_3 : STRING ( 1 .. 80 ) ;
- LENGTH : NATURAL ;
- START : POSITIVE ;
- END_POS : POSITIVE ;
- CPU_SECONDS_NOW : DURATION := CPU_TIME_CLOCK ;
- WALL_SECONDS_NOW : DURATION := CALENDAR.SECONDS(CALENDAR.CLOCK) ;
- CPU_SECONDS_OVERHEAD : DURATION ;
- WALL_SECONDS_OVERHEAD : DURATION ;
- CPU_SECONDS_OVERHEAD_2 : DURATION ;
- WALL_SECONDS_OVERHEAD_2 : DURATION ;
- CPU_SECONDS_OF_TEST : DURATION ;
- WALL_SECONDS_OF_TEST : DURATION ;
- --
- -- Function to find the mark "=" in the record befor the value
- --
- function MARK ( ITEM : STRING ) return positive is
- begin
- for I in ITEM'RANGE loop
- if ITEM ( I ) = '=' then
- return I + 1 ;
- end if ;
- end loop ; -- error if loop terminates
- raise PROGRAM_ERROR ;
- end MARK ;
-
- begin
-
- --
- -- Write out full results for possible future analysis
- --
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.IN_FILE , "A000052D" ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD_1 , LENGTH ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD_2 , LENGTH ) ;
- TEXT_IO.GET_LINE ( MY_FILE , HOLD_3 , LENGTH ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- TEXT_IO.OPEN ( MY_FILE , TEXT_IO.OUT_FILE , "A000052D" ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD_1 ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD_2 ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , HOLD_3 ( 1 .. LENGTH ) ) ;
- TEXT_IO.PUT ( MY_FILE , " '55 CPU time =" ) ;
- DURATION_IO.PUT ( MY_FILE , CPU_SECONDS_NOW ) ;
- TEXT_IO.PUT ( MY_FILE , " WALL time =" ) ;
- DURATION_IO.PUT ( MY_FILE , WALL_SECONDS_NOW ) ;
- TEXT_IO.PUT_LINE ( MY_FILE , " seconds." ) ;
- TEXT_IO.CLOSE ( MY_FILE ) ;
- --
- -- Compute and print results
- --
- START := MARK ( HOLD_1 ) ;
- DURATION_IO.GET ( HOLD_1(START..LENGTH), CPU_SECONDS_OVERHEAD, END_POS ) ;
- START := MARK ( HOLD_1(START..LENGTH) ) ;
- DURATION_IO.GET ( HOLD_1(START..LENGTH), WALL_SECONDS_OVERHEAD, END_POS ) ;
- START := MARK ( HOLD_2 ) ;
- DURATION_IO.GET ( HOLD_2(START..LENGTH), CPU_SECONDS_OVERHEAD_2, END_POS ) ;
- START := MARK ( HOLD_2(START..LENGTH) ) ;
- DURATION_IO.GET ( HOLD_2(START..LENGTH), WALL_SECONDS_OVERHEAD_2, END_POS ) ;
- START := MARK ( HOLD_3 ) ;
- DURATION_IO.GET ( HOLD_3(START..LENGTH), CPU_SECONDS_OF_TEST, END_POS ) ;
- START := MARK ( HOLD_3(START..LENGTH) ) ;
- DURATION_IO.GET ( HOLD_3(START..LENGTH), WALL_SECONDS_OF_TEST, END_POS ) ;
- CPU_SECONDS_OF_TEST := ( CPU_SECONDS_NOW - CPU_SECONDS_OF_TEST ) -
- ( CPU_SECONDS_OVERHEAD_2 - CPU_SECONDS_OVERHEAD ) ;
- WALL_SECONDS_OF_TEST := ( WALL_SECONDS_NOW - WALL_SECONDS_OF_TEST ) -
- ( WALL_SECONDS_OVERHEAD_2 - WALL_SECONDS_OVERHEAD ) ;
- TEXT_IO.PUT_LINE ( "Measurement" ) ;
- TEXT_IO.PUT ( "CPU Time: " ) ;
- DURATION_IO.PUT ( CPU_SECONDS_OF_TEST , 6 , 2 ) ;
- TEXT_IO.PUT_LINE ( " seconds" ) ;
- TEXT_IO.PUT ( "Wall Time: " ) ;
- DURATION_IO.PUT ( WALL_SECONDS_OF_TEST , 6 , 2 ) ;
- TEXT_IO.PUT_LINE ( " seconds" ) ;
- end A000055 ;
- ::::::::::
- A000091.ADA
- ::::::::::
- -------------------------------------------------------------------------------
- -- --
- -- "DHRYSTONE" Benchmark Program --
- -- ----------------------------- --
- -- --
- -- Version ADA/1 --
- -- --
- -- Date: 04/15/84 --
- -- --
- -- Author: Reinhold P. Weicker --
- -- --
- -- --
- -- As published in Communications of ACM, October 1984 Vol 27 No 10 --
- -- --
- -------------------------------------------------------------------------------
- -- --
- -- The following program contains statements of a high-level programming --
- -- language (Ada) in a distribution considered representative: --
- -- --
- -- assignments 53% --
- -- control statements 32% --
- -- procedures, function call 15% --
-
- -- 100 statements are dynamically executed. The program is balanced with --
- -- respect to the three aspects: --
- -- --
- -- - statement type --
- -- - operand type (for simple data types) --
- -- - operand access --
- -- operand global, local, parameter, or constant. --
- -- --
- -- The combination of these three aspects is balanced only approximately. --
- -- --
- -- The program does not compute anything meaningful, but it is syntactically --
- -- and semantically correct. All variables have a value assigned to them --
- -- before they are used as a source operand --
- -------------------------------------------------------------------------------
- package global_def is
- ------------------
-
- -- global definintions
-
- type Enumeration is (ident_1,ident_2,ident_3,ident_4,ident_5);
-
- subtype one_to_thirty is integer range 1..30;
- subtype one_to_fifty is integer range 1..50;
- subtype capital_letter is character range 'A'..'Z';
-
- type String_30 is array(one_to_thirty) of character;
- pragma pack(string_30);
-
- type array_1_dim_integer is array (one_to_fifty) of integer;
- type array_2_dim_integer is array (one_to_fifty,
- one_to_fifty) of integer;
-
- type record_type(discr:enumeration:=ident_1);
-
- type record_pointer is access record_type;
-
- type record_type(discr:enumeration:=ident_1) is
- record
- pointer_comp: record_pointer;
- case discr is
- when ident_1 => -- only this variant is used,
- -- but in some cases discriminant
- -- checks are necessary
- enum_comp: enumeration;
- int_comp: one_to_fifty;
- string_comp: string_30;
- when ident_2 =>
- enum_comp_2: enumeration;
- string_comp_2: string_30;
- when others =>
- char_comp_1,
- char_comp_2: character;
- end case;
- end record;
-
- end global_def;
-
- with global_def;
- use global_def;
-
- package pack_1 is
- -------------
-
- procedure proc_0;
- procedure proc_1(pointer_par_in: in record_pointer);
- procedure proc_2(int_par_in_out: in out one_to_fifty);
- procedure proc_3(pointer_par_out: out record_pointer);
-
- int_glob: integer;
-
- end pack_1;
-
- with global_def;
- use global_def;
-
- package pack_2 is
- --------------
-
- procedure proc_6 (enum_par_in: in enumeration;
- enum_par_out: out enumeration);
-
- procedure proc_7 (int_par_in_1,
- int_par_in_2: in one_to_fifty;
- int_par_out: out one_to_fifty);
-
- procedure proc_8 (array_par_in_out_1: in out array_1_dim_integer;
- array_par_in_out_2: in out array_2_dim_integer;
- int_par_in_1,
- int_par_in_2: in integer);
-
- function func_1 (char_par_in_1,
- char_par_in_2: in capital_letter)
- return enumeration;
-
- function func_2 (string_par_in_1,
- string_par_in_2: in string_30)
- return boolean;
-
- end pack_2;
-
- with global_def, pack_1;
- use global_def;
-
- procedure A000091 is -- Dhrystone
- --------------
-
- begin
- pack_1.proc_0; -- proc_0 is actually the main program, but it is
- -- part of a package, and a program within a
- -- package can not be designated as the main
- -- program for execution. Therefore proc_0 is
- -- activated by a call from "main".
-
- end A000091 ;
-
- with global_def,pack_2;
- use global_def;
- with cpu_time_clock;
- with text_io;
- with duration_io;
-
- package body pack_1 is
- -----------
-
- bool_glob: boolean;
- char_glob_1,
- char_glob_2: character;
- array_glob_1: array_1_dim_integer;
- array_glob_2: array_2_dim_integer;
- pointer_glob,
- pointer_glob_next: record_pointer;
-
- start_time : duration ;
- stop_time : duration ;
- iteration_count : constant := 10_000 ;
-
- procedure proc_4;
- procedure proc_5;
-
- procedure proc_0
- is
- int_loc_1,
- int_loc_2,
- int_loc_3: one_to_fifty;
- char_loc: character;
- enum_loc: enumeration;
- string_loc_1,
- string_loc_2: string_30;
-
- begin
- -- initializations
- pack_1.pointer_glob_next := new record_type;
-
- pack_1.pointer_glob := new record_type
- '(
- pointer_comp => pack_1.pointer_glob_next,
- discr => ident_1,
- enum_comp => ident_3,
- int_comp => 40,
- string_comp => "DHRYSTONE PROGRAM, SOME STRING"
- );
-
- string_loc_1 := "DHRYSTONE PROGRAM, 1'ST STRING";
-
- ---------------
- -- start timer here
- ---------------
- start_time := cpu_time_clock ;
- for i in 1 .. iteration_count loop
-
- proc_5;
- proc_4;
- -- char_glob_1 = 'A', char_glob_2 = 'B', bool_glob = false
-
- int_loc_1 := 2;
- int_loc_2 := 3;
- string_loc_2 := "DHRYSTONE PROGRAM, 2'ND STRING";
- enum_loc := ident_2 ;
- bool_glob := not pack_2.func_2( string_loc_1,string_loc_2);
- -- bool_glob = true
- while int_loc_1 < int_loc_2 loop --loop body executed once
- int_loc_3 := 5 * int_loc_1 - int_loc_2;
- -- int_loc_3 = 7
- pack_2.proc_7(int_loc_1,int_loc_2,int_loc_3);
- -- int_loc_3 = 7
- int_loc_1 := int_loc_1 + 1;
- end loop;
- -- int_loc_1 = 3
- pack_2.proc_8(array_glob_1,array_glob_2,int_loc_1,int_loc_3);
- -- int_glob = 5
- proc_1(pointer_glob);
- for char_index in 'A'..Char_glob_2 loop --loop body executed twice
- if enum_loc = pack_2.func_1(char_index,'C')
- then -- not executed
- pack_2.proc_6(ident_1,enum_loc);
- end if;
- end loop;
- -- enum_loc = ident_1
- -- int_loc = 3, int_loc_2 = 3, int_loc_3 = 7
- int_loc_3 := int_loc_2 * int_loc_1;
- int_loc_2 := int_loc_3 / int_loc_1;
- int_loc_2 := 7 * ( int_loc_3 - int_loc_2 ) - int_loc_1;
- proc_2(int_loc_1);
-
- end loop ;
- stop_time := cpu_time_clock ;
- duration_io.put((stop_time-start_time)*1000/iteration_count);
- text_io.put_line(" is time in milliseconds for one Dhrystone");
- ------------------
- -- stop timer here
- ------------------
-
- end proc_0;
-
- procedure proc_1(pointer_par_in: in record_pointer) is -- executed once
-
- next_record: record_type
- renames pointer_par_in.pointer_comp.all; -- pointer_glob_next.all
- begin
- next_record :=pointer_glob.all;
- pointer_par_in.int_comp := 5;
- next_record.int_comp := pointer_par_in.int_comp;
- next_record.pointer_comp:= pointer_par_in.pointer_comp;
- proc_3(next_record.pointer_comp);
- -- next_record.pointer_glob.pointer_comp = pointer_comp.next
- if next_record.discr = ident_1
- then -- executed
- next_record.int_comp := 6;
- pack_2.proc_6(pointer_par_in.enum_comp,next_record.enum_comp);
- next_record.pointer_comp := pointer_glob.pointer_comp;
- pack_2.proc_7(next_record.int_comp,10,next_record.int_comp);
- else
- pointer_par_in.all := next_record;
- end if;
- end proc_1;
-
- procedure proc_2 ( int_par_in_out: in out one_to_fifty)
- is -- executed once
- -- in_par_in_out = 3 becomes 7
- int_loc : one_to_fifty;
- enum_loc : enumeration;
- begin
- int_loc := int_par_in_out + 10;
- loop
- if char_glob_1 = 'A'
- then
- int_loc := int_loc - 1;
- int_par_in_out := int_loc - int_glob;
- enum_loc := ident_1; -- true
- end if;
- exit when enum_loc = ident_1; -- true
- end loop;
- end proc_2;
-
- procedure proc_3(pointer_par_out: out record_pointer)
- is -- executed once
- -- pointer_par_out becomes pointer_glob
- begin
- if pointer_glob /= null
- then -- executed
- pointer_par_out := pointer_glob.pointer_comp;
- else
- int_glob := 100;
- end if;
- pack_2.proc_7(10,int_glob,pointer_glob.int_comp);
- end proc_3;
-
- procedure proc_4
- is
- bool_loc : boolean;
- begin
- bool_loc := char_glob_1 = 'A';
- bool_loc := bool_loc or bool_glob;
- char_glob_2 := 'B';
- end proc_4;
-
- procedure proc_5
- is
- begin
- char_glob_1 := 'A';
- bool_glob := false;
- end proc_5;
-
- end pack_1;
-
- with global_def,pack_1; use global_def;
- package body pack_2 is
-
- function func_3(enum_par_in: in enumeration) return boolean;
- -- forward declaration
- procedure proc_6(enum_par_in: in enumeration;
- enum_par_out: out enumeration) is
- begin
- enum_par_out := enum_par_in;
- if not func_3(enum_par_in) then
- enum_par_out := ident_4;
- end if;
- case enum_par_in is
- when ident_1 =>enum_par_out := ident_1;
- when ident_2 =>if pack_1.int_glob>100
- then enum_par_out := ident_1;
- else enum_par_out := ident_4;
- end if;
- when ident_3 =>enum_par_out := ident_2; -- executed
- when ident_4 =>null;
- when ident_5 =>enum_par_out := ident_3;
- end case;
- end proc_6;
-
- procedure proc_7(int_par_in_1,
- int_par_in_2: in one_to_fifty;
- int_par_out: out one_to_fifty) is
-
- int_loc : one_to_fifty;
- begin
- int_loc := int_par_in_1 + 2;
- int_par_out := int_par_in_2 + int_loc;
- end proc_7;
-
- procedure proc_8 (array_par_in_out_1: in out array_1_dim_integer;
- array_par_in_out_2: in out array_2_dim_integer;
- int_par_in_1,
- int_par_in_2: in integer)
- is
-
- int_loc: one_to_fifty;
- begin
- int_loc := int_par_in_1 + 5;
- array_par_in_out_1(int_loc) := int_par_in_2;
- array_par_in_out_1(int_loc + 1) :=
- array_par_in_out_1(int_loc);
- array_par_in_out_1(int_loc + 30) := int_loc;
- for int_index in int_loc..int_loc + 1 loop -- loop body executed twice
- array_par_in_out_2(int_loc,int_index) := int_loc ;
- end loop;
- array_par_in_out_2(int_loc,int_loc-1) :=
- array_par_in_out_2(int_loc,int_loc-1) + 1;
- array_par_in_out_2(int_loc + 20,int_loc) :=
- array_par_in_out_1(int_loc);
- pack_1.int_glob := 5;
-
- end proc_8;
-
- function func_1 (char_par_in_1,
- char_par_in_2: in capital_letter) return enumeration
- is
-
- char_loc_1, char_loc_2 : capital_letter;
-
- begin
- char_loc_1 := char_par_in_1;
- char_loc_2 := char_loc_1;
- if char_loc_2 /= char_par_in_2 then
- return ident_1;
- else
- return ident_2;
- end if;
- end func_1;
-
- function func_2(string_par_in_1,
- string_par_in_2: in string_30) return boolean
- is
-
- int_loc: one_to_thirty;
- char_loc: capital_letter;
-
- begin
- int_loc := 2;
- while int_loc <= 2 loop
- if func_1(string_par_in_1(int_loc),
- string_par_in_2(int_loc+1)) = ident_1 then
- char_loc := 'A';
- int_loc := int_loc + 1;
- end if;
- end loop;
- if char_loc >='W' and char_loc < 'Z' then
- int_loc := 7;
- end if;
- if char_loc = 'X' then
- return true;
- else
- if string_par_in_1 > string_par_in_2 then
- int_loc := int_loc + 7;
- return true;
- else
- return false;
- end if;
- end if;
- end func_2;
-
- function func_3(enum_par_in: in enumeration) return boolean
- is
-
- enum_loc: enumeration;
- begin
- enum_loc := enum_par_in;
- if enum_loc = ident_3 then
- return true;
- end if;
- end func_3;
-
- end pack_2;
- ::::::::::
- A000092.ADA
- ::::::::::
- -- Ada version of Whetstone Benchmark Program
- -- This must be edited to "with" the compiler suppliers math routines
- -- SIN, COS, ATAN, SQRT, EXP and LOG
- -- These results may be interesting to compare to Z000093 that uses
- -- a physically included, all Ada set of math routines
-
-
- --------------------------------------------------------------------------
- -- --
- -- WHETADA.ADA distributed as A000092.ADA --
- -- --
- -- Ada version of the Whetstone Benchmark Program. --
- -- Reference: "Computer Journal" February 1976, pages 43-49 --
- -- for description of benchmark and ALGOL60 version. --
- -- Note: Procedure POUT is omitted. --
- -- --
- -- From Timing Studies using a synthetic Whetstone Benchmark --
- -- by Sam Harbaugh and John A. Forakis --
- -- --
- --------------------------------------------------------------------------
- -- --
- -- Authors Disclaimer --
- -- " The Whetstone measure deals only with the most basic scientific/ --
- -- computational aspects of the languages and computers and no general --
- -- conclusions should be drawn from this work. Application specific --
- -- benchmarks should be written and run by anyone needing to draw --
- -- conclusions reguarding suitability of languages, compilers and --
- -- hardware. This data is reported to stimulate interest and work in --
- -- run time benchmarking and in no way is meant to influence anyone's --
- -- choice of languages or software in any situation " --
- -- --
- --------------------------------------------------------------------------
-
- with CPU_TIME_CLOCK ;
- with TEXT_IO; use TEXT_IO;
- -- Change the following line to use the compiler vendors or manufacturers
- -- math library.
- with FLOAT_MATH_LIB; use FLOAT_MATH_LIB; -- manufacturers routines ( VAX )
-
- procedure A000092 is
- --pragma SUPPRESS(ACCESS_CHECK);
- --pragma SUPPRESS(DISCRIMINANT_CHECK);
- --pragma SUPPRESS(INDEX_CHECK);
- --pragma SUPPRESS(LENGTH_CHECK);
- --pragma SUPPRESS(RANGE_CHECK);
- --pragma SUPPRESS(DIVISION_CHECK);
- --pragma SUPPRESS(OVERFLOW_CHECK);
- --pragma SUPPRESS(STORAGE_CHECK);
- --pragma SUPPRESS(ELABORATION_CHECK);
-
- package INT_IO is new INTEGER_IO(INTEGER); use INT_IO;
- package REAL_IO is new FLOAT_IO(FLOAT); use REAL_IO;
-
- procedure WHETSTONE(I, NO_OF_CYCLES : in INTEGER;
- START_TIME,STOP_TIME: out FLOAT) is
-
- -- Calling procedure provides the loop count weight factor, I, and
- -- the encompassing loop count, NO_OF_CYCLES.
-
- type VECTOR is array (INTEGER range <>) of FLOAT;
- X1,X2,X3,X4,X,Y,Z,T,T1,T2 : FLOAT;
- E1 : VECTOR(1..4);
- J,K,L,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11 : INTEGER;
-
- procedure PA(E: in out VECTOR) is
- -- tests computations with an array as a parameter
- J : INTEGER;
- -- T,T2 : FLOAT are global variables
- begin
- J:=0;
- <<LAB>>
- E(1) := (E(1) + E(2) + E(3) - E(4)) * T;
- E(2) := (E(1) + E(2) - E(3) + E(4)) * T;
- E(3) := (E(1) - E(2) + E(3) + E(4)) * T;
- E(4) := (-E(1) + E(2) + E(3) + E(4)) / T2;
- J := J + 1;
- if J < 6 then
- goto LAB;
- end if;
- end PA;
-
-
- procedure P0 is
- -- tests computations with no parameters
- -- T1,T2 : FLOAT are global
- -- E1 : VECTOR(1..4) is global
- -- J,K,L : INTEGER are global
- begin
- E1(J) := E1(K);
- E1(K) := E1(L);
- E1(L) := E1(J);
- end P0;
-
-
- procedure P3(X,Y: in out FLOAT; Z : out FLOAT) is
- -- tests computations with simple identifiers as parameters
- -- T,T2 : FLOAT are global
- begin
- X := T * (X + Y);
- Y := T * (X + Y);
- Z := (X + Y) / T2;
- end P3;
-
-
- begin
- -- Set constants
- T := 0.499975;
- T1 := 0.50025;
- T2 := 2.0;
- -- Compute the execution frequency for the benchmark modules
- N1 := 0; --Module 1 not executed
- N2 := 12 * I;
- N3 := 14 * I;
- N4 := 345*I;
- N5 := 0; -- Module 5 not executed
- N6 := 210*I;
- N7 := 32*I;
- N8 := 899*I;
- N9 := 616*I;
- N10:= 0; -- Module 10 not executed
- N11:= 93*I;
-
- START_TIME := FLOAT(CPU_TIME_CLOCK); --Get Whetstone start time
-
- CYCLE_LOOP:
- for CYCLE_NO in 1..NO_OF_CYCLES loop
- -- Module 1 : computations with simple identifiers
- X1 := 1.0;
- X2 := -1.0;
- X3 := -1.0;
- X4 := -1.0;
- for I in 1..N1 loop
- X1 := (X1 + X2 + X3 - X4) * T;
- X2 := (X1 + X2 - X3 + X4) * T;
- X3 := (X1 + X2 + X3 + X4) * T;
- X4 := (-X1 + X2 + X3 + X4) * T;
- end loop;
- -- end Module 1
-
- -- Module 2: computations with array elements
- E1(1) := 1.0;
- E1(2) := -1.0;
- E1(3) := -1.0;
- E1(4) := -1.0;
- for I in 1..N2 loop
- E1(1) := (E1(1) + E1(2) + E1(3) - E1(4)) * T;
- E1(2) := (E1(1) + E1(2) - E1(3) + E1(4)) * T;
- E1(3) := (E1(1) - E1(2) + E1(3) + E1(4)) * T;
- E1(4) := (-E1(1) + E1(2) + E1(3) + E1(4)) * T;
- end loop;
- -- end Module 2
-
- -- Module 3 : passing an array as a parmeter
- for I in 1..N3 loop
- PA(E1);
- end loop;
- -- end Module 3
-
- -- Module 4 : performing conditional jumps
- J := 1;
- for I in 1..N4 loop
- if J=1 then
- J := 2;
- else
- J := 3;
- end if;
- if J>2 then
- J := 0;
- else
- J := 1;
- end if;
- if J<1 then
- J := 1;
- else
- J := 0;
- end if;
- end loop;
- --end Module 4
-
- -- Module 5 : omitted
-
- -- Module 6 : performing integer arithmetic
- J := 1;
- K := 2;
- L := 3;
- for I in 1..N6 loop
- J := J * (K-J) * (L-K);
- K := L*K - (L-J) * K;
- L := (L-K) * (K+J);
- E1(L-1) := FLOAT(J+K+L);
- E1(K-1) := FLOAT(J*K*L);
- end loop;
- -- end Module 6
-
- -- Module 7 : performing computations using trigonometric
- -- functions
- X := 0.5;
- Y := 0.5;
- for I in 1..N7 loop
- X := T*ATAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1.0));
- Y := T*ATAN(T2*SIN(Y)*COS(Y)/(COS(X+Y)+COS(X-Y)-1.0));
- end loop;
- -- end Module 7
-
- -- Module 8 : procedure calls with simple identifiers as
- -- parameters
- X := 1.0;
- Y := 1.0;
- Z := 1.0;
- for I in 1..N8 loop
- P3(X,Y,Z);
- end loop;
- -- end Module 8
-
- -- Module 9 : array reference and procedure calls with no
- -- parameters
- J := 1;
- K := 2;
- L := 3;
- E1(1) := 1.0;
- E1(2) := 2.0;
- E1(3) := 3.0;
- for I in 1..N9 loop
- P0;
- end loop;
- -- end Module 9
-
- -- Module 10 : integer arithmetic
- J := 2;
- K := 3;
- for I in 1..N10 loop
- J := J + K;
- K := K + J;
- J := K - J;
- K := K - J - J;
- end loop;
- -- end Module 10
-
- -- Module 11 : performing computations using standard
- -- mathematical functions
- X := 0.75;
- for I in 1..N11 loop
- X := SQRT(EXP(LOG(X)/T1));
- end loop;
- -- end Moudle 11
-
- end loop CYCLE_LOOP;
-
- STOP_TIME := FLOAT(CPU_TIME_CLOCK); --Get Whetstone stop time
- end WHETSTONE;
-
- procedure COMPUTE_WHETSTONE_KIPS is
- -- Variables used to control execution of benchmark and to
- -- compute the Whetstone rating :
-
- NO_OF_RUNS : INTEGER; -- Number of times the benchmark is executed
- NO_OF_CYCLES : INTEGER; -- Number of times the group of benchmark
- -- modules is executed
- I : INTEGER;
- -- Factor weighting number of times each module loops
- -- A value of ten gives a total weight for modules of
- -- approximately one million Whetstone instructions
- START_TIME : FLOAT;
- -- Time at which execution of benchmark modules begins
- STOP_TIME : FLOAT;
- -- Time at which execution of benchmark modules ends
- -- (time for NO_OF_CYCLES)
- ELAPSED_TIME : FLOAT;
- -- Time between START_TIME and STOP_TIME
- MEAN_TIME : FLOAT; -- Average time per cycle
- RATING : FLOAT; -- Thousands of Whetstone instructions per sec
- MEAN_RATING : FLOAT; -- Average Whetstone rating
- INT_RATING : INTEGER; -- Integer value of KWIPS
-
- begin
- NEW_LINE; PUT_LINE("ADA Whetstone benchmark"); NEW_LINE;
- PUT_LINE("A000092 using manufacturers math routines");
- NEW_LINE;
-
- MEAN_TIME := 0.0;
- MEAN_RATING := 0.0;
- NO_OF_CYCLES := 10;
- NO_OF_RUNS := 5;
- I := 10;
-
- RUN_LOOP:
- for RUN_NO in 1..NO_OF_RUNS loop
- -- Call the Whetstone benchmark parocedure
- WHETSTONE(I,NO_OF_CYCLES,START_TIME,STOP_TIME);
-
- -- Write the Whetstone start time
- NEW_LINE; PUT("Whetstone start time: "); PUT(START_TIME,5,2,0);
- PUT_LINE(" seconds");
-
- -- Write the Whetstone stop time
- NEW_LINE; PUT("Whetstone stop time : ");
- PUT(STOP_TIME,5,2,0); PUT_LINE(" seconds ");
-
- -- Compute and write elapsed time
- ELAPSED_TIME := STOP_TIME - START_TIME;
-
- NEW_LINE; PUT("Elapsed time for "); PUT(NO_OF_CYCLES,3);
- PUT(" cycles : "); PUT(ELAPSED_TIME,5,2,0);
- PUT_LINE(" seconds");
-
- -- Sum time in milliseconds per cycle
- MEAN_TIME := MEAN_TIME + (ELAPSED_TIME*1000.0)/FLOAT(NO_OF_CYCLES);
-
- -- Calculate the Whetstone rating based on the time for
- -- the number of cycles just executed and write
- RATING := (1000.0 * FLOAT(NO_OF_CYCLES))/ELAPSED_TIME;
-
- -- Sum Whetstone rating
- MEAN_RATING := MEAN_RATING + RATING;
- INT_RATING := INTEGER(RATING);
-
- NEW_LINE; PUT("Whetstone rating : "); PUT(INT_RATING);
- PUT_LINE(" KWIPS"); NEW_LINE;
-
- -- Reset NO_OF_CYCLES for next run using ten cycles more
- NO_OF_CYCLES := NO_OF_CYCLES + 10;
- end loop RUN_LOOP;
-
- -- Compute average time in millieseconds per cycle and write
- MEAN_TIME := MEAN_TIME/FLOAT(NO_OF_RUNS);
-
- NEW_LINE; PUT("Average time per cycle : ");
- PUT(MEAN_TIME,5,2,0); PUT_LINE(" milliseconds");
-
- -- Calculate average Whetstone rating and write
- MEAN_RATING := MEAN_RATING/FLOAT(NO_OF_RUNS);
- INT_RATING := INTEGER(MEAN_RATING);
-
- NEW_LINE; PUT(" Average Whetstone rating : ");
- PUT(INT_RATING); PUT_LINE(" KWIPS");
- NEW_LINE; NEW_LINE;
-
- end COMPUTE_WHETSTONE_KIPS;
-
- begin
- COMPUTE_WHETSTONE_KIPS;
- end A000092;
- ::::::::::
- A000093.ADA
- ::::::::::
- -- Ada version of Whetstone Benchmark Program
- -- using standardized math routines for the measurements
- -- The math routines are physically included
-
- --------------------------------------------------------------------------
- -- --
- -- WHETADA.ADA distributed as A000093.ADA --
- -- --
- -- Ada version of the Whetstone Benchmark Program. --
- -- Reference: "Computer Journal" February 1976, pages 43-49 --
- -- for description of benchmark and ALGOL60 version. --
- -- Note: Procedure POUT is omitted. --
- -- --
- -- From Timing Studies using a synthetic Whetstone Benchmark --
- -- by Sam Harbaugh and John A. Forakis --
- -- --
- --------------------------------------------------------------------------
- -- --
- -- Authors Disclaimer --
- -- " The Whetstone measure deals only with the most basic scientific/ --
- -- computational aspects of the languages and computers and no general --
- -- conclusions should be drawn from this work. Application specific --
- -- benchmarks should be written and run by anyone needing to draw --
- -- conclusions reguarding suitability of languages, compilers and --
- -- hardware. This data is reported to stimulate interest and work in --
- -- run time benchmarking and in no way is meant to influence anyone's --
- -- choice of languages or software in any situation " --
- -- --
- --------------------------------------------------------------------------
- -- --
- -- All references to DATA_FILE and associated OPEN and PUT's are removed--
- -- This was not in the timing loop. --
- -- --
- --------------------------------------------------------------------------
-
- with CPU_TIME_CLOCK ;
- with TEXT_IO; use TEXT_IO;
-
- procedure A000093 is
- --pragma SUPPRESS(ACCESS_CHECK);
- --pragma SUPPRESS(DISCRIMINANT_CHECK);
- --pragma SUPPRESS(INDEX_CHECK);
- --pragma SUPPRESS(LENGTH_CHECK);
- --pragma SUPPRESS(RANGE_CHECK);
- --pragma SUPPRESS(DIVISION_CHECK);
- --pragma SUPPRESS(OVERFLOW_CHECK);
- --pragma SUPPRESS(STORAGE_CHECK);
- --pragma SUPPRESS(ELABORATION_CHECK);
-
- package INT_IO is new INTEGER_IO(INTEGER); use INT_IO;
- package REAL_IO is new FLOAT_IO(FLOAT); use REAL_IO;
-
-
- -- This is a standard Ada inplementation of the required math routines
- -- that is Copyright Westinghouse Electric Corporation 1983,1984,1985.
- -- These routines are provided for use by ACM SIGAda PIWG for making
- -- measurements. These routines are copyrighted and may only be used for
- -- performance measurements. These math routines must not be distributed
- -- without this notice. No permission is granted to any party to modify,
- -- to redistribute, to sell, to give away, or to otherwise use or
- -- transmit these math routines without express written permission from
- -- Westinghous Electric Corporation, c/o Jon Squire, P.O. Box 746 MS1615,
- -- Baltimore, MD 21203.
-
- PI_2 : constant FLOAT := 1.5707963267949 ;
- PI : constant FLOAT := 2.0 * PI_2 ;
-
- function SIN ( X : FLOAT ) return FLOAT is -- Copyright Westinghouse 1985
-
- C1 : constant FLOAT := 1.57079631847 ;
- C3 : constant FLOAT := - 0.64596371106 ;
- C5 : constant FLOAT := 0.07968967928 ;
- C7 : constant FLOAT := - 0.00467376557 ;
- C9 : constant FLOAT := 0.00015148419 ;
- X_NORM : FLOAT ;
- X_INT : FLOAT ;
- X_2 : FLOAT ;
- Y : FLOAT ;
- begin
- X_NORM := X / PI_2 ;
- if abs ( X_NORM ) > 4.0 then -- REDUCE TO -2 PI .. 2 PI
- X_INT := FLOAT ( INTEGER( X_NORM / 4.0 )) ;
- X_NORM := X_NORM - 4.0 * X_INT ;
- end if ;
- if X_NORM > 2.0 then -- REDUCE TO -PI .. PI
- X_NORM := 2.0 - X_NORM ;
- elsif X_NORM < - 2.0 then
- X_NORM := - 2.0 - X_NORM ;
- end if ;
- if X_NORM > 1.0 then -- REDUCE TO -PI/2 .. PI/2
- X_NORM := 2.0 - X_NORM ;
- elsif X_NORM < - 1.0 then
- X_NORM := - 2.0 - X_NORM ;
- end if ;
- X_2 := X_NORM * X_NORM ;
- Y := ( C1 +( C3 +( C5 +( C7 + C9 * X_2 ) * X_2) * X_2) * X_2) * X_NORM ;
- return Y ;
- end SIN ;
-
- function COS ( X : FLOAT ) return FLOAT is
-
- begin
- return SIN ( X + PI_2 ) ;
- end COS ;
-
-
- function ATAN ( X : FLOAT ) return FLOAT is -- Copyright Westinghouse 1985
-
- C1 : constant FLOAT := 0.9999993329 ;
- C3 : constant FLOAT := - 0.3332985605 ;
- C5 : constant FLOAT := 0.1994653599 ;
- C7 : constant FLOAT := - 0.1390853351 ;
- C9 : constant FLOAT := 0.0964200441 ;
- C11 : constant FLOAT := - 0.0559098861 ;
- C13 : constant FLOAT := 0.0218612288 ;
- C15 : constant FLOAT := - 0.0040540580 ;
- A_2 : FLOAT ;
- Y : FLOAT ;
- A : FLOAT ;
- begin
- A := X ;
- if abs ( A ) > 1.0 then
- A := 1.0 / A ;
- end if ;
- A_2 := A * A ;
- Y := ( C1 +( C3 +( C5 +( C7 +( C9 +( C11 +( C13 + C15 * A_2 ) * A_2) * A_2
- ) * A_2) * A_2) * A_2) * A_2) * A ;
- if abs ( X ) >= 1.0 then
- if X < 0.0 then
- Y := - ( PI_2 + Y ) ;
- else
- Y := PI_2 - Y ;
- end if ;
- end if ;
- return Y ;
- end ATAN ;
-
-
- function SQRT ( X : FLOAT ) return FLOAT is -- Copyright Westinghouse 1985
-
- Y , ROOT_PWR , X_NORM : FLOAT ;
- A : constant FLOAT := 2.1902 ;
- B : constant FLOAT := - 3.0339 ;
- C : constant FLOAT := 1.5451 ;
- begin
- X_NORM := X ;
- ROOT_PWR := 1.0 ;
- if X <= 0.0 then
- return 0.0 ;
- end if ;
- if X > 1.0 then -- REDUCE TO 0.25 .. 1.0
- while X_NORM > 1.0 loop
- ROOT_PWR := ROOT_PWR * 2.0 ;
- X_NORM := X_NORM * 0.25 ;
- end loop ;
- else
- while X_NORM < 0.25 loop
- ROOT_PWR := ROOT_PWR * 0.5 ;
- X_NORM := X_NORM * 4.0 ;
- end loop ;
- end if ;
- Y := A + B / ( C + X_NORM ) ;
- Y := 0.5 * ( Y + X_NORM / Y ) ;
- Y := 0.5 * ( Y + X_NORM / Y ) ;
- Y := Y * ROOT_PWR ;
- return Y ;
- end SQRT ;
-
- function EXP ( X : FLOAT ) return FLOAT is -- Copyright Westinghouse 1985
-
- C1 : constant FLOAT := 9.99999900943303E-01 ;
- C2 : constant FLOAT := 5.00006347344554E-01 ;
- C3 : constant FLOAT := 1.66667985598315E-01 ;
- C4 : constant FLOAT := 4.16350120350139E-02 ;
- C5 : constant FLOAT := 8.32859610677671E-03 ;
- C6 : constant FLOAT := 1.43927433449119E-03 ;
- C7 : constant FLOAT := 2.04699933614437E-04 ;
-
- -- 4.01169746699903E-07 = MAX_ERROR APPROXIMATION-FUNCTION
- X1 : FLOAT ;
- Y : FLOAT ;
- E_PWR : FLOAT := 1.0 ;
- E : FLOAT := 2.71828182845905 ;
- begin
- if X > 88.0 then
- raise NUMERIC_ERROR ;
- end if ;
- X1 := abs ( X ) ;
- if X1 > 88.0 then
- return 0.0 ;
- end if ;
- while X1 >= 1.0 loop
- E_PWR := E_PWR * E * E ;
- X1 := X1 - 2.0 ;
- end loop ;
- Y := 1.0 + ( C1 +( C2 +( C3 +( C4 +( C5 +( C6 + C7 * X1 ) * X1) * X1) * X1
- ) * X1) * X1) * X1 ;
- Y := Y * E_PWR ;
- if X < 0.0 then
- Y := 1.0 / Y ;
- end if ;
- return Y ;
- end EXP ;
-
- function LOG10 ( X : FLOAT ) return FLOAT is -- Copyright Westinghouse 1985
-
- C1 : constant FLOAT := 0.868591718 ;
- C3 : constant FLOAT := 0.289335524 ;
- C5 : constant FLOAT := 0.177522071 ;
- C7 : constant FLOAT := 0.094376476 ;
- C9 : constant FLOAT := 0.191337714 ;
- C_R10 : constant FLOAT := 3.1622777 ;
- Y : FLOAT ;
- X_NORM : FLOAT ;
- X_LOG : FLOAT ;
- FRAC : FLOAT ;
- FRAC_2 : FLOAT ;
- begin
- X_LOG := 0.5 ;
- X_NORM := X ;
- if X <= 0.0 then
- return 0.0 ;
- end if ;
- if X >= 10.0 then
- while X_NORM >= 10.0 -- REDUCE TO 1.0 .. 10.0
- loop
- X_LOG := X_LOG + 1.0 ;
- X_NORM := X_NORM * 0.1 ;
- end loop ;
- else
- while X_NORM < 1.0 -- REDUCE TO 1.0 .. 10.0
- loop
- X_LOG := X_LOG - 1.0 ;
- X_NORM := X_NORM * 10.0 ;
- end loop ;
- end if ;
- FRAC := ( X_NORM - C_R10 ) / ( X_NORM + C_R10 ) ;
- FRAC_2 := FRAC * FRAC ;
- Y := ( C1 +( C3 +( C5 +( C7 + C9 * FRAC_2 ) * FRAC_2) * FRAC_2) * FRAC_2)
- * FRAC ;
- return Y + X_LOG ;
- end LOG10 ; -- end of copyrighted section
-
- function LOG ( X : FLOAT ) return FLOAT is
-
- begin
- return 2.302585093 * LOG10 ( X ) ;
- end LOG ;
-
-
- procedure WHETSTONE(I, NO_OF_CYCLES : in INTEGER;
- START_TIME,STOP_TIME: out FLOAT) is
-
- -- Calling procedure provides the loop count weight factor, I, and
- -- the encompassing loop count, NO_OF_CYCLES.
-
- type VECTOR is array (INTEGER range <>) of FLOAT;
- X1,X2,X3,X4,X,Y,Z,T,T1,T2 : FLOAT;
- E1 : VECTOR(1..4);
- J,K,L,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11 : INTEGER;
-
- procedure PA(E: in out VECTOR) is
- -- tests computations with an array as a parameter
- J : INTEGER;
- -- T,T2 : FLOAT are global variables
- begin
- J:=0;
- <<LAB>>
- E(1) := (E(1) + E(2) + E(3) - E(4)) * T;
- E(2) := (E(1) + E(2) - E(3) + E(4)) * T;
- E(3) := (E(1) - E(2) + E(3) + E(4)) * T;
- E(4) := (-E(1) + E(2) + E(3) + E(4)) / T2;
- J := J + 1;
- if J < 6 then
- goto LAB;
- end if;
- end PA;
-
-
- procedure P0 is
- -- tests computations with no parameters
- -- T1,T2 : FLOAT are global
- -- E1 : VECTOR(1..4) is global
- -- J,K,L : INTEGER are global
- begin
- E1(J) := E1(K);
- E1(K) := E1(L);
- E1(L) := E1(J);
- end P0;
-
-
- procedure P3(X,Y: in out FLOAT; Z : out FLOAT) is
- -- tests computations with simple identifiers as parameters
- -- T,T2 : FLOAT are global
- begin
- X := T * (X + Y);
- Y := T * (X + Y);
- Z := (X + Y) / T2;
- end P3;
-
-
- begin
- -- Set constants
- T := 0.499975;
- T1 := 0.50025;
- T2 := 2.0;
- -- Compute the execution frequency for the benchmark modules
- N1 := 0; --Module 1 not executed
- N2 := 12 * I;
- N3 := 14 * I;
- N4 := 345*I;
- N5 := 0; -- Module 5 not executed
- N6 := 210*I;
- N7 := 32*I;
- N8 := 899*I;
- N9 := 616*I;
- N10:= 0; -- Module 10 not executed
- N11:= 93*I;
-
- START_TIME := FLOAT(CPU_TIME_CLOCK); --Get Whetstone start time
-
- CYCLE_LOOP:
- for CYCLE_NO in 1..NO_OF_CYCLES loop
- -- Module 1 : computations with simple identifiers
- X1 := 1.0;
- X2 := -1.0;
- X3 := -1.0;
- X4 := -1.0;
- for I in 1..N1 loop
- X1 := (X1 + X2 + X3 - X4) * T;
- X2 := (X1 + X2 - X3 + X4) * T;
- X3 := (X1 + X2 + X3 + X4) * T;
- X4 := (-X1 + X2 + X3 + X4) * T;
- end loop;
- -- end Module 1
-
- -- Module 2: computations with array elements
- E1(1) := 1.0;
- E1(2) := -1.0;
- E1(3) := -1.0;
- E1(4) := -1.0;
- for I in 1..N2 loop
- E1(1) := (E1(1) + E1(2) + E1(3) - E1(4)) * T;
- E1(2) := (E1(1) + E1(2) - E1(3) + E1(4)) * T;
- E1(3) := (E1(1) - E1(2) + E1(3) + E1(4)) * T;
- E1(4) := (-E1(1) + E1(2) + E1(3) + E1(4)) * T;
- end loop;
- -- end Module 2
-
- -- Module 3 : passing an array as a parmeter
- for I in 1..N3 loop
- PA(E1);
- end loop;
- -- end Module 3
-
- -- Module 4 : performing conditional jumps
- J := 1;
- for I in 1..N4 loop
- if J=1 then
- J := 2;
- else
- J := 3;
- end if;
- if J>2 then
- J := 0;
- else
- J := 1;
- end if;
- if J<1 then
- J := 1;
- else
- J := 0;
- end if;
- end loop;
- --end Module 4
-
- -- Module 5 : omitted
-
- -- Module 6 : performing integer arithmetic
- J := 1;
- K := 2;
- L := 3;
- for I in 1..N6 loop
- J := J * (K-J) * (L-K);
- K := L*K - (L-J) * K;
- L := (L-K) * (K+J);
- E1(L-1) := FLOAT(J+K+L);
- E1(K-1) := FLOAT(J*K*L);
- end loop;
- -- end Module 6
-
- -- Module 7 : performing computations using trigonometric
- -- functions
- X := 0.5;
- Y := 0.5;
- for I in 1..N7 loop
- X := T*ATAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1.0));
- Y := T*ATAN(T2*SIN(Y)*COS(Y)/(COS(X+Y)+COS(X-Y)-1.0));
- end loop;
- -- end Module 7
-
- -- Module 8 : procedure calls with simple identifiers as
- -- parameters
- X := 1.0;
- Y := 1.0;
- Z := 1.0;
- for I in 1..N8 loop
- P3(X,Y,Z);
- end loop;
- -- end Module 8
-
- -- Module 9 : array reference and procedure calls with no
- -- parameters
- J := 1;
- K := 2;
- L := 3;
- E1(1) := 1.0;
- E1(2) := 2.0;
- E1(3) := 3.0;
- for I in 1..N9 loop
- P0;
- end loop;
- -- end Module 9
-
- -- Module 10 : integer arithmetic
- J := 2;
- K := 3;
- for I in 1..N10 loop
- J := J + K;
- K := K + J;
- J := K - J;
- K := K - J - J;
- end loop;
- -- end Module 10
-
- -- Module 11 : performing computations using standard
- -- mathematical functions
- X := 0.75;
- for I in 1..N11 loop
- X := SQRT(EXP(LOG(X)/T1));
- end loop;
- -- end Moudle 11
-
- end loop CYCLE_LOOP;
-
- STOP_TIME := FLOAT(CPU_TIME_CLOCK); --Get Whetstone stop time
- end WHETSTONE;
-
- procedure COMPUTE_WHETSTONE_KIPS is
- -- Variables used to control execution of benchmark and to
- -- compute the Whetstone rating :
-
- NO_OF_RUNS : INTEGER; -- Number of times the benchmark is executed
- NO_OF_CYCLES : INTEGER; -- Number of times the group of benchmark
- -- modules is executed
- I : INTEGER;
- -- Factor weighting number of times each module loops
- -- A value of ten gives a total weight for modules of
- -- approximately one million Whetstone instructions
- START_TIME : FLOAT;
- -- Time at which execution of benchmark modules begins
- STOP_TIME : FLOAT;
- -- Time at which execution of benchmark modules ends
- -- (time for NO_OF_CYCLES)
- ELAPSED_TIME : FLOAT;
- -- Time between START_TIME and STOP_TIME
- MEAN_TIME : FLOAT; -- Average time per cycle
- RATING : FLOAT; -- Thousands of Whetstone instructions per sec
- MEAN_RATING : FLOAT; -- Average Whetstone rating
- INT_RATING : INTEGER; -- Integer value of KWIPS
-
- begin
- NEW_LINE; PUT_LINE("ADA Whetstone benchmark"); NEW_LINE;
- PUT_LINE("A000093 using standard internal math routines");
- NEW_LINE;
-
- MEAN_TIME := 0.0;
- MEAN_RATING := 0.0;
- NO_OF_CYCLES := 10;
- NO_OF_RUNS := 5;
- I := 10;
-
- RUN_LOOP:
- for RUN_NO in 1..NO_OF_RUNS loop
- -- Call the Whetstone benchmark parocedure
- WHETSTONE(I,NO_OF_CYCLES,START_TIME,STOP_TIME);
-
- -- Write the Whetstone start time
- NEW_LINE; PUT("Whetstone start time: "); PUT(START_TIME,5,2,0);
- PUT_LINE(" seconds");
-
- -- Write the Whetstone stop time
- NEW_LINE; PUT("Whetstone stop time : ");
- PUT(STOP_TIME,5,2,0); PUT_LINE(" seconds ");
-
- -- Compute and write elapsed time
- ELAPSED_TIME := STOP_TIME - START_TIME;
-
- NEW_LINE; PUT("Elapsed time for "); PUT(NO_OF_CYCLES,3);
- PUT(" cycles : "); PUT(ELAPSED_TIME,5,2,0);
- PUT_LINE(" seconds");
-
- -- Sum time in milliseconds per cycle
- MEAN_TIME := MEAN_TIME + (ELAPSED_TIME*1000.0)/FLOAT(NO_OF_CYCLES);
-
- -- Calculate the Whetstone rating based on the time for
- -- the number of cycles just executed and write
- RATING := (1000.0 * FLOAT(NO_OF_CYCLES))/ELAPSED_TIME;
-
- -- Sum Whetstone rating
- MEAN_RATING := MEAN_RATING + RATING;
- INT_RATING := INTEGER(RATING);
-
- NEW_LINE; PUT("Whetstone rating : "); PUT(INT_RATING);
- PUT_LINE(" KWIPS"); NEW_LINE;
-
- -- Reset NO_OF_CYCLES for next run using ten cycles more
- NO_OF_CYCLES := NO_OF_CYCLES + 10;
- end loop RUN_LOOP;
-
- -- Compute average time in millieseconds per cycle and write
- MEAN_TIME := MEAN_TIME/FLOAT(NO_OF_RUNS);
-
- NEW_LINE; PUT("Average time per cycle : ");
- PUT(MEAN_TIME,5,2,0); PUT_LINE(" milliseconds");
-
- -- Calculate average Whetstone rating and write
- MEAN_RATING := MEAN_RATING/FLOAT(NO_OF_RUNS);
- INT_RATING := INTEGER(MEAN_RATING);
-
- NEW_LINE; PUT(" Average Whetstone rating : ");
- PUT(INT_RATING); PUT_LINE(" KWIPS");
- NEW_LINE; NEW_LINE;
-
- end COMPUTE_WHETSTONE_KIPS;
-
- begin
- COMPUTE_WHETSTONE_KIPS;
- end A000093;
- ::::::::::
- A000094.ADA
- ::::::::::
- -- A000094.ADA "Henessy" benchmarks
- --
- -- modified to use CPU_TIME_CLOCK rather than CALENDAR.CLOCK for PIWG
- -- ( Editorial note: These are unchanged by PIWG other than the the use of
- -- CPU time rather than wall time. These procedures are for comparison
- -- purposes. Many came from other languages and are used for comparing
- -- Ada to other languages. Most of these procedures would be considered
- -- poor Ada programming. The matrix multiply is also a poor numerical
- -- method. )
- --
- -- This is a suite of benchmarks that are relatively short, both in program
- -- size and execution time. It requires no input, and prints the execution
- -- time for each program, using the system- dependent routine Getclock,
- -- below, to find out the current CPU time. It does a rudimentary check to
- -- make sure each program gets the right output. These programs were
- -- gathered by John Henessy and modified by Peter Nye.
-
- -- Ada version translated from Pascal
- -- 11/15/85 by Mitchell Gart, Alsys Inc.
-
- with TEXT_IO, CPU_TIME_CLOCK, DURATION_IO;
-
- procedure A000094 is
-
- -- Global variables:
- TIMER: DURATION ;
- XTIMES: ARRAY(1..11) OF DURATION;
- SORTELEMENTS: constant := 5000;
- type LISTSIZE is range 0..SORTELEMENTS;
- RANDARRAY: ARRAY (LISTSIZE) OF INTEGER;
- type LONG_INTEGER is range -2**30 .. 2**30 ;
- SEED: LONG_INTEGER;
-
- -- Shared by Bubble and Quick
- type sortarray is array (listsize) of integer;
- sortlist: sortarray;
- biggest, littlest: integer;
- top: listsize;
-
-
- -- global procedures
-
- -- Getclock was replaced by CPU_TIME_CLOCK
- -- function Getclock return CALENDAR.TIME renames CALENDAR.CLOCK;
-
-
- procedure Initrand is
- begin
- seed := 74755;
- end;
-
- function Rand return integer is
- begin
- seed := (seed * 1309 + 13849) mod 32767;
- return INTEGER(SEED);
- end;
-
-
- generic
- type ELEM is private;
- with function CVT(VAL: INTEGER) return ELEM;
- with function "+"(LEFT, RIGHT: ELEM) return ELEM is <>;
- with function "*"(LEFT, RIGHT: ELEM) return ELEM is <>;
- procedure MATRIX_MULT;
-
- -- Integer and real matrix multiplication, programmed with generics:
-
- procedure MATRIX_MULT is
- rowsize: constant := 40;
- type index is range 1 .. rowsize;
- type matrix is array (index,index) of ELEM;
- ima, imb, imr: matrix;
-
- procedure Initmatrix (m: out matrix) is
- K: LISTSIZE;
- begin
- K := 0;
- for I in INDEX'FIRST..INDEX'LAST loop
- for J in INDEX'FIRST..INDEX'LAST loop
- M(I,J) := CVT(RANDARRAY(K) mod 120 - 60);
- K := K+1;
- end loop;
- end loop;
- end INITMATRIX;
-
- procedure Innerproduct (
- RESULT: out ELEM;
- A,B: in MATRIX;
- ROW,COLUMN: in INDEX ) is
- -- computes the inner product of A(row, and B--,column)
- RES : ELEM := CVT(0);
- begin
- for I in INDEX'FIRST..INDEX'LAST loop
- RES := RES + A(ROW,I)*B(I,COLUMN);
- end loop;
- RESULT := RES;
- end INNERPRODUCT;
-
- begin -- MATRIX_MULT
- INITMATRIX (IMA);
- INITMATRIX (IMB);
- for I in INDEX'FIRST..INDEX'LAST loop
- for J in INDEX'FIRST..INDEX'LAST loop
- INNERPRODUCT(IMR(I,J),IMA,IMB,I,J);
- end loop;
- end loop;
- end MATRIX_MULT;
-
- -- Having to specify these conversion routines is sort of a pain.
- -- At least they are only called during matrix initialization,
- -- not during the product loop.
-
- function INT_CVT(I: INTEGER) return INTEGER is
- begin
- return I;
- end INT_CVT;
-
- function FLOAT_CVT(I: INTEGER) return FLOAT is
- begin
- return FLOAT(I);
- end FLOAT_CVT;
-
- -- Here are the instantiations. "*" and "+" are implied parameters.
-
- procedure Intmm is new MATRIX_MULT(INTEGER, INT_CVT);
-
- procedure mm is new MATRIX_MULT(FLOAT, FLOAT_CVT);
-
-
- procedure Puzzle is
-
- -- A compute-bound program from Forest Baskett.
-
- size: constant := 511;
- classmax: constant := 3;
- typemax: constant := 12;
- d: constant := 8;
-
- type piececlass is range 0..classmax;
- type piecetype is range 0..typemax;
- type position is range 0..size;
- type piecerange is range 0..13;
-
- piececount: array (piececlass) of piecerange;
- class: array (piecetype) of piececlass;
- piecemax: array (piecetype) of position;
- puzzl: array (position) of boolean;
- p: array (piecetype, position) of boolean;
- m,n: position;
- kount: integer;
-
- function Fit (i : piecetype; j : position) return boolean is
-
- k,m : position;
-
- begin
- for k in 0 .. piecemax(i) loop
- if p(i,k) and then puzzl(j+k) then return false; end if;
- end loop;
- return true;
- end;
-
- function Place (i : piecetype; j : position) return position is
- begin
- for K in 0 .. PIECEMAX(I) loop
- if p(i,k) then puzzl(j+k) := true; end if;
- end loop;
- piececount(class(i)) := piececount(class(i)) - 1;
- for K in J .. SIZE loop
- if not PUZZL(K) then
- return K;
- end if;
- end loop;
- return 0;
- end;
-
- procedure Remove (i : piecetype; j : position) is
- begin
- for K in 0 .. PIECEMAX(I) loop
- if P(I,K) then PUZZL(J+K) := FALSE; end if;
- end loop;
- PIECECOUNT(CLASS(I)) := PIECECOUNT(CLASS(I)) + 1;
- end REMOVE;
-
- function Trial (J : position) return boolean is
- k : position;
- begin
- kount := kount + 1;
- for I in PIECETYPE'FIRST..PIECETYPE'LAST loop
- if PIECECOUNT(CLASS(I)) /= 0 then
- if Fit (i, j) then
- k := Place (i, j);
- if Trial(k) OR (k = 0) then
- return TRUE;
- else
- Remove (i, j);
- end if;
- end if;
- end if;
- end loop;
- return FALSE;
- end TRIAL;
-
- begin -- PUZZLE
-
- for m in POSITION'FIRST..POSITION'LAST loop puzzl(m) := true; end loop;
- for i in 1 .. 5 loop for j in 1 .. 5 loop for k in 1 .. 5 loop
- puzzl(POSITION(i+d*(j+d*k))) := false;
- end loop; end loop; end loop;
- for i in PIECETYPE'FIRST..PIECETYPE'LAST loop
- for m in POSITION'FIRST..POSITION'LAST loop
- p(i, m) := false;
- end loop;
- end loop;
- for i in 0..3 loop for j in 0 .. 1 loop for k in 0 .. 0 loop
- p(0,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop;
- end loop;
- class(0) := 0;
- piecemax(0) := 3+d*1+d*d*0;
- for i in 0 .. 1 loop for j in 0 .. 0 loop for k in 0 .. 3 loop
- p(1,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(1) := 0;
- piecemax(1) := 1+d*0+d*d*3;
- for i in 0 .. 0 loop for j in 0 .. 3 loop for k in 0 .. 1 loop
- p(2,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(2) := 0;
- piecemax(2) := 0+d*3+d*d*1;
- for i in 0 .. 1 loop for j in 0 .. 3 loop for k in 0 .. 0 loop
- p(3,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(3) := 0;
- piecemax(3) := 1+d*3+d*d*0;
- for i in 0 .. 3 loop for j in 0 .. 0 loop for k in 0 .. 1 loop
- p(4,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(4) := 0;
- piecemax(4) := 3+d*0+d*d*1;
- for i in 0 .. 0 loop for j in 0 .. 1 loop for k in 0 .. 3 loop
- p(5,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(5) := 0;
- piecemax(5) := 0+d*1+d*d*3;
- for i in 0 .. 2 loop for j in 0 .. 0 loop for k in 0 .. 0 loop
- p(6,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(6) := 1;
- piecemax(6) := 2+d*0+d*d*0;
- for i in 0 .. 0 loop for j in 0 .. 2 loop for k in 0 .. 0 loop
- p(7,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(7) := 1;
- piecemax(7) := 0+d*2+d*d*0;
- for i in 0 .. 0 loop for j in 0 .. 0 loop for k in 0 .. 2 loop
- p(8,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(8) := 1;
- piecemax(8) := 0+d*0+d*d*2;
- for i in 0 .. 1 loop for j in 0 .. 1 loop for k in 0 .. 0 loop
- p(9,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(9) := 2;
- piecemax(9) := 1+d*1+d*d*0;
- for i in 0 .. 1 loop for j in 0 .. 0 loop for k in 0 .. 1 loop
- p(10,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(10) := 2;
- piecemax(10) := 1+d*0+d*d*1;
- for i in 0 .. 0 loop for j in 0 .. 1 loop for k in 0 .. 1 loop
- p(11,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(11) := 2;
- piecemax(11) := 0+d*1+d*d*1;
- for i in 0 .. 1 loop for j in 0 .. 1 loop for k in 0 .. 1 loop
- p(12,POSITION(i+d*(j+d*k))) := true;
- end loop; end loop; end loop;
- class(12) := 3;
- piecemax(12) := 1+d*1+d*d*1;
- piececount(0) := 13;
- piececount(1) := 3;
- piececount(2) := 1;
- piececount(3) := 1;
- m := 1+d*(1+d*1);
- kount := 0;
- if Fit(0, m) then
- n := Place(0, m);
- else
- TEXT_IO.PUT_LINE("Error1 in Puzzle");
- end if;
- if NOT Trial(n) then
- TEXT_IO.PUT_LINE("Error2 in Puzzle.");
- elsif kount /= 2005 then
- TEXT_IO.PUT_LINE("Error3 in Puzzle.");
- end if;
- end PUZZLE;
-
-
- procedure TREES is
-
- -- Sorts an array using treesort
-
- type NODE;
- type NODEPTR is access NODE;
- type NODE is record
- LEFT,
- RIGHT: NODEPTR;
- VAL: INTEGER;
- end record;
-
- -- tree
- TREE: NODEPTR;
-
- procedure INITARR is
- begin
- BIGGEST := 0; LITTLEST := 0;
- for I in LISTSIZE'FIRST .. LISTSIZE'LAST loop
- SORTLIST(I) := (RANDARRAY(I) mod 10000) - 5000;
- if SORTLIST(I) > BIGGEST then
- BIGGEST := SORTLIST(I);
- elsif SORTLIST(I) < LITTLEST then
- LITTLEST := SORTLIST(I);
- end if;
- end loop;
- end INITARR;
-
- procedure INSERT(N: INTEGER; T: in out NODEPTR) is
- -- insert n into tree
-
- procedure CreateNode(t: in out nodeptr; n: in integer) is
- begin
- T := new NODE;
- T.LEFT := null;
- T.RIGHT := null;
- T.VAL := N;
- end CREATENODE;
-
- begin
- if N>T.VAL then
- if T.LEFT=NULL then
- CREATENODE(T.LEFT, N);
- else
- INSERT(N, T.LEFT);
- end if;
- elsif N<T.VAL then
- if T.RIGHT=null then
- CREATENODE(T.RIGHT,N);
- else
- INSERT(N,T.RIGHT);
- end if;
- end if;
- end INSERT;
-
-
- function CHECKTREE(P: NODEPTR) return BOOLEAN is
- -- check by inorder traversal
- RESULT: BOOLEAN;
- begin
- RESULT := TRUE;
- if P.LEFT/=null then
- if P.LEFT.VAL <= P.VAL then
- RESULT:=FALSE;
- else
- RESULT := CHECKTREE(P.LEFT) and RESULT;
- end if;
- end if;
- if P.RIGHT/=null then
- if P.RIGHT.VAL >= P.VAL then
- RESULT := FALSE;
- else
- RESULT := CHECKTREE(P.RIGHT) and RESULT;
- end if;
- end if;
- return RESULT;
- end CHECKTREE;
-
- begin -- TREES
-
- INITARR;
- TREE := new NODE;
- TREE.LEFT := null; TREE.RIGHT := null; TREE.VAL:=SORTLIST(1);
- for I in 2 .. SORTELEMENTS loop
- INSERT(SORTLIST(LISTSIZE(I)),TREE);
- end loop;
- if not CHECKTREE(TREE) then
- TEXT_IO.PUT(" Error in Tree.");
- end if;
-
- end TREES;
-
-
- procedure Perm is
- -- Permutation program, heavily recursive, written by Denny Brown.
- type permrange is range 0 .. 10;
- permarray: array (permrange) of permrange;
- pctr: long_integer;
- i: integer;
-
- procedure Swap(a, b : in permrange) is
- t : permrange;
- begin
- t := permarray(a);
- permarray(a) := permarray(b);
- permarray(b) := t;
- end;
-
- procedure Initialize is
- begin
- for i in 1 .. 7 loop
- permarray(permrange(i)) := permrange(i-1);
- end loop;
- end;
-
- procedure Permute(n : permrange) is
- begin
- pctr := pctr + 1;
- if n /= 1 then
- Permute(n-1);
- for k in reverse 1..n-1 loop
- Swap(n, k);
- Permute(n-1);
- Swap(n, k);
- end loop;
- end if;
- end permute;
-
- begin -- Perm
- pctr := 0;
- for i in 1 .. 5 loop
- Initialize;
- Permute(7);
- end loop;
- if pctr /= 43300 then
- TEXT_IO.PUT_LINE(" Error in Perm.");
- end if;
- end Perm;
-
-
- procedure Towers is
-
- -- Program to Solve the Towers of Hanoi
- towersbase: constant := 2.39;
- maxcells: constant := 18;
- type discsizrange is range 1..maxcells;
- type stackrange is range 1..3;
- type cellcursor is range 0..maxcells;
- type element is record
- discsize:discsizrange;
- next:cellcursor;
- end record;
-
- stack: array(stackrange) of cellcursor;
- cellspace: array(1..maxcells) of element;
- cfreelist: cellcursor;
- movesdone: integer;
- -- Freelist: integer;
-
- procedure Error (emsg: string) is
- begin
- TEXT_IO.PUT("Error in Towers: ");
- TEXT_IO.PUT_LINE(EMSG);
- end;
-
- procedure Makenull (s:stackrange) is
- begin
- stack(s):=0;
- end;
-
- function Getelement return cellcursor is
- RESULT: CELLCURSOR;
- begin
- if cfreelist>0 then
- RESULT := cfreelist;
- cfreelist:=cellspace(integer(cfreelist)).next;
- return RESULT;
- else
- Error("out of space ");
- end if;
- end getelement;
-
- procedure Push(i:discsizrange;s:stackrange) is
- errorfound:boolean;
- localel:cellcursor;
- begin
- errorfound:=false;
- if stack(s) > 0 then
- if cellspace(integer(stack(s))).discsize<=i then
- errorfound:=true;
- Error("disc size error");
- end if;
- end if;
- if NOT errorfound then
- localel:=Getelement;
- cellspace(integer(localel)).next:=stack(s);
- stack(s):=localel;
- cellspace(integer(localel)).discsize:=i;
- end if;
- end PUSH;
-
- procedure Init (s:stackrange;n:discsizrange) is
- discctr:discsizrange;
- begin
- Makenull(s);
- for discctr in reverse 1..n loop
- Push(discctr,s);
- end loop;
- end;
-
- function Pop (s:stackrange) return discsizrange is
- temp: cellcursor;
- result: discsizrange;
- begin
- if stack(s) > 0 then
- result := cellspace(integer(stack(s))).discsize;
- temp:=cellspace(integer(stack(s))).next;
- cellspace(integer(stack(s))).next:=cfreelist;
- cfreelist:=stack(s);
- stack(s):=temp;
- return result;
- else
- Error("nothing to pop ");
- end if;
- end pop;
-
- procedure Move (s1,s2:stackrange) is
- begin
- Push(Pop(s1),s2);
- movesdone:=movesdone+1;
- end;
-
- procedure Tower(i,j,k:integer) is
- other:integer;
- begin
- if k=1 then
- Move(stackrange(i),stackrange(j));
- else
- other:=6-i-j;
- Tower(i,other,k-1);
- Move(stackrange(i),stackrange(j));
- Tower(other,j,k-1);
- end if;
- end tower;
-
-
- begin -- Towers
- for I in 1..MAXCELLS loop
- cellspace(integer(I)).NEXT := cellcursor(I - 1);
- end loop;
- cfreelist:=maxcells;
- Init(1,14);
- Makenull(2);
- Makenull(3);
- movesdone:=0;
- Tower(1,2,14);
- if movesdone /= 16383 then
- TEXT_IO.PUT_LINE("Error in Towers.");
- end if;
- end Towers;
-
-
- procedure Queens is
-
- -- The eight queens problem, solved 50 times.
-
- i: integer;
-
- procedure Doit is
-
- subtype doubleboard is integer range 2..16;
- subtype doublenorm is integer range -7..7;
- subtype boardrange is integer range 1..8;
- type aarray is array (boardrange) of boolean;
- type barray is array (doubleboard) of boolean;
- type carray is array (doublenorm) of boolean;
- type xarray is array (boardrange) of boardrange;
-
- i: integer;
- q: boolean;
- a: aarray;
- b: barray;
- c: carray;
- x: xarray;
-
- procedure Try (
- i : in integer;
- q : in out boolean;
- a : in out barray;
- b : in out aarray) is
-
- j : integer;
-
- begin
- j := 0;
- q := false;
- while (not Q) and (J /= 8) loop
- j := j + 1;
- q := false;
- if B(J) and A(I+J) and C(I-J) then
- x(i) := j;
- b(j) := false;
- a(i+j) := false;
- c(i-j) := false;
- if i < 8 then
- Try(i+1,q,a,b);
- if NOT q then
- b(j) := true;
- a(i+j) := true;
- c(i-j) := true;
- end if;
- else
- q := true;
- end if;
- end if;
- end loop;
- end TRY;
-
- begin -- Doit
- i := 0 - 7;
- while I <= 16 loop
- if (I >= 1) and (I <= 8) then A(I) := TRUE; end if;
- if i >= 2 then B(I) := TRUE; end if;
- if i <= 7 then c(i) := true; end if;
- i := i + 1;
- end loop;
-
- Try(1, q, b, a);
- if not Q then
- TEXT_IO.PUT_LINE(" Error in Queens.");
- end if;
- end DOIT;
-
- begin -- Queens
- for i in 1 .. 50 loop
- Doit;
- end loop;
- end QUEENS;
-
-
- procedure Quick is
-
- -- Sorts an array using quicksort
-
- procedure INITARR is
- begin
- BIGGEST := -6500; LITTLEST := 6500;
- for I in 1 .. SORTELEMENTS loop
- SORTLIST(LISTSIZE(I)) := (RANDARRAY(LISTSIZE(I)) mod 10000) - 5000;
- if SORTLIST(LISTSIZE(I)) > BIGGEST then
- BIGGEST := SORTLIST(LISTSIZE(I));
- elsif SORTLIST(LISTSIZE(I)) < LITTLEST then
- LITTLEST := SORTLIST(LISTSIZE(I));
- end if;
- end loop;
- end INITARR;
-
- procedure QUICKSORT(A: in out SORTARRAY; L,R: LISTSIZE) is
- -- quicksort the array A from start to finish
- I,J: INTEGER;
- X,W: INTEGER;
- begin
- I:=INTEGER(L); J:=INTEGER(R);
- X:=A((L+R)/2);
- loop
- while A(LISTSIZE(I))<X loop I := I+1; end loop;
- while X<A(LISTSIZE(J)) loop J := J-1; end loop;
- if I<=J then
- W := A(LISTSIZE(I));
- A(LISTSIZE(I)) := A(LISTSIZE(J));
- A(LISTSIZE(J)) := W;
- I := i+1;
- J:= J-1;
- end if;
- exit when I > J;
- end loop;
- if L <LISTSIZE(J) then QUICKSORT(A,L,LISTSIZE(J)); end if;
- if LISTSIZE(I)<R then QUICKSORT(A,LISTSIZE(I),R); end if;
- end QUICKSORT;
-
- begin -- QUICK
- INITARR;
- QUICKSORT(SORTLIST, 1, SORTELEMENTS);
- if (SORTLIST(1) /= LITTLEST) or (SORTLIST(SORTELEMENTS) /= BIGGEST) then
- TEXT_IO.PUT(" Error in Quick.");
- end if;
- end QUICK;
-
-
-
- procedure Bubble is
-
- -- Sorts an array using bubblesort
-
- J: INTEGER;
- I, TOP: LISTSIZE;
- LIMIT: constant LISTSIZE := SORTELEMENTS/10;
-
- procedure INITARR is
- I: LISTSIZE;
- begin
- BIGGEST := 0; LITTLEST := 0;
- for I in 1 .. LISTSIZE'(SORTELEMENTS) loop
- SORTLIST(I) := (RANDARRAY(I) mod 10000) - 5000;
- if SORTLIST(I) > BIGGEST then
- BIGGEST := SORTLIST(I);
- elsif SORTLIST(I) < LITTLEST then
- LITTLEST := SORTLIST(I);
- end if;
- end loop;
- end INITARR;
-
- begin -- BUBBLE
- INITARR;
- TOP := LIMIT;
- while TOP>1 loop
- I:=1;
- while I<TOP loop
- if SORTLIST(I) > SORTLIST(I+1) then
- J := SORTLIST(I);
- SORTLIST(I) := SORTLIST(I+1);
- SORTLIST(I+1) := J;
- end if;
- I:=I+1;
- end loop;
- TOP:=TOP-1;
- end loop;
- for I in 2 .. LIMIT loop
- if (SORTLIST(I-1) > SORTLIST(I)) then
- TEXT_IO.PUT("Error3 in Bubble.");
- end if;
- end loop;
- end BUBBLE;
-
-
- procedure OSCAR is
-
- -- fft
-
- FFTSIZE: constant := 256 ;
- FFTSIZE2: constant := 129 ;
-
- type COMPLEX is record
- rp,
- ip: FLOAT;
- end record;
- type CARRAY is array (1..FFTSIZE) of COMPLEX ;
- type C2ARRAY is array (1..FFTSIZE2) of COMPLEX ;
-
- Z, W : CARRAY ;
- E : C2ARRAY ;
- ZR, ZI : FLOAT;
-
- function COS (X: FLOAT) return FLOAT is
- -- computes cos of x (x in radians) by an expansion
- type T is range 2..10;
- I: T;
- RESULT,POWER: FLOAT;
- FACTOR: LONG_INTEGER;
- begin
- RESULT := 1.0; FACTOR := 1; POWER := X;
- for I in 2 .. 10 loop
- FACTOR := FACTOR * LONG_INTEGER(I); POWER := POWER*X;
- if (I mod 2) = 0 then
- if (i mod 4) = 0 then
- result := result + power/FLOAT(FACTOR);
- else
- result := result - power/FLOAT(FACTOR);
- end if;
- end if;
- end loop;
- return RESULT;
- end;
-
- function MIN0( ARG1, ARG2 : INTEGER) return INTEGER is
- begin
- if ARG1 < ARG2 then
- return ARG1;
- else
- return ARG2;
- end if;
- end MIN0;
-
- procedure UNIFORM11( IY: in out LONG_INTEGER;
- YFL: out FLOAT) is
- begin
- IY := (4855*IY + 1731) mod 8192;
- YFL := FLOAT(IY)/8192.0;
- end UNIFORM11;
-
- procedure EXPTAB(N: INTEGER;
- E: in out C2ARRAY) is
-
- H: array (1..25) of FLOAT ;
- I, J, K, L, M : INTEGER;
- THETA, DIVISOR : FLOAT;
-
- begin -- exptab
- THETA := 3.1415926536;
- DIVISOR := 4.0;
- for I in 1 .. 25 loop
- H(I) := 1.0/(2.0*COS( THETA/DIVISOR ));
- DIVISOR := DIVISOR + DIVISOR;
- end loop;
-
- M := N / 2 ;
- L := M / 2 ;
- J := 1 ;
- E(1).RP := 1.0 ;
- E(1).IP := 0.0;
- E(L+1).RP := 0.0;
- E(L+1).IP := 1.0 ;
- E(M+1).RP := -1.0 ;
- E(M+1).IP := 0.0 ;
-
- loop
- I := L / 2 ;
- K := I ;
-
- loop
- E(K+1).RP := H(J)*(E(K+I+1).RP+E(K-I+1).RP) ;
- E(K+1).IP := H(J)*(E(K+I+1).IP+E(K-I+1).IP) ;
- K := K+L ;
- exit when K > M ;
- end loop;
-
- J := MIN0( J+1, 25);
- L := I ;
- exit when L <= 1 ;
- end loop;
-
- end EXPTAB;
-
- procedure FFT( N: in INTEGER ;
- Z, W: in out CARRAY ;
- E: in C2ARRAY ;
- SQRINV: in FLOAT) is
-
- I, J, K, L, M, INDEX: INTEGER ;
-
- begin
- m := n / 2 ;
- l := 1 ;
-
- loop
- k := 0 ;
- j := l ;
- i := 1 ;
-
- loop
-
- loop
- W(I+K).RP := Z(I).RP+Z(M+I).RP ;
- W(I+K).IP := Z(I).IP+Z(M+I).IP ;
- W(I+J).RP := E(K+1).RP*(Z(I).RP-Z(I+M).RP)
- -E(K+1).IP*(Z(I).IP-Z(I+M).IP) ;
- W(I+J).IP := E(K+1).RP*(Z(I).IP-Z(I+M).IP)
- +E(K+1).IP*(Z(I).RP-Z(I+M).RP) ;
- I := I+1 ;
- exit when I > J ;
- end loop;
-
- K := J ;
- J := K+L ;
- exit when J > M ;
- end loop;
-
- -- Z := W;
- INDEX := 1;
- loop
- Z(INDEX) := W(INDEX);
- INDEX := INDEX+1;
- exit when INDEX > N;
- end loop;
- L := L+L ;
- exit when l > m ;
- end loop;
-
- for I in 1 .. N loop
- Z(I).RP := SQRINV*Z(I).RP ;
- Z(I).IP := -SQRINV*Z(I).IP;
- end loop;
- end FFT;
-
- begin -- oscar
-
- EXPTAB(FFTSIZE,E) ;
- SEED := 5767 ;
- for I in 1 .. FFTSIZE loop
- UNIFORM11( SEED, ZR );
- UNIFORM11( SEED, ZI );
- Z(I).RP := 20.0*ZR - 10.0;
- Z(I).IP := 20.0*ZI - 10.0;
- end loop;
-
- for I in 1 .. 20 loop
- FFT(FFTSIZE,Z,W,E,0.0625) ;
- -- Printcomplex( 6, 99, z, 1, 256, 17 );
- end loop;
-
- end OSCAR;
-
-
- procedure ackerman is
- -- Ackerman function Ack(3,6) run 10 times:
- x : integer;
- function ack (m, n: integer) return integer is
- begin
- if m = 0 then
- return n + 1;
- elsif n = 0 then
- return ack (m - 1, 1);
- else
- return ack (m - 1, ack (m, n - 1));
- end if;
- end;
- begin
- for i in 1 .. 10 loop
- x := ack (3, 6);
- end loop;
- end ackerman;
-
-
- begin -- BENCH A00094
- INITRAND;
- for I in 1..SORTELEMENTS loop
- RANDARRAY(LISTSIZE(I)) := RAND;
- end loop;
- TEXT_IO.PUT_LINE("A000094");
- TEXT_IO.PUT(" Perm");timer := CPU_TIME_CLOCK;
- Perm; xtimes(1) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Towers");timer := CPU_TIME_CLOCK;
- Towers; xtimes(2) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Queens");timer := CPU_TIME_CLOCK;
- Queens; xtimes(3) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Intmm");timer := CPU_TIME_CLOCK;
- Intmm; xtimes(4) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Mm");timer := CPU_TIME_CLOCK;
- Mm; xtimes(5) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Puzzle");timer := CPU_TIME_CLOCK;
- Puzzle; xtimes(6) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Quick");timer := CPU_TIME_CLOCK;
- Quick; xtimes(7) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Bubble");timer := CPU_TIME_CLOCK;
- Bubble; xtimes(8) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Tree");timer := CPU_TIME_CLOCK;
- Trees; xtimes(9) := CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" FFT");timer := CPU_TIME_CLOCK;
- Oscar; xtimes(10):= CPU_TIME_CLOCK-timer;
- TEXT_IO.PUT(" Ack");timer := CPU_TIME_CLOCK;
- Ackerman;xtimes(11):= CPU_TIME_CLOCK-timer;
- TEXT_IO.NEW_LINE;
- for I in 1..11 loop
- DURATION_IO.PUT(XTIMES(I), FORE=>4, AFT=>2, EXP=>0);
- end loop;
- TEXT_IO.NEW_LINE;
-
- end A000094;
- ::::::::::
- A000098.ADA
- ::::::::::
- -- This is a sample skeleton test
- -- It is based on the concept of having a control loop
- -- and a test loop. The test loop has everything the control loop has
- -- plus CASE_COUNT copies of A feature to be measured.
- -- The time reported for the feature is based on many iterations.
- -- The measurement auto calibrates using the ITERATION package.
- -- The time calculation is a difference of a difference and thus
- -- removes measurement bias from many sources.
-
-
- -- PERFORMANCE MEASUREMENT : Comment here and at bottom on what measured
- -- more comments
- -- more comments
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure A000098 is -- main procedure to execute
-
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
- CASE_COUNT : constant := <number of repetitions> ;
- --
- -- More declarations may go here
- --
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 0.5 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A_ONE ; -- typical control loop is
- REMOTE ; -- these two statements
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- -- PROC_0 ; -- this has control global increment and call inside
- -- example of testing a feature in the test loop
- null;
- end loop ;
- end loop ;
- GLOBAL := GLOBAL / CASE_COUNT ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
- CPU_TIME := DURATION ( CPU_TIME / CASE_COUNT ) ;
- WALL_TIME := DURATION ( WALL_TIME / CASE_COUNT ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "A000098" , "Procedure" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Three lines of comments explaining what was measured " ,
- " more comments " ,
- " more comments" ) ;
-
- end A000098 ;
- ::::::::::
- A000099.ADA
- ::::::::::
- -- This is a sample skeleton test
- -- It is based on the concept of having a control loop
- -- and a test loop. The test loop has everything the control loop has
- -- plus one feature to be measured.
- -- The time reported for the feature is based on many iterations.
- -- The measurement auto calibrates using the ITERATION package.
- -- The time calculation is a difference of a difference and thus
- -- removes measurement bias from many sources.
-
-
- -- PERFORMANCE MEASUREMENT : Comment here and at bottom on what measured
- -- more comments
- -- more comments
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure A000099 is -- main procedure to execute
-
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
-
- --
- -- More declarations may go here
- --
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 0.5 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A_ONE ; -- typical control loop is
- REMOTE ; -- these two statements
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- -- PROC_0 ; -- this has control global increment and call inside
- -- example of testing a feature in the test loop
- null;
- end loop ;
- end loop ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "A000099" , "Procedure" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Three lines of comments explaining what was measured " ,
- " more comments " ,
- " more comments" ) ;
-
- end A000099 ;
- ::::::::::
- A000100.ADA
- ::::::::::
- -- This is a procedure that calls all the timing procedures once
-
- with A000091 ;
- --with A000092 ; -- comment out or provide host math library in A000092.ADA
- with A000093 ;
- with A000094 ;
- with C000001 ;
- with C000002 ;
- with C000003 ;
- with D000001 ;
- with D000002 ;
- with D000003 ;
- with D000004 ;
- with E000001 ;
- with E000002 ;
- with E000004 ;
- with F000001 ;
- with F000002 ;
- with G000001 ;
- with G000002 ;
- with G000003 ;
- with G000004 ;
- with G000005 ;
- with G000006 ;
- with G000007 ;
- with L000001 ;
- with L000002 ;
- with L000003 ;
- with P000001 ;
- with P000002 ;
- with P000003 ;
- with P000004 ;
- with P000005 ;
- with P000006 ;
- with P000007 ;
- with P000010 ;
- with P000011 ;
- with P000012 ;
- with P000013 ;
- with T000001 ;
- with T000002 ;
- with T000003 ;
- with T000004 ;
- with T000005 ;
- with T000006 ;
- --with T000007 ; -- may not work on some compilers
-
- procedure A000100 is
- begin
-
- A000091 ;
- -- A000092 ; -- comment out or provide host math routines in A000094.ADA
- A000093 ;
- A000094 ;
- C000001 ;
- C000002 ;
- C000003 ;
- D000001 ;
- D000002 ;
- D000003 ;
- D000004 ;
- E000001 ;
- E000002 ;
- E000004 ;
- F000001 ;
- F000002 ;
- G000001 ;
- G000002 ;
- G000003 ;
- G000004 ;
- G000005 ;
- G000006 ;
- G000007 ;
- L000001 ;
- L000002 ;
- L000003 ;
- P000001 ;
- P000002 ;
- P000003 ;
- P000004 ;
- P000005 ;
- P000006 ;
- P000007 ;
- P000010 ;
- P000011 ;
- P000012 ;
- P000013 ;
- T000001 ;
- T000002 ;
- T000003 ;
- T000004 ;
- T000005 ;
- T000006 ;
- -- T000007 ; -- only a check. it will not work on some hosts.
-
- end A000100 ;
- ::::::::::
- A000101.ADA
- ::::::::::
- -- This is a procedure that calls about half of the timing procedures once
-
- with A000091 ;
- with A000093 ;
- with A000094 ;
- with C000001 ;
- with C000002 ;
- with C000003 ;
- with D000001 ;
- with D000002 ;
- with D000003 ;
- with D000004 ;
- with E000001 ;
- with E000002 ;
- with E000004 ;
- with F000001 ;
- with F000002 ;
- with G000001 ;
- with G000002 ;
- with G000003 ;
- with G000004 ;
- with G000005 ;
- with G000006 ;
- with G000007 ;
-
- procedure A000101 is
- begin
-
- A000091 ;
- A000093 ;
- A000094 ;
- C000001 ;
- C000002 ;
- C000003 ;
- D000001 ;
- D000002 ;
- D000003 ;
- D000004 ;
- E000001 ;
- E000002 ;
- E000004 ;
- F000001 ;
- F000002 ;
- G000001 ;
- G000002 ;
- G000003 ;
- G000004 ;
- G000005 ;
- G000006 ;
- G000007 ;
-
- end A000101 ;
- ::::::::::
- A000102.ADA
- ::::::::::
- -- This is a procedure that calls the other half of the timing procedures once
-
- with L000001 ;
- with L000002 ;
- with L000003 ;
- with P000001 ;
- with P000002 ;
- with P000003 ;
- with P000004 ;
- with P000005 ;
- with P000006 ;
- with P000007 ;
- with P000010 ;
- with P000011 ;
- with P000012 ;
- with P000013 ;
- with T000001 ;
- with T000002 ;
- with T000003 ;
- with T000004 ;
- with T000005 ;
- with T000006 ;
-
- procedure A000102 is
- begin
-
- L000001 ;
- L000002 ;
- L000003 ;
- P000001 ;
- P000002 ;
- P000003 ;
- P000004 ;
- P000005 ;
- P000006 ;
- P000007 ;
- P000010 ;
- P000011 ;
- P000012 ;
- P000013 ;
- T000001 ;
- T000002 ;
- T000003 ;
- T000004 ;
- T000005 ;
- T000006 ;
-
- end A000102 ;
- ::::::::::
- A000103.ADA
- ::::::::::
- -- This is a procedure that calls most of the timing procedures 10 times
- -- The task timing is not set up for use in a loop
-
- with A000049 ; -- must be used with A000043, PIWG_IO to disk
- with A000091 ;
- --with A000092 ; -- comment out or provide host math library in A000092.ADA
- with A000093 ;
- with A000094 ;
- with C000001 ;
- with C000002 ;
- with C000003 ;
- with D000001 ;
- with D000002 ;
- with D000003 ;
- with D000004 ;
- with E000001 ;
- with E000002 ;
- with E000004 ;
- with F000001 ;
- with F000002 ;
- with G000001 ;
- with G000002 ;
- with G000003 ;
- with G000004 ;
- with G000005 ;
- with G000006 ;
- with G000007 ;
- with L000001 ;
- with L000002 ;
- with L000003 ;
- with P000001 ;
- with P000002 ;
- with P000003 ;
- with P000004 ;
- with P000005 ;
- with P000006 ;
- with P000007 ;
- with P000010 ;
- with P000011 ;
- with P000012 ;
- with P000013 ;
- with T000001 ;
- with T000002 ;
- with T000003 ;
- with T000004 ;
- with T000005 ;
- with T000006 ;
-
- procedure A000103 is
- begin
-
- A000091 ;
- -- A000092 ; -- comment out or provide host math routines
- A000093 ;
- A000094 ;
- C000001 ;
- C000002 ;
- C000003 ;
- for I in 1..10 loop -- data collected on disk, then averaged
- D000001 ;
- D000002 ;
- D000003 ;
- D000004 ;
- E000001 ;
- E000002 ;
- E000004 ;
- F000001 ;
- F000002 ;
- G000001 ;
- G000002 ;
- G000003 ;
- G000004 ;
- G000005 ;
- G000006 ;
- G000007 ;
- L000001 ;
- L000002 ;
- L000003 ;
- P000001 ;
- P000002 ;
- P000003 ;
- P000004 ;
- P000005 ;
- P000006 ;
- P000007 ;
- P000010 ;
- P000011 ;
- P000012 ;
- P000013 ;
- end loop ;
- T000001 ;
- T000002 ;
- T000003 ;
- T000004 ;
- T000005 ;
- T000006 ;
- -- T000007 ; -- only a check. it will not work on some hosts.
- A000049 ; -- write out timing report
- end ;
- ::::::::::
- A000104.ADA
- ::::::::::
- -- This is a procedure that calls the composite benchmarks once
-
- with A000091 ;
- --with A000092 ; -- provide local math routines & fix up A000092.ADA
- with A000093 ;
- with A000094 ;
-
- procedure A000104 is
- begin
-
- A000091 ;
- -- A000092 ;
- A000093 ;
- A000094 ;
-
- end A000104 ;
- ::::::::::
- A000105.ADA
- ::::::::::
- -- This is a procedure that calls the non I/O, non tasking timing procedures
-
- with D000001 ;
- with D000002 ;
- with D000003 ;
- with D000004 ;
- with E000001 ;
- with E000002 ;
- with E000004 ;
- with F000001 ;
- with F000002 ;
- with L000001 ;
- with L000002 ;
- with L000003 ;
- with P000001 ;
- with P000002 ;
- with P000003 ;
- with P000004 ;
- with P000005 ;
- with P000006 ;
- with P000007 ;
- with P000010 ;
- with P000011 ;
- with P000012 ;
- with P000013 ;
-
- procedure A000105 is
- begin
-
- D000001 ;
- D000002 ;
- D000003 ;
- D000004 ;
- E000001 ;
- E000002 ;
- E000004 ;
- F000001 ;
- F000002 ;
- L000001 ;
- L000002 ;
- L000003 ;
- P000001 ;
- P000002 ;
- P000003 ;
- P000004 ;
- P000005 ;
- P000006 ;
- P000007 ;
- P000010 ;
- P000011 ;
- P000012 ;
- P000013 ;
-
- end A000105 ;
- ::::::::::
- A000106.ADA
- ::::::::::
- -- This is a procedure that calls the I/O timing procedures once
-
- with G000001 ;
- with G000002 ;
- with G000003 ;
- with G000004 ;
- with G000005 ;
- with G000006 ;
- with G000007 ;
-
- procedure A000106 is
- begin
-
- G000001 ;
- G000002 ;
- G000003 ;
- G000004 ;
- G000005 ;
- G000006 ;
- G000007 ;
-
- end A000106 ;
- ::::::::::
- A000107.ADA
- ::::::::::
- -- This is a procedure that calls the tasking related timing procedures
-
- with C000001 ;
- with C000002 ;
- with C000003 ;
- with T000001 ;
- with T000002 ;
- with T000003 ;
- with T000004 ;
- with T000005 ;
- with T000006 ;
- with T000007 ;
-
- procedure A000107 is
- begin
-
- C000001 ;
- C000002 ;
- C000003 ;
- T000001 ;
- T000002 ;
- T000003 ;
- T000004 ;
- T000005 ;
- T000006 ;
- T000007 ; -- only a check. it will not work on some hosts.
-
- end A000107 ;
- ::::::::::
- ACOMPILE.CLI
- ::::::::::
- Data General AOS files to compile ( using disk PIWG_IO )
- ADA A000001
- ADA A000013
- ADA A000021
- ADA A000022
- ADA A000031
- ADA A000032
- ADA A000041
- ADA A000043
- ADA A000049
- ADA/MAIN_PROGRAM A000051
- ADA/MAIN_PROGRAM A000052
- ADA/MAIN_PROGRAM A000053
- ADA/MAIN_PROGRAM A000054
- ADA?MAIN_PROGRAM A000055
- ADA A000091
- ADA A000093
- ADA A000094
- ADA C000001
- ADA C000002
- ADA C000003
- ADA D000001
- ADA D000002
- ADA D000003
- ADA D000004
- ADA E000001
- ADA E000002
- ADA E000004
- ADA F000001
- ADA F000002
- ADA G000001
- ADA G000002
- ADA G000003
- ADA G000004
- ADA G000005
- ADA G000006
- ADA G000007
- ADA L000001
- ADA L000002
- ADA L000003
- ADA P000001
- ADA P000002
- ADA P000003
- ADA P000004
- ADA P000005
- ADA P000006
- ADA P000007
- ADA P000010
- ADA P000011
- ADA P000012
- ADA P000013
- ADA T000001
- ADA T000002
- ADA T000003
- ADA T000004
- ADA T000005
- ADA T000006
- ADALINK A000051
- ADALINK A000052
- ADALINK A000053
- ADALINK A000054
- ADALINK A000055
- ADA/MAIN_PROGRAM A000103
- ADALINK A000103
- XEQ A000103
- ::::::::::
- ACOMPILE.COM
- ::::::::::
- $! RUN THIS FIRST ON VAX VMS ( Feature benchmarks )
- $!
- $! VAX VMS files to compile ( using disk PIWG_IO )
- $ SET VERIFY
- $ SET NOON
- $ SET DEF [.SIGADA.TAPE_8_31_86]
- $ ACS CREA LIB [.ADALIB]
- $ ACS SET LIB [.ADALIB]
- $ ADA A000001
- $ ADA A000012 ! VAX Ada dependent
- $ ADA A000021
- $ ADA A000022
- $ ADA A000031
- $ ADA A000032
- $ ADA A000041
- $ ADA A000043 ! using disk PIWG_IO
- $ ADA A000049 ! using disk reporting
- $ ADA A000051
- $ ADA A000052
- $ ADA A000053
- $ ADA A000054
- $ ADA A000055
- $ ADA A000091
- $ ADA A000092 ! VAX Ada dependent
- $ ADA A000093
- $ ADA A000094
- $ ADA C000001
- $ ADA C000002
- $ ADA C000003
- $ ADA D000001
- $ ADA D000002
- $ ADA D000003
- $ ADA D000004
- $ ADA E000001
- $ ADA E000002
- $ ADA E000004
- $ ADA F000001
- $ ADA F000002
- $ ADA G000001
- $ ADA G000002
- $ ADA G000003
- $ ADA G000004
- $ ADA G000005
- $ ADA G000006
- $ ADA G000007
- $ ADA L000001
- $ ADA L000002
- $ ADA L000003
- $ ADA P000001
- $ ADA P000002
- $ ADA P000003
- $ ADA P000004
- $ ADA P000005
- $ ADA P000006
- $ ADA P000007
- $ ADA P000010
- $ ADA P000011
- $ ADA P000012
- $ ADA P000013
- $ ADA T000001
- $ ADA T000002
- $ ADA T000003
- $ ADA T000004
- $ ADA T000005
- $ ADA T000006
- $ ADA T000007 ! execution possibly machine dependent
- $ ACS LINK A000051 ! needed by Z tests
- $ ACS LINK A000052
- $ ACS LINK A000053
- $ ACS LINK A000054
- $ ACS LINK A000055
- $ ADA A000103
- $ ACS LINK A000103
- $ RUN A000103 ! all feature tests in one procedure
- ::::::::::
- ACOMPILE.LR1
- ::::::::::
-
- ----------------------------------------------------------------------------
- !USERS..PIWG % COMPILATION.MAKE STARTED 12:25:24 PM
- ----------------------------------------------------------------------------
-
- 86/09/02 12:25:25 === [Compilation.Promote ("", ALL_PARTS, CODED, SAME_WORLD,
- 86/09/02 12:25:26 ... FALSE, PERSEVERE);].
- 86/09/02 12:25:33 !!! !USERS..PIWG.A000100'BODY has no default visible
- 86/09/02 12:25:33 ... part.
- 86/09/02 12:25:38 +++ !USERS..PIWG.GLOBAL_DEF has been INSTALLED.
- 86/09/02 12:25:40 +++ !USERS..PIWG.PACK_1 has been INSTALLED.
- 86/09/02 12:25:42 +++ !USERS..PIWG.A000091'BODY has been INSTALLED.
- 86/09/02 12:25:45 +++ !USERS..PIWG.CPU_TIME_CLOCK'BODY has been
- 86/09/02 12:25:45 ... INSTALLED.
- 86/09/02 12:27:19 +++ !USERS..PIWG.A000093'BODY has been INSTALLED.
- 86/09/02 12:27:21 +++ !USERS..PIWG.REMOTE_GLOBAL has been INSTALLED.
- 86/09/02 12:27:21 +++ !USERS..PIWG.CREATE_PACK_1 has been INSTALLED.
- 86/09/02 12:27:23 +++ !USERS..PIWG.ITERATION has been INSTALLED.
- 86/09/02 12:27:26 +++ !USERS..PIWG.PIWG_IO has been INSTALLED.
- 86/09/02 12:27:33 +++ !USERS..PIWG.C000001'BODY has been INSTALLED.
- 86/09/02 12:27:34 +++ !USERS..PIWG.CREATE_PACK_2 has been INSTALLED.
- 86/09/02 12:27:40 +++ !USERS..PIWG.C000002'BODY has been INSTALLED.
- 86/09/02 12:27:46 +++ !USERS..PIWG.C000003'BODY has been INSTALLED.
- 86/09/02 12:27:48 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_1 has been
- 86/09/02 12:27:48 ... INSTALLED.
- 86/09/02 12:27:54 +++ !USERS..PIWG.D000001'BODY has been INSTALLED.
- 86/09/02 12:27:56 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_2 has been
- 86/09/02 12:27:56 ... INSTALLED.
- 86/09/02 12:28:01 +++ !USERS..PIWG.D000002'BODY has been INSTALLED.
- 86/09/02 12:28:03 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_3 has been
- 86/09/02 12:28:03 ... INSTALLED.
- 86/09/02 12:28:11 +++ !USERS..PIWG.D000003'BODY has been INSTALLED.
- 86/09/02 12:28:12 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_4 has been
- 86/09/02 12:28:13 ... INSTALLED.
- 86/09/02 12:28:19 +++ !USERS..PIWG.D000004'BODY has been INSTALLED.
- 86/09/02 12:28:27 +++ !USERS..PIWG.E000001'BODY has been INSTALLED.
- 86/09/02 12:28:28 +++ !USERS..PIWG.EXCEPT_PACK_2 has been INSTALLED.
- 86/09/02 12:28:35 +++ !USERS..PIWG.E000002'BODY has been INSTALLED.
- 86/09/02 12:28:36 +++ !USERS..PIWG.EXCEPT_PACK_4 has been INSTALLED.
- 86/09/02 12:28:43 +++ !USERS..PIWG.E000004'BODY has been INSTALLED.
- 86/09/02 12:28:51 +++ !USERS..PIWG.F000001'BODY has been INSTALLED.
- 86/09/02 12:28:59 +++ !USERS..PIWG.F000002'BODY has been INSTALLED.
- 86/09/02 12:29:09 +++ !USERS..PIWG.G000001'BODY has been INSTALLED.
- 86/09/02 12:29:18 +++ !USERS..PIWG.G000002'BODY has been INSTALLED.
- 86/09/02 12:29:26 +++ !USERS..PIWG.G000003'BODY has been INSTALLED.
- 86/09/02 12:29:34 +++ !USERS..PIWG.G000004'BODY has been INSTALLED.
- 86/09/02 12:29:43 +++ !USERS..PIWG.G000005'BODY has been INSTALLED.
- 86/09/02 12:29:52 +++ !USERS..PIWG.G000006'BODY has been INSTALLED.
- 86/09/02 12:29:59 +++ !USERS..PIWG.G000007'BODY has been INSTALLED.
- 86/09/02 12:30:05 +++ !USERS..PIWG.P000001'BODY has been INSTALLED.
- 86/09/02 12:30:11 +++ !USERS..PIWG.P000002'BODY has been INSTALLED.
- 86/09/02 12:30:12 +++ !USERS..PIWG.PROC_PACKAGE_3 has been INSTALLED.
- 86/09/02 12:30:18 +++ !USERS..PIWG.P000003'BODY has been INSTALLED.
- 86/09/02 12:30:19 +++ !USERS..PIWG.PROC_PACKAGE_4 has been INSTALLED.
- 86/09/02 12:30:24 +++ !USERS..PIWG.P000004'BODY has been INSTALLED.
- 86/09/02 12:30:25 +++ !USERS..PIWG.PROC_PACKAGE_5 has been INSTALLED.
- 86/09/02 12:30:31 +++ !USERS..PIWG.P000005'BODY has been INSTALLED.
- 86/09/02 12:30:31 +++ !USERS..PIWG.PROC_PACKAGE_6 has been INSTALLED.
- 86/09/02 12:30:38 +++ !USERS..PIWG.P000006'BODY has been INSTALLED.
- 86/09/02 12:30:39 +++ !USERS..PIWG.PROC_PACKAGE_7 has been INSTALLED.
- 86/09/02 12:30:45 +++ !USERS..PIWG.P000007'BODY has been INSTALLED.
- 86/09/02 12:30:46 +++ !USERS..PIWG.PROC_PACKAGE_10 has been INSTALLED.
- 86/09/02 12:30:55 +++ !USERS..PIWG.P000010'BODY has been INSTALLED.
- 86/09/02 12:30:56 +++ !USERS..PIWG.PROC_PACKAGE_11 has been INSTALLED.
- 86/09/02 12:31:09 +++ !USERS..PIWG.P000011'BODY has been INSTALLED.
- 86/09/02 12:31:11 +++ !USERS..PIWG.PROC_PACKAGE_12 has been INSTALLED.
- 86/09/02 12:31:19 +++ !USERS..PIWG.P000012'BODY has been INSTALLED.
- 86/09/02 12:31:20 +++ !USERS..PIWG.PROC_PACKAGE_13 has been INSTALLED.
- 86/09/02 12:31:30 +++ !USERS..PIWG.P000013'BODY has been INSTALLED.
- 86/09/02 12:31:36 +++ !USERS..PIWG.T000001'BODY has been INSTALLED.
- 86/09/02 12:31:37 +++ !USERS..PIWG.TASK_PACK_2 has been INSTALLED.
- 86/09/02 12:31:43 +++ !USERS..PIWG.T000002'BODY has been INSTALLED.
- 86/09/02 12:31:44 +++ !USERS..PIWG.TASK_PACK_3 has been INSTALLED.
- 86/09/02 12:31:53 +++ !USERS..PIWG.T000003'BODY has been INSTALLED.
- 86/09/02 12:31:55 +++ !USERS..PIWG.TASK_PACK_4 has been INSTALLED.
- 86/09/02 12:32:04 +++ !USERS..PIWG.T000004'BODY has been INSTALLED.
- 86/09/02 12:32:06 +++ !USERS..PIWG.TASK_PACK_5 has been INSTALLED.
- 86/09/02 12:32:14 +++ !USERS..PIWG.T000005'BODY has been INSTALLED.
- 86/09/02 12:32:16 +++ !USERS..PIWG.TASK_PACK_6 has been INSTALLED.
- 86/09/02 12:32:23 +++ !USERS..PIWG.T000006'BODY has been INSTALLED.
- 86/09/02 12:32:33 +++ !USERS..PIWG.A000100'BODY has been INSTALLED.
- 86/09/02 12:32:36 +++ !USERS..PIWG.PACK_2 has been INSTALLED.
- 86/09/02 12:32:36 === !USERS..PIWG.CPU_TIME_CLOCK is already INSTALLED.
- 86/09/02 12:32:40 +++ !USERS..PIWG.DURATION_IO has been INSTALLED.
- 86/09/02 12:32:58 +++ !USERS..PIWG.PACK_1'BODY has been INSTALLED.
- 86/09/02 12:33:02 +++ !USERS..PIWG.REMOTE_GLOBAL'BODY has been
- 86/09/02 12:33:02 ... INSTALLED.
- 86/09/02 12:33:03 +++ !USERS..PIWG.CREATE_PACK_1'BODY has been
- 86/09/02 12:33:03 ... INSTALLED.
- 86/09/02 12:33:14 +++ !USERS..PIWG.ITERATION'BODY has been INSTALLED.
- 86/09/02 12:33:17 +++ !USERS..PIWG.PIWG_IO'BODY has been INSTALLED.
- 86/09/02 12:33:18 +++ !USERS..PIWG.CREATE_PACK_2'BODY has been
- 86/09/02 12:33:20 ... INSTALLED.
- 86/09/02 12:33:22 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_1'BODY has
- 86/09/02 12:33:23 ... been INSTALLED.
- 86/09/02 12:33:24 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_2'BODY has
- 86/09/02 12:33:25 ... been INSTALLED.
- 86/09/02 12:33:27 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_3'BODY has
- 86/09/02 12:33:27 ... been INSTALLED.
- 86/09/02 12:33:29 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_4'BODY has
- 86/09/02 12:33:29 ... been INSTALLED.
- 86/09/02 12:33:30 +++ !USERS..PIWG.EXCEPT_PACK_2'BODY has been
- 86/09/02 12:33:30 ... INSTALLED.
- 86/09/02 12:33:32 +++ !USERS..PIWG.EXCEPT_PACK_4'BODY has been
- 86/09/02 12:33:32 ... INSTALLED.
- 86/09/02 12:33:33 +++ !USERS..PIWG.PROC_PACKAGE_3'BODY has been
- 86/09/02 12:33:33 ... INSTALLED.
- 86/09/02 12:33:34 +++ !USERS..PIWG.PROC_PACKAGE_4'BODY has been
- 86/09/02 12:33:34 ... INSTALLED.
- 86/09/02 12:33:36 +++ !USERS..PIWG.PROC_PACKAGE_5'BODY has been
- 86/09/02 12:33:36 ... INSTALLED.
- 86/09/02 12:33:37 +++ !USERS..PIWG.PROC_PACKAGE_6'BODY has been
- 86/09/02 12:33:37 ... INSTALLED.
- 86/09/02 12:33:38 +++ !USERS..PIWG.PROC_PACKAGE_7'BODY has been
- 86/09/02 12:33:38 ... INSTALLED.
- 86/09/02 12:33:41 +++ !USERS..PIWG.PROC_PACKAGE_10'BODY has been
- 86/09/02 12:33:41 ... INSTALLED.
- 86/09/02 12:33:44 +++ !USERS..PIWG.PROC_PACKAGE_11'BODY has been
- 86/09/02 12:33:44 ... INSTALLED.
- 86/09/02 12:33:46 +++ !USERS..PIWG.PROC_PACKAGE_12'BODY has been
- 86/09/02 12:33:46 ... INSTALLED.
- 86/09/02 12:33:51 +++ !USERS..PIWG.PROC_PACKAGE_13'BODY has been
- 86/09/02 12:33:51 ... INSTALLED.
- 86/09/02 12:33:52 +++ !USERS..PIWG.TASK_PACK_2'BODY has been INSTALLED.
- 86/09/02 12:33:54 +++ !USERS..PIWG.TASK_PACK_3'BODY has been INSTALLED.
- 86/09/02 12:33:55 +++ !USERS..PIWG.TASK_PACK_4'BODY has been INSTALLED.
- 86/09/02 12:33:59 +++ !USERS..PIWG.TASK_PACK_5'BODY has been INSTALLED.
- 86/09/02 12:34:02 +++ !USERS..PIWG.TASK_PACK_6'BODY has been INSTALLED.
- 86/09/02 12:34:12 +++ !USERS..PIWG.PACK_2'BODY has been INSTALLED.
- 86/09/02 12:34:15 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:34:15 ... GLOBAL_DEF to CODED.
- 86/09/02 12:34:16 --- 129 instructions for package GLOBAL_DEF.
- 86/09/02 12:34:16 --- 238 instructions for segment 46343.
- 86/09/02 12:34:16 +++ !USERS..PIWG.GLOBAL_DEF has been CODED.
- 86/09/02 12:34:16 +++ !USERS..PIWG.PACK_1 has been CODED.
- 86/09/02 12:34:17 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:34:17 ... A000091'BODY to CODED.
- 86/09/02 12:34:17 --- 10 instructions for subprog A000091.
- 86/09/02 12:34:18 --- 48 instructions for segment 47367.
- 86/09/02 12:34:19 +++ !USERS..PIWG.A000091'BODY has been CODED.
- 86/09/02 12:34:25 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:34:27 ... CPU_TIME_CLOCK'BODY to CODED.
- 86/09/02 12:34:27 --- 12 instructions for subprog CPU_TIME_CLOCK.
- 86/09/02 12:34:27 --- 48 instructions for segment 48391.
- 86/09/02 12:34:27 +++ !USERS..PIWG.CPU_TIME_CLOCK'BODY has been CODED.
- 86/09/02 12:35:39 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:35:40 ... A000093'BODY to CODED.
- 86/09/02 12:35:40 --- 1329 instructions for subprog A000093.
- 86/09/02 12:35:40 --- 2392 instructions for segment 49415.
- 86/09/02 12:35:40 +++ !USERS..PIWG.A000093'BODY has been CODED.
- 86/09/02 12:35:41 +++ !USERS..PIWG.REMOTE_GLOBAL has been CODED.
- 86/09/02 12:35:42 +++ !USERS..PIWG.CREATE_PACK_1 has been CODED.
- 86/09/02 12:35:42 +++ !USERS..PIWG.ITERATION has been CODED.
- 86/09/02 12:35:43 +++ !USERS..PIWG.PIWG_IO has been CODED.
- 86/09/02 12:35:46 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:35:46 ... C000001'BODY to CODED.
- 86/09/02 12:35:46 --- 94 instructions for subprog C000001.
- 86/09/02 12:35:46 --- 257 instructions for segment 50439.
- 86/09/02 12:35:47 +++ !USERS..PIWG.C000001'BODY has been CODED.
- 86/09/02 12:35:49 +++ !USERS..PIWG.CREATE_PACK_2 has been CODED.
- 86/09/02 12:35:59 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:35:59 ... C000002'BODY to CODED.
- 86/09/02 12:35:59 --- 94 instructions for subprog C000002.
- 86/09/02 12:35:59 --- 257 instructions for segment 51463.
- 86/09/02 12:35:59 +++ !USERS..PIWG.C000002'BODY has been CODED.
- 86/09/02 12:36:02 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:02 ... C000003'BODY to CODED.
- 86/09/02 12:36:02 --- 14 instructions for task T1.
- 86/09/02 12:36:02 --- 106 instructions for subprog C000003.
- 86/09/02 12:36:02 --- 310 instructions for segment 52487.
- 86/09/02 12:36:02 +++ !USERS..PIWG.C000003'BODY has been CODED.
- 86/09/02 12:36:03 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_1 has been
- 86/09/02 12:36:03 ... CODED.
- 86/09/02 12:36:06 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:06 ... D000001'BODY to CODED.
- 86/09/02 12:36:06 --- 88 instructions for subprog D000001.
- 86/09/02 12:36:06 --- 273 instructions for segment 53511.
- 86/09/02 12:36:06 +++ !USERS..PIWG.D000001'BODY has been CODED.
- 86/09/02 12:36:07 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_2 has been
- 86/09/02 12:36:07 ... CODED.
- 86/09/02 12:36:09 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:09 ... D000002'BODY to CODED.
- 86/09/02 12:36:09 --- 88 instructions for subprog D000002.
- 86/09/02 12:36:09 --- 257 instructions for segment 54535.
- 86/09/02 12:36:09 +++ !USERS..PIWG.D000002'BODY has been CODED.
- 86/09/02 12:36:10 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_3 has been
- 86/09/02 12:36:10 ... CODED.
- 86/09/02 12:36:12 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:12 ... D000003'BODY to CODED.
- 86/09/02 12:36:12 --- 88 instructions for subprog D000003.
- 86/09/02 12:36:12 --- 257 instructions for segment 55559.
- 86/09/02 12:36:12 +++ !USERS..PIWG.D000003'BODY has been CODED.
- 86/09/02 12:36:13 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_4 has been
- 86/09/02 12:36:13 ... CODED.
- 86/09/02 12:36:15 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:15 ... D000004'BODY to CODED.
- 86/09/02 12:36:15 --- 88 instructions for subprog D000004.
- 86/09/02 12:36:15 --- 265 instructions for segment 56583.
- 86/09/02 12:36:15 +++ !USERS..PIWG.D000004'BODY has been CODED.
- 86/09/02 12:36:19 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:19 ... E000001'BODY to CODED.
- 86/09/02 12:36:19 --- 157 instructions for subprog E000001.
- 86/09/02 12:36:19 --- 331 instructions for segment 57607.
- 86/09/02 12:36:19 +++ !USERS..PIWG.E000001'BODY has been CODED.
- 86/09/02 12:36:20 +++ !USERS..PIWG.EXCEPT_PACK_2 has been CODED.
- 86/09/02 12:36:23 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:23 ... E000002'BODY to CODED.
- 86/09/02 12:36:23 --- 131 instructions for subprog E000002.
- 86/09/02 12:36:23 --- 310 instructions for segment 58631.
- 86/09/02 12:36:23 +++ !USERS..PIWG.E000002'BODY has been CODED.
- 86/09/02 12:36:24 +++ !USERS..PIWG.EXCEPT_PACK_4 has been CODED.
- 86/09/02 12:36:27 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:27 ... E000004'BODY to CODED.
- 86/09/02 12:36:27 --- 131 instructions for subprog E000004.
- 86/09/02 12:36:27 --- 302 instructions for segment 59655.
- 86/09/02 12:36:27 +++ !USERS..PIWG.E000004'BODY has been CODED.
- 86/09/02 12:36:30 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:30 ... F000001'BODY to CODED.
- 86/09/02 12:36:30 --- 134 instructions for subprog F000001.
- 86/09/02 12:36:30 --- 303 instructions for segment 60679.
- 86/09/02 12:36:30 +++ !USERS..PIWG.F000001'BODY has been CODED.
- 86/09/02 12:36:33 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:33 ... F000002'BODY to CODED.
- 86/09/02 12:36:34 --- 139 instructions for subprog F000002.
- 86/09/02 12:36:34 --- 305 instructions for segment 61703.
- 86/09/02 12:36:34 +++ !USERS..PIWG.F000002'BODY has been CODED.
- 86/09/02 12:36:38 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:38 ... G000001'BODY to CODED.
- 86/09/02 12:36:38 --- 159 instructions for subprog G000001.
- 86/09/02 12:36:38 --- 342 instructions for segment 62727.
- 86/09/02 12:36:38 +++ !USERS..PIWG.G000001'BODY has been CODED.
- 86/09/02 12:36:48 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:48 ... G000002'BODY to CODED.
- 86/09/02 12:36:49 --- 173 instructions for subprog G000002.
- 86/09/02 12:36:49 --- 387 instructions for segment 63751.
- 86/09/02 12:36:49 +++ !USERS..PIWG.G000002'BODY has been CODED.
- 86/09/02 12:36:52 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:52 ... G000003'BODY to CODED.
- 86/09/02 12:36:52 --- 138 instructions for subprog G000003.
- 86/09/02 12:36:52 --- 306 instructions for segment 64775.
- 86/09/02 12:36:52 +++ !USERS..PIWG.G000003'BODY has been CODED.
- 86/09/02 12:36:55 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:36:55 ... G000004'BODY to CODED.
- 86/09/02 12:36:55 --- 154 instructions for subprog G000004.
- 86/09/02 12:36:55 --- 351 instructions for segment 65799.
- 86/09/02 12:36:55 +++ !USERS..PIWG.G000004'BODY has been CODED.
- 86/09/02 12:37:01 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:01 ... G000005'BODY to CODED.
- 86/09/02 12:37:01 --- 140 instructions for subprog G000005.
- 86/09/02 12:37:01 --- 329 instructions for segment 66823.
- 86/09/02 12:37:01 +++ !USERS..PIWG.G000005'BODY has been CODED.
- 86/09/02 12:37:07 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:07 ... G000006'BODY to CODED.
- 86/09/02 12:37:07 --- 158 instructions for subprog G000006.
- 86/09/02 12:37:07 --- 371 instructions for segment 67847.
- 86/09/02 12:37:08 +++ !USERS..PIWG.G000006'BODY has been CODED.
- 86/09/02 12:37:11 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:11 ... G000007'BODY to CODED.
- 86/09/02 12:37:12 --- 135 instructions for subprog G000007.
- 86/09/02 12:37:12 --- 320 instructions for segment 68871.
- 86/09/02 12:37:12 +++ !USERS..PIWG.G000007'BODY has been CODED.
- 86/09/02 12:37:15 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:15 ... P000001'BODY to CODED.
- 86/09/02 12:37:15 --- 107 instructions for subprog P000001.
- 86/09/02 12:37:15 --- 266 instructions for segment 69895.
- 86/09/02 12:37:15 +++ !USERS..PIWG.P000001'BODY has been CODED.
- 86/09/02 12:37:18 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:18 ... P000002'BODY to CODED.
- 86/09/02 12:37:18 --- 112 instructions for subprog P000002.
- 86/09/02 12:37:18 --- 267 instructions for segment 70919.
- 86/09/02 12:37:19 +++ !USERS..PIWG.P000002'BODY has been CODED.
- 86/09/02 12:37:21 +++ !USERS..PIWG.PROC_PACKAGE_3 has been CODED.
- 86/09/02 12:37:25 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:25 ... P000003'BODY to CODED.
- 86/09/02 12:37:25 --- 94 instructions for subprog P000003.
- 86/09/02 12:37:25 --- 257 instructions for segment 71943.
- 86/09/02 12:37:25 +++ !USERS..PIWG.P000003'BODY has been CODED.
- 86/09/02 12:37:26 +++ !USERS..PIWG.PROC_PACKAGE_4 has been CODED.
- 86/09/02 12:37:29 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:29 ... P000004'BODY to CODED.
- 86/09/02 12:37:29 --- 94 instructions for subprog P000004.
- 86/09/02 12:37:29 --- 257 instructions for segment 72967.
- 86/09/02 12:37:29 +++ !USERS..PIWG.P000004'BODY has been CODED.
- 86/09/02 12:37:30 +++ !USERS..PIWG.PROC_PACKAGE_5 has been CODED.
- 86/09/02 12:37:32 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:33 ... P000005'BODY to CODED.
- 86/09/02 12:37:33 --- 96 instructions for subprog P000005.
- 86/09/02 12:37:33 --- 257 instructions for segment 73991.
- 86/09/02 12:37:34 +++ !USERS..PIWG.P000005'BODY has been CODED.
- 86/09/02 12:37:38 +++ !USERS..PIWG.PROC_PACKAGE_6 has been CODED.
- 86/09/02 12:37:44 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:44 ... P000006'BODY to CODED.
- 86/09/02 12:37:44 --- 107 instructions for subprog P000006.
- 86/09/02 12:37:44 --- 276 instructions for segment 75015.
- 86/09/02 12:37:44 +++ !USERS..PIWG.P000006'BODY has been CODED.
- 86/09/02 12:37:45 +++ !USERS..PIWG.PROC_PACKAGE_7 has been CODED.
- 86/09/02 12:37:49 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:49 ... P000007'BODY to CODED.
- 86/09/02 12:37:49 --- 99 instructions for subprog P000007.
- 86/09/02 12:37:49 --- 266 instructions for segment 76039.
- 86/09/02 12:37:49 +++ !USERS..PIWG.P000007'BODY has been CODED.
- 86/09/02 12:37:50 +++ !USERS..PIWG.PROC_PACKAGE_10 has been CODED.
- 86/09/02 12:37:54 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:37:54 ... P000010'BODY to CODED.
- 86/09/02 12:37:54 --- 205 instructions for subprog P000010.
- 86/09/02 12:37:54 --- 355 instructions for segment 77063.
- 86/09/02 12:37:54 +++ !USERS..PIWG.P000010'BODY has been CODED.
- 86/09/02 12:37:55 +++ !USERS..PIWG.PROC_PACKAGE_11 has been CODED.
- 86/09/02 12:38:04 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:04 ... P000011'BODY to CODED.
- 86/09/02 12:38:04 --- 330 instructions for subprog P000011.
- 86/09/02 12:38:04 --- 477 instructions for segment 78087.
- 86/09/02 12:38:04 +++ !USERS..PIWG.P000011'BODY has been CODED.
- 86/09/02 12:38:07 +++ !USERS..PIWG.PROC_PACKAGE_12 has been CODED.
- 86/09/02 12:38:10 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:10 ... P000012'BODY to CODED.
- 86/09/02 12:38:10 --- 165 instructions for subprog P000012.
- 86/09/02 12:38:11 --- 314 instructions for segment 79111.
- 86/09/02 12:38:11 +++ !USERS..PIWG.P000012'BODY has been CODED.
- 86/09/02 12:38:11 +++ !USERS..PIWG.PROC_PACKAGE_13 has been CODED.
- 86/09/02 12:38:21 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:21 ... P000013'BODY to CODED.
- 86/09/02 12:38:21 --- 220 instructions for subprog P000013.
- 86/09/02 12:38:21 --- 370 instructions for segment 80135.
- 86/09/02 12:38:21 +++ !USERS..PIWG.P000013'BODY has been CODED.
- 86/09/02 12:38:28 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:28 ... T000001'BODY to CODED.
- 86/09/02 12:38:28 --- 24 instructions for task T1.
- 86/09/02 12:38:28 --- 107 instructions for subprog T000001.
- 86/09/02 12:38:28 --- 296 instructions for segment 81159.
- 86/09/02 12:38:28 +++ !USERS..PIWG.T000001'BODY has been CODED.
- 86/09/02 12:38:29 +++ !USERS..PIWG.TASK_PACK_2 has been CODED.
- 86/09/02 12:38:32 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:32 ... T000002'BODY to CODED.
- 86/09/02 12:38:32 --- 99 instructions for subprog T000002.
- 86/09/02 12:38:32 --- 250 instructions for segment 82183.
- 86/09/02 12:38:32 +++ !USERS..PIWG.T000002'BODY has been CODED.
- 86/09/02 12:38:33 +++ !USERS..PIWG.TASK_PACK_3 has been CODED.
- 86/09/02 12:38:36 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:36 ... T000003'BODY to CODED.
- 86/09/02 12:38:36 --- 121 instructions for subprog T000003.
- 86/09/02 12:38:36 --- 280 instructions for segment 83207.
- 86/09/02 12:38:36 +++ !USERS..PIWG.T000003'BODY has been CODED.
- 86/09/02 12:38:37 +++ !USERS..PIWG.TASK_PACK_4 has been CODED.
- 86/09/02 12:38:40 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:40 ... T000004'BODY to CODED.
- 86/09/02 12:38:40 --- 118 instructions for subprog T000004.
- 86/09/02 12:38:40 --- 279 instructions for segment 84231.
- 86/09/02 12:38:40 +++ !USERS..PIWG.T000004'BODY has been CODED.
- 86/09/02 12:38:41 +++ !USERS..PIWG.TASK_PACK_5 has been CODED.
- 86/09/02 12:38:44 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:44 ... T000005'BODY to CODED.
- 86/09/02 12:38:44 --- 162 instructions for subprog T000005.
- 86/09/02 12:38:44 --- 341 instructions for segment 85255.
- 86/09/02 12:38:44 +++ !USERS..PIWG.T000005'BODY has been CODED.
- 86/09/02 12:38:45 +++ !USERS..PIWG.TASK_PACK_6 has been CODED.
- 86/09/02 12:38:48 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:48 ... T000006'BODY to CODED.
- 86/09/02 12:38:48 --- 135 instructions for subprog T000006.
- 86/09/02 12:38:48 --- 292 instructions for segment 86279.
- 86/09/02 12:38:48 +++ !USERS..PIWG.T000006'BODY has been CODED.
- 86/09/02 12:38:51 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:51 ... A000100'BODY to CODED.
- 86/09/02 12:38:51 --- 46 instructions for subprog A000100.
- 86/09/02 12:38:51 --- 125 instructions for segment 87303.
- 86/09/02 12:38:51 +++ !USERS..PIWG.A000100'BODY has been CODED.
- 86/09/02 12:38:52 +++ !USERS..PIWG.PACK_2 has been CODED.
- 86/09/02 12:38:52 === !USERS..PIWG.CPU_TIME_CLOCK is already CODED.
- 86/09/02 12:38:53 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:38:54 ... DURATION_IO to CODED.
- 86/09/02 12:38:54 --- 11 instructions for package DURATION_IO.
- 86/09/02 12:38:54 --- 41 instructions for segment 88327.
- 86/09/02 12:38:54 +++ !USERS..PIWG.DURATION_IO has been CODED.
- 86/09/02 12:39:00 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:00 ... PACK_1'BODY to CODED.
- 86/09/02 12:39:00 --- 356 instructions for package PACK_1.
- 86/09/02 12:39:00 --- 645 instructions for segment 89351.
- 86/09/02 12:39:00 +++ !USERS..PIWG.PACK_1'BODY has been CODED.
- 86/09/02 12:39:03 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:03 ... REMOTE_GLOBAL'BODY to CODED.
- 86/09/02 12:39:03 --- 48 instructions for package REMOTE_GLOBAL.
- 86/09/02 12:39:04 --- 154 instructions for segment 90375.
- 86/09/02 12:39:04 +++ !USERS..PIWG.REMOTE_GLOBAL'BODY has been CODED.
- 86/09/02 12:39:05 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:05 ... CREATE_PACK_1'BODY to CODED.
- 86/09/02 12:39:06 --- 14 instructions for task T1.
- 86/09/02 12:39:06 --- 21 instructions for package CREATE_PACK_1.
- 86/09/02 12:39:06 --- 105 instructions for segment 91399.
- 86/09/02 12:39:06 +++ !USERS..PIWG.CREATE_PACK_1'BODY has been CODED.
- 86/09/02 12:39:20 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:20 ... ITERATION'BODY to CODED.
- 86/09/02 12:39:20 --- 245 instructions for package ITERATION.
- 86/09/02 12:39:20 --- 548 instructions for segment 92423.
- 86/09/02 12:39:20 +++ !USERS..PIWG.ITERATION'BODY has been CODED.
- 86/09/02 12:39:22 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:22 ... PIWG_IO'BODY to CODED.
- 86/09/02 12:39:22 --- 69 instructions for package PIWG_IO.
- 86/09/02 12:39:22 --- 226 instructions for segment 93447.
- 86/09/02 12:39:22 +++ !USERS..PIWG.PIWG_IO'BODY has been CODED.
- 86/09/02 12:39:24 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:24 ... CREATE_PACK_2'BODY to CODED.
- 86/09/02 12:39:24 --- 14 instructions for task T1.
- 86/09/02 12:39:24 --- 18 instructions for package CREATE_PACK_2.
- 86/09/02 12:39:24 --- 104 instructions for segment 95495.
- 86/09/02 12:39:24 +++ !USERS..PIWG.CREATE_PACK_2'BODY has been CODED.
- 86/09/02 12:39:26 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:26 ... DYNAMIC_ARRAY_PACKAGE_1'BODY to CODED.
- 86/09/02 12:39:26 --- 75 instructions for package
- 86/09/02 12:39:26 ... DYNAMIC_ARRAY_PACKAGE_1.
- 86/09/02 12:39:26 --- 149 instructions for segment 96519.
- 86/09/02 12:39:26 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_1'BODY has
- 86/09/02 12:39:27 ... been CODED.
- 86/09/02 12:39:29 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:29 ... DYNAMIC_ARRAY_PACKAGE_2'BODY to CODED.
- 86/09/02 12:39:29 --- 104 instructions for package
- 86/09/02 12:39:29 ... DYNAMIC_ARRAY_PACKAGE_2.
- 86/09/02 12:39:29 --- 173 instructions for segment 97543.
- 86/09/02 12:39:29 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_2'BODY has
- 86/09/02 12:39:29 ... been CODED.
- 86/09/02 12:39:32 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:32 ... DYNAMIC_ARRAY_PACKAGE_3'BODY to CODED.
- 86/09/02 12:39:32 --- 113 instructions for package
- 86/09/02 12:39:32 ... DYNAMIC_ARRAY_PACKAGE_3.
- 86/09/02 12:39:32 --- 202 instructions for segment 98567.
- 86/09/02 12:39:32 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_3'BODY has
- 86/09/02 12:39:32 ... been CODED.
- 86/09/02 12:39:35 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:35 ... DYNAMIC_ARRAY_PACKAGE_4'BODY to CODED.
- 86/09/02 12:39:35 --- 195 instructions for package
- 86/09/02 12:39:35 ... DYNAMIC_ARRAY_PACKAGE_4.
- 86/09/02 12:39:35 --- 290 instructions for segment 99591.
- 86/09/02 12:39:35 +++ !USERS..PIWG.DYNAMIC_ARRAY_PACKAGE_4'BODY has
- 86/09/02 12:39:35 ... been CODED.
- 86/09/02 12:39:37 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:37 ... EXCEPT_PACK_2'BODY to CODED.
- 86/09/02 12:39:37 --- 40 instructions for package EXCEPT_PACK_2.
- 86/09/02 12:39:37 --- 99 instructions for segment 100615.
- 86/09/02 12:39:37 +++ !USERS..PIWG.EXCEPT_PACK_2'BODY has been CODED.
- 86/09/02 12:39:39 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:39 ... EXCEPT_PACK_4'BODY to CODED.
- 86/09/02 12:39:39 --- 46 instructions for package EXCEPT_PACK_4.
- 86/09/02 12:39:39 --- 147 instructions for segment 101639.
- 86/09/02 12:39:39 +++ !USERS..PIWG.EXCEPT_PACK_4'BODY has been CODED.
- 86/09/02 12:39:40 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:40 ... PROC_PACKAGE_3'BODY to CODED.
- 86/09/02 12:39:40 --- 19 instructions for package PROC_PACKAGE_3.
- 86/09/02 12:39:41 --- 67 instructions for segment 102663.
- 86/09/02 12:39:41 +++ !USERS..PIWG.PROC_PACKAGE_3'BODY has been CODED.
- 86/09/02 12:39:42 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:42 ... PROC_PACKAGE_4'BODY to CODED.
- 86/09/02 12:39:42 --- 19 instructions for package PROC_PACKAGE_4.
- 86/09/02 12:39:42 --- 67 instructions for segment 103687.
- 86/09/02 12:39:42 +++ !USERS..PIWG.PROC_PACKAGE_4'BODY has been CODED.
- 86/09/02 12:39:44 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:44 ... PROC_PACKAGE_5'BODY to CODED.
- 86/09/02 12:39:44 --- 18 instructions for package PROC_PACKAGE_5.
- 86/09/02 12:39:44 --- 67 instructions for segment 104711.
- 86/09/02 12:39:44 +++ !USERS..PIWG.PROC_PACKAGE_5'BODY has been CODED.
- 86/09/02 12:39:45 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:45 ... PROC_PACKAGE_6'BODY to CODED.
- 86/09/02 12:39:46 --- 13 instructions for package PROC_PACKAGE_6.
- 86/09/02 12:39:46 --- 67 instructions for segment 105735.
- 86/09/02 12:39:46 +++ !USERS..PIWG.PROC_PACKAGE_6'BODY has been CODED.
- 86/09/02 12:39:47 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:47 ... PROC_PACKAGE_7'BODY to CODED.
- 86/09/02 12:39:47 --- 17 instructions for package PROC_PACKAGE_7.
- 86/09/02 12:39:47 --- 67 instructions for segment 106759.
- 86/09/02 12:39:47 +++ !USERS..PIWG.PROC_PACKAGE_7'BODY has been CODED.
- 86/09/02 12:39:49 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:50 ... PROC_PACKAGE_10'BODY to CODED.
- 86/09/02 12:39:50 --- 44 instructions for package PROC_PACKAGE_10.
- 86/09/02 12:39:50 --- 91 instructions for segment 107783.
- 86/09/02 12:39:50 +++ !USERS..PIWG.PROC_PACKAGE_10'BODY has been CODED.
- 86/09/02 12:39:53 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:39:54 ... PROC_PACKAGE_11'BODY to CODED.
- 86/09/02 12:39:55 --- 79 instructions for package PROC_PACKAGE_11.
- 86/09/02 12:39:55 --- 115 instructions for segment 108807.
- 86/09/02 12:39:56 +++ !USERS..PIWG.PROC_PACKAGE_11'BODY has been CODED.
- 86/09/02 12:40:00 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:00 ... PROC_PACKAGE_12'BODY to CODED.
- 86/09/02 12:40:00 --- 60 instructions for package PROC_PACKAGE_12.
- 86/09/02 12:40:01 --- 100 instructions for segment 109831.
- 86/09/02 12:40:01 +++ !USERS..PIWG.PROC_PACKAGE_12'BODY has been CODED.
- 86/09/02 12:40:05 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:05 ... PROC_PACKAGE_13'BODY to CODED.
- 86/09/02 12:40:05 --- 105 instructions for package PROC_PACKAGE_13.
- 86/09/02 12:40:05 --- 140 instructions for segment 110855.
- 86/09/02 12:40:05 +++ !USERS..PIWG.PROC_PACKAGE_13'BODY has been CODED.
- 86/09/02 12:40:07 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:07 ... TASK_PACK_2'BODY to CODED.
- 86/09/02 12:40:07 --- 24 instructions for task T1.
- 86/09/02 12:40:07 --- 13 instructions for package TASK_PACK_2.
- 86/09/02 12:40:07 --- 103 instructions for segment 111879.
- 86/09/02 12:40:07 +++ !USERS..PIWG.TASK_PACK_2'BODY has been CODED.
- 86/09/02 12:40:09 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:09 ... TASK_PACK_3'BODY to CODED.
- 86/09/02 12:40:09 --- 24 instructions for task T1.
- 86/09/02 12:40:09 --- 24 instructions for task T2.
- 86/09/02 12:40:09 --- 22 instructions for package TASK_PACK_3.
- 86/09/02 12:40:09 --- 173 instructions for segment 112903.
- 86/09/02 12:40:09 +++ !USERS..PIWG.TASK_PACK_3'BODY has been CODED.
- 86/09/02 12:40:11 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:11 ... TASK_PACK_4'BODY to CODED.
- 86/09/02 12:40:11 --- 44 instructions for task T1.
- 86/09/02 12:40:11 --- 13 instructions for package TASK_PACK_4.
- 86/09/02 12:40:11 --- 135 instructions for segment 113927.
- 86/09/02 12:40:11 +++ !USERS..PIWG.TASK_PACK_4'BODY has been CODED.
- 86/09/02 12:40:20 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:20 ... TASK_PACK_5'BODY to CODED.
- 86/09/02 12:40:20 --- 24 instructions for task T1.
- 86/09/02 12:40:20 --- 24 instructions for task T2.
- 86/09/02 12:40:20 --- 24 instructions for task T3.
- 86/09/02 12:40:20 --- 24 instructions for task T4.
- 86/09/02 12:40:20 --- 24 instructions for task T5.
- 86/09/02 12:40:20 --- 24 instructions for task T6.
- 86/09/02 12:40:20 --- 24 instructions for task T7.
- 86/09/02 12:40:20 --- 24 instructions for task T8.
- 86/09/02 12:40:20 --- 24 instructions for task T9.
- 86/09/02 12:40:20 --- 24 instructions for task T10.
- 86/09/02 12:40:21 --- 94 instructions for package TASK_PACK_5.
- 86/09/02 12:40:21 --- 717 instructions for segment 114951.
- 86/09/02 12:40:21 +++ !USERS..PIWG.TASK_PACK_5'BODY has been CODED.
- 86/09/02 12:40:23 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:23 ... TASK_PACK_6'BODY to CODED.
- 86/09/02 12:40:23 --- 172 instructions for task T1.
- 86/09/02 12:40:23 --- 13 instructions for package TASK_PACK_6.
- 86/09/02 12:40:23 --- 359 instructions for segment 115975.
- 86/09/02 12:40:24 +++ !USERS..PIWG.TASK_PACK_6'BODY has been CODED.
- 86/09/02 12:40:27 --- Messages generated while promoting !USERS..PIWG.
- 86/09/02 12:40:27 ... PACK_2'BODY to CODED.
- 86/09/02 12:40:27 --- 217 instructions for package PACK_2.
- 86/09/02 12:40:27 --- 400 instructions for segment 116999.
- 86/09/02 12:40:27 +++ !USERS..PIWG.PACK_2'BODY has been CODED.
- 86/09/02 12:40:29 === 1 unit was already INSTALLED.
- 86/09/02 12:40:29 +++ 96 units were INSTALLED.
- 86/09/02 12:40:29 === 1 unit was already CODED.
- 86/09/02 12:40:29 +++ 96 units were CODED.
- 86/09/02 12:40:29 === [End of Compilation.Promote Command].
-
- ----------------------------------------------------------------------------
- !USERS..PIWG % A000100 STARTED 12:43:44 PM
- ----------------------------------------------------------------------------
-
- 0.33490 is time in milliseconds for one Dhrystone
-
- ADA Whetstone benchmark
-
- A000093 using standard internal math routines
-
-
- Whetstone start time: 11.86 seconds
-
- Whetstone stop time : 24.43 seconds
-
- Elapsed time for 10 cycles : 12.57 seconds
-
- Whetstone rating : 796 KWIPS
-
-
- Whetstone start time: 24.50 seconds
-
- Whetstone stop time : 49.62 seconds
-
- Elapsed time for 20 cycles : 25.12 seconds
-
- Whetstone rating : 796 KWIPS
-
-
- Whetstone start time: 49.73 seconds
-
- Whetstone stop time : 87.15 seconds
-
- Elapsed time for 30 cycles : 37.42 seconds
-
- Whetstone rating : 802 KWIPS
-
-
- Whetstone start time: 87.24 seconds
-
- Whetstone stop time : 137.90 seconds
-
- Elapsed time for 40 cycles : 50.67 seconds
-
- Whetstone rating : 789 KWIPS
-
-
- Whetstone start time: 138.03 seconds
-
- Whetstone stop time : 200.68 seconds
-
- Elapsed time for 50 cycles : 62.65 seconds
-
- Whetstone rating : 798 KWIPS
-
-
- Average time per cycle : 1255.90 milliseconds
-
- Average Whetstone rating : 796 KWIPS
-
-
-
- Test Name: C000001 Class Name: Tasking
- CPU Time: 3335.0 microseconds
- Wall Time: 11413.4 microseconds. Iteration Count: 4
- Test Description:
- Task create and terminate measurement
- with 1 task 0 entry when task is in a procedure
- in a package, no select statement, no loop, using a task type
-
-
-
- Test Name: C000002 Class Name: Tasking
- CPU Time: 841.9 microseconds
- Wall Time: 319.0 microseconds. Iteration Count: 16
- Test Description:
- Task create and terminate time measurement.
- with 1 task 0 entry when task is in a procedure,
- in a package, no select statement, no loop
-
-
-
- Test Name: C000003 Class Name: Tasking
- CPU Time: 832.5 microseconds
- Wall Time: 313.6 microseconds. Iteration Count: 16
- Test Description:
- Task create and terminate time measurement
- Task is in declare block of main procedure
- with 1 task 0 entry when task is in the loop
-
-
-
- Test Name: D000001 Class Name: Allocation
- CPU Time: 3.7 microseconds
- Wall Time: 4.4 microseconds. Iteration Count: 512
- Test Description:
- Dynamic array allocation, use and deallocation time measurement
- Dynamic array elaboration , 1000 integers in a procedure
- get space and free it in the procedure on each call
-
-
-
- Test Name: D000002 Class Name: Allocation
- CPU Time: 3852.5 microseconds
- Wall Time: 4266.9 microseconds. Iteration Count: 4
- Test Description:
- Dynamic array elaboration and initialization time measurement
- allocation, initialization, use and deallocation
- 1000 integers initialized by others=>1
-
-
-
- Test Name: D000003 Class Name: Allocation
- CPU Time: 32.4 microseconds
- Wall Time: 36.0 microseconds. Iteration Count: 256
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, allocating and deallocating
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: D000004 Class Name: Allocation
- CPU Time: 4012.5 microseconds
- Wall Time: 4616.9 microseconds. Iteration Count: 4
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, initializing by ( DYNAMIC_SIZE,(others=>1))
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: E000001 Class Name: Exception
- CPU Time: 10.7 microseconds
- Wall Time: 7.4 microseconds. Iteration Count: 512
- Test Description:
- Time to raise and handle an exception
- Exception defined locally and handled locally
-
-
-
-
- Test Name: E000002 Class Name: Exception
- CPU Time: 11.9 microseconds
- Wall Time: 12.8 microseconds. Iteration Count: 512
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a procedure in a package
-
-
-
-
- Test Name: E000004 Class Name: Procedure
- CPU Time: 15.4 microseconds
- Wall Time: 16.9 microseconds. Iteration Count: 256
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a package, 4 deep
-
-
-
-
- Test Name: F000001 Class Name: Style
- CPU Time: -2.5 microseconds
- Wall Time: 2.8 microseconds. Iteration Count: 1024
- Test Description:
- Time to set a boolean flag using a logical equation
- a local and a global integer are compared
- compare this test with F000002
-
-
-
- Test Name: F000002 Class Name: Style
- CPU Time: 3.7 microseconds
- Wall Time: 4.1 microseconds. Iteration Count: 1024
- Test Description:
- Time to set a boolean flag using an 'if' test
- a local and a global integer are compared
- compare this test with F000001
-
-
-
- Test Name: G000001 Class Name: Input/Output
- CPU Time: 363.4 microseconds
- Wall Time: 400.2 microseconds. Iteration Count: 32
- Test Description:
- TEXT_IO.GET_LINE reading 20 characters, time measured
- A scratch file is written, then read and reset
-
-
-
-
- Test Name: G000002 Class Name: Input/Output
- CPU Time: 1728.7 microseconds
- Wall Time: 1908.1 microseconds. Iteration Count: 8
- Test Description:
- TEXT_IO.GET called 20 times per line, time measured
- a scratch file is written, then read and reset
- Compare to G000001 for about same number of characters
-
-
-
- Test Name: G000003 Class Name: Input/Output
- CPU Time: 171.6 microseconds
- Wall Time: 190.7 microseconds. Iteration Count: 64
- Test Description:
- TEXT_IO.PUT_LINE for 20 characters, timing measurment
- a scratch file is opened, written and reset
-
-
-
-
- Test Name: G000004 Class Name: Input/Output
- CPU Time: 2371.3 microseconds
- Wall Time: 2621.8 microseconds. Iteration Count: 8
- Test Description:
- TEXT_IO.PUT 20 times with one character, time measurement
- a scratch file is written, reset and rewritten
- compare, approximately, to G000003
-
-
-
- Test Name: G000005 Class Name: Input/Output
- CPU Time: 584.4 microseconds
- Wall Time: 654.1 microseconds. Iteration Count: 16
- Test Description:
- TEXT_IO.GET an integer from a local string, timing measurement
- use TEXT_IO.PUT to convert 1..100 to a string
- then use TEXT_IO.GET to get the number back
-
-
-
- Test Name: G000006 Class Name: Input/Output
- CPU Time: 1717.5 microseconds
- Wall Time: 1705.5 microseconds. Iteration Count: 4
- Test Description:
- TEXT_IO.GET getting a floating point fraction from a local string
- Timing measurement on 0.001 to 0.01 range of numbers
- compare, approximately, to G000005 for integer vs float
-
-
-
- Test Name: G000007 Class Name: Input/Output
- CPU Time: 11250.0 microseconds
- Wall Time: 16319.0 microseconds. Iteration Count: 1
- Test Description:
- Open and close an existing file, time measurement
- A scratch file is created and closed
- The scratch file is opened IN_FILE and closed in a loop
-
-
-
- Test Name: P000001 Class Name: Procedure
- CPU Time: 4.1 microseconds
- Wall Time: 2.1 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time ( may be zero if automatic inlining )
- procedure is local
- no parameters
-
-
-
- Test Name: P000002 Class Name: Procedure
- CPU Time: 2.1 microseconds
- Wall Time: 2.3 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time
- Procedure is local, no parameters
- when procedure is not inlinable
-
-
-
- Test Name: P000003 Class Name: Procedure
- CPU Time: 3.7 microseconds
- Wall Time: 4.2 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000004 Class Name: Procedure
- CPU Time: 3.7 microseconds
- Wall Time: 4.1 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000005 Class Name: Procedure
- CPU Time: 3.9 microseconds
- Wall Time: 4.4 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000006 Class Name: Procedure
- CPU Time: 6.2 microseconds
- Wall Time: 4.5 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000007 Class Name: Procedure
- CPU Time: 4.5 microseconds
- Wall Time: 5.1 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000010 Class Name: Procedure
- CPU Time: 13.4 microseconds
- Wall Time: 14.6 microseconds. Iteration Count: 512
- Test Description:
- Procedure call and return time measurement
- Ten discrete 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000011 Class Name: Procedure
- CPU Time: 23.4 microseconds
- Wall Time: 26.0 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- Twenty discrete 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000012 Class Name: Procedure
- CPU Time: 17.0 microseconds
- Wall Time: 14.4 microseconds. Iteration Count: 512
- Test Description:
- Procedure call and return time measurement
- Ten composite 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000013 Class Name: Procedure
- CPU Time: 22.4 microseconds
- Wall Time: 24.6 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- twenty composite 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: T000001 Class Name: Tasking
- CPU Time: 11.6 microseconds
- Wall Time: 48.6 microseconds. Iteration Count: 512
- Test Description:
- Minimum rendezvous, entry call and return time
- 1 task 1 entry
- no select
-
-
-
- Test Name: T000002 Class Name: Tasking
- CPU Time: 5.6 microseconds
- Wall Time: 51.0 microseconds. Iteration Count: 1024
- Test Description:
- Task entry call and return time measured
- One task active, one entry in task, task in a package
- no select statement
-
-
-
- Test Name: T000003 Class Name: Tasking
- CPU Time: 2.6 microseconds
- Wall Time: 55.5 microseconds. Iteration Count: 1024
- Test Description:
- Task entry call and return time measured
- Two tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000004 Class Name: Tasking
- CPU Time: 5.9 microseconds
- Wall Time: 63.8 microseconds. Iteration Count: 1024
- Test Description:
- Task entry call and return time measured
- Two tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000005 Class Name: Tasking
- CPU Time: -4.9 microseconds
- Wall Time: 46.4 microseconds. Iteration Count: 256
- Test Description:
- Task entry call and return time measured
- Ten tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000006 Class Name: TASKING
- CPU Time: 283.5 microseconds
- Wall Time: 392.9 microseconds. Iteration Count: 4
- Test Description:
- Task entry call and return time measurement
- 1 task 10 entries , task in a package
- one select statement
-
- ::::::::::
- C000001.ADA
- ::::::::::
- -- PERFORMANCE MEASUREMENT : task creation and termination time
- -- 1 task no entry
- -- task type in package, no select
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
- package CREATE_PACK_1 is
- task type T1 is
- end T1 ;
- procedure P1 ; -- will create task, run task, and terminate task
- end CREATE_PACK_1 ;
-
- with CREATE_PACK_1 ; use CREATE_PACK_1 ;
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure C000001 is -- main procedure to execute
-
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
-
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 5.0 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
- -- establish task create and terminate time
-
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- P1 ; -- this has task that has global increment and call inside
- end loop ;
- end loop ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "C000001" , "Tasking" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Task create and terminate measurement " ,
- " with one task, no entries, when task is in a procedure" ,
- " using a task type in a package, no select statement, no loop, " ) ;
-
- end C000001 ;
-
- package body CREATE_PACK_1 is
- task body T1 is
- begin
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end T1 ;
-
- procedure P1 is
- T : T1 ; -- this creates the task, runs task to completion and terminates
- begin
- null ;
- end P1 ;
-
- end CREATE_PACK_1 ;
- ::::::::::
- C000002.ADA
- ::::::::::
- -- PERFORMANCE MEASUREMENT : task creation and termination time
- -- 1 task no entry
- -- task defined and used in procedure, no select
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ;
- package CREATE_PACK_2 is
- procedure P1 ; -- will create task, run task, and terminate task
- end CREATE_PACK_2 ;
-
- with CREATE_PACK_2 ; use CREATE_PACK_2 ;
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure C000002 is -- main procedure to execute
-
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 0.5 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
-
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- P1 ; -- this has task that has global increment and call inside
- end loop ;
- end loop ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "C000002" , "Tasking" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Task create and terminate time measurement. " ,
- " with one task, no entries when task is in a procedure," ,
- " task defined and used in procedure, no select statement, no loop " ) ;
-
- end C000002 ;
-
- package body CREATE_PACK_2 is
-
- procedure P1 is
- -- this creates the task, runs task to completion and terminates
- -- execution time for task taken out by control loop
- task T1 is
- end T1 ;
-
- task body T1 is
- begin
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end T1 ;
-
- begin
- null ;
- end P1 ;
-
- end CREATE_PACK_2 ;
- ::::::::::
- C000003.ADA
- ::::::::::
- -- PERFORMANCE MEASUREMENT : task creation and termination time
- -- 1 task no entry
- -- task local in declare block, no select
-
- with REMOTE_GLOBAL ; use REMOTE_GLOBAL ; -- control optimization
- with ITERATION ; -- obtain stable measurement
- with PIWG_IO ; -- output results
-
- procedure C000003 is -- main procedure to execute
-
- CPU_TIME : DURATION ; -- CPU time for one feature execution
- WALL_TIME : DURATION ; -- WALL time for one feature execution
- CHECK_TIMES : constant := 100 ; -- inside loop count and check
- ITERATION_COUNT : INTEGER ; -- set and varied by ITERATION package
- STABLE : BOOLEAN ; -- true when measurement stable
-
- begin
-
- ITERATION.START_CONTROL ; -- dummy to bring in pages on some machines
-
- delay 0.5 ; -- wait for stable enviornment on some machines
-
- ITERATION.INITIALIZE ( ITERATION_COUNT ) ;
-
- loop -- until stable measurement, ITERATION_COUNT increases each time
-
- --
- -- Control loop
- --
- ITERATION.START_CONTROL ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end loop ;
- end loop ;
- ITERATION.STOP_CONTROL ( GLOBAL , CHECK_TIMES ) ;
-
- --
- -- Test loop
- --
- -- establish task create and terminate time
-
- ITERATION.START_TEST ;
- for J in 1 .. ITERATION_COUNT loop
- GLOBAL := 0 ;
- for INSIDE_LOOP in 1 .. CHECK_TIMES loop
- declare
- -- this creates the task, runs task to completion and terminates
- task T1 is
- end T1 ;
-
- task body T1 is
- begin
- GLOBAL := GLOBAL + A_ONE ;
- REMOTE ;
- end T1 ;
- begin
- null ;
- end ;
- end loop ;
- end loop ;
- ITERATION.STOP_TEST ( GLOBAL , CHECK_TIMES ) ;
- ITERATION.TEST_STABLE ( ITERATION_COUNT , STABLE ) ;
- exit when STABLE ;
- end loop ;
- --
- ITERATION.FEATURE_TIMES ( CPU_TIME , WALL_TIME ) ;
-
- --
- -- Printout
- --
- PIWG_IO.PIWG_OUTPUT ( "C000003" , "Tasking" ,
- CPU_TIME , WALL_TIME , ITERATION_COUNT ,
- " Task create and terminate time measurement " ,
- " Task is in declare block of main procedure " ,
- " one task, no entries, task is in the loop" ) ;
-
- end C000003 ;
- ::::::::::
- COMPILE.CLI
- ::::::::::
- Data General command lines ( If ACOMPILE.CLI does not work )
- ADA A000001
- ADA A000013
- ADA A000021
- ADA A000022
- ADA A000031
- ADA A000032
- ADA A000041
- ADA A000042
- ADA/MAIN_PROGRAM A000051
- ADA A000091
- ADA A000093
- ADA A000094
- ADA C000001
- ADA C000002
- ADA C000003
- ADA D000001
- ADA D000002
- ADA D000003
- ADA D000004
- ADA E000001
- ADA E000002
- ADA E000004
- ADA F000001
- ADA F000002
- ADA G000001
- ADA G000002
- ADA G000003
- ADA G000004
- ADA G000005
- ADA G000006
- ADA G000007
- ADA L000001
- ADA L000002
- ADA L000003
- ADA P000001
- ADA P000002
- ADA P000003
- ADA P000004
- ADA P000005
- ADA P000006
- ADA P000007
- ADA P000010
- ADA P000011
- ADA P000012
- ADA P000013
- ADA T000001
- ADA T000002
- ADA T000003
- ADA T000004
- ADA T000005
- ADA T000006
- ADALINK A000051
- ADA/MAIN_PROGRAM A000100
- ADALINK A000100
- XEQ A000100
- ::::::::::
- COMPILE.COM
- ::::::::::
- $! VAX VMS files to compile
- $ SET VERIFY
- $ SET NOON
- $ SET DEF [.SIGADA.TAPE_8_31_86]
- $ ACS SET LIB [.ADALIB]
- $ ADA A000001
- $ ADA A000012 ! VAX Ada dependent
- $ ADA A000021
- $ ADA A000022
- $ ADA A000031
- $ ADA A000032
- $ ADA A000041
- $ ADA A000042
- $ ADA A000051
- $ ADA A000052
- $ ADA A000053
- $ ADA A000054
- $ ADA A000055
- $ ADA A000091
- $ ADA A000092 ! VAX Ada dependent
- $ ADA A000093
- $ ADA A000094
- $ ADA C000001
- $ ADA C000002
- $ ADA C000003
- $ ADA D000001
- $ ADA D000002
- $ ADA D000003
- $ ADA D000004
- $ ADA E000001
- $ ADA E000002
- $ ADA E000004
- $ ADA F000001
- $ ADA F000002
- $ ADA G000001
- $ ADA G000002
- $ ADA G000003
- $ ADA G000004
- $ ADA G000005
- $ ADA G000006
- $ ADA G000007
- $ ADA L000001
- $ ADA L000002
- $ ADA L000003
- $ ADA P000001
- $ ADA P000002
- $ ADA P000003
- $ ADA P000004
- $ ADA P000005
- $ ADA P000006
- $ ADA P000007
- $ ADA P000010
- $ ADA P000011
- $ ADA P000012
- $ ADA P000013
- $ ADA T000001
- $ ADA T000002
- $ ADA T000003
- $ ADA T000004
- $ ADA T000005
- $ ADA T000006
- $ ADA T000007 ! execution possibly machine dependent
- $ ACS LINK A000051
- $ ACS LINK A000052
- $ ACS LINK A000053
- $ ACS LINK A000054
- $ ACS LINK A000055
- $ ADA A000100
- $ ACS LINK A000100
- $ RUN A000100 ! all feature tests in one procedure
- ::::::::::
- COMPILE.L78
- ::::::::::
- $ SET NOCONTROL_Y
- $ SET NOVERIFY
- Batch job executed on node VAX 11/780
- $ EXIT
- $! VAX VMS files to compile
- $ SET VERIFY
- $ SET NOON
- $ SET DEF [.SIGADA.TAPE_8_31_86]
- $ ACS SET LIB [.ADALIB]
- %ACS-I-CL_LIBIS, Current program library is
- USER$DISK:[.SIGADA.TAPE_8_31_86.ADALIB]
- $ ADA A000001
- $ ADA A000012 ! VAX Ada dependent
- $ ADA A000021
- $ ADA A000022
- $ ADA A000031
- $ ADA A000032
- $ ADA A000041
- $ ADA A000042
- $ ADA A000051
- $ ADA A000052
- $ ADA A000053
- $ ADA A000054
- $ ADA A000055
- $ ADA A000091
- $ ADA A000092 ! VAX Ada dependent
- $ ADA A000093
- $ ADA A000094
- $ ADA C000001
- $ ADA C000002
- $ ADA C000003
- $ ADA D000001
- $ ADA D000002
- $ ADA D000003
- $ ADA D000004
- $ ADA E000001
- $ ADA E000002
- $ ADA E000004
- $ ADA F000001
- $ ADA F000002
- $ ADA G000001
- $ ADA G000002
- $ ADA G000003
- $ ADA G000004
- $ ADA G000005
- $ ADA G000006
- $ ADA G000007
- $ ADA L000001
- $ ADA L000002
- $ ADA L000003
- $ ADA P000001
- $ ADA P000002
- $ ADA P000003
- $ ADA P000004
- $ ADA P000005
- $ ADA P000006
- $ ADA P000007
- $ ADA P000010
- $ ADA P000011
- $ ADA P000012
- $ ADA P000013
- $ ADA T000001
- $ ADA T000002
- $ ADA T000003
- $ ADA T000004
- $ ADA T000005
- $ ADA T000006
- $ ADA T000007 ! execution possibly machine dependent
- $ ACS LINK A000051
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000052
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000053
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000054
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000055
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ADA A000100
- $ ACS LINK A000100
- $ RUN A000100 ! all feature tests in one procedure
- 0.8500 is time in milliseconds for one Dhrystone
-
- ADA Whetstone benchmark
-
- A000093 using standard internal math routines
-
-
- Whetstone start time: 860.48 seconds
-
- Whetstone stop time : 867.61 seconds
-
- Elapsed time for 10 cycles : 7.13 seconds
-
- Whetstone rating : 1403 KWIPS
-
-
- Whetstone start time: 867.64 seconds
-
- Whetstone stop time : 881.90 seconds
-
- Elapsed time for 20 cycles : 14.26 seconds
-
- Whetstone rating : 1403 KWIPS
-
-
- Whetstone start time: 881.94 seconds
-
- Whetstone stop time : 903.31 seconds
-
- Elapsed time for 30 cycles : 21.37 seconds
-
- Whetstone rating : 1404 KWIPS
-
-
- Whetstone start time: 903.33 seconds
-
- Whetstone stop time : 931.83 seconds
-
- Elapsed time for 40 cycles : 28.50 seconds
-
- Whetstone rating : 1404 KWIPS
-
-
- Whetstone start time: 931.87 seconds
-
- Whetstone stop time : 967.54 seconds
-
- Elapsed time for 50 cycles : 35.67 seconds
-
- Whetstone rating : 1402 KWIPS
-
-
- Average time per cycle : 712.85 milliseconds
-
- Average Whetstone rating : 1403 KWIPS
-
-
- A000094
- Perm Towers Queens Intmm Mm Puzzle Quick Bubble Tree FFT Ack
- 2.35 3.42 1.42 0.85 0.83 8.31 1.10 1.51 2.04 1.87 78.90
-
- Test Name: C000001 Class Name: Tasking
- CPU Time: 6300.4 microseconds
- Wall Time: 6249.7 microseconds. Iteration Count: 2
- Test Description:
- Task create and terminate measurement
- with one task, no entries, when task is in a procedure
- using a task type in a package, no select statement, no loop,
-
-
-
- Test Name: C000002 Class Name: Tasking
- CPU Time: 6400.5 microseconds
- Wall Time: 6399.8 microseconds. Iteration Count: 2
- Test Description:
- Task create and terminate time measurement.
- with one task, no entries when task is in a procedure,
- task defined and used in procedure, no select statement, no loop
-
-
-
- Test Name: C000003 Class Name: Tasking
- CPU Time: 6449.9 microseconds
- Wall Time: 6449.9 microseconds. Iteration Count: 2
- Test Description:
- Task create and terminate time measurement
- Task is in declare block of main procedure
- one task, no entries, task is in the loop
-
-
-
- Test Name: D000001 Class Name: Allocation
- CPU Time: 21.1 microseconds
- Wall Time: 20.3 microseconds. Iteration Count: 128
- Test Description:
- Dynamic array allocation, use and deallocation time measurement
- Dynamic array elaboration , 1000 integers in a procedure
- get space and free it in the procedure on each call
-
-
-
- Test Name: D000002 Class Name: Allocation
- CPU Time: 4375.0 microseconds
- Wall Time: 4349.8 microseconds. Iteration Count: 4
- Test Description:
- Dynamic array elaboration and initialization time measurement
- allocation, initialization, use and deallocation
- 1000 integers initialized by others=>1
-
-
-
- Test Name: D000003 Class Name: Allocation
- CPU Time: 3.1 microseconds
- Wall Time: 3.9 microseconds. Iteration Count: 128
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, allocating and deallocating
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: D000004 Class Name: Allocation
- CPU Time: 6350.1 microseconds
- Wall Time: 6350.1 microseconds. Iteration Count: 2
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, initializing by ( DYNAMIC_SIZE,(others=>1))
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: E000001 Class Name: Exception
- CPU Time: 468.7 microseconds
- Wall Time: 468.7 microseconds. Iteration Count: 32
- Test Description:
- Time to raise and handle an exception
- Exception defined locally and handled locally
-
-
-
-
- Test Name: E000002 Class Name: Exception
- CPU Time: 737.5 microseconds
- Wall Time: 768.8 microseconds. Iteration Count: 16
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a procedure in a package
-
-
-
-
- Test Name: E000004 Class Name: Procedure
- CPU Time: 525.0 microseconds
- Wall Time: 525.0 microseconds. Iteration Count: 32
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a package, 4 deep
-
-
-
-
- Test Name: F000001 Class Name: Style
- CPU Time: 2.7 microseconds
- Wall Time: 2.3 microseconds. Iteration Count: 256
- Test Description:
- Time to set a boolean flag using a logical equation
- a local and a global integer are compared
- compare this test with F000002
-
-
-
- Test Name: F000002 Class Name: Style
- CPU Time: 2.3 microseconds
- Wall Time: 2.7 microseconds. Iteration Count: 256
- Test Description:
- Time to set a boolean flag using an 'if' test
- a local and a global integer are compared
- compare this test with F000001
-
-
-
- Test Name: G000001 Class Name: Input/Output
- CPU Time: 950.0 microseconds
- Wall Time: 1087.5 microseconds. Iteration Count: 16
- Test Description:
- TEXT_IO.GET_LINE reading 20 characters, time measured
- A scratch file is written, then read and reset
-
-
-
-
- Test Name: G000002 Class Name: Input/Output
- CPU Time: 4650.0 microseconds
- Wall Time: 4800.1 microseconds. Iteration Count: 4
- Test Description:
- TEXT_IO.GET called 20 times per line, time measured
- a scratch file is written, then read and reset
- Compare to G000001 for about same number of characters
-
-
-
- Test Name: G000003 Class Name: Input/Output
- CPU Time: 1837.5 microseconds
- Wall Time: 2737.5 microseconds. Iteration Count: 8
- Test Description:
- TEXT_IO.PUT_LINE for 20 characters, timing measurment
- a scratch file is opened, written and reset
-
-
-
-
- Test Name: G000004 Class Name: Input/Output
- CPU Time: 3800.0 microseconds
- Wall Time: 4649.8 microseconds. Iteration Count: 4
- Test Description:
- TEXT_IO.PUT 20 times with one character, time measurement
- a scratch file is written, reset and rewritten
- compare, approximately, to G000003
-
-
-
- Test Name: G000005 Class Name: Input/Output
- CPU Time: 359.4 microseconds
- Wall Time: 359.4 microseconds. Iteration Count: 32
- Test Description:
- TEXT_IO.GET an integer from a local string, timing measurement
- use TEXT_IO.PUT to convert 1..100 to a string
- then use TEXT_IO.GET to get the number back
-
-
-
- Test Name: G000006 Class Name: Input/Output
- CPU Time: 925.1 microseconds
- Wall Time: 925.1 microseconds. Iteration Count: 8
- Test Description:
- TEXT_IO.GET getting a floating point fraction from a local string
- Timing measurement on 0.001 to 0.01 range of numbers
- compare, approximately, to G000005 for integer vs float
-
-
-
- Test Name: G000007 Class Name: Input/Output
- CPU Time: 50900.3 microseconds
- Wall Time: 50899.7 microseconds. Iteration Count: 1
- Test Description:
- Open and close an existing file, time measurement
- A scratch file is created and closed
- The scratch file is opened IN_FILE and closed in a loop
-
-
-
- Test Name: L000001 Class Name: Iteration
- CPU Time: 15.5 microseconds
- Wall Time: 15.5 microseconds. Iteration Count: 2
- Test Description:
- Simple "for" loop time
- for I in 1 .. 100 loop
- time reported is for once through loop
-
-
-
- Test Name: L000002 Class Name: Iteration
- CPU Time: 1.5 microseconds
- Wall Time: 0.0 microseconds. Iteration Count: 4
- Test Description:
- Simple "while" loop time
- while I <= 100 loop
- time reported is for once through loop
-
-
-
- Test Name: L000003 Class Name: Iteration
- CPU Time: 2.5 microseconds
- Wall Time: 1.8 microseconds. Iteration Count: 4
- Test Description:
- Simple "exit" loop time
- loop I:=I+1; exit when I>100; end loop;
- time reported is for once through loop
-
-
-
- Test Name: P000001 Class Name: Procedure
- CPU Time: 0.0 microseconds
- Wall Time: 0.4 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time ( may be zero if automatic inlining )
- procedure is local
- no parameters
-
-
-
- Test Name: P000002 Class Name: Procedure
- CPU Time: 33.6 microseconds
- Wall Time: 33.6 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time
- Procedure is local, no parameters
- when procedure is not inlinable
-
-
-
- Test Name: P000003 Class Name: Procedure
- CPU Time: 27.7 microseconds
- Wall Time: 27.7 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- Compare to P000002
-
-
-
- Test Name: P000004 Class Name: Procedure
- CPU Time: 0.4 microseconds
- Wall Time: 0.0 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- pragma INLINE used. Compare to P000001
-
-
-
- Test Name: P000005 Class Name: Procedure
- CPU Time: 33.6 microseconds
- Wall Time: 33.6 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- One parameter, in INTEGER
-
-
-
- Test Name: P000006 Class Name: Procedure
- CPU Time: 35.2 microseconds
- Wall Time: 34.4 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- One parameter, out INTEGER
-
-
-
- Test Name: P000007 Class Name: Procedure
- CPU Time: 35.9 microseconds
- Wall Time: 35.2 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- One parameter, in out INTEGER
-
-
-
- Test Name: P000010 Class Name: Procedure
- CPU Time: 63.3 microseconds
- Wall Time: 63.3 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- Compare to P000005
- 10 parameters, in INTEGER
-
-
-
- Test Name: P000011 Class Name: Procedure
- CPU Time: 92.2 microseconds
- Wall Time: 93.0 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- Compare to P000005, P000010
- 20 parameters, in INTEGER
-
-
-
- Test Name: P000012 Class Name: Procedure
- CPU Time: 53.1 microseconds
- Wall Time: 53.1 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- Compare with P000010 ( discrete vs composite parameters )
- 10 paramaters, in MY_RECORD a three component record
-
-
-
- Test Name: P000013 Class Name: Procedure
- CPU Time: 78.1 microseconds
- Wall Time: 77.3 microseconds. Iteration Count: 128
- Test Description:
- Procedure call and return time measurement
- twenty composite 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: T000001 Class Name: Tasking
- CPU Time: 1031.2 microseconds
- Wall Time: 1025.0 microseconds. Iteration Count: 16
- Test Description:
- Minimum rendezvous, entry call and return time
- 1 task 1 entry , task inside procedure
- no select
-
-
-
- Test Name: T000002 Class Name: Tasking
- CPU Time: 1025.0 microseconds
- Wall Time: 1018.7 microseconds. Iteration Count: 16
- Test Description:
- Task entry call and return time measured
- One task active, one entry in task, task in a package
- no select statement
-
-
-
- Test Name: T000003 Class Name: Tasking
- CPU Time: 1087.5 microseconds
- Wall Time: 1087.5 microseconds. Iteration Count: 8
- Test Description:
- Task entry call and return time measured
- Two tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000004 Class Name: Tasking
- CPU Time: 1225.0 microseconds
- Wall Time: 1225.0 microseconds. Iteration Count: 8
- Test Description:
- Task entry call and return time measured
- One tasks active, two entries, tasks in a package
- using select statement
-
-
-
- Test Name: T000005 Class Name: Tasking
- CPU Time: 1119.9 microseconds
- Wall Time: 1120.0 microseconds. Iteration Count: 1
- Test Description:
- Task entry call and return time measured
- Ten tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000006 Class Name: TASKING
- CPU Time: 1740.1 microseconds
- Wall Time: 1750.0 microseconds. Iteration Count: 1
- Test Description:
- Task entry call and return time measurement
- One task with ten entries , task in a package
- one select statement, compare to T000005
-
-
- job terminated at 17-NOV-1986 04:21:36.80
- Accounting information:
- Buffered I/O count: 3879 Peak working set size: 4577
- Direct I/O count: 6714 Peak page file size: 4703
- Page faults: 148918 Mounted volumes: 0
- Charged CPU time: 0 00:20:31.42 Elapsed time: 0 00:28:42.58
- ::::::::::
- COMPILE.L86
- ::::::::::
- $ SET NOCONTROL_Y
- $ SET NOVERIFY
- Batch job executed on node VAX 8650
- $ EXIT
- $ SET NOVERIFY
- $ SET NOON
- $ SET DEF [.SIGADA.TAPE_8_31_86]
- $ ACS CREA LIB [.ADALIB]
- %ACS-I-CL_LIBCRE, Library PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB] created
- $ ACS SET LIB [.ADALIB]
- %ACS-I-CL_LIBIS, Current program library is
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]
- $ ADA A000001
- $ ADA A000012 ! VAX Ada dependent
- $ ADA A000021
- $ ADA A000022
- $ ADA A000031
- $ ADA A000032
- $ ADA A000041
- $ ADA A000042
- $ ADA A000051
- $ ADA A000052
- $ ADA A000053
- $ ADA A000054
- $ ADA A000055
- $ ADA A000091
- $ ADA A000092 ! VAX Ada dependent
- $ ADA A000093
- $ ADA A000094
- $ ADA C000001
- $ ADA C000002
- $ ADA C000003
- $ ADA D000001
- $ ADA D000002
- $ ADA D000003
- $ ADA D000004
- $ ADA E000001
- $ ADA E000002
- $ ADA E000004
- $ ADA F000001
- $ ADA F000002
- $ ADA G000001
- $ ADA G000002
- $ ADA G000003
- $ ADA G000004
- $ ADA G000005
- $ ADA G000006
- $ ADA G000007
- $ ADA L000001
- $ ADA L000002
- $ ADA L000003
- $ ADA P000001
- $ ADA P000002
- $ ADA P000003
- $ ADA P000004
- $ ADA P000005
- $ ADA P000006
- $ ADA P000007
- $ ADA P000010
- $ ADA P000011
- $ ADA P000012
- $ ADA P000013
- $ ADA T000001
- $ ADA T000002
- $ ADA T000003
- $ ADA T000004
- $ ADA T000005
- $ ADA T000006
- $ ADA T000007 ! execution possibly machine dependent
- $ ACS LINK A000051 ! these are for later compilation time tests
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000052
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000053
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000054
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ACS LINK A000055
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ ADA A000100
- $ ACS LINK A000100
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $ RUN A000100 ! all feature tests in one procedure
- 0.1509 is time in milliseconds for one Dhrystone
-
- ADA Whetstone benchmark
-
- A000093 using standard internal math routines
-
-
- Whetstone start time: 179.95 seconds
-
- Whetstone stop time : 183.47 seconds
-
- Elapsed time for 10 cycles : 3.52 seconds
-
- Whetstone rating : 2841 KWIPS
-
-
- Whetstone start time: 183.48 seconds
-
- Whetstone stop time : 190.54 seconds
-
- Elapsed time for 20 cycles : 7.06 seconds
-
- Whetstone rating : 2833 KWIPS
-
-
- Whetstone start time: 190.55 seconds
-
- Whetstone stop time : 201.13 seconds
-
- Elapsed time for 30 cycles : 10.58 seconds
-
- Whetstone rating : 2836 KWIPS
-
-
- Whetstone start time: 201.14 seconds
-
- Whetstone stop time : 215.12 seconds
-
- Elapsed time for 40 cycles : 13.98 seconds
-
- Whetstone rating : 2861 KWIPS
-
-
- Whetstone start time: 215.13 seconds
-
- Whetstone stop time : 232.68 seconds
-
- Elapsed time for 50 cycles : 17.55 seconds
-
- Whetstone rating : 2849 KWIPS
-
-
- Average time per cycle : 351.63 milliseconds
-
- Average Whetstone rating : 2844 KWIPS
-
-
- A000094
- Perm Towers Queens Intmm Mm Puzzle Quick Bubble Tree FFT Ack
- 0.39 0.59 0.29 0.29 0.40 1.52 0.20 0.33 0.36 0.64 13.79
-
- Test Name: C000001 Class Name: Tasking
- CPU Time: 1218.7 microseconds
- Wall Time: 1687.5 microseconds. Iteration Count: 16
- Test Description:
- Task create and terminate measurement
- with 1 task 0 entry when task is in a procedure
- in a package, no select statement, no loop, using a task type
-
-
-
- Test Name: C000002 Class Name: Tasking
- CPU Time: 1274.9 microseconds
- Wall Time: 1750.0 microseconds. Iteration Count: 8
- Test Description:
- Task create and terminate time measurement.
- with 1 task 0 entry when task is in a procedure,
- in a package, no select statement, no loop
-
-
-
- Test Name: C000003 Class Name: Tasking
- CPU Time: 1287.5 microseconds
- Wall Time: 2574.9 microseconds. Iteration Count: 8
- Test Description:
- Task create and terminate time measurement
- Task is in declare block of main procedure
- with 1 task 0 entry when task is in the loop
-
-
-
- Test Name: D000001 Class Name: Allocation
- CPU Time: 3.9 microseconds
- Wall Time: 3.9 microseconds. Iteration Count: 512
- Test Description:
- Dynamic array allocation, use and deallocation time measurement
- Dynamic array elaboration , 1000 integers in a procedure
- get space and free it in the procedure on each call
-
-
-
- Test Name: D000002 Class Name: Allocation
- CPU Time: 968.8 microseconds
- Wall Time: 1093.8 microseconds. Iteration Count: 16
- Test Description:
- Dynamic array elaboration and initialization time measurement
- allocation, initialization, use and deallocation
- 1000 integers initialized by others=>1
-
-
-
- Test Name: D000003 Class Name: Allocation
- CPU Time: 4.1 microseconds
- Wall Time: 0.4 microseconds. Iteration Count: 512
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, allocating and deallocating
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: D000004 Class Name: Allocation
- CPU Time: 1262.5 microseconds
- Wall Time: 1262.4 microseconds. Iteration Count: 8
- Test Description:
- Dynamic record allocation and deallocation time measurement
- elaborating, initializing by ( DYNAMIC_SIZE,(others=>1))
- record containing a dynamic array of 1000 integers
-
-
-
- Test Name: E000001 Class Name: Exception
- CPU Time: 83.6 microseconds
- Wall Time: 83.6 microseconds. Iteration Count: 128
- Test Description:
- Time to raise and handle an exception
- Exception defined locally and handled locally
-
-
-
-
- Test Name: E000002 Class Name: Exception
- CPU Time: 140.6 microseconds
- Wall Time: 142.2 microseconds. Iteration Count: 64
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a procedure in a package
-
-
-
-
- Test Name: E000004 Class Name: Procedure
- CPU Time: 102.3 microseconds
- Wall Time: 103.1 microseconds. Iteration Count: 128
- Test Description:
- Exception raise and handle timing measurement
- when exception is in a package, 4 deep
-
-
-
-
- Test Name: F000001 Class Name: Style
- CPU Time: 0.4 microseconds
- Wall Time: 0.3 microseconds. Iteration Count: 1024
- Test Description:
- Time to set a boolean flag using a logical equation
- a local and a global integer are compared
- compare this test with F000002
-
-
-
- Test Name: F000002 Class Name: Style
- CPU Time: 0.7 microseconds
- Wall Time: 0.5 microseconds. Iteration Count: 2048
- Test Description:
- Time to set a boolean flag using an 'if' test
- a local and a global integer are compared
- compare this test with F000001
-
-
-
- Test Name: G000001 Class Name: Input/Output
- CPU Time: 176.6 microseconds
- Wall Time: 373.4 microseconds. Iteration Count: 64
- Test Description:
- TEXT_IO.GET_LINE reading 20 characters, time measured
- A scratch file is written, then read and reset
-
-
-
-
- Test Name: G000002 Class Name: Input/Output
- CPU Time: 862.5 microseconds
- Wall Time: 1093.7 microseconds. Iteration Count: 16
- Test Description:
- TEXT_IO.GET called 20 times per line, time measured
- a scratch file is written, then read and reset
- Compare to G000001 for about same number of characters
-
-
-
- Test Name: G000003 Class Name: Input/Output
- CPU Time: 359.4 microseconds
- Wall Time: 1487.5 microseconds. Iteration Count: 32
- Test Description:
- TEXT_IO.PUT_LINE for 20 characters, timing measurment
- a scratch file is opened, written and reset
-
-
-
-
- Test Name: G000004 Class Name: Input/Output
- CPU Time: 762.4 microseconds
- Wall Time: 1837.5 microseconds. Iteration Count: 16
- Test Description:
- TEXT_IO.PUT 20 times with one character, time measurement
- a scratch file is written, reset and rewritten
- compare, approximately, to G000003
-
-
-
- Test Name: G000005 Class Name: Input/Output
- CPU Time: 68.7 microseconds
- Wall Time: 67.2 microseconds. Iteration Count: 128
- Test Description:
- TEXT_IO.GET an integer from a local string, timing measurement
- use TEXT_IO.PUT to convert 1..100 to a string
- then use TEXT_IO.GET to get the number back
-
-
-
- Test Name: G000006 Class Name: Input/Output
- CPU Time: 190.6 microseconds
- Wall Time: 326.6 microseconds. Iteration Count: 64
- Test Description:
- TEXT_IO.GET getting a floating point fraction from a local string
- Timing measurement on 0.001 to 0.01 range of numbers
- compare, approximately, to G000005 for integer vs float
-
-
-
- Test Name: G000007 Class Name: Input/Output
- CPU Time: 13599.9 microseconds
- Wall Time: 25300.3 microseconds. Iteration Count: 1
- Test Description:
- Open and close an existing file, time measurement
- A scratch file is created and closed
- The scratch file is opened IN_FILE and closed in a loop
-
-
-
- Test Name: L000001 Class Name: Iteration
- CPU Time: 0.4 microseconds
- Wall Time: 0.9 microseconds. Iteration Count: 16
- Test Description:
- Simple "for" loop time
- for I in 1 .. 100 loop
- time reported is for once through loop
-
-
-
- Test Name: L000002 Class Name: Iteration
- CPU Time: 0.4 microseconds
- Wall Time: 0.4 microseconds. Iteration Count: 16
- Test Description:
- Simple "while" loop time
- while I <= 100 loop
- time reported is for once through loop
-
-
-
- Test Name: L000003 Class Name: Iteration
- CPU Time: 0.4 microseconds
- Wall Time: 0.4 microseconds. Iteration Count: 16
- Test Description:
- Simple "exit" loop time
- loop I:=I+1; exit when I>100; end loop;
- time reported is for once through loop
-
-
-
- Test Name: P000001 Class Name: Procedure
- CPU Time: 0.0 microseconds
- Wall Time: 0.0 microseconds. Iteration Count: 2048
- Test Description:
- Procedure call and return time ( may be zero if automatic inlining )
- procedure is local
- no parameters
-
-
-
- Test Name: P000002 Class Name: Procedure
- CPU Time: 6.7 microseconds
- Wall Time: 7.1 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time
- Procedure is local, no parameters
- when procedure is not inlinable
-
-
-
- Test Name: P000003 Class Name: Procedure
- CPU Time: 10.5 microseconds
- Wall Time: 10.5 microseconds. Iteration Count: 512
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000004 Class Name: Procedure
- CPU Time: 5.4 microseconds
- Wall Time: 5.7 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000005 Class Name: Procedure
- CPU Time: 6.2 microseconds
- Wall Time: 6.2 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000006 Class Name: Procedure
- CPU Time: 7.0 microseconds
- Wall Time: 7.1 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000007 Class Name: Procedure
- CPU Time: 6.9 microseconds
- Wall Time: 6.9 microseconds. Iteration Count: 1024
- Test Description:
- Procedure call and return time measurement
- The procedure is in a separately compiled package
- The package body is compiled befor the spec is used
-
-
-
- Test Name: P000010 Class Name: Procedure
- CPU Time: 13.3 microseconds
- Wall Time: 13.3 microseconds. Iteration Count: 512
- Test Description:
- Procedure call and return time measurement
- Ten discrete 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000011 Class Name: Procedure
- CPU Time: 18.0 microseconds
- Wall Time: 18.2 microseconds. Iteration Count: 512
- Test Description:
- Procedure call and return time measurement
- Twenty discrete 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000012 Class Name: Procedure
- CPU Time: 34.4 microseconds
- Wall Time: 34.4 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- Ten composite 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: P000013 Class Name: Procedure
- CPU Time: 62.9 microseconds
- Wall Time: 64.5 microseconds. Iteration Count: 256
- Test Description:
- Procedure call and return time measurement
- twenty composite 'in' parameters
- The package body is compiled after the spec is used
-
-
-
- Test Name: T000001 Class Name: Tasking
- CPU Time: 207.8 microseconds
- Wall Time: 214.1 microseconds. Iteration Count: 64
- Test Description:
- Minimum rendezvous, entry call and return time
- 1 task 1 entry
- no select
-
-
-
- Test Name: T000002 Class Name: Tasking
- CPU Time: 207.8 microseconds
- Wall Time: 207.8 microseconds. Iteration Count: 64
- Test Description:
- Task entry call and return time measured
- One task active, one entry in task, task in a package
- no select statement
-
-
-
- Test Name: T000003 Class Name: Tasking
- CPU Time: 210.9 microseconds
- Wall Time: 210.9 microseconds. Iteration Count: 32
- Test Description:
- Task entry call and return time measured
- Two tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000004 Class Name: Tasking
- CPU Time: 243.8 microseconds
- Wall Time: 248.4 microseconds. Iteration Count: 32
- Test Description:
- Task entry call and return time measured
- Two tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000005 Class Name: Tasking
- CPU Time: 225.0 microseconds
- Wall Time: 303.7 microseconds. Iteration Count: 8
- Test Description:
- Task entry call and return time measured
- Ten tasks active, one entry per task, tasks in a package
- no select statement
-
-
-
- Test Name: T000006 Class Name: TASKING
- CPU Time: 377.5 microseconds
- Wall Time: 525.0 microseconds. Iteration Count: 4
- Test Description:
- Task entry call and return time measurement
- 1 task 10 entries , task in a package
- one select statement
-
-
- $ ADA A000101
- $ ACS LINK A000101
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $SET DEFAULT PUSERS:[.SIGADA.TAPE_8_31_86]
- $LINK := ""
- $LINK-
- /NOMAP-
- /EXE=[]A000101-
- SYS$INPUT:/OPTIONS
- PUSERS:[.SIGADA.TAPE_8_31_86]A000101.OBJ;1
- %LINK-F-OPENIN, error opening PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]A000101.OBJ;1 as input
- -RMS-E-FNF, file not found
- job terminated at 16-NOV-1986 17:12:20.56
-
- Accounting information:
- Buffered I/O count: 286 Peak working set size: 796
- Direct I/O count: 131 Peak page file size: 4167
- Page faults: 1223 Mounted volumes: 0
- Charged CPU time: 0 00:00:02.56 Elapsed time: 0 00:00:06.83
- %ACS-E-CL_ERRDURLIN, Error(s) during LINK
- $ RUN A000101
- %DCL-W-ACTIMAGE, error activating image A000101
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000101.EXE;
- $ ADA A000102
- $ ACS LINK A000102
- %ACS-I-CL_LINKING, Invoking the VAX/VMS Linker
- $SET DEFAULT PUSERS:[.SIGADA.TAPE_8_31_86]
- $LINK := ""
- $LINK-
- /NOMAP-
- /EXE=[]A000102-
- SYS$INPUT:/OPTIONS
- PUSERS:[.SIGADA.TAPE_8_31_86]A000102.OBJ;1
- %LINK-F-OPENIN, error opening PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]TASK_PACK_6.OBJ;1 as input
- -RMS-E-FNF, file not found
- job terminated at 16-NOV-1986 17:12:39.80
-
- Accounting information:
- Buffered I/O count: 208 Peak working set size: 790
- Direct I/O count: 28 Peak page file size: 3911
- Page faults: 806 Mounted volumes: 0
- Charged CPU time: 0 00:00:01.78 Elapsed time: 0 00:00:04.76
- %ACS-E-CL_ERRDURLIN, Error(s) during LINK
- $ RUN A000102
- %DCL-W-ACTIMAGE, error activating image A000102
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000102.EXE;
- $ ADA A000103
-
- 4 with A000049 ; -- must be used with A000043, PIWG_IO to disk
- .............1
- %ADAC-E-CL_UNINOTFOU, (1) Unit A000049 not found in library
-
- 98 A000049 ; -- write out timing report
- ..........1
- %ADAC-E-NOTDECL, (1) A000049 is not declared [LRM 8.3]
- %ADAC-E-ERRCOMPILE, Error(s) compiling procedure body A000103 in file
- PUSERS:[.SIGADA.TAPE_8_31_86]A000103.ADA;5
- %ADAC-E-ENDDIAGS, Ada compilation completed with 2 diagnostics
- $ ACS LINK A000103
- %ACS-E-CL_UNINOTFOU, Unit A000103 not found in library
- $ RUN A000103
- 0.1620 is time in milliseconds for one Dhrystone
-
- ADA Whetstone benchmark
-
- A000093 using standard internal math routines
-
-
- Whetstone start time: 413.57 seconds
-
- Whetstone stop time : 417.07 seconds
-
- Elapsed time for 10 cycles : 3.50 seconds
-
- Whetstone rating : 2857 KWIPS
-
-
- Whetstone start time: 417.07 seconds
-
- Whetstone stop time : 424.12 seconds
-
- Elapsed time for 20 cycles : 7.05 seconds
-
- Whetstone rating : 2837 KWIPS
-
-
- Whetstone start time: 424.13 seconds
-
- Whetstone stop time : 434.64 seconds
-
- Elapsed time for 30 cycles : 10.51 seconds
-
- Whetstone rating : 2854 KWIPS
-
-
- Whetstone start time: 434.65 seconds
-
- Whetstone stop time : 448.65 seconds
-
- Elapsed time for 40 cycles : 14.00 seconds
-
- Whetstone rating : 2857 KWIPS
-
-
- Whetstone start time: 448.66 seconds
-
- Whetstone stop time : 466.34 seconds
-
- Elapsed time for 50 cycles : 17.68 seconds
-
- Whetstone rating : 2828 KWIPS
-
-
- Average time per cycle : 351.29 milliseconds
-
- Average Whetstone rating : 2847 KWIPS
-
-
- A000094
- Perm Towers Queens Intmm Mm Puzzle Quick Bubble Tree FFT Ack
- 0.36 0.61 0.30 0.29 0.40 1.58 0.20 0.32 0.37 0.62 13.73
- A000049 report beginning
- %ADA-F-CONSTRAINT_ERRO, CONSTRAINT_ERROR
- -ADA-I-EXCRAIPRI, Exception raised prior to PC = 0000F76F
- %TRACE-F-TRACEBACK, symbolic stack dump follows
- module name routine name line rel PC abs PC
-
- 0002B497 0002B497
- A000049 A000049 153 00000231 0000F76F
- A000103 A000103 98 00000148 0001AE25
- ADA$ELAB_A00010 ADA$ELAB_A000103 00000009 0000AA09
- 0001AE7A 0001AE7A
- 000276EA 000276EA
- ADA$ELAB_A00010 ADA$ELAB_A000103 0000001B 0000AA1B
- 0001AE55 0001AE55
- $ ADA A000104
- %ADAC-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- %ADAC-F-CL_ERROPELIB, Error opening library for compilation
- %ADAC-F-ENDABORT, Ada compilation aborted
- $ ACS LINK A000104
- %ACS-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- $ RUN A000104
- %DCL-W-ACTIMAGE, error activating image A000104
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000104.EXE;
- $ ADA A000105
- %ADAC-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- %ADAC-F-CL_ERROPELIB, Error opening library for compilation
- %ADAC-F-ENDABORT, Ada compilation aborted
- $ ACS LINK A000105
- %ACS-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- $ RUN A000105
- %DCL-W-ACTIMAGE, error activating image A000105
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000105.EXE;
- $ ADA A000106
- %ADAC-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- %ADAC-F-CL_ERROPELIB, Error opening library for compilation
- %ADAC-F-ENDABORT, Ada compilation aborted
- $ ACS LINK A000106
- %ACS-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- $ RUN A000106
- %DCL-W-ACTIMAGE, error activating image A000106
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000106.EXE;
- $ ADA A000107
- %ADAC-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- %ADAC-F-CL_ERROPELIB, Error opening library for compilation
- %ADAC-F-ENDABORT, Ada compilation aborted
- $ ACS LINK A000107
- %ACS-E-OPENIN, error opening
- PUSERS:[.SIGADA.TAPE_8_31_86.ADALIB]ADALIB.ALB; as input
- -RMS-E-FNF, file not found
- $ RUN A000107
- %DCL-W-ACTIMAGE, error activating image A000107
- -CLI-E-IMAGEFNF, image file not found $1$DUS230:[.SIGADA.TAPE_8_31_86]A000107.EXE;
- job terminated at 16-NOV-1986 18:08:07.84
-
- Accounting information:
- Buffered I/O count: 8621 Peak working set size: 4062
- Direct I/O count: 12411 Peak page file size: 4741
- Page faults: 178888 Mounted volumes: 0
- Charged CPU time: 0 00:31:36.41 Elapsed time: 0 01:09:35.21
- ::::::::::
- COPY.COM
- ::::::::::
- $ INIT MUA0: PIWG
- $ MOUNT MUA0: PIWG TAPE:
- $ COPY/LOG A000001.ADA TAPE:*.*
- $ COPY/LOG A000002.ADA TAPE:*.*
- $ COPY/LOG A000011.ADA TAPE:*.*
- $ COPY/LOG A000012.ADA TAPE:*.*
- $ COPY/LOG A000013.ADA TAPE:*.*
- $ COPY/LOG A000014.ADA TAPE:*.*
- $ COPY/LOG A000015.ADA TAPE:*.*
- $ COPY/LOG A000016.ADA TAPE:*.*
- $ COPY/LOG A000021.ADA TAPE:*.*
- $ COPY/LOG A000022.ADA TAPE:*.*
- $ COPY/LOG A000031.ADA TAPE:*.*
- $ COPY/LOG A000032.ADA TAPE:*.*
- $ COPY/LOG A000033.ADA TAPE:*.*
- $ COPY/LOG A000041.ADA TAPE:*.*
- $ COPY/LOG A000042.ADA TAPE:*.*
- $ COPY/LOG A000043.ADA TAPE:*.*
- $ COPY/LOG A000044.ADA TAPE:*.*
- $ COPY/LOG A000049.ADA TAPE:*.*
- $ COPY/LOG A000051.ADA TAPE:*.*
- $ COPY/LOG A000052.ADA TAPE:*.*
- $ COPY/LOG A000053.ADA TAPE:*.*
- $ COPY/LOG A000054.ADA TAPE:*.*
- $ COPY/LOG A000055.ADA TAPE:*.*
- $ COPY/LOG A000091.ADA TAPE:*.*
- $ COPY/LOG A000092.ADA TAPE:*.*
- $ COPY/LOG A000093.ADA TAPE:*.*
- $ COPY/LOG A000094.ADA TAPE:*.*
- $ COPY/LOG A000098.ADA TAPE:*.*
- $ COPY/LOG A000099.ADA TAPE:*.*
- $ COPY/LOG A000100.ADA TAPE:*.*
- $ COPY/LOG A000101.ADA TAPE:*.*
- $ COPY/LOG A000102.ADA TAPE:*.*
- $ COPY/LOG A000103.ADA TAPE:*.*
- $ COPY/LOG A000104.ADA TAPE:*.*
- $ COPY/LOG A000105.ADA TAPE:*.*
- $ COPY/LOG A000106.ADA TAPE:*.*
- $ COPY/LOG A000107.ADA TAPE:*.*
- $ COPY/LOG ACOMPILE.CLI TAPE:*.*
- $ COPY/LOG ACOMPILE.COM TAPE:*.*
- $ COPY/LOG ACOMPILE.LOGR1000 TAPE:ACOMPILE.LR1
- $ COPY/LOG C000001.ADA TAPE:*.*
- $ COPY/LOG C000002.ADA TAPE:*.*
- $ COPY/LOG C000003.ADA TAPE:*.*
- $ COPY/LOG COMPILE.CLI TAPE:*.*
- $ COPY/LOG COMPILE.COM TAPE:*.*
- $ COPY/LOG COMPILE.LOG780 TAPE:COMPILE.L78
- $ COPY/LOG COMPILE.LOG8650 TAPE:COMPILE.L86
- $ COPY/LOG COPY.COM TAPE:*.*
- $ COPY/LOG COPY.R1000 TAPE:COPY.R10
- $ COPY/LOG D000001.ADA TAPE:*.*
- $ COPY/LOG D000002.ADA TAPE:*.*
- $ COPY/LOG D000003.ADA TAPE:*.*
- $ COPY/LOG D000004.ADA TAPE:*.*
- $ COPY/LOG E000001.ADA TAPE:*.*
- $ COPY/LOG E000002.ADA TAPE:*.*
- $ COPY/LOG E000004.ADA TAPE:*.*
- $ COPY/LOG F000001.ADA TAPE:*.*
- $ COPY/LOG F000002.ADA TAPE:*.*
- $ COPY/LOG G000001.ADA TAPE:*.*
- $ COPY/LOG G000002.ADA TAPE:*.*
- $ COPY/LOG G000003.ADA TAPE:*.*
- $ COPY/LOG G000004.ADA TAPE:*.*
- $ COPY/LOG G000005.ADA TAPE:*.*
- $ COPY/LOG G000006.ADA TAPE:*.*
- $ COPY/LOG G000007.ADA TAPE:*.*
- $ COPY/LOG L000001.ADA TAPE:*.*
- $ COPY/LOG L000002.ADA TAPE:*.*
- $ COPY/LOG L000003.ADA TAPE:*.*
- $ COPY/LOG P000001.ADA TAPE:*.*
- $ COPY/LOG P000002.ADA TAPE:*.*
- $ COPY/LOG P000003.ADA TAPE:*.*
- $ COPY/LOG P000004.ADA TAPE:*.*
- $ COPY/LOG P000005.ADA TAPE:*.*
- $ COPY/LOG P000006.ADA TAPE:*.*
- $ COPY/LOG P000007.ADA TAPE:*.*
- $ COPY/LOG P000010.ADA TAPE:*.*
- $ COPY/LOG P000011.ADA TAPE:*.*
- $ COPY/LOG P000012.ADA TAPE:*.*
- $ COPY/LOG P000013.ADA TAPE:*.*
- $ COPY/LOG READ.ME TAPE:*.*
- $ COPY/LOG T000001.ADA TAPE:*.*
- $ COPY/LOG T000002.ADA TAPE:*.*
- $ COPY/LOG T000003.ADA TAPE:*.*
- $ COPY/LOG T000004.ADA TAPE:*.*
- $ COPY/LOG T000005.ADA TAPE:*.*
- $ COPY/LOG T000006.ADA TAPE:*.*
- $ COPY/LOG T000007.ADA TAPE:*.*
- $ COPY/LOG TAPE_DIST.LTR TAPE:TAPEDIST.LTR
- $ COPY/LOG WCOMPILE.COM TAPE:*.*
- $ COPY/LOG Z000001.ADA TAPE:*.*
- $ COPY/LOG Z000002.ADA TAPE:*.*
- $ COPY/LOG Z000003.ADA TAPE:*.*
- $ COPY/LOG Z000004.ADA TAPE:*.*
- $ COPY/LOG Z000005.ADA TAPE:*.*
- $ COPY/LOG Z000006.ADA TAPE:*.*
- $ COPY/LOG Z000007.ADA TAPE:*.*
- $ COPY/LOG Z000008.ADA TAPE:*.*
- $ COPY/LOG Z000009.ADA TAPE:*.*
- $ COPY/LOG Z000010.ADA TAPE:*.*
- $ COPY/LOG Z000011.ADA TAPE:*.*
- $ COPY/LOG Z000012.ADA TAPE:*.*
- $ COPY/LOG Z000013.ADA TAPE:*.*
- $ COPY/LOG Z000014.ADA TAPE:*.*
- $ COPY/LOG Z000015.ADA TAPE:*.*
- $ COPY/LOG Z000016.ADA TAPE:*.*
- $ COPY/LOG Z000016A.ADA TAPE:*.*
- $ COPY/LOG Z000017.ADA TAPE:*.*
- $ COPY/LOG Z000017A.ADA TAPE:*.*
- $ COPY/LOG Z000018.ADA TAPE:*.*
- $ COPY/LOG Z000020.ADA TAPE:*.*
- $ COPY/LOG Z000021.ADA TAPE:*.*
- $ COPY/LOG Z000022.ADA TAPE:*.*
- $ COPY/LOG Z000023.ADA TAPE:*.*
- $ COPY/LOG Z000110.ADA TAPE:*.*
- $ COPY/LOG Z000111.ADA TAPE:*.*
- $ COPY/LOG Z000111.COM TAPE:*.*
- $ COPY/LOG Z000111D.CLI TAPE:*.*
- $ COPY/LOG Z000111D.COM TAPE:*.*
- $ COPY/LOG Z000111D.LOG8650 TAPE:Z00011D.L86
- $ COPY/LOG Z000112.ADA TAPE:*.*
- $ COPY/LOG Z000113.ADA TAPE:*.*
- $ COPY/LOG Z000114.ADA TAPE:*.*
- $ COPY/LOG Z000121.ADA TAPE:*.*
- $ COPY/LOG Z000122.ADA TAPE:*.*
- $ COPY/LOG Z000123.ADA TAPE:*.*
- $ COPY/LOG Z000124.ADA TAPE:*.*
- $ COPY/LOG Z000131.ADA TAPE:*.*
- $ COPY/LOG Z000132.ADA TAPE:*.*
- $ COPY/LOG Z000133.ADA TAPE:*.*
- $ COPY/LOG Z000134.ADA TAPE:*.*
- $ COPY/LOG Z000141.ADA TAPE:*.*
- $ COPY/LOG Z000142.ADA TAPE:*.*
- $ COPY/LOG Z000143.ADA TAPE:*.*
- $ COPY/LOG Z000151.ADA TAPE:*.*
- $ COPY/LOG Z000152.ADA TAPE:*.*
- $ COPY/LOG Z000153.ADA TAPE:*.*
- $ COPY/LOG Z000161.ADA TAPE:*.*
- $ COPY/LOG Z000162.ADA TAPE:*.*
- $ COPY/LOG Z000171.ADA TAPE:*.*
- $ COPY/LOG Z000172.ADA TAPE:*.*
- $ COPY/LOG Z000173.ADA TAPE:*.*
- $ COPY/LOG Z000181.ADA TAPE:*.*
- $ COPY/LOG Z000182.ADA TAPE:*.*
- $ COPY/LOG Z000183.ADA TAPE:*.*
- $ COPY/LOG Z000184.ADA TAPE:*.*
- $ COPY/LOG Z000191.ADA TAPE:*.*
- $ COPY/LOG Z000192.ADA TAPE:*.*
- $ COPY/LOG Z000193.ADA TAPE:*.*
- $ COPY/LOG Z000201.ADA TAPE:*.*
- $ COPY/LOG Z000202.ADA TAPE:*.*
- $ COPY/LOG Z000203.ADA TAPE:*.*
- $ COPY/LOG Z000211.ADA TAPE:*.*
- $ COPY/LOG Z000212.ADA TAPE:*.*
- $ COPY/LOG Z000213.ADA TAPE:*.*
- $ COPY/LOG Z000221.ADA TAPE:*.*
- $ COPY/LOG Z000222.ADA TAPE:*.*
- $ COPY/LOG Z000223.ADA TAPE:*.*
- $ COPY/LOG Z000224.ADA TAPE:*.*
- $ COPY/LOG Z000231.ADA TAPE:*.*
- $ COPY/LOG Z000232.ADA TAPE:*.*
- $ COPY/LOG Z000233.ADA TAPE:*.*
- $ COPY/LOG Z000234.ADA TAPE:*.*
- $ COPY/LOG Z000241.ADA TAPE:*.*
- $ COPY/LOG Z000242.ADA TAPE:*.*
- $ COPY/LOG Z000243.ADA TAPE:*.*
- $ COPY/LOG Z000244.ADA TAPE:*.*
- $ COPY/LOG Z000254.ADA TAPE:*.*
- $ COPY/LOG Z000264.ADA TAPE:*.*
- $ COPY/LOG Z000274.ADA TAPE:*.*
- $ COPY/LOG Z000281.ADA TAPE:*.*
- $ COPY/LOG Z000282.ADA TAPE:*.*
- $ COPY/LOG Z000283.ADA TAPE:*.*
- $ COPY/LOG Z000284.ADA TAPE:*.*
- $ COPY/LOG Z000291.ADA TAPE:*.*
- $ COPY/LOG Z000292.ADA TAPE:*.*
- $ COPY/LOG Z000293.ADA TAPE:*.*
- $ COPY/LOG Z000294.ADA TAPE:*.*
- $ COPY/LOG Z000295.ADA TAPE:*.*
- $ COPY/LOG Z000301.ADA TAPE:*.*
- $ COPY/LOG Z000302.ADA TAPE:*.*
- $ COPY/LOG Z000303.ADA TAPE:*.*
- $ COPY/LOG Z000304.ADA TAPE:*.*
- $ COPY/LOG Z000311.ADA TAPE:*.*
- $ COPY/LOG Z000312.ADA TAPE:*.*
- $ COPY/LOG Z000313.ADA TAPE:*.*
- $ COPY/LOG Z000314.ADA TAPE:*.*
- $ COPY/LOG Z000315.ADA TAPE:*.*
- $ COPY/LOG ZCOMPILE.CLI TAPE:*.*
- $ COPY/LOG ZCOMPILE.COM TAPE:*.*
- $ COPY/LOG ZCOMPILE.ICC TAPE:*.*
- $ COPY/LOG ZCOMPILE.LOG8650 TAPE:ZCOMPILE.L86
- $ DISMOUNT MUA0:
- ::::::::::
- COPY.R10
- ::::::::::
- These are the files that should be kept ( or copied to an Rational R1000 )
- Running a COMPILATION.PARSE on all files below should work.
- Running a COMPILATION.MAKE on A000100 should work
-
- A000001.ADA
- A000015.ADA
- A000021.ADA
- A000022.ADA
- A000031.ADA
- A000032.ADA
- A000041.ADA
- A000042.ADA
- A000051.ADA
- A000052.ADA
- A000053.ADA
- A000054.ADA
- A000055.ADA
- A000091.ADA
- A000093.ADA
- A000094.ADA
- A000100.ADA
- C000001.ADA
- C000002.ADA
- C000003.ADA
- D000001.ADA
- D000002.ADA
- D000003.ADA
- D000004.ADA
- E000001.ADA
- E000002.ADA
- E000004.ADA
- F000001.ADA
- F000002.ADA
- G000001.ADA
- G000002.ADA
- G000003.ADA
- G000004.ADA
- G000005.ADA
- G000006.ADA
- G000007.ADA
- L000001.ADA
- L000002.ADA
- L000003.ADA
- P000001.ADA
- P000002.ADA
- P000003.ADA
- P000004.ADA
- P000005.ADA
- P000006.ADA
- P000007.ADA
- P000010.ADA
- P000011.ADA
- P000012.ADA
- P000013.ADA
- T000001.ADA
- T000002.ADA
- T000003.ADA
- T000004.ADA
- T000005.ADA
- T000006.ADA
- Z000001.ADA
- Z000002.ADA
- Z000003.ADA
- Z000004.ADA
- Z000005.ADA
- Z000006.ADA
- Z000007.ADA
- Z000008.ADA
- Z000009.ADA
- Z000010.ADA
- Z000011.ADA
- Z000012.ADA
- Z000013.ADA
- Z000014.ADA
- Z000015.ADA
- Z000016.ADA
- Z000016A.ADA
- Z000017.ADA
- Z000017A.ADA
- Z000018.ADA
- Z000020.ADA
- Z000021.ADA
- Z000022.ADA
- Z000023.ADA
- Z000110.ADA
- Z000111.ADA
- Z000112.ADA
- Z000113.ADA
- Z000114.ADA
- Z000121.ADA
- Z000122.ADA
- Z000123.ADA
- Z000124.ADA
- Z000131.ADA
- Z000132.ADA
- Z000133.ADA
- Z000134.ADA
- Z000141.ADA
- Z000142.ADA
- Z000143.ADA
- Z000151.ADA
- Z000152.ADA
- Z000153.ADA
- Z000161.ADA
- Z000162.ADA
- Z000171.ADA
- Z000172.ADA
- Z000173.ADA
- Z000181.ADA
- Z000182.ADA
- Z000183.ADA
- Z000184.ADA
- Z000191.ADA
- Z000192.ADA
- Z000193.ADA
- Z000201.ADA
- Z000202.ADA
- Z000203.ADA
- Z000211.ADA
- Z000212.ADA
- Z000213.ADA
- Z000221.ADA
- Z000222.ADA
- Z000223.ADA
- Z000224.ADA
- Z000231.ADA
- Z000232.ADA
- Z000233.ADA
- Z000234.ADA
- Z000241.ADA
- Z000242.ADA
- Z000243.ADA
- Z000244.ADA
- Z000254.ADA
- Z000264.ADA
- Z000274.ADA
- Z000281.ADA
- Z000282.ADA
- Z000283.ADA
- Z000284.ADA
- Z000291.ADA
- Z000292.ADA
- Z000293.ADA
- Z000294.ADA
- Z000295.ADA
- Z000301.ADA
- Z000302.ADA
- Z000303.ADA
- Z000304.ADA
- Z000311.ADA
- Z000312.ADA
- Z000313.ADA
- Z000314.ADA
- Z000315.ADA
-