@Aleksandar Kovacevic
ISC Engineering & Support has this information and also appropriate tools for analysis.
You better contact them directly in Cambridge.
@Dmitry Maslennikov : Excellent explanation ![]()
- Log in to post comments
@Aleksandar Kovacevic
ISC Engineering & Support has this information and also appropriate tools for analysis.
You better contact them directly in Cambridge.
@Dmitry Maslennikov : Excellent explanation ![]()
can't import %routines which I need.
Without any special mapping, %routines are stored in SYSLIB. (except %z*,%Z*)
Mount SYSLIB (default: read-only) as Read/Write and you can load your %routines.
Needless to mention that you better not overwrite already existing %routines.
The effects could be unpredictable.
As you describe it I'd create a nice BAT file that you execute.
It coud be static or created ad hoc just by writing it from Caché
And then execute it using $ZF(-1...) ,$zf(-2....) or CPIPE
Though Caché has powerful utilities around %File class you will be faster that way
[based on ~40 yrs of M]
adapt :== create your own class and inherit %CSP.Login
to create your own Login Page you best start with Class %CSP.Login and adapt it to your specific needs.
defaulting to
.png)
and then you add the new Login Page to Security-> WebApplications
.png)
Size of WIJ is in Relation to Global Buffers. With equal size of G.Buf. you should get similar size of WIJ
that's wrong ! "will execute nothing, "
if condition
Sets the system variable $TEST.
And this was and still is a widely used way of signaling between routines and functions.
And millions lines of existing code rely on its proper use.
I come back to an earlier comment: Really learning the language is definitely an advantage.
returning to dotted subroutines would be really bad. Though they are still around in %SYS. ![]()
on the other hand, the flexibility of the language allows a broad range of personal styles.
knowing them enabled me in the past (amongst my customers ) to identify the author of a routine
just by his style with a hit rate of >75%. ![]()
QUIT and RETURN are massively different.
OK Vitaly !
It happens under cover (from: ^%SYS.SECURITY1.int)
Alexej,
if you don't care about maintenance effort the most exact pointer is preferable.
As you may see from Ensemble the number of entries in the mapping table is of no importance.
With modern hardware, saving memory is of no importance anymore.
excellent, as usual!
I remember times when new programmers learned from their masters to use no matter what
programming language in her full beauty and elegance with all its features.
no matter if this was Assembler/360 or Macro32 or C, C++, C# or Bliss or PL/1 or Fortran, Algol, .... [list almost unlimitted]
All of them had their tricks and open and hidden features that inspired the creativity of developers
and allowed them to create artwork instead of stereotypic formulated phrases. By this approach,
developers get degraded from architects to monotone brick assemblers.
"users unfamiliar with the language"
I'd recommend they should learn it to understand it before touching it.
If I want to read the Правда I have to learn Cyrillic characters and the Russian language to understand it.
Nobody would accept any request for Latin letters.
Hmmm,
it seems to prefer "waste screen space" style
over "have all on 1 screen with no scrolling" [my favorite ]
In this case, you may create a Privileged Routine Application with the rights you need and the required code
calling it raises access rights just for this routine.
Hi Tim
write $d(^|"%SYS"|SYS("Security","SSLConfigsD",<my config> ),settings)
provided you have access rights
Cheers, Robert
I think RowVersion and Serial Counter Fields should do it as well.
(with less typing)
This just doesn't work in Caché SQL
You have to set your DB to be in Primary MIRROR before the copy.
Otherwise, you may miss some kind of "Mirror-Marker" / Timestamp.
I hit this trap also on my first trials.
I just realized that this method doesn't check the existence of the ID.
therefore:
write:##class(Abstract.Class).%ExistsId(id) $li(##class(Abstract.Class).%ComposeOid(id),2)
or any equivalent construct.
OID contains the class name. So this should do it.
write $li(##class(Abstract.Class).%ComposeOid(id),2)
You are totally right.
With Parent-Child your data are not only logical but also physically tied to each other.
One-to-many allows you more flexible handling of Relations.
Just one out of many examples M:N Relationship
Exactly 4 weeks before UK is leaving the European Union on Friday, March 29th this sounds like kind of British humor to me.
Thanks @Jeffrey Drumm !
I always distrusted HL7 separators and ESC chars. when I first met them ages back as they carry the same limit as $PIECE() with them:
"There is always somewhere some odd case where your separator turns up as content. "
Praise $LB()
!
if \E is just a synonym for <ESC> than use instead
set remove=$c(27)
set remove="\E"set hl7="OBX|1|RP|ECG||CARDIO ECG^APPLICATION^PDF^^\E\\E\sitehopital.org\E\files\E\cardio\E\022018\E\GE274583.PDF|"set clean=$replace(hl7,remove,"") write cleanOBX|1|RP|ECG||CARDIO ECG^APPLICATION^PDF^^\\sitehopital.org\files\cardio\022018\GE274583.PDF|Nice, you finally shared your real intentions.
for that case passing the variables by reference should be sufficient.
I see 5 options :
So you have a choice what fits best to your needs.
interesting observation with CHPC 65001:
a loop USER>for i=1:1:255 write i," ",$c(i),! stops the session with any character > $c(127).
I'd suggest forget that M$ crap.
Use Putty or any thing else.
Cache for Windows (x86-64) 2018.1.1 (Build 312U) Thu Jan 3 2019 14:34:00 EST