INIT New t //Set t = "Hello" //write "1", t, ! Set t = ##class(PD.Test).%New() write "dbg:started", ! do t.RunKostQry() //do t.RunHelloWorld() Quit ; TEST Set L="Steam Locomotive",S="Steam" Write L[S Quit ; indir ; gsm;11:37 PM 13 Jun 2000 kill x,y ;Set y= "a" ;do @y Set x = "a" do @x Set x(3) = "b" ;The next line will do b, NOT a(3) DO @x(3) Quit a Write !,"At a" Quit b Write !,"At b" Quit ; indir2 Set Cache("Lev1","Lev2.1")="test" Set Cache("Lev1","Lev2.2")="test2" Set Ind=$Name(Cache("Lev1")) write "Ind:", Ind, ! Set Val=@Ind@("Lev2.1") write "Val:<", Val,"> of equivalent met : <", Cache("Lev1","Lev2.1"),">",! Set Key2="" For Set Key2=$O(@Ind@(Key2)) Quit:Key2="" Do . Write @Ind@(Key2) Quit ; ProcMain(x,y) [a,b] PUBLIC { Write "1.a=", $select($get(a):a,1:"a bestaat niet"), ! ;SET a="jef" SET a=""_"jef" ;SET a="123456789" Write "2.a=", $select($get(a):a,1:"a bestaat niet"), ! Write "x + y = ", x + y, ! do ProcDo("call via do") // $$ProcDo("call via $$") --> kan niet, compilatiefout Set jef = $$ProcDo("call via $$") quit } ProcDo(t) { Write "a=", $select($get(a):a,1:"a bestaat niet"), ! write (t), ! quit t } publicvarsexample ; examples of public variables ; Do proc1() ; call a procedure Quit ; end of the main routine ; proc1() [a, b] ; a private procedure ; "c" and "d" are private variables { Write !, "setting a" Set a = 1 Write !, "setting b" Set b = 2 Write !, "setting c" Set c = 3 Set d = a + b + c Write !, "The sum is: ", d } zconvert set cnt=47, le=0 for set cnt = $i(cnt) quit:cnt>300!le do . set lc=$char(cnt) . set lu=$zconvert(lc,"u") . set lt=$zconvert(lc,"t") . write cnt, *9, lc, *9, lu, *9, lt, ! . set:lu'=lt le=1 //write $ascii("a"),*9,$ascii("A"),*9,$ascii("0"),! Quit ; tstlist set $LI(tstli("jef")) = "jef" set r = $LI(tstli("jef")) write r,! write "pdotest: ", $data(^pdotest),! write "KSTPR : ", $data(^KSTPR),! Quit ; tstarr New arr set arr(1) = "1" set arr(1,1) = "1.1" set arr(1,"drie") = "1.3" set arr(1,7) = "1.7" set arr(2) = "2" set arr(2,6) = "2.6" set arr(2,8) = "2.8" set arr(2,10) = "2.10" set arr(3) = "3" set k1="" for set k1=$order(arr(k1)) q:k1="" do . write "k1=", k1, " - data=", arr(k1), ! . set k2="" . for set k2=$order(arr(k1,k2)) q:k2="" do . . write *9, "k2=", k2, " - data=", arr(k1,k2), ! . . if arr(k1,k2) = "2.10" do . . . write *9, "go back", ! . . . set arr(k1,k2) = "2.10+" . . . set k2=$order(arr(k1,k2),-1, trg) . . . write *9, *9, "k2=", k2, " - data=", arr(k1,k2), " - target=", trg, ! Quit ; tstqry New arr set arr(1) = "1" set arr(1,1) = "1.1" set arr(1,3) = "1.3" set arr(1,7) = "1.7" set arr(2) = "2" set arr(2,6) = "2.6" set arr(2,8) = "2.8" set arr(2,10) = "2.10" set arr(3) = "3" set qry="arr("""")" //for set qry=$query(@qry,-1,trg) q:qry="" do // door de -1 wordt de array van achter naar voor afgelopen for set qry=$query(@qry,1,trg) q:qry="" do . write "qry=", qry, " - data=", @qry, " - target=", trg, ! Quit ; tstqry2 New arr set arr(1) = "1" set arr(1,1) = "1.1" set arr(1,"drie") = "1.3" set arr(1,7) = "1.7" set arr(2) = "2" set arr(2,6) = "2.6" set arr(2,"acht") = "2.8" set arr(2,10) = "2.10" set arr(3) = "3" set qry="arr("""")" //for set qry=$query(@qry,-1,trg) q:qry="" do // door de -1 wordt de array van achter naar voor afgelopen for set qry=$query(@qry,1,trg) q:qry="" do . write "qry=", qry, " - data=", @qry, " - target=", trg, ! Quit ; tstnew new a set a = "hello" write "in tstnew, a=", a, ! do tstnewA write "terug in tstnew, a=", a, ! Quit ; tstnewA new a set a = " world" write " en nu in tstnewA, a=", a, ! Quit ; LogCQueryError write "*** LogCQueryError ***", ! write "*** $ECODE: ", $ECODE, ! write "*** $ZERROR: ", $ZERROR, ! Quit ; Mds1 Set start = $ZH // get current time Kill PDOarr For i = 1:1:10000 { Set PDOarr(i) = i } Set elap = $ZH - start // get elapsed time Write "Time (seconds): ",elap Quit ; Mds2 SET a="best",a1="prime",aa="choice",b="good",c="utility grade" WRITE !,$ORDER(a1,1,target)," - ",target Quit ; Mds3 Kill PDO new PDO, Target SET PDO(1,2,3)="1" SET PDO(2)="2" SET PDO(1,2,4)="3" SET PDO(1,4)="4" SET PDO(1,3,6)="5" //SET PDO(3)="6" SET PDO(8,4)="7" Set Key = "" Set Target = "" // 1. To find the first first-level node Write !, "$order(PDO(Key)" For set Key=$order(PDO(Key),1,Target) q:Key="" do . WRITE !,Key, "-", Target, " - ", $Data(PDO(Key)), " - ", $G(PDO(Key)) Set Key = "" Set Target = "" Write !, "$order(PDO(1,Key)" For set Key=$order(PDO(1,Key),1,Target) q:Key="" do . WRITE !,Key, "-", Target, " - ", $Data(PDO(Key)), " - ", $G(PDO(Key)) Set Key = "" Set Target = "" Write !, "$order(PDO(2,Key)" For set Key=$order(PDO(2,Key),1,Target) q:Key="" do . WRITE !,Key, "-", Target, " - ", $Data(PDO(Key)), " - ", $G(PDO(Key)) Set Key1 = "" // loop over alle nodes (ttz: 3 levels diep) Write !, "Drie levels diep)" For set Key1=$order(PDO(Key1),1) q:Key1="" do . WRITE !,"Key1:", Key1, " - ", $Data(PDO(Key1)), " - ", $G(PDO(Key1)) . Set Key2 = "" . For set Key2=$order(PDO(Key1,Key2),1) q:Key2="" do . . WRITE !," Key2:", Key2, " - ", $Data(PDO(Key1,Key2)), " - ", $G(PDO(Key1,Key2)) . . Set Key3 = "" . . For set Key3=$order(PDO(Key1,Key2,Key3),1) q:Key3="" do . . . WRITE !," Key3:", Key3, " - ", $Data(PDO(Key1,Key2,Key3)), " - ", $G(PDO(Key1,Key2,Key3)) //Loop over alle nodes met $Query Set Node = "PDO("""")" Write !,!,"Loop over alle nodes met $Query" For set Node=$Query(@Node) q:Node="" do . Write !, "Node:", Node, " - Value:", @Node Quit ; Mds4 // er is iets mis met onderstaande code - indirect werkt niet en Direct geeft runtime fouten New PDO set indirectPDO="PDO" Write "Indirect", ! //Set PDO(1) to PDO(10) using indirection For i= 1:1:10 do . Write i . Set @indirectPDO@(i) = "Indirect"_i //Display the values Set key = "" For key=$Order(PDO(key)) quit:key="" . write key, " - ", $G(PDO(key)) New PDO set indirectPDO="PDO" Write "Direct", ! //Set PDO(1) to PDO(10) using indirection set i = 7 For i=1:1:10 do . Write i . Set @indirectPDO(i) = "Direct"_i //Display the values Set key = "" For key=$Order(PDO(key)) quit:key="" . write key, " - ", $G(PDO(key)) quit ; XmlDataSet set query = ##class(%XML.DataSet).%New("%DynamicQuery:SQL") set sql = "select ID, NonActief from BKH.Renewals_Data" do query.Prepare(sql) ;do query.SetArgs(contactId, phoneNumberType) do query.WriteXML() quit query ; Scope kill jef, %juul Write "Scope(1):",$Get(jef, "undef-jef"), ! Write "Scope(1):",$Get(%juul, "undef-%juul"), ! do Scope2 Write "Scope(2):",$Get(jef, "undef-jef"), ! Write "Scope(2):",$Get(%juul, "undef-%juul"), ! kill jef, %juul do Scope4 Write "Scope(2):",$Get(jef, "undef-jef"), ! Write "Scope(2):",$Get(%juul, "undef-%juul"), ! quit Scope2 Write "Scope2(1):",$Get(jef, "undef-jef"), ! Write "Scope2(1):",$Get(%juul, "undef-%juul"), ! Set jef = "definded-jef" Set %juul = "defined-juul" Write "Scope2(2):",$Get(jef, "undef-jef"), ! Write "Scope2(2):",$Get(%juul, "undef-%juul"), ! do Scope3 break "S" Write "Scope2(3):",$Get(jef, "undef-jef"), ! Write "Scope2(3):",$Get(%juul, "undef-%juul"), ! quit Scope3 Write "Scope3(1):",$Get(jef, "undef-jef"), ! Write "Scope3(1):",$Get(%juul, "undef-%juul"), ! quit Scope4 Write "Scope4(1):",$Get(jef, "undef-jef"), ! Write "Scope4(1):",$Get(%juul, "undef-%juul"), ! new jef, %juul Set jef = "definded-jef" Set %juul = "defined-juul" Write "Scope4(2):",$Get(jef, "undef-jef"), ! Write "Scope4(2):",$Get(%juul, "undef-%juul"), ! do Scope3 Write "Scope4(3):",$Get(jef, "undef-jef"), ! Write "Scope4(3):",$Get(%juul, "undef-%juul"), ! quit Log //Do ##class(DS.Log.LogDerived1).%DeleteExtent() Do ##class(DS.Log.LogDerived2).%DeleteExtent() quit new l1, l2 set l1 = ##class(DS.Log.LogDerived1).Create("L1", "X", ,"StrDerived1") write "l1:", l1.Datum, "-", l1.Tijd, "-", l1.SubID, ! set l2 = ##class(DS.Log.LogDerived2).Create("L2", "X", ,"StrDerived2") write "l2:", l2.Datum, "-", l2.Tijd, "-", l2.SubID, ! write "... wait 2 seconds ...", ! HANG 2 set l1 = ##class(DS.Log.LogDerived1).Create("L1", "Y", ,"StrDerived1") write "l1:", l1.Datum, "-", l1.Tijd, "-", l1.SubID, ! set l2 = ##class(DS.Log.LogDerived2).Create("L2", "Y", ,"StrDerived2") write "l2:", l2.Datum, "-", l2.Tijd, "-", l2.SubID, ! quit Sort // Procedure om te sorteren // princiepe : // alle elementen van een list of dataset of whatever worden in een tijdelijke array gestoken // de index van die array is een concatenatie van de kolommen waarop gesorteerd moet worden // daarna wordt de oorspronkelijke lijst of dataset leeggemaakt. De de tijdelijke array wordt // sequenteel overlopen, - door de keuze van de index staan de elementen in gesorteerde volgorde -, // en wordt de oorspronkelijke lijst terug opgevuld. // (voorbeeld dient enkel te illustratie van de techniek, er zitten nog wel wat schoonheidsfoutjes in, // zoals : identieke sleutels worden weggegooid (eventueel op te lossen met een uniek-makende teller bij te voegen) // ook : als twee velden qua lengte overlappen gaan ze niet noodzakelijk juist sorteren (eventueel op te lossen door een 'unusual' string // tussen de velden toe te voegen new tstDS, tmpDS Set tstDS(1) = $LB("Pol","Dockx",17) Set tstDS(2) = $LB("Patris","Basstanie",33) Set tstDS(3) = $LB("Marit","Stas",4) Set tstDS(4) = $LB("Jos","Sleghers",18) Set tstDS(5) = $LB("Chris","Stas",66) Set tstDS(6) = $LB("tst","Sta", 74) Set tstDS(7) = $LB("Jos","Sleghers",3) do WriteSortDS(.tstDS) //Onze tijdelijke sorteerarray aanmaken New aSorted ;Door data lopen new node set node="tstDS("""")" for set node=$query(@node) q:node="" do . ;Index opbouwen volgens gewenste sortering, in dit voorbeeld Naam/Voornaam . Set Index=$LI(@node,2)_"@!@"_$LI(@node,1) . Write "Index=", Index, ! . Set @("aSorted(Index)")=@node ;oorspronkelijke lijst met gegevens wissen om plaats te maken voor dezelfde lijst maar dan gesorteerd New tstDS ;Doorheen de gesorteerde lijst lopen en tstDS terug opvullen New Key Set Key="aSorted("""")" Set Cnt=1 For Set Key=$QUERY(@Key) Quit:(Key="") Do . Write "Cnt:", Cnt, " Key:", Key, " @Key", @Key, ! . Set tstDS($I(Cnt)) = @Key . do WriteSortDS(.tstDS) Quit ; WriteSortDS(ds) new node set node="ds("""")" for set node=$query(@node) q:node="" do . write $LI(@node,1), *9, $LI(@node,2), *9, $LI(@node,3), ! Quit StartIEfromActiveX // ******* // Opgelet : dit start Internet explorer op de Server (Cache02) NIET op de PC !! // ******* // Create an instance of IE by instantiting the generated Caché Class Set ie = ##class(PD.SHDocVw.InternetExplorer).%New() // Load an Internet page do ie.Navigate("http://www.intersystems.com") // wait until the loading process has completed, meanwhile output dots while ie.Busy { write "." } Do $SYSTEM.OBJ.DisplayError(%objlasterror) write "!" // show IE Set ie.Visible = 1 ; attachDebugMAC Set t = $p($h,",",2) + 50 for do quit:nt>t . Hang 5 . set nt = $p($h,",",2) . write nt,! quit ClassesProbeer1 Set result = ##class(%ResultSet).%New("%Dictionary.ClassDefinition:Summary") Do result.Execute() While (result.Next()) { //Write result.Data("Name"),$c(9),result.Data("Datatype"),! } for i=1:1:result.GetColumnCount() do . write result.GetColumnName(i), ! Set rset = ##class(%ResultSet).%New("%Dictionary.ClassDefinition:Extent") Do rset.Execute() While (rset.Next()) { Write rset.Data("ID") Set cl = ##class(%Dictionary.ClassDefinition).%OpenId(rset.Data("ID"),0) write $c(9), $IsObject(cl) write cl.Name, $c(9), cl.Owner, ! } quit // do Classes^PDTestTest("DS.Prod.OptiBox.BoxMeta") Classes(ClsName) kill ClsNameList Set ClsNameList(ClsName) = 0 Set Continue = 1 while (Continue) { Set Continue = 0 Set key = $order(ClsNameList("")) while (key'="") { quit:ClsNameList(key)=0 Set key = $order(ClsNameList(key)) } if key'="" { Set Continue = 1 //write key, ! Do SearchClasses(key) Set ClsNameList(key) = 1 } } quit ; SearchClasses(ClsName) write !, ClsName, ! Set cl = ##class(%Dictionary.ClassDefinition).%OpenId(ClsName,0) if $IsObject(cl) { // iterate over properties Write "Properties:",! Set propKey = "" Set prop = cl.Properties.GetNext(.propKey) While (propKey '= "") { if ($Extract(prop.Type)'="%") { Set FullName = $$ClassFullName(ClsName, prop.Type) Set Exist = $$AddClass2List(FullName) Write $c(9),prop.Name,"/",prop.Type,"/",FullName,"/",prop.Collection, $s(Exist:"/",1:""), ! } Set prop = cl.Properties.GetNext(.propKey) } Write "Used by:",! Set rset = ##class(%Library.ResultSet).%New("%Dictionary.PropertyDefinition:Extent") Do rset.Execute() While (rset.Next()) { //Write rset.Data("ID") Set clp = ##class(%Dictionary.PropertyDefinition).%OpenId(rset.Data("ID"),0) if (clp.Type = ClsName) { //Set cl = ##class(%Dictionary.ClassDefinition).%OpenId(clp.parent,0) //write cl.Name, ! Set Exist = $$AddClass2List(clp.parent.Name) write $c(9),clp.parent.Name, $s(Exist:"/",1:""),! } } } else { write $c(9), "*** Geen Klasse", ! } quit ; AddClass2List(ClsName) quit:$D(ClsNameList(ClsName)) 1 Set ClsNameList(ClsName) = 0 quit 0 ; ClassFullName(RefClass,Class) quit:##class(%Dictionary.ClassDefinition).%ExistsId(Class) Class if (($Length(RefClass,".") > 1) && ($Length(Class,".") = 1)) { // vervang de laatste piece in RefClass door de verkorte klassenaam Set $Piece(RefClass, ".", $Length(RefClass,".")) = Class if ##class(%Dictionary.ClassDefinition).%ExistsId(RefClass) quit RefClass } quit Class