go to post Julius Kavay · May 20, 2022 Try this one. The idea is, find the state (including the separators), everything before is the city and everything after is the zip code. Then we remove the separator chars (whitespaces, commas and dots). ClassMethod Disjoin(data, cty, sta, zip) { i $locate(data,"(\s|,|\.)[A-Za-z]{2}(\s|,|\.)",3,,sta) { s $lb(cty,zip)=$lfs(data,sta), sta=$$s(sta), cty=$$s(cty), zip=$$s(zip) } else { s (cty,sta,zip)="" } q sta]"" s(x) q $zstrip(x,"<>w",",.") } Some examples i ##class(DC.Test).Disjoin("CANTON,TX.,75103",.c,.s,.z) w c,", ",s,", ",z --> CANTON, TX, 75103 i ##class(DC.Test).Disjoin("MILFORD, OH 45150",.c,.s,.z) w c,", ",s,", ",z --> MILFORD, OH, 45150 i ##class(DC.Test).Disjoin("MILFORD OH 45150",.c,.s,.z) w c,", ",s,", ",z --> MILFORD, OH, 45150 i ##class(DC.Test).Disjoin("KANSAS CITY, MO, 12345",.c,.s,.z) w c,", ",s,", ",z --> KANSAS CITY, MO, 12345 i ##class(DC.Test).Disjoin("KANSAS CITY MO, 12345",.c,.s,.z) w c,", ",s,", ",z --> KANSAS CITY, MO, 12345 i ##class(DC.Test).Disjoin("ST. LOUIS MO, 12345",.c,.s,.z) w c,", ",s,", ",z --> ST. LOUIS, MO, 12345 i ##class(DC.Test).Disjoin(" ST. LOUIS MO, 12345",.c,.s,.z) w c,", ",s,", ",z --> ST. LOUIS, MO, 12345 OK, something like this gives a wrong result... i ##class(DC.Test).Disjoin(" ST. LOUIS MO, 12345",.c,.s,.z) w c,", ",s,", ",z --> , ST, LOUIS MO, 12345
go to post Julius Kavay · May 16, 2022 Class DC.Test Extends %RegisteredObject { /// Return TRUE if val contains an string ClassMethod IsString(val) As %Boolean { q $a($lb(val),2)<3 } /// Return TRUE if val contains a number (int, real or double) ClassMethod IsNumber(val) As %Boolean { q $a($lb(val),2)>3 } } w ##class(DC.Test).IsString("abc") //--> 1w ##class(DC.Test).IsString("123") //--> 1w ##class(DC.Test).IsString(123) //--> 0w ##class(DC.Test).IsNumber(123) //--> 1w ##class(DC.Test).IsNumber("abc") //--> 0w ##class(DC.Test).IsNumber("123") //--> 0w ##class(DC.Test).IsNumber(123_345) //--> 0w ##class(DC.Test).IsNumber(123+345) //--> 1w ##class(DC.Test).IsString(123_456) //--> 1w ##class(DC.Test).IsString(123+456) //--> 0 s x=123, y="123"w ##class(DC.Test).IsString(x) //--> 0w ##class(DC.Test).IsString(y) //--> 1
go to post Julius Kavay · May 15, 2022 You are right, that's my fault. I didn't read the Notes, just the beginning of the challenge. Sorry.
go to post Julius Kavay · May 11, 2022 The challenge talks about "...rearranging the letters ...", there is no restriction for the ASCII sequence, so this would not work with cyrillic character set : CMOKBA (fig tree, russian)MOCKBA (Moscow, capital city) justmy2cents
go to post Julius Kavay · May 8, 2022 The input variable pInput is an object(reference). You can't save OREFs in a global! Think about OREFs as memory location (or, if you "speak" C, as a pointer). Trying to save it in a global is the same as saving a C pointer into a file for a later use... Won't work either
go to post Julius Kavay · Apr 29, 2022 People call it the reverse mode of $translate(). I saw this kind of usage of $tr() some 20 years ago. If I recall it right, it was mentioned in an article on usenet: comp.lang.mumps.
go to post Julius Kavay · Apr 12, 2022 I referred in his answer only the $replace() function without explicit pointing this out. I was upset about the ambiguous question, sorry.
go to post Julius Kavay · Apr 11, 2022 Sergei Shutov's answer is correct. The question was, how to remove a specific character (in this case: double quotes) from a string. Your answer is also correct but he told nothing about quoted strings. The problem is, we have a question but no explanatory examples. Something like xxxx is the string I have, and yyyyy is the string, I want to get.
go to post Julius Kavay · Apr 11, 2022 To help you, help us to help you. This means, show us what you have you already done. So we can you point in the right direction, maybe explain, why your solution dosn't work, etc. It's nothing bad to ask for help. At some point in the time we all were new to Studio and ObjecScript. Just asking for a solution is like going home from the school and letting the parents make the homework... So what have you tryed?
go to post Julius Kavay · Apr 5, 2022 For us all, the common denominator is Cache/IRIS and we have, as you know, Cache/IRIS for Win, Linux, AIX and MAC platforms. It's nice to know about existing external tools, but for some of us the COS solutions remains as the last resort, especially if those (external) tools do not exists for the OS, one works on (Just My2Cents).
go to post Julius Kavay · Apr 4, 2022 First, as you alread wrote, changing the collation of an already existing installation is dengerious,second, as far as I know, the database creation page (of ManagementPortal) offers you "Cache/IRIS-standard" and "Cache/IRIS-standard string" only. Nevertheless, changing to "standard string" only affects the collation and not the display, i.e. string subscripts will be displayed quoted but numeric subscripts are not quoted.
go to post Julius Kavay · Mar 30, 2022 However, those legacy systems are already in operation, therefore they neither need python nor 3DES, at most, an upgrade to an current system. Hence, I don't understand your argumentation.
go to post Julius Kavay · Mar 30, 2022 Just a hint, 3DES (and DES anyway) are old technologies and shouldn't be used anymore. The following links have more (detailed) informations: https://csrc.nist.gov/news/2017/update-to-current-use-and-deprecation-of...https://www.cryptomathic.com/news-events/blog/3des-is-officially-being-r... justmy2cents
go to post Julius Kavay · Mar 17, 2022 I'm quite shure, the above code won't work as expected, or with the words of Joseph Weizenbaum: “A computer will do what you tell it to do, but that may be much different from what you had in mind.” The content of your myf variable is always 0 (the result of comparing nullstring with a filename), the size of tmpFile stream is also 0 (you never write into the stream). Sometimes it's faster to write a "oneliner" to solve a simple problem then searching and downloading a solution from openexchange or from whereever... That's the beauty of the ObjectScript. And if you think, the oneliner is worth to be reused, then make it to a method, add some small adjustments for a general usability... The oneliner s str="",tmp=##class(%File).TempFilename("txt") o tmp:"NWRU":0 i $t { u tmp zw ^||fruit s s=$zpos r:'$zseek(0) str#s c tmp:"D" } The more general version ClassMethod ToString(ref,max=32000) { s tmp=##class(%File).TempFilename("txt") o tmp:"NWRU":0 q:'$t "" u tmp zw @ref s siz=$zpos r:'$zseek(0) str#$s(siz>max:max,1:siz) c tmp:"D" q str } Use it as write ##(your.class).ToString($na(^||fruit))
go to post Julius Kavay · Feb 8, 2022 Nice and easy... That's like having an anteroom into bedroom and living room. There is always just one door open. If you want to go into bedroom, you have to brick the door of the living room and make a break through into the bedroom. The way back into living room is the same, just vice versa...
go to post Julius Kavay · Feb 1, 2022 If you ask me, it should be the responsibility of the class compiler to check table names against reserved words and to quote them, if neccessary.I think, you have closer connection to the development - what about an enhancement request?Maybe a new property, say SqlTableNameQuoted.
go to post Julius Kavay · Jan 31, 2022 First, disable the start of %ZSTART: ManagementPortal-->SystemAdmin-->Configuration-->AdditionalSettings-->Startup: here, set SystemStart to false. Now, you can (Re)Start the system and check the %ZSTART routine. <DIRECTORY> means, trying to access a nonexistent database directory. After solving the problem, set SystemStart to true.