home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / dhry21.zip / DHRY_2.C < prev    next >
C/C++ Source or Header  |  1992-08-24  |  5KB  |  193 lines

  1. /*
  2.  ****************************************************************************
  3.  *
  4.  *                   "DHRYSTONE" Benchmark Program
  5.  *                   -----------------------------
  6.  *                                                                            
  7.  *  Version:    C, Version 2.1
  8.  *                                                                            
  9.  *  File:       dhry_2.c (part 3 of 3)
  10.  *
  11.  *  Date:       May 25, 1988
  12.  *
  13.  *  Author:     Reinhold P. Weicker
  14.  *
  15.  ****************************************************************************
  16.  */
  17.  
  18. #include "dhry.h"
  19.  
  20. #ifndef REG
  21. #define REG
  22.         /* REG becomes defined as empty */
  23.         /* i.e. no register variables   */
  24. #endif
  25.  
  26. extern  int     Int_Glob;
  27. extern  char    Ch_1_Glob;
  28.  
  29.  
  30. Proc_6 (Enum_Val_Par, Enum_Ref_Par)
  31. /*********************************/
  32.     /* executed once */
  33.     /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
  34.  
  35. Enumeration  Enum_Val_Par;
  36. Enumeration *Enum_Ref_Par;
  37. {
  38.   *Enum_Ref_Par = Enum_Val_Par;
  39.   if (! Func_3 (Enum_Val_Par))
  40.     /* then, not executed */
  41.     *Enum_Ref_Par = Ident_4;
  42.   switch (Enum_Val_Par)
  43.   {
  44.     case Ident_1: 
  45.       *Enum_Ref_Par = Ident_1;
  46.       break;
  47.     case Ident_2: 
  48.       if (Int_Glob > 100)
  49.         /* then */
  50.       *Enum_Ref_Par = Ident_1;
  51.       else *Enum_Ref_Par = Ident_4;
  52.       break;
  53.     case Ident_3: /* executed */
  54.       *Enum_Ref_Par = Ident_2;
  55.       break;
  56.     case Ident_4: break;
  57.     case Ident_5: 
  58.       *Enum_Ref_Par = Ident_3;
  59.       break;
  60.   } /* switch */
  61. } /* Proc_6 */
  62.  
  63.  
  64. Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref)
  65. /**********************************************/
  66.     /* executed three times                                      */ 
  67.     /* first call:      Int_1_Par_Val == 2, Int_2_Par_Val == 3,  */
  68.     /*                  Int_Par_Ref becomes 7                    */
  69.     /* second call:     Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
  70.     /*                  Int_Par_Ref becomes 17                   */
  71.     /* third call:      Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
  72.     /*                  Int_Par_Ref becomes 18                   */
  73. One_Fifty       Int_1_Par_Val;
  74. One_Fifty       Int_2_Par_Val;
  75. One_Fifty      *Int_Par_Ref;
  76. {
  77.   One_Fifty Int_Loc;
  78.  
  79.   Int_Loc = Int_1_Par_Val + 2;
  80.   *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
  81. } /* Proc_7 */
  82.  
  83.  
  84. Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val)
  85. /*********************************************************************/
  86.     /* executed once      */
  87.     /* Int_Par_Val_1 == 3 */
  88.     /* Int_Par_Val_2 == 7 */
  89. Arr_1_Dim       Arr_1_Par_Ref;
  90. Arr_2_Dim       Arr_2_Par_Ref;
  91. int             Int_1_Par_Val;
  92. int             Int_2_Par_Val;
  93. {
  94.   REG One_Fifty Int_Index;
  95.   REG One_Fifty Int_Loc;
  96.  
  97.   Int_Loc = Int_1_Par_Val + 5;
  98.   Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
  99.   Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
  100.   Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
  101.   for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
  102.     Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
  103.   Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
  104.   Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
  105.   Int_Glob = 5;
  106. } /* Proc_8 */
  107.  
  108.  
  109. Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val)
  110. /*************************************************/
  111.     /* executed three times                                         */
  112.     /* first call:      Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R'    */
  113.     /* second call:     Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C'    */
  114.     /* third call:      Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C'    */
  115.  
  116. Capital_Letter   Ch_1_Par_Val;
  117. Capital_Letter   Ch_2_Par_Val;
  118. {
  119.   Capital_Letter        Ch_1_Loc;
  120.   Capital_Letter        Ch_2_Loc;
  121.  
  122.   Ch_1_Loc = Ch_1_Par_Val;
  123.   Ch_2_Loc = Ch_1_Loc;
  124.   if (Ch_2_Loc != Ch_2_Par_Val)
  125.     /* then, executed */
  126.     return (Ident_1);
  127.   else  /* not executed */
  128.   {
  129.     Ch_1_Glob = Ch_1_Loc;
  130.     return (Ident_2);
  131.    }
  132. } /* Func_1 */
  133.  
  134.  
  135. Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref)
  136. /*************************************************/
  137.     /* executed once */
  138.     /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
  139.     /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
  140.  
  141. Str_30  Str_1_Par_Ref;
  142. Str_30  Str_2_Par_Ref;
  143. {
  144.   REG One_Thirty        Int_Loc;
  145.       Capital_Letter    Ch_Loc;
  146.  
  147.   Int_Loc = 2;
  148.   while (Int_Loc <= 2) /* loop body executed once */
  149.     if (Func_1 (Str_1_Par_Ref[Int_Loc],
  150.                 Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
  151.       /* then, executed */
  152.     {
  153.       Ch_Loc = 'A';
  154.       Int_Loc += 1;
  155.     } /* if, while */
  156.   if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
  157.     /* then, not executed */
  158.     Int_Loc = 7;
  159.   if (Ch_Loc == 'R')
  160.     /* then, not executed */
  161.     return (true);
  162.   else /* executed */
  163.   {
  164.     if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
  165.       /* then, not executed */
  166.     {
  167.       Int_Loc += 7;
  168.       Int_Glob = Int_Loc;
  169.       return (true);
  170.     }
  171.     else /* executed */
  172.       return (false);
  173.   } /* if Ch_Loc */
  174. } /* Func_2 */
  175.  
  176.  
  177. Boolean Func_3 (Enum_Par_Val)
  178. /***************************/
  179.     /* executed once        */
  180.     /* Enum_Par_Val == Ident_3 */
  181. Enumeration Enum_Par_Val;
  182. {
  183.   Enumeration Enum_Loc;
  184.  
  185.   Enum_Loc = Enum_Par_Val;
  186.   if (Enum_Loc == Ident_3)
  187.     /* then, executed */
  188.     return (true);
  189.   else /* not executed */
  190.     return (false);
  191. } /* Func_3 */
  192.  
  193.