aboutsummaryrefslogtreecommitdiff
path: root/pkg/xtools/catquery/cqrstat.x
blob: 60319e776093ef82c178abc49646808854aaffbe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
include "cqdef.h"
include "cq.h"


# CQ_RSTATI -- Get an integer results parameter.

int procedure cq_rstati (res, param)

pointer res                     #I pointer to the results descriptor
int     param                   #I the integer parameter to be retrieved

begin
        switch (param) {
        case CQRNQPARS:
            return (CQ_RNQPARS(res))
	case CQRTYPE:
            return (CQ_RTYPE(res))
        case CQRNRECS:
            return (CQ_RNRECS(res))
        case CQRECSIZE:
            return (CQ_RECSIZE(res))
        case CQRHSKIP:
            return (CQ_RHSKIP(res))
        case CQRTSKIP:
            return (CQ_RTSKIP(res))
        case CQRTRIML:
            return (CQ_RTRIML(res))
        case CQRTRIMR:
            return (CQ_RTRIMR(res))
	case CQNHEADER:
            return (CQ_NHEADER(res))
	case CQNFIELDS:
            return (CQ_NFIELDS(res))
	case CQRECPTR:
            return (CQ_RECPTR(res))
        default:
            call error (0, "Error fetching integer results parameter")
        }
end


# CQ_RSTATR -- Get a real results parameter.

real procedure cq_rstatr (res, param)

pointer res                     #I pointer to the results descriptor
int     param                   #I the real parameter to be retrieved

begin
        switch (param) {
        default:
            call error (0, "Error fetching real results parameter")
        }
end


# CQ_RSTATD -- Get a double precision results parameter.

double procedure cq_rstatd (res, param)

pointer res                     #I pointer to the results descriptor
int     param                   #I the double parameter to be retrieved

begin
        switch (param) {
        default:
            call error (0, "Error fetching double results parameter")
        }
end


# CQ_RSTATS -- Get a string results parameter.

procedure cq_rstats (res, param, str, maxch)

pointer res                     #I pointer to the results descriptor
int     param                   #I the string parameter to be retrieved
char    str[ARB]                #O the output string parameter
int     maxch                   #I the maximum size of the string parameter

begin
        switch (param) {
        case CQRCATDB:
            call strcpy (CQ_RCATDB(res), str, maxch)
        case CQRCATNAME:
            call strcpy (CQ_RCATNAME(res), str, maxch)
        case CQRADDRESS:
            call strcpy (CQ_RADDRESS(res), str, maxch)
        case CQRQUERY:
            call strcpy (CQ_RQUERY(res), str, maxch)
        case CQRQPNAMES:
            call strcpy (Memc[CQ_RQPNAMES(res)], str, maxch)
        case CQRQPVALUES:
            call strcpy (Memc[CQ_RQPVALUES(res)], str, maxch)
        case CQRQPUNITS:
            call strcpy (Memc[CQ_RQPUNITS(res)], str, maxch)
        default:
            call error (0, "Error fetching string results parameter")
        }
end


# CQ_RSTATT -- Get a text list results parameter. A text list is a
# string with items separated from each other by newlines.

int procedure cq_rstatt (res, param, str, maxch)

pointer res                     #I pointer to the results descriptor
int     param                   #I the list parameter to be retrieved
char    str[ARB]                #O the output string parameter
int     maxch                   #I the maximum size of the string parameter

pointer	sp, tstr
int     i, fd
int     stropen(), cq_wrdstr()

begin
        switch (param) {

        case CQRQPNAMES:
	    call smark (sp)
	    call salloc (tstr, CQ_SZ_QPNAME, TY_CHAR)
            fd = stropen (str, maxch, NEW_FILE)
	    str[1] = EOS
            do i = 1, CQ_RNQPARS(res) {
		if (cq_wrdstr (i, Memc[tstr], CQ_SZ_QPNAME,
		    Memc[CQ_RQPNAMES(res)]) > 0) {
                    call fprintf (fd, "%s\n")
                        call pargstr (Memc[tstr])
		}
            }
            call close (fd)
	    call sfree (sp)
            return (CQ_RNQPARS(res))

        case CQRQPVALUES:
	    call smark (sp)
	    call salloc (tstr, CQ_SZ_QPVALUE, TY_CHAR)
            fd = stropen (str, maxch, NEW_FILE)
	    str[1] = EOS
            do i = 1, CQ_RNQPARS(res) {
		if (cq_wrdstr (i, Memc[tstr], CQ_SZ_QPVALUE,
		    Memc[CQ_RQPVALUES(res)]) > 0) {
                    call fprintf (fd, "%s\n")
                        call pargstr (Memc[tstr])
		}
            }
            call close (fd)
	    call sfree (sp)
            return (CQ_RNQPARS(res))

        case CQRQPUNITS:
	    call smark (sp)
	    call salloc (tstr, CQ_SZ_QPUNITS, TY_CHAR)
            fd = stropen (str, maxch, NEW_FILE)
	    str[1] = EOS
            do i = 1, CQ_RNQPARS(res) {
		if (cq_wrdstr (i, Memc[tstr], CQ_SZ_QPUNITS,
		    Memc[CQ_RQPUNITS(res)]) > 0) {
                    call fprintf (fd, "%s\n")
                        call pargstr (Memc[tstr])
		}
            }
            call close (fd)
	    call sfree (sp)
            return (CQ_RNQPARS(res))

        default:
            call error (0, "Error fetching list results parameter")
        }
end