go to post Robert Cemper · Feb 21, 2018 reason #1) 40 yrs. backward compatibility #2) in $LB not everything is a string but has its hidden data types while a string is sequence of bytes an integer get#s a binary representation ( ~ 19 digits ==> 8 byte (int64))try:set x=$lb(64444,"64444") zzdump x04 04 BC FB 07 01 36 34 34 34 34it's really byte saving
go to post Robert Cemper · Feb 20, 2018 In general I would agree:Though in order to use the class query you have the change to namespace "%SYS" and back.As the query is predefined you finally build your own lookup list which is a copy of the original global.Anyhow this would provide the required result: kill roles set roles="" new $namespace zn "%SYS" set rs=##class(%ResultSet).%New("Security.Roles:ListAll1") set tSC=rs.Execute() if tSC { while rs.Next() { set role=rs.Get("Name") write ">",role,! ;; just for display set roles($zcvt(role,"L"))="" } } set rs="" ;; for save return from "%SYS" zw roles ;; for demo set list2=$lfs(input,"CN=") for i=2:1:$LL(list2) { set CN=$p($li(list2,i),",") ;; get 1st piece set CN=$zcvt(CN,"L") ;; lower case required..v set exists=''$d(roles(CN)) write !,i," ",exists," ",CN ;; for debugging and demo if exists write " role found" } quit ;; get back to original namespace
go to post Robert Cemper · Feb 20, 2018 32k sounds like the default size of Read() method in %Stream classes. did you verify with ...stream.SizeGet() ?http://docs.intersystems.com/iris20181/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Stream.FileBinary#Read
go to post Robert Cemper · Feb 19, 2018 for i=2:1:$LL(list2) { set CN=$p($li(list2,i),",") ;get 1st piece set CN=$zcvt(CN,"L") ;lower case required..v set exists=''$d(^|"%SYS"|SYS("Security","RolesD",CN)) write !,i," ",exists," ",CN if exists write " role found"}
go to post Robert Cemper · Feb 19, 2018 so with a little change you get the content of CN= as starting string set list2=$lfs(input,"CN="); ignore trailerfor i=2:1:$LL(list2) write !,i,?5,$p($li(list2,i),",") 2 Access.Ensemble.Developer.User3 [CPD Admin]4 [MUSE_Access]5 [IT eMaterials]
go to post Robert Cemper · Feb 19, 2018 what is this ? a String or a JSON object , or a fixed sequence of (CN= ,OU=, DC=, DC= )there is no obvious groupIng by a separator visible.You may start byset list=$lfs($p($p(input,"{",2),"}"))zw listlist=$lb("CN=Access.Ensemble.Developer.User","OU=Access Groups","DC=OSUMC","DC=EDU"," CN=[CPD Admin]","OU=Distribution Lists","DC=OSUMC","DC=EDU"," CN=[MUSE_Access]","OU=Distribution Lists","DC=OSUMC","DC=EDU"," CN=[IT eMaterials]","OU=Distribution Lists","DC=OSUMC","DC=EDU...") But instead of an unstructured string you have an unstructured list
go to post Robert Cemper · Feb 19, 2018 George, GordonInteresting info on Upgrade2016.1 This seems to by some fake news.Since the class is there om 2017.2 and even in IRIS2018.1http://docs.intersystems.com/iris20181/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25CSP.StreamThe Type set fails because %CSP.Stream is just an abstract class. Like %CSP.Page you have to create the real object yourself as %CSP.CharacterStream or %CSP.BinaryStream a little bit simplified for retyping in terminal:set req = ##class(%CSP.Request).%New()set cont=req.Content zw cont ; MO AUTOMATIC OBJECT BEAUSE ABSTRACT !!cont=""set cont=##class(%CSP.CharacterStream).%New() zw cont ; NOW WE HAVE AN OBJECTcont=<OBJECT REFERENCE>[5@%CSP.CharacterStream]+----------------- general information ---------------| oref value: 5| class name: %CSP.CharacterStream| reference count: 2+----------------- attribute values ------------------| (%Concurrency) = 1| (%LastModified) = ""| %Location = "" <Get,Set>| (%LockRef) = ""| (%Locked) = 0| AtEnd = 0| (Buffer) = ""| (IOSize) = 0| Id = ""| LineTerminator = $c(13,10) <Set>| (MaxNodeNo) = 0| (Mode) = 0| (NodeNo) = 0| (Position) = 1| (StoreNode) = ""| (StoreRoot) = "^CacheStream"| (TempNode) = ""+--------------- calculated references ---------------| CharSet <Get,Set>| ContentType <Get,Set>| Expires <Get,Set>| FileName <Get,Set>| Headers <Get,Set>| LastModified <Get>| MimeSection <Get,Set>| Size <Get>| (StoreGlvn) <Get>| (TempGlvn) <Get>+-----------------------------------------------------set cont.ContentType="application/json"; and so on ....HTH
go to post Robert Cemper · Feb 19, 2018 Digging around working sets I found them unable to cover package structures:packages seem to be implemented as kind of sub-directory. You see the same effect in editor pane. The package is only visible in mouseOver event. You only see the packages if you click the down arrow in right upper corner and "Edit Working Set".For "TZ = TimeZone" I googled around Eclipse and opened a can of worms. With no answer.
go to post Robert Cemper · Feb 19, 2018 see this ANSWER for use of |CPIPE|https://community.intersystems.com/post/execute-exe##node-418951
go to post Robert Cemper · Feb 17, 2018 try this set list=$lb("","2",6,6,6,"3") for i=1:1:$LL(list) { write !,$li(list,i),?5 if $lb($li(list,i)) = $lb(+$li(list,i)) write "Integer" else write "String" } Result: String2 String6 Integer6 Integer6 Integer3 String
go to post Robert Cemper · Feb 17, 2018 This functionality seems to be broken. Since quite some time.It also fails in SAMPLES / Class ZENTest.ComboTest.cls and the method is never called.Analysis of Class %ZEN.Component.dataListBox shows that the related call to method %DrawItem got lost.I verified it with a personal hack. You may contact WRC for a fix.
go to post Robert Cemper · Feb 16, 2018 if you just want to eliminate the hyphen this may work for you:USER>write $TR($zcvt($tr("mY-sImPlE eXaMpLe","-"," "),"W")," ")MySimpleExampletranslate hyphen to blank first and off you go
if you just want to eliminate the hyphen this may work for you:USER>write $TR($zcvt($tr("mY-sImPlE eXaMpLe","-"," "),"W")," ")MySimpleExampletranslate hyphen to blank first and off you go
if you just want to eliminate the hyphen this may work for you:USER>write $TR($zcvt($tr("mY-sImPlE eXaMpLe","-"," "),"W")," ")MySimpleExampletranslate hyphen to blank first and off you go
go to post Robert Cemper · Feb 16, 2018 provided you have sufficient access rights you may get defined roles in Caché / Ensbele like this: set role="" for { set role=$ORDER(^|"%SYS"|SYS("Security","RolesD",role)) quit:role="" write role,! ;; or do whatever you need }
go to post Robert Cemper · Feb 16, 2018 %request.content is an object of type %CSP.Stream;http://docs.intersystems.com/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25CSP.Request#PROPERTY_Contentso you have to access it by Stream Methods. Simple SET either left or right side doesn't work.see docs:http://docs.intersystems.com/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25CSP.Request
go to post Robert Cemper · Feb 16, 2018 I probably don't understand your expectation.You upload typically an image or something similar that the browsercan display as part of the article, questions, answer, comment you write.And that works excellent.If this is something else e.g. some binary stuff, or Word.doc or Excel it may fail.What type of file would you expect to upload ?
go to post Robert Cemper · Feb 16, 2018 Ooops!The sequence of recruiters seems to be reversed related to values Gold Recruiter - 10 referralsAwarded after 10 / 50 / 100 of your referrals have joined Developer Community.Silver Recruiter - 50 referralsBronze Recruiter - 100 referrals
go to post Robert Cemper · Feb 14, 2018 Oliver,this turned out to be somewhat more tricky than expected.The way you used stream.FindAt(...) returns the size of the gap between the last found occurrence and the next.So you have to add the size of your search string for each loop to get closer to your file sizeso it might be easier to do it this way:set last=1for set i=stream.FindAt(last,"Invalid password") quit:i<0 set last=ithis might be closer but definitely smaller than the total size
go to post Robert Cemper · Feb 14, 2018 it says:If it does not find the target string then return -1 . So what you get in i is the last start of your search string Which is 2491024949 - 2442920326 = 48104623 from end.It's almost the same as your first occurrence at 49134354. Looks feasible.To get the file size as you expect the LAST search string must have been startingAT the end of your file. Which is a contradiction.