8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Print to screen the parameter value for specified parameter and TAC,",
23 "based on the name or number of the parameter and TAC in the file.",
25 "Usage: @P [options] parfile parametername tacname",
29 " Parameter SD or CL value is printed instead of parameter itself.",
33 " @P ab123fitk3.res k3 putam",
35 "See also: paradd, parformat, parrenp, parsort, pardiff, rescoll",
37 "Keywords: parameter, tool, reporting, software testing",
56int main(
int argc,
char **argv)
58 int ai, help=0, version=0, verbose=1;
59 char parfile[FILENAME_MAX], parname[FILENAME_MAX], tacname[FILENAME_MAX];
65 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
66 parfile[0]=parname[0]=tacname[0]=(char)0;
68 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
70 char *cptr=argv[ai]+1;
if(*cptr==
'-') {cptr++;
if(!*cptr)
continue;}
71 if(!strcasecmp(cptr,
"SD")) {printWhat=1;
continue;}
72 if(!strcasecmp(cptr,
"CL1")) {printWhat=2;
continue;}
73 if(!strcasecmp(cptr,
"CL2")) {printWhat=3;
continue;}
74 if(!strncasecmp(cptr,
"PAR", 1)) {printWhat=0;
continue;}
75 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
84 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
89 if(ai<argc)
strlcpy(parfile, argv[ai++], FILENAME_MAX);
90 if(ai<argc)
strlcpy(parname, argv[ai++], FILENAME_MAX);
91 if(ai<argc)
strlcpy(tacname, argv[ai++], FILENAME_MAX);
92 if(ai<argc) {fprintf(stderr,
"Error: too many arguments: '%s'.\n", argv[ai]);
return(1);}
95 if(!tacname[0]) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
99 printf(
"parfile := %s\n", parfile);
100 printf(
"parname := %s\n", parname);
101 printf(
"tacname := %s\n", tacname);
102 printf(
"printWhat := %d\n", printWhat);
109 if(verbose>1) printf(
"reading %s\n", parfile);
117 printf(
"parNr := %d\n", par.
parNr);
118 printf(
"tacNr := %d\n", par.
tacNr);
124 int parNr=0, tacNr=0;
128 printf(
"%d parameter(s) match '%s'\n", parNr, parname);
129 printf(
"%d TAC(s) match '%s'\n", tacNr, tacname);
131 if(parNr==0) fprintf(stderr,
"Error: no parameter matches '%s'.\n", parname);
132 if(tacNr==0) fprintf(stderr,
"Error: no TAC matches '%s'.\n", tacname);
133 if(parNr==0 || tacNr==0) {
parFree(&par);
return(3);}
134 if(tacNr>1 || parNr>1) {
135 fprintf(stderr,
"Error: cannot identify a single parameter value.\n");
136 printf(
"The following parameters would match the given parameter and TAC name:\n");
137 for(
int pi=0; pi<par.
parNr; pi++)
if(par.
n[pi].
sw) {
138 for(
int ti=0; ti<par.
tacNr; ti++)
if(par.
r[ti].
sw)
139 printf(
" %s\t%s\n", par.
n[pi].
name, par.
r[ti].
name);
148 for(
int pi=0; pi<par.
parNr; pi++)
if(par.
n[pi].
sw) {
149 for(
int ti=0; ti<par.
tacNr; ti++)
if(par.
r[ti].
sw) {
150 if(printWhat==1) v=par.
r[ti].
sd[pi];
151 else if(printWhat==2) v=par.
r[ti].
cl1[pi];
152 else if(printWhat==3) v=par.
r[ti].
cl2[pi];
153 else v=par.
r[ti].
p[pi];
159 if(isnan(v)) {fprintf(stderr,
"Error: requested a missing value.\n");
return(5);}
161 fprintf(stdout,
"%g\n", v);
char * parFormattxt(parformat c)
int parRead(PAR *par, const char *fname, TPCSTATUS *status)
int parSelectTACs(PAR *d, const char *region_name, int reset, TPCSTATUS *status)
int parSelectParameters(PAR *d, const char *par_name, int reset, TPCSTATUS *status)
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
char name[MAX_PARNAME_LEN+1]
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
Header file for library libtpcextensions.
Header file for library libtpcift.
Header file for libtpcpar.