home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / adaptor / dalib / pvm3 / argument.c next >
C/C++ Source or Header  |  1993-06-14  |  3KB  |  87 lines

  1. /*******************************************************************
  2. *                                                                  *
  3. *  void eval_arg (default_NP, max_NP, NP, trace_flag)              *
  4. *                                                                  *
  5. *  Get values for number of processors and set trace_flag          *
  6. *                                                                  *
  7. *   setenv NP 10                                                   *
  8. *   setenv TRACE on | 1 | ON                                       *
  9. *                                                                  *
  10. *  command line arguments have highest priority                    *
  11. *                                                                  *
  12. *******************************************************************/
  13.  
  14. #include <stdlib.h>      /* getenv */
  15.  
  16. void eval_arg (default_NP, max_NP, NP, trace_flag)
  17. int default_NP, max_NP, *NP, *trace_flag;
  18.  
  19. { char *argument, *getarg_ ();
  20.   char argval[10];
  21.   int iargc_ (), narg;
  22.   int i, j;
  23.  
  24.   /* defaults */
  25.   *NP = default_NP;
  26.   *trace_flag = 0;  /* default start without trace */
  27.  
  28.   argument = getenv ("NP");
  29.   if (argument != ((char *)0) )
  30.      {  /* printf ("eval environment variable NP = %s\n", argument); */
  31.         sscanf (argument, "%d", NP);
  32.      }
  33.  
  34.   argument = getenv ("TRACE");
  35.   if (argument != ((char *)0) )
  36.      {  /* printf ("eval environment variable TRACE = %s\n", argument); */
  37.         if (strcmp(argument,"1") == 0)
  38.            *trace_flag = 1;
  39.          else if (strcmp(argument,"on") == 0)
  40.            *trace_flag = 1;
  41.          else if (strcmp(argument,"ON") == 0)
  42.            *trace_flag = 1;
  43.         printf ("trace_flag = %d\n", *trace_flag);
  44.      }
  45.  
  46.   narg = iargc_ ();
  47.   for (i=1;i<=narg;i++)
  48.       { 
  49. #ifdef ALLIANT
  50.         argument = getarg_ (&i);
  51.         printf ("arg[%d] = %s\n", i, argument);
  52.         if (strcmp (argument, "-t") == 0)
  53.            *trace_flag = 1;
  54.           else if (strcmp (argument, "-n") == 0)
  55.            *trace_flag = 0;
  56.           else
  57.            sscanf (argument, "%d", NP);
  58. #else
  59.         getarg_ (&i, argval);
  60.         printf ("arg[%d] = %s\n", i, argval);
  61.         if (strcmp (argval, "-t") == 0)
  62.            *trace_flag = 1;
  63.           else if (strcmp (argval, "-n") == 0)
  64.            *trace_flag = 0;
  65.           else
  66.            sscanf (argval, "%d", NP);
  67. #endif
  68.       }
  69.  
  70.   /* Enter number of processes */
  71.  
  72.   while (*NP == 0)
  73.    { printf ("Please enter number of processes : \n");
  74.      scanf ("%d",NP);
  75.      if ((*NP > max_NP) || (*NP < 1))
  76.        { printf ("Illegal Number of Processes (only %d - %d)\n", 1, max_NP);
  77.          *NP = 0;
  78.        }
  79.    }
  80.  
  81.   if (*trace_flag == 1)
  82.      printf ("starting %d processes with trace\n", *NP);
  83.     else
  84.      printf ("starting %d processes\n", *NP);
  85.  
  86. }  /* eval_arg */
  87.