go to post Robert Cemper · Nov 18, 2019 I faced a similar issue some years back. As PHP is so close to web servers I decided to use a WebsService to call the ClassMethod aka Procedure.It was easy on both ends and I could avoid the ODBC module (at that time only 32bit)
go to post Robert Cemper · Nov 17, 2019 In addition to Nigel's answer.: A central list of all routines doesn't seem to exist. But: Search the Documentation for CHUI and you will be surprised.(CHUI stands for CHaracter based Utility Interface) Special findings: Using ^GBLOCKCOPY for Fast Global Copies Character-based Management Routines Legacy Documentation this is really old stuff and mostly obsolete but still operational for special requirements WARNING: they are hard to read and much harder to understand Using the Caché ^%R Routine, Version 2008.1. Caché Programming Guide, Version 4.1: “Chapter 9 — Additional Routine Utilities” includes: %RCHANGE, %RCMP, %RCMPSEQ, %RCOMPIL, %RCOPY %RD, %RDEL, %RDELETE %RFAND, %RFIND, %RFIRST %RI, %RIMF %RKILL %RO, %ROMF %RPURGE %RVERMAX Caché Programming Guide, Version 4.1: “Chapter 10 — Additional Global Utilities” includes: %G %GCHANGE, %GCOPY %GD %GI, %GIF, %GIGEN %GO, %GOF, %GOGEN %GSET
go to post Robert Cemper · Nov 16, 2019 I'd expect better text search in a source control repository.Anyhow there is either a bug or a setup problem related to your Error msg in Atelier. Do you have any Windows based PC available to use Studio ?
go to post Robert Cemper · Nov 16, 2019 This routine is mapped to another database, are you sure you want to change it?? No => yes%DIRFULL.INT reply with NO (default) and you won't change any %*routine if you work from your namespace (RPMS?)
go to post Robert Cemper · Nov 16, 2019 you use %session.AppTimeout which has a default of 900 (sec). but SetCookie asks for a Time !method SetCookie(name As %String, value As %String, expires As %String = "", path As %String = "", domain As %String = "", secure As %Boolean = 0, httpOnlyFlag As %Boolean = 0) I see from https://stackoverflow.com/questions/13154552/javascript-set-cookie-with-expire-timewhat string this might be. 'Mon, 18 Nov 2019 08:50:17 GMT'; My assumption - your 900 was just not recognized and the default (=session) was set
go to post Robert Cemper · Nov 16, 2019 BTW.why don't you use your source control for this type of text search?
go to post Robert Cemper · Nov 16, 2019 just a guess: with 850 chars length, this looks somewhat oversized. and the query itself doesn't make much sense: ?query=.*Cache.*&documents=*.cls,*.java,*.png,*.confluence,*.html,*.mediawiki,*.tracwiki,*.mdtext,*.shtml,*.doc,*.workingsets,*.chromium,*.patch,*.adoc,*.js,*.emof,*.macrodef,*.markdown,*.bmp,*.htpl,*.diff,*.xml,*.bas,*.xmi,*.ico,*.shtm,*.textile,*.twiki,*.ent,*.ecore,*.wsdl,*.ant,*.svg,*.md,*.prefs,*.jpeg,*.json,*.txt,*.int,*.rtn,*.xhtml,*.server,*.csr,*.mod,*.css,*.csp,*.class,*.xsd,*.docx,*.gif,*.log,*.exsd,*.xsl,*.xslt,*.e4xmi,*.mac,*.setup,*.mvb,*.ad,*.asciidoc,*.wml,*.dtd,*.mvi,*.htm,*.jpg,*.inc,*.properties&max=2147483647&sys=1&gen=0 I doubt that you have all those file extensions available in Caché or IRIS Reduce it to the few useful ones that you konw from Studio: *.prj,*.mac,*.int,*.mvi,*.inc,*.bas,*.cls,*.csp,*.csr,*.xml,.*js.*.css,*.xsl.*.xsd,*.mvb,*.dfi
go to post Robert Cemper · Nov 14, 2019 I don't trust this line: Set zdh=$zdatetimeh("11/14/2019 15:18:56") rather use Set zdh=$zdatetimeh("2015-11-14 15:18:56",3) to be sure about zdh
go to post Robert Cemper · Nov 13, 2019 by default IRISLIB is always read-only mounted as it holds most of system methods, utilities, compiles, ...all code that just executes but not changes during runtime and that you should not try to change differently, IRISSYS holds all dynamic system data that can change during runtime and therefore requires read-write accessAs configurations, namespace tables, ..... Though with system management privileges you may change this.But I'd recommend not to touch it unless you are an in-depth IRIS expert.
go to post Robert Cemper · Nov 13, 2019 SqlComputeOnChange should trigger on INSERT while it should trigger only if the value is CHANGED by an UPDATE. If you need recalculation in any case you may use an ordinary Update TRIGGER to adjust your property as you need.
go to post Robert Cemper · Nov 9, 2019 Right! But without Git (several years back) . . . . . . . .It's a matter of organization and discipline anyhow.
go to post Robert Cemper · Nov 8, 2019 another way to explain your phenomenon: assume you have a.INC assume inside you have #DEFINE vaXYZ next, you have b.INC with an #include a now your class C with include b and using $$$vaXYZ compiles fine later #DEFINE vaXYZ is removed from a.INC NOTHING HAPPENS you have constructed a time bomb long time later you do any change on class C now your bomb crashes your compilation I experienced such a case where the bomb was sleeping for 5 years.Nobody remembered the change of a.INC and not the reason for the change.
go to post Robert Cemper · Nov 8, 2019 if your class inherits from some other the include may have gone there? typically explained by: "We do not reference it here. "
go to post Robert Cemper · Nov 8, 2019 It seems that you have lost the ????.inc the includes the definitions of$$$vaExtentGbl$$$vaSegment$$$vaSegmentGbl$$$vaDataSegName$$$vaDataDocNameeither you lost the related Include statement or the whole file is lost So in Studio run a "search in files" over *.inc for #Define vaExtentGbl#Define vaSegment#Define vaSegmentGbl#Define vaDataSegName#Define vaDataDocNameto find out which .inc you are missing. The query you changed is totally unrelated to it, as far as it seems.
go to post Robert Cemper · Nov 6, 2019 OK.It took some investigations to understand what's going on. the is a Class Parameter XMLUSEEMPTYELEMENT = 1;it switches between <Ping></Ping> and <Ping /> BUT: if ALL Properties of your reply are empty then you just get an empty body <soapenv:Body></soapenv:Body> as soon as you set some dummy value into Property Ping you get <Ping> </Ping>or you add a dummy property. Digging into %SOAP.... message classes shows, that the generated messages don't use XMLUSEEMPTYELEMENT parameter.
go to post Robert Cemper · Nov 6, 2019 Check XML projection of Property Pingespecially handling of null strings controlled by XMLNIL & XMLIGNORENULL parameter.see Handling Empty Strings and Null Values
go to post Robert Cemper · Nov 6, 2019 if you add to your data class Class NAMEHERE.myDate [ ClassType = datatype, ClientDataType = DATE, OdbcType = DATE, Not ProcedureBlock, SqlCategory = DATE ] these 2 methods you get a kind of self healing code.It is accessed every time you load or save your property ClassMethod LogicalToStorage(in As NAMEHERE.myString = "") As NAMEHERE.myDate [ CodeMode = expression ]{$s(+in'=in:$zdh(in),1:in)} ClassMethod StorageToLogical(in As NAMEHERE.myString = "") As NAMEHERE.myDate [ CodeMode = expression ]{$s(+in'=in:$zdh(in),1:in)}
go to post Robert Cemper · Nov 5, 2019 Hi Alex, "in logical Mode the date shows normal format, in my case, for example 10/1/2019" in logical mode you get the pure content from global which is here NOT a $H value !! $ZD() expects an Integer to convert => it is just +"10/1/2019" => 10 then $ZD(10) = " 10/1/1841" So it seems that some of your Dates are not stored using DisplayToLogigal resulting in an Integerbut written directly (e.g. coming from ZEN) into your object / global. To fix it you may run something like if +in'=in set in=$zdh(in))
go to post Robert Cemper · Nov 5, 2019 InterSystems Docker Imageshttps://wrc.intersystems.com/wrc/coDistContainers.csp