// do startDbg^PDStartDbg startDbg write "debugging"_$c(13,10) //do dbgWebClient //do testIfDoQuit //do testScope //Do TestForDoQuit //Do Mds2^PDTestTest //do ShortCircuit //Do Log^PDTestTest //do attachDebug //do attachDebugMAC^PDTestTest //do Test^MRPRES //do testInternePersoonQry //do Classes^PDTestTest("DS.Prod.OptiBox.BoxMeta") //D ##class(BL.PPS.OL.OptiBox).CreateBoxData(220969,"\\\\\\","OD\818\424\64\1\\O\Z","V\78,67\424\64\3") //do ##class(BL.Prod.OptiBox.SnijHistoriek).TestDump() //Do WSTestGetBoxDataViaID^PD.WSOptiServerTest //do ^CHUI.BKH.Renewals //do ##class(BL.BKH.Renewals.Build).TestThisClass() Do WSTestStartInpak^PD.OLInpakTest() //Do WSTestLijst^PD.OLInpakTest //Do WSTestHerprint^PD.OLInpakTest //Do WSTestBONOverview^PD.OLInpakTest //Do WSTestStartBerekening^PD.OLInpakTest //Do WSTestBONOverviewError^PD.OLInpakTest //Do WSTestInpakNext^PD.OLInpakTest //Do TempTest^PD.OLInpakTest //do ##class(DS.PPS.Logging).CleanOld(1) //Do WSTestAll^PD.OLInpakTest //do ##class(DS.PPS.Logging.WPZaagLogging).CleanOld(1) //do WSTestAll^PD.WSPPSTBXTest //do WriteWPZaagStatus^PD.WSPPSTBXTest //do ListBuildInSql^PD.WSPPSTBXTest //do ##class(BL.PPS.TBX.WPZaagSrvHelper).TestCalculateWPSequences() quit attachDebug Set t = $p($h,",",2) + 50 for do quit:nt>t . Hang 5 . set nt = $p($h,",",2) . write nt,! quit tst New a, i, sc set a = ##class(PD.Artikel).%New() set a.Omschrijving = "Lade" set sc = a.%Save() write "sc=", sc, ! write " id:", a.%Id(), ! set i = 41 set a = ##class(PD.Artikel).%OpenId(i) Write "Is a an object? ",$IsObject(a),! write:$IsObject(a) "a.Oms=", a.Omschrijving, " eenh:", a.Eenh, ! write " id:", a.%Id(), ! set a = ##class(PD.Artikel).%New() set a.Omschrijving = "Lade" set a.Eenh = "Stk" set sc = a.%Save() write "sc=", sc, ! write " id:", a.%Id(), ! quit ; startCQuery //do ##class(PD.TstCQuery).%New().RunCQuery1() Do ##class(PD.Artikel).%DeleteExtent() quit ; // do startStock^PDStartDbg startStock New $ETRAP Set $ETRAP="do LogError^PDStartDbg" New a, artIdList, k, klaIdList, oh, ol // Artikel : eerst leegmaken, enkele aanmaken en id bewaren in een array Do ##class(PD.Artikel).%DeleteExtent() set cnt = 0 set a = ##class(PD.Artikel).%New() set artIdList($i(cnt)) = a.CreateArtikel("Lade", "Stk") set a = ##class(PD.Artikel).%New() set artIdList($i(cnt)) = a.CreateArtikel("Scharnier", "Stk") set a = ##class(PD.Artikel).%New() set artIdList($i(cnt)) = a.CreateArtikel("Rail", "Set") // Klant : eerst leegmaken, enkele aanmaken en id bewaren in een array Do ##class(PD.Klant).%DeleteExtent() set cnt = 0 set k = ##class(PD.Klant).%New() set klaIdList($i(cnt)) = k.CreateKlant("Jansens") set k = ##class(PD.Klant).%New() set klaIdList($i(cnt)) = k.CreateKlant("Peters") set k = ##class(PD.Klant).%New() set klaIdList($i(cnt)) = k.CreateKlant("Govaerts") // OrderHead : eerst leegmaken, enkele aanmaken en id bewaren in een array Do ##class(PD.OrderHead).%DeleteExtent() set cnt = 0 set ohId = ##class(PD.OrderHead).CreateNewOrder(60000, /* klaIdList(2) */ 11, "Open") write "Orderhead created with ohId:", ohId, ! set oh = ##class(PD.OrderHead).%OpenId(ohId) Write "Is OrderHead(", ohId, ") an object? ",$IsObject(oh),! write:$IsObject(oh) "Id:", oh.%Id(), " DatumInt=", oh.Datum, " Datum=", $ZDATE(oh.Datum,4,,4), " Status:", oh.Status, " Klant:", oh.Klant, ! write:$IsObject(oh) "Klantnaam:", oh.Klant.Naam, ! // OrderLines : eerst leegmaken Do ##class(PD.OrderLine).%DeleteExtent() set cnt = 0 set ol = ##class(PD.OrderLine).%New() //tot hier ;set ol.Qty = 7 set sc = ol.%Save() set olId = ol.%Id() write "sc=", sc, " %Id()", ol.%Id(), " olId:", olId, ! set ol = ##class(PD.OrderLine).%OpenId(olId) Write "Is OrderLine(", olId, ") an object? ",$IsObject(ol),! write:$IsObject(ol) "Id:", ol.%Id(), " Qty=", ol.Qty, ! //write:$IsObject(ol) "Klantnaam:", ol.KlantNaam, ! write "*** Artikels (ll)", ! set akey = "" For set akey=$Order(^PD.ArtikelD(akey)) quit:akey="" do . write "key=", akey, "-", $list(^PD.ArtikelD(akey),1) , "-", $list(^PD.ArtikelD(akey),2) , "-",$list(^PD.ArtikelD(akey),3) ,! write "*** Klanten (ll)", ! set kkey = "" For set kkey=$Order(^PD.KlantD(kkey)) quit:kkey="" do . write "key=", kkey, "-", $list(^PD.KlantD(kkey),1) , "-", $list(^PD.KlantD(kkey),2) , ! quit ; rx set min = 0 set max = 7 set range = max - min set msecs = $EXTRACT($ZTIMESTAMP,13,15) write "$ZTIMESTAMP:", $ZTIMESTAMP, " msecs:", msecs, " mod:", msecs # range, ! set msecs = $EXTRACT($ZTIMESTAMP,13,15) write "$ZTIMESTAMP:", $ZTIMESTAMP, " msecs:", msecs, " mod:", msecs # range, ! set xxx = $ZUTIL(188) set msecs = $EXTRACT(xxx,13,18) write "$ZUTIL(188)", xxx, " msecs:", msecs, " mod:", msecs # range, ! set xxx = $ZUTIL(188) set msecs = $EXTRACT(xxx,13,18) write "$ZUTIL(188)", xxx, " msecs:", msecs, " mod:", msecs # range, ! set xxx = $ZUTIL(188) set msecs = $EXTRACT(xxx,13,18) write "$ZUTIL(188)", xxx, " msecs:", msecs, " mod:", msecs # range, ! r(min, max) quit:min>max 0 quit ($EXTRACT($ZUTIL(188),13,18) # (max - min)) + min dor set i = 0 for set i=$i(i) q:i>100 write i, ":", $$r(0,7), ! LogError write "*** LogError ***", ! write "*** $ECODE: ", $ECODE, ! write "*** $ZERROR: ", $ZERROR, ! //Do $SYSTEM.OBJ.DisplayError(%objlasterror) Do $SYSTEM.Status.DecomposeStatus(%objlasterror,.Err) Write "Err(1) : ", Err(1),! Write "Err(1,code) : ", Err(1,"code"),! Write "Err(1,dcode) : ", Err(1,"dcode"),! Write "Err(1,domain) : ", Err(1,"domain"),! Write "Err(1,param) : ", Err(1,"param"),!, ! FOR loop=0:1:$STACK(-1) { WRITE !,"Context level:",loop,?25,"Context type: ",$STACK(loop) WRITE !,?5,"Current place: ",$STACK(loop,"PLACE") WRITE !,?5,"Current source: ",$STACK(loop,"MCODE") WRITE ! } Quit ; dbgWebClient set client = ##class(PD.PDWebService1Soap).%New() w client.Greeting() set p = client.GetPersoon(1) quit ; testIfDoQuit // opgepast, om de debuggen moet je met F11 in de do-block springen om de write-lijnen te zien uitvoeren, // F10 betekent hier do-block volledig uitvoeren set t = 1 if t=1 do . write "lijn1", ! . quit // deze quit zal enkel uit het do-block (de dotjes-lijnen) springen . write "lijn2", ! . quit if t=1 do quit // deze quit zal na het uitvoeren van het do-block uit de procedure springen . write "lijn3", ! . write "lijn4", ! write "lijn5", ! quit TestForDoQuit Set t = 3 //voorbeeld 1: //de Quit:z>4 zal uitgevoerd worden na elke uitvoering van de do-blok //bij zijn uitvoering springt het programma naar de eerste lijn na de do-block //(in dit voorbeeld na de 2de loop van de for-lus FOR i=1:1:t DO Quit:z>4 . SET z=i*t . WRITE !,z . QUIT Write "vervolglijnen" //voorbeeld 2: //ook deze Quit wordt uitgevoerd na elke uitvoering van de do-blok //in dit voorbeeld wordt dus slecht 1 loop van de for-lus uitgevoerd, en springt //het programma vervolgens onconditioneel naar de write vervolglijnen FOR i=1:1:t DO Quit . SET z=i*t . WRITE !,z . QUIT Write "vervolglijnen" //voorbeeld 3: //de hier wordt de Set t=t-1 uitgevoerd voor elke uitvoering van de do-blok //als deze instuctie als eerste lijn van het do-blok had gestaan, had dit //exact hetzelfde effect. //(deze structuur wordt gebuikt om de loop-teller buiten het do-blok te zetten For Quit:(t'=3) Set t=t-1 Do . SET z=i*t . Quit Write "vervolglijnen" Quit testScope // samengevat : // 1. alle variablen zijn public (zichtbaar voor iedereen en overal) // 2. om variablen te beschermen tegen wijzigingen door een subroutine // moet die subroutine zijn variablen local maken via het new commando Set jef = "root" do testChangeScope(jef) // ok, na de aanroep krijgt jef terug de waarde 'root' set jef = "root" do testChangeScope2() // slecht, na de aanroep is de waarde van jef gewijzigd set jef = "root" do testChangeScope3() // slecht, na de aanroep bestaat jef niet meer set jef = "root" do testChangeScope4() // zo moet het set jef = "root" quit testChangeScope(jef) // hier wordt een impliciete new jef gedaan set jef = "changed" quit testChangeScope2() set jef = "changed" // als er een variable jef bestaat, is diens waarde vanaf nu // voor iedereen en overal gewijzgid quit testChangeScope3() kill jef set jef = "changed" kill jef // de publieke variable jef wordt nu verwijderd voor iedereen en overal quit testChangeScope4() new jef // een nieuw local variable environment wordt gemaakt // hierin blijven alle publieke variablen toegankelijk, // maar een mogelijk bestaande variable jef wordt op de stack // gesaved en is niet toegankelijk // bij het beëindigen van de routine wordt de locale jef verwijderd // en de oorspronkelijke hersteld van de stack // !! onmiddelijk na het new-commando is jef // een kill is niet nodig, die wordt expliciet gedaan set jef = "changed" //kill jef // niet nodig, wordt expliciet gedaan quit testInternePersoonQry Set Query="Res.InternePersoon:GetAll" Set RS=##class(%ResultSet).%New(Query) If RS="" Do Quit . Write "Kan geen nieuwe instantie van de query '"_Query_"' maken.",! Set tmpStatus=RS.Execute() write "status na Execute:", tmpStatus, ! if (+tmpStatus) do //$$$ISOK(tmpStatus) . write "Execute gelukt", ! else do . set err = "" . Do $SYSTEM.OBJ.DisplayError(%objlasterror) . do DecomposeStatus^%apiOBJ(tmpStatus,.err,"-d") For i=1:1:err Write err(i),! for idx=1:1:RS.GetColumnCount() do . write idx, "/", RS.GetColumnCount(), ! . write " GetColumnExtInfo:", RS.GetColumnExtInfo(idx), ! . write " GetColumnHeader:", RS.GetColumnHeader(idx), ! . write " GetColumnName:", RS.GetColumnName(idx), ! . write " GetData:", RS.GetData(idx), ! /*If $$$ISERR(tmpStatus) Do Quit . Do $$$ShowMsgBoxSimple(..Caption,"Fout bij het uitvoeren van de query '"_Query_"': "_$C(13,10)_$$ParseStatus^vhLib(tmpStatus)) */ For Quit:('RS.Next()) Do . Quit:(RS.Data("Naam")="") . write "Id:", RS.Data("ID"), ", naam:", RS.Data("Naam"), ! quit ; ShortCircuitHulp() quit 7 ; ShortCircuit kill set jef = $$ShortCurcuitHulp^PDStartDbg() set a = 3 if ((a < 3) && ($$ShortCurcuitHulp^PDStartDbg() > 2)) do . write "true", ! if ((a < 3) & ($$ShortCurcuitHulp^PDStartDbg() > 2)) do . write "true", ! if ((a < 6) || ($$ShortCurcuitHulp^PDStartDbg() > 2)) do . write "true", ! if ((a < 6) ! ($$ShortCurcuitHulp^PDStartDbg() > 2)) do . write "true", ! quit ;