predefine the type of an specific piece of a global
Well I want to set the type of a piece in a global as a String, because when I use float numbers , the system parse them to numbers instead of use like strings and thats a little bit tricky with the sorts
Here is a code example:
ACB>s ^a("1.0012")=""// that is going to be stored as a number
ACB>s ^a("1.0011")="" // that is going to be stored as a number
ACB>s ^a("1.0010")="" // that is going to be stored as string
ACB>zw ^a
^a(1.0011)=""
^a(1.0012)=""
^a("1.0010")=""
I want to predefine the behaviour setting the type of this piece as String to solve this "behaviour"
thanks in advance
Comments
Why do you need to do this? I don't believe it's possible to define global node types. If your application is parsing this data, you could just use '+^a("1.0011")' if you know it is going to be stored as a number. EX:
%SYS>s x = ""
%SYS>w +x
0
I assume you want the subscripts of the global always to collate as strings. If so, here's how you can specify the collation type of a global when you create it. Note that the global must not exist to start with:
USER>w $D(^a)
0
USER>s sc=##class(%Library.GlobalEdit).Create(,"a",133)
USER>w sc
1
USER>s ^a("1.0012")=""
USER>s ^a("1.0011")=""
USER>s ^a("1.0010")=""
USER>zw ^a
^a("1.0010")=""
^a(1.0011)=""
^a(1.0012)=""
USER>To get a list of collation codes (which is where I found 133):
%SYS>d ^COLLATE Status Number Abbrev Name ---------- ------ ------ ---------------------- Built-in 0 OANS ISM Pre-6.2 Built-in 1 ANSI ISM 6.2->6.4 Built-in 2 COBR Ipsum/Cobra Built-in 3 DTMC DTM-compatible Built-in 4 CBR2 Ipsum/Cobra-2 Built-in 5 UNIC Cache standard Not loaded 10 GER1 German1 Not loaded 11 POR1 Portuguese1 Not loaded 12 POL1 Polish1 Not loaded 13 GER2 German2 Not loaded 14 SPA1 Spanish1 Not loaded 15 DAN1 Danish1 Not loaded 16 CYR1 Cyrillic1 Not loaded 17 GRE1 Greek1 Not loaded 18 CZE1 Czech1 Not loaded 19 CZE2 Czech2 Not loaded 20 POR2 Portuguese2 Not loaded 21 FIN1 Finnish1 Not loaded 22 JAP1 Japanese1 Not loaded 24 POL2 Polish2 Not loaded 27 FRE1 French1 Not loaded 28 FIN2 Finnish2 Not loaded 29 HUN1 Hungarian1 Not loaded 30 GER3 German3 Not loaded 31 POL3 Polish3 Not loaded 32 SPA2 Spanish2 Not loaded 33 DAN2 Danish2 Not loaded 34 GRE2 Greek2 Not loaded 35 FIN3 Finnish3 Not loaded 36 LIT1 Lithuanian1 Not loaded 37 CYR3 Cyrillic3 Not loaded 38 SLO1 Slovenian1 Not loaded 39 SLO2 Slovenian2 Not loaded 40 TUR1 Turkish1 Not loaded 41 DAN3 Danish3 Not loaded 42 UKR1 Ukrainian1 Not loaded 43 CYR4 Cyrillic4 Not loaded 44 CZE3 Czech3 Not loaded 46 MAL1 Maltese1 Not loaded 48 MAL2 Maltese2 Not loaded 49 SPA4 Spanish4 Not loaded 50 SLO1 Slovak1 Not loaded 51 SPA5 Spanish5 Not loaded 52 FIN4 Finnish4 Built-in 128 OSTR ISM Pre-6.2 string Built-in 129 NSTR ISM 6.2->6.4 string Built-in 133 USTR Cache standard string %SYS>
If you don't want to have to bother with setting the global to use String collation rather than the default (which will be what's sometimes called Numeric collation), then prefix all your subscripts with a character that will force them to be interpreted as a string. Cache SQL uses this trick internally, adding a leading space (" ") to the subscripts it creates.