Robert Cemper · Sep 5, 2021 go to post
s max=0,glb="^MyGlobal" f  s glb=$q(@glb) q:glb=""  s:$ql(glb)>max max=$ql(glb)
zw max
Robert Cemper · Sep 5, 2021 go to post

Beginners see the query plan first and then create the index on items in WHERE clause.
Experts mostly reverse the sequence.

Robert Cemper · Sep 3, 2021 go to post

SSO account can be shared for WRC (if enabled), DC, OEX, Learnig, ..
Global Masters is an external application that can make use of SSO
but has its own independent accounts as well.  

Robert Cemper · Sep 3, 2021 go to post

did you try 

ZN "%SYS"

   to return ? or switching to a different Namespace and back to %SYS ?

Robert Cemper · Aug 31, 2021 go to post

as posted on stackoverflow:

for details see Class %ZEN.Component.dateText

setting format:
Property format As %ZEN.Datatype.string(MAXLEN = 3, VALUELIST = ",MDY,DMY,YMD", ZENEXPRESSION = 1)
you have exactly 3 formats or "" 

Your guess on values is correct and documented:   
/// The value of this control is always in the canonical form: YYYY-MM-DD

As this is one of the oldest components of ZEN your only chance to achieve
your way of operation is to create your own version inheriting from
Class %ZEN.Component.dateText and overloading the parts you want to change

Robert Cemper · Aug 27, 2021 go to post

OK!  you talk about a local variable array
If you don't pass the local array with the JOB command it is not defined in the new JOB
because it is LOCAL   
except if you run  the 2 SET commands of your example also in the JOBbed routine.
also your WRITE command will fail if you don't specify some output device.
since by definition a background JOB doesn't have foreground output.

Robert Cemper · Aug 26, 2021 go to post

@Lewis Houlden 
If you stop a process from the Management portal you have the option to launch an <RESJOB>  error in $ZE
this allows you to clean out the message that triggered your process.
If not, the triggering message remains unprocessed in the queue.
Which results in the retry you see.

Robert Cemper · Aug 25, 2021 go to post

You might be able to achieve the first part of your description by some tricky JOIN constructs.
Just access to a non-existing column will fail at generating the Query.
Cascading might be easier (also for maintenance)  by filling a TempTable over several cycles
and so assemble the final result.

I would suggest to create a ClassMethod projected to SQL as Stored Procedure.
then instead of the trick with the switch you just provide the parameters that you really have

Robert Cemper · Aug 25, 2021 go to post

to rephrase your problem:
- You look for a way to switch on/off  column 1
so you need a switch:  >>> new parameter 
and use it like this:

... WHERE (0=? OR  column1=?) AND column2=?

if your first param is 0   then 2nd param (for column1) is irrelevant 
if your first param is 1   then 2nd param (for column1) is effective 
so execute(0,a,b)   uses any value of column1
whille execute(1,a,b) filters column1 and column2

Robert Cemper · Aug 24, 2021 go to post

the maxSCALE = 18 
see Doc on $NORMALIZE()
used in ##class/%Library.Numeric).Normalize()
/// Converts <var>%val</var> to a normalized value.
ClassMethod Normalize(%val As %RawString) As %Numeric [ CodeMode = generator, ServerOnly = 1 ]
{
%codemode=$$$cMETHCODEMODEEXPRESSION
%code="$select($zu(115,13)&&(%val=$c(0)):"""",1:$normalize($decimal(%val),"_+%parameter("SCALE")_"))"
QUIT $$$OK
}

But it is no problem to clone this data tape and write a private one

Robert Cemper · Aug 24, 2021 go to post

ah!

I have a link generator written that is reading Source (Oracle) tables and that
uses the %Library.ResultSet class. for each it gets column name, type, maxsize,
precision, lais, readonly, required & data type name and builds Cache Linked Table.

So you don't use the Caché provided Default Link generator in SMP !!!
So you get the default of datatype class %Numeric  (=> SCALE=2)

It might be enough to add :

$SELECT(columntype["Numeric":"%Numeric (SCALE=4)",1:columntype) 

It's all under your own control.

Robert Cemper · Aug 24, 2021 go to post

And therefore you should edit the generated class and not touch any defaults.
I assume it's the Link Generator that uses SCALE=2 if Oracle doesn't provide anything.

Robert Cemper · Aug 24, 2021 go to post

if you link a table from another DB  (Oracle) there is a related class generated in Caché.
In this class a property related to your column with type %Numeric.
all you have to do is to add (SCALE=4)  or whatever scale you need.
this data type existed already in Caché 5.*  about 20 years back. 

The system-wide control is stored in Cache.cpf file.
You can change ist from SMP in  System > Configuration > System-defined DDL Mappings 
though I would not recommend to do it on a system-wide scope
as this affects ALL mapping between Caché Objects and SQL

Robert Cemper · Aug 19, 2021 go to post

it makes sense also to display what you group 

SELECT count(*),substr(TimeLogged,1,7), ConfigName
FROM Ens_Util.Log
where TimeLogged %STARTSWITH '2021-07'
and ConfigName = 'operation_Name'
group by substr(TimeLogged,1,7)
Robert Cemper · Aug 18, 2021 go to post

I see we share the same approach. Thanks for the confirmation.
As an isolated developer, I couldn't identify any significant improvement over my actual environment.

Robert Cemper · Aug 17, 2021 go to post

Though this looks quite impressive I have 2 concerns

#1

#2

Still 23 days to go free.

Robert Cemper · Aug 17, 2021 go to post

It seems in github.com .gitattributes are honored and code coloring works  OK
while the NEW editor in github.dev ignores it. sad
And I found it boring slow in startup

Robert Cemper · Aug 17, 2021 go to post

I used the default Editor in Github Web text viewer

I saw no difference over the last months

Robert Cemper · Aug 17, 2021 go to post

That's what is scaring me:
 "Any application that can be written in ObjectScript, will eventually be written in ObjectScript."
and the reinventing of wheels will go on ....sad