Robert Cemper · Jul 29, 2022 go to post

Out of curiosity.
For my review analysis, I try to read the STARS In OpenExchange review pages.
The display is generated by Drupal based on some frames running JS scripts in the browser, filled with data from a DB in background that I have no access to.
Is there a chance by using BeautifulSoup to analyze this dynamic content?
 

Robert Cemper · Jul 14, 2022 go to post

in ObjectScript it might be
list("A","x")=""
list("B","y")=""
list("C","z")=""

and you pass it by reference 
do method(.list)
and consume is using $ORDER() or $QUERY()

Robert Cemper · Jul 14, 2022 go to post

and of course any TRIGGER on DELETE will give you more options
e.g. LOG^%ETN()   to dump the full call stack

Robert Cemper · Jul 8, 2022 go to post

Hi @Yaron Munz 
In 1978 when DSM-11 was first released there was no $QUERY() but $NEXT(). doing the job.
Could have been in MUMPS.4B as well.(?)

Robert Cemper · Jul 5, 2022 go to post

So in worst case you just deal with 27 "locations"  for the next years.
Though I have no idea how overseas areas are handled in FR and NL (you are closest).
Good luck !yes
 

Robert Cemper · Jul 5, 2022 go to post

Hi @Marcel den Ouden 

I did something similar a few years back for an ISC internal project.
I required 2 tables to achieve this
- mapping of the location to timezone code  (geographic coordinates are often misleading, STATIC)
- rules and offset from UTC (daylight Saving Y/N, the window when to apply,...) might be flexible
- $ZTZ is your friend and the Docs are really excellent also for special cases

A further complication is mobile use.
example:
- You go to Summit in Seattle. (UTC-7)
- you need to arrange a concall with a customer in Amsterdam (UTC+2) (CEST!)
- and meeting in Nov. (UTC+1)  back to normal time
- And you need to know the time zone used by your notebook (local or home or other?)

For the notebook, I used some JavaScript as the app was written in ZEN (10 yrs.back)
and it was mine and I could control it.
see more in my Article Global Time Management
 

Robert Cemper · Jul 5, 2022 go to post

I took a look into Caché 2018.
%DisplayFormatted is still useless for your case.
It calls the method %Display() which allows having a different delimiter:
It just doesn't use or support it. It is forgotten until today.
So default $C(9) "TAB" is used.
You may need to open the output file yourself and then 
use it with a %Next Loop writing it line by line. 
So you may also control your headers.

It looks like this method was not foreseen to be used in real applications.
 

Robert Cemper · Jul 5, 2022 go to post

in addition,  you may force your column headers in the SQL statement

set sql = "select ID as ""row"", name as ""myname"" from MyClass"

Robert Cemper · Jul 5, 2022 go to post

reading the content of  Docs:

I''d susggest you use either

     set type=100

or the correct case as suggested by documentations

    set type="CSV"
 

Robert Cemper · Jul 5, 2022 go to post

Thanks for this video  and get moving faces to the mostly invisible actors in DC, OEX, GM
It would be great to have a link to a personal video also in DC accounts.  

???

Robert Cemper · Jul 4, 2022 go to post

From your description, it is obvious that you write ALL global streams just to default ^CacheStream.

To separate them you may set individual Globals for streaming (e.g depending on use-case)

Class %Library.GlobalBinaryStream has this parameter + property:
/// Default location: can be overridden at run-time
Parameter STOREGLOBALNAME = "^CacheStream"; /// Root is Global Location (name and top subscripts)
Property StoreRoot As %String(MAXLEN = 5000) [ InitialExpression = {..#STOREGLOBALNAME}, Private ]; Property rollback As %String [ MultiDimensional, Private ];

You can change this default using the method
Method %LocationSet(value As %String) As %Status
{
 Do ..Clear()
 Set ..StoreRoot=value,i%%Location=value
 Quit $$$OK
}

 

Robert Cemper · Jun 29, 2022 go to post

Just to  complete it:

iris.cpf  could be understood as kind of .ini file that is loaded during system start. Regular access during normal operation would be a desaster to perfomance.

Robert Cemper · Jun 27, 2022 go to post

Default Samples.Person use the implicit ID.

You need to change or  write your own Method %IdSet or Define your own property as  ID

Robert Cemper · Jun 24, 2022 go to post

Suggestion:
add 

Property Val as Serials.Value;
in your main class
and
Class Serial.Value  Extends %SerialObject {
Property Single as %String;
Property Tsh as %String;
Property T4 as %String;
Property T5 as %String;

 

in SQL you see it as columns 
Val_Single
Val_Tsh
Val_T4
Val_T5

Robert Cemper · Jun 23, 2022 go to post

$QUERY() needs a Global reference:

  • ^je1("NotConfigured"   is OK
  • node is just a local variable and not OK
  • to use it you have to apply an indirection  >>> @node

I have edited my reply after the first send
and better use %node as indirection is context sensitive.

Robert Cemper · Jun 23, 2022 go to post

You just miss setting node to the found value and the indirection for the node reference
Set node $Query(^TestGlobal("NotConfigured"))
   WRITE !,node
  FOR   {
    SET queryary=$QUERY(@node)
        QUIT:queryary=""  
        WRITE !,queryary
       SET node=queryary

  }
to avoid issues with variable scoping use %node instead of node  for proper work of indirection

Robert Cemper · Jun 21, 2022 go to post

Thank you Mark!
And thanks for the hint on help(iris).
You hit the point:
The post was mainly meant as an interim filler until some more precise doc is available.
And also as a follow-up to my previous published exercises.

And for the actual contest, I needed a subject nobody else touched on before.

Robert Cemper · Jun 20, 2022 go to post

Does  NewHeaderId allow NULL or is it required ?
in addition, you could try '' instead of NULL

Robert Cemper · Jun 20, 2022 go to post

I joined with an article and a video.
Might be an inspiration for other writers.