Robert Cemper · Nov 4, 2021 go to post

And as you might also have seen the version was 2021.2  which is not released yet.

Robert Cemper · Nov 4, 2021 go to post

Your reference explicitly mentions CSP files (with CSP markup language)
that are stored outside of Caché / IRIS. 
But this doesn't affect class-based CSP and the related server technology.  

Robert Cemper · Nov 4, 2021 go to post

??? you seem to insert the ID already  ???
set sql = " INSERT INTO Prenotazioni_CUP "_" (ID, cf)"_" VALUES (SEQTAB.NextVal, ?) 
??? not clear what you are looking for ???

Robert Cemper · Nov 3, 2021 go to post

What you experience is the effect of the Global Buffer Pool.
The rule is to overwrite the least used buffer if a new is required.
So the older the buffer the higher the chance to be overwritten and later reloaded.
Purging queries only affects code not data

Possible option:  increase  your buffer pool (double or triple size)
or try this approach: https://community.intersystems.com/post/global-buffer-questions
suggested by @Julius Kavay 

Robert Cemper · Nov 3, 2021 go to post

Utils.GetNumber('456')

is a static expression and not depending on rows so it is calculated only once.
 

do this changes:

ClassMethod GetSomeNumber(intInput As %Integer, id ) As %Integer [ SqlName = GetNumber, SqlProc ]

and your query

SELECT Utils.GetNumber('456',ID), ....

by adding ID you force a recalculation by a row dependency
 

Robert Cemper · Nov 1, 2021 go to post

not so clear what you mean by MUMPS routine.
if it is an .INT routine you just create an object from one of the ResultSet classes and execute the query
if it is a .MAC routine you may also use Embedded SQL which I don't prefer so much. 

And BTW. what is an IDX routine ???

What do expect by a VIEW? It is just a kind of store SQL statement.

Robert Cemper · Nov 1, 2021 go to post

This total ODD !  But it works.
The list doesn't allow Carret ^ for the positive Globals
for globals to skip Carret ^ is required !!!


ENS>set list="Ens.*.GBL,'^Ens.Me*.GBL,'^Ens.C*.GBL"
ENS>ENS>set sc=$system.OBJ.Export(.list)
;; output skipped ;;
ENS>ZWRITE    ;processed Globals
list("^Ens.ActiveMessage.gbl")=""
list("^Ens.AppData.gbl")=""
list("^Ens.BP.ContextD.gbl")=""
list("^Ens.BP.ThreadD.gbl")=""
list("^Ens.BP.ThreadI.gbl")=""
list("^Ens.BusinessProcessD.gbl")=""
list("^Ens.BusinessProcessI.gbl")=""
list("^Ens.Debug.gbl")=""
list("^Ens.DocClassMap.gbl")=""
list("^Ens.JobStatus.gbl")=""
list("^Ens.Mirror.gbl")=""
list("^Ens.Queue.gbl")=""
list("^Ens.Rule.gbl")=""
list("^Ens.Util.IOLogD.gbl")=""
list("^Ens.Util.IOLogI.gbl")=""
list("^Ens.Util.LogD.gbl")=""
list("^Ens.Util.LogI.gbl")=""
list("^Ens.Util.ScheduleD.gbl")=""
sc=1
My interpretation:
First, a local array is collected, and then the negated subscripts are deleted (requiring now ^   !!)
Robert Cemper · Nov 1, 2021 go to post
'Ens.Message*.gbl

Exclusion does not work with * 

and GBL should be upper case
 

Robert Cemper · Nov 1, 2021 go to post

Hi Dan !

ADD / CREATE is just wishful thinking. sad It is only able to EDIT an already EXISTING link.
If it exists you get asked: "Overwrite ?" otherwise "Not Found" as you have seen. angry

You must create first a dummy of type *.link.DFI  that you have to import by DeepSee Folder Manager
or better directly in Studio. You must then assign the correct name already there.
Folder Manager can't rename or move it !!  only Import/Export sad 

Here is a dummy link to start with.

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2021.1.0PYTHON (Build 237U)" ts="2021-11-01 13:54:36">
<Document name="dummy.link.DFI">
<link 
  xmlns="http://www.intersystems.com/deepsee/library" 
  name="dummy" folderName="Links" 
  shared="true" 
  public="true" 
  locked="false"
  href=""
  title="" 
  description="" 
  keywords="" 
  owner="" 
  resource="" 
  timeCreated="" 
  createdBy="" category="" 
  bookCover=""
  >           
</link>
</Document>
</Export>

Feel free to place a PRODLOG on that bug.
I will not do it. I'm not willing to wait so long. crying
I just recently received a closing message on another PRODLOG  I had placed in early 2017. angry
 

Robert Cemper · Nov 1, 2021 go to post

If this "HL7.{PID:AlternatePatientIDPID(1).ID}"  just doesn't exist CONTAINS must fail.
You could put your HL7 messages as input to a dummy DataTransformation to see
the available parts and their addressing and then apply it here

 

Robert Cemper · Nov 1, 2021 go to post

WRC download > Components > ODBC Drivers  has
ODBC Driver, Cache and Ensemble, 2018.1....  several build for all supported Platforms

Robert Cemper · Nov 1, 2021 go to post

CONTAINS wraps ObjectScript $FIND()  and just checks raw characters.
So no code conversion or Upper/Lower or anything else happens.
Suggestion:
dump the value you expect into a TRACE message and see what it really is

Robert Cemper · Oct 29, 2021 go to post

that's correct.
I see the need to understand the potential and the possibilitiies to apply if appropriate.
Actually, we do this with SQL and it is totally normal  [hopefully]
It should be as normal also for Embedded Py

Robert Cemper · Oct 29, 2021 go to post

In past, I have seen so many "re-invented wheels" on COS that were mostly kind of remakes of
existing packages or solutions. Though this is impressive from a coding point of view,
it is just a waste of energy from point of view of a project AND its maintenance.
I had similar experiences with SQL that was refused by "experienced" programmers
insisting on horrible $ORDER() / $QUERY() constructs almost un-supportable, to gain
a few microseconds of performance on a weekly report. 
The deeper reason: nobody explained it and trained them.
That's the behaviour to avoid. 

Robert Cemper · Oct 29, 2021 go to post

some hints.

  • use the opportunity to separate data from code. So you have already a new IRIS.DAT with all globals
  • create a fresh IRIS.DAT to be used just for routine (classes, ... )
  • now you should have a clean start of your IRIS instance
  • check if the globals are visible as expected, but neither classed not routines.
  • now open 1 Studio on Caché and 1 on your target IRIS namespace
  • next you can move all classes, routines, ... by drag&drop from Caché Studio to IRIS Studio
  •  
  • this last step could also be an XMLExport of all code and XML input but you miss eventually required adjustments.
Robert Cemper · Oct 28, 2021 go to post

I followed the first 3 sessions and just can strongly recommend following it.
To my opinion, it is MUST to follow them for anyone developing in IRIS in the future.

Robert Cemper · Oct 28, 2021 go to post

you set content-type application/x-www-form-urlencoded
BUT
is your content really urlencoded ?  
If NOT, decoding it may create some chaotic nonsense and definitely no XML

Robert Cemper · Oct 28, 2021 go to post

It's definitely not me.
As you seem to have not much background on IRIS you are probably on the wrong forum.
It's neither the place for  PHP nor MySQL
 

Robert Cemper · Oct 27, 2021 go to post

code sniplet:

set test="CONcatenate".url=""
for i=1:1:$l(test) s url=url_"%"_$zhex($a(test,i)) 

write
i=11
test="CONcatenate"
url="%43%4F%4E%63%61%74%65%6E%61%74%65"
Robert Cemper · Oct 26, 2021 go to post

Hi @Vic Sun , @Akshay Pandey :
Just to complete this discussion.

From Terminal I could run Py also from a JOB, and over CPIPE without problems.
From Studio Output all this FAILS.
Which makes clear that the process behind Studio is far away from being a normal
IRIS/Caché process and just good for editing and compiling.  FullStop.
I would even assume that running COS commands was not planned but rather an accident that happened 20 yerars ago.
 

Robert Cemper · Oct 26, 2021 go to post

I spent quite a while on the subject of python. Also the asynchronous $ZF(-2) + error log

write $zf(-2,"C:\Users\cemper\AppData\Local\Microsoft\WindowsApps\pythonw3.9.exe <c:\temp\in.py 1>c:\temp\5out.txt 2>c:\temp\5er.txt")

And the error from WINDOWS was always: the program can not be executed
A further reason to use
Embedded Python!

in.pyw is simply

print("success")
exit()

 

Robert Cemper · Oct 26, 2021 go to post

Just an idea:
I assumed that you use a local installation of IRIS
Is this correct ? 
Or does it run on some instance separate from your local WIN.
whoami is equivalent to echo %USERDOMAIN%\%USERNAME%

write $zf(-1,"hostname > c:\temp\hostname.txt")

may clarify this.
If it's not the same machine you need a PY installation this server

Robert Cemper · Oct 25, 2021 go to post

thanks for the clarification.   I had a similar experience with node.js before.
But was not so certain to know the reasoning.
yes