ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/proj/cookbook/smpl_01.c
Revision: 1.2
Committed: Mon Apr 20 21:56:31 2009 UTC (14 years, 5 months ago) by rick
Content type: text/plain
Branch: MAIN
CVS Tags: NetDRMS_Ver_2-0a2, Ver_5-1
Changes since 1.1: +1 -1 lines
Log Message:
fixed comment

File Contents

# User Rev Content
1 rick 1.1 /*
2     * smpl_01.c $DRMS/proj/cookbook/
3     *
4     * Annother simple module that does nothing but echo back the values of
5     * arguments. It illustrates the use of command line parsing and the
6     * variety of argument types; also introduces time string functions
7     *
8     * Usage:
9 rick 1.2 * smpl_01 [-avVH]
10 rick 1.1 *
11     * Bugs:
12     * The module is of no particular use, and exists merely for heuristic
13     * and testing purposes.
14     *
15     * Revision history is at end of file.
16     */
17    
18     #include <jsoc_main.h>
19     char *module_name = "CookbookRecipe:01";
20     char *version_id = "1.0";
21    
22     ModuleArgs_t module_args[] = {
23     {ARG_STRING, "name", "Not Specified", "a string"},
24     {ARG_INT, "ival", "1", "a positive integer", "[1,)"},
25     {ARG_INTS, "iptr", "[0]", "array of integers"},
26     {ARG_FLOAT, "fval", "0.0", "a real number"},
27     {ARG_FLOAT, "fvalns", "Unspecified", "a real number"},
28     {ARG_FLOATS, "fptr", "{2.71828, 3.14159, -1}", "array of real numbers"},
29     {ARG_TIME, "time", "1582.10.5_00:00:00",
30     "a time, in standard date_time format"},
31     {ARG_NUME, "colour", "", "enumerated choice without a default",
32     "red, orange, yellow, green, blue, indigo, violet"},
33     {ARG_NUME, "mois", "Brumaire", "enumerated choice with a default",
34     "Vendémiaire, Brumaire, Frimaire, Nivôse, Pluviôse, Ventôse, Germinal, \
35     Florial, Prairial, Messidor, Thermidor, Fructidor"},
36     {ARG_FLAG, "e", "", "a flag value"},
37     {ARG_END}
38     };
39    
40     int DoIt (void) {
41     CmdParams_t *params = &cmdparams;
42     double *fpval;
43     int *ipval;
44     int i, fpvals, ipvals;
45     char *colours[] = {"red", "orange", "yellow", "green", "blue", "violet"};
46     char *moiss[] = {"Vendémiaire", "Brumaire", "Frimaire", "Nivôse", "Pluviôse",
47     "Ventôse", "Germinal", "Florial", "Prairial", "Messidor", "Thermidor",
48     "Fructidor"};
49     char key[64], tbuf[64];
50    
51     TIME tval = params_get_time (params, "time");
52     double fval = params_get_double (params, "fval");
53     int ival = params_get_int (params, "ival");
54     int colour = params_get_int (params, "colour");
55     int mois = params_get_int (params, "mois");
56     char *name = params_get_str (params, "name");
57     int flagset = params_isflagset (params, "e");
58    
59     printf ("name = %s\n", name);
60     printf ("fval = %g\n", fval);
61     printf ("ival = %d\n", ival);
62     sprint_time (tbuf, tval, "UT", 3);
63     printf ("time = %s\n", tbuf);
64     printf ("colour = %d (%s)\n", colour, colours[colour]);
65     printf ("mois = %d (%s)\n", mois, moiss[mois]);
66     printf ("-e? : %d\n", flagset);
67    
68     printf ("fpvals = %d\n", fpvals = params_get_int (params, "fptr_nvals"));
69     fpval = (double *)malloc (fpvals * sizeof (double));
70     for (i = 0; i < fpvals; i++) {
71     sprintf (key, "fptr_%d_value", i);
72     fpval[i] = params_get_double (params, key);
73     printf ("fpval[%d] = %g\n", i, fpval[i]);
74     }
75     printf ("ipvals = %d\n", ipvals = params_get_int (params, "iptr_nvals"));
76     ipval = (int *)malloc (ipvals * sizeof (int));
77     for (i = 0; i < ipvals; i++) {
78     sprintf (key, "iptr_%d_value", i);
79     ipval[i] = params_get_int (params, key);
80     printf ("ipval[%d] = %d\n", i, ipval[i]);
81     }
82    
83     return (0);
84     }
85    
86     /*
87     * Revision History
88     *
89     * 07.02.27 created by RSB, based on original using SSSC API
90     * 09.04.14 minor mods to illustrate additional features of arg parsing
91     */