ClassMethod OnPage() As %Status [ ServerOnly = 1 ]
{
//just the query string...
set qs=%request.CgiEnvs("QUERY_STRING")
//SOLUTION 1: $piece only
set externalCenterCode=$p(qs,":")
set startDateRange=$p($p(qs,":authoredOn=le",2),":")
set endDataRange=$p($p(qs,":authoredOn=ge",2),":")
//SOLUTION 2: generic solution if params grow
for i=1:1:$l(qs,":") {
set nvp=$p(qs,":",i),name=$p(nvp,"=",1),value=$p(nvp,"=",2)
//fix the quirks
if value="" set value="name",name="ecc"
if name="authoredOn" set name=$e(value,1,2),value=$e(value,3,*)
set params(name)=value
}
//SOLUTION 3: regex(ish) solution
set code=$p(qs,":")
set loc=$locate(qs,"le\d{4}-\d{2}-\d{2}")
set start=$e(qs,loc+2,loc+11)
set loc=$locate(qs,"ge\d{4}-\d{2}-\d{2}")
set end=$e(qs,loc+2,loc+11)
//some helper code to dump the variables into the CSP page
write !,"<pre>"
zwrite
//use this to take a good look at the request object...
zwrite %request
write !,"</pre>"
quit $$$OK
}Here are three solutions and a couple of inline tips, including your request for regex example
I wouldn't worry too much about using $piece, its very common to use it in this way
Eduards comment above also has a fourth suggestion to use $lfs (list from string) which is also commonly used as a way of piecing out data
- Log in to post comments

