cABVBP16 ;Einddefinitie: voorbereiden update ; T1 ;Datadictonary;Klasse-definitie;Klasseproperty-definitie;Klasse-einddefinitie;Property-einddefinitie;Klasse;Grid(s);Kolom(men);Form(s);Formitem(s) T2 ;DMS;DMC;DMA;DMQ;Globals;Routine(s);X na update; T3 ;Fout bij openen detaillijn ;Fout bij wijzigen detaillijn ;Fout bij verwijderen detaillijn ; T4 ;Update; T5 ;Export directory is niet ingesteld.; T6 ;Fout bij aanmaken van bestand ; T7 ;Fout bij wegschrijven lijn in bestand ; T8 ;Fout bij afsluiten van bestand ; T9 ;Export update ; op ; door ; T10 ;Fout bij openen van bestand ; T11 ;Fout bij afsluiten van bestand ; T12 ;Ongeldige extentie ";" (i.p.v. "TXT" of "UPD").; ; ; YZ Q ; V(V) ; Interactie tussen dotNET-Caché: VRAAG N @$$INITVAR^cAFVBA01("V") K ^TEMP(boot,$J+.99,"A") W !,"@VR@"_boot_" - "_cs_"@"_$G(V) S A=$G(^TEMP(boot,$J+.99,"A")) K ^TEMP(boot,$J+.99,"A") VZ Q A A(A) ; Interactie tussen dotNET-Caché: ANTWOORD N @$$INITVAR^cAFVBA01("A") S ^TEMP(boot,$J+.99,"A")=$G(A) AZ Q 1 ; LOAD(GRIDID,FILE) S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("GRIDID,FILE") ; ; Check parameters LOAD1 S OK=1 I '$L(GRIDID)!'$L(FILE) G LOADZ S EXT=$$UC^cAFA1($P(FILE,".",$L(FILE,"."))) I (EXT'="UPD"),(EXT'="TXT") S OK="0\"_$P($T(@("T12"_QT)),U,2)_EXT_$P($T(@("T12"_QT)),U,3) G LOADZ ; ; Variabelen ophalen LOAD15 S TUREF=$P($$REF^cAFA10(.Q,"TEXT.9025"),D) I '$L(TUREF) G LOADZ S UI1="" F S UI1=$O(@TUREF) Q:'$L(UI1) S N=^(UI1,0) I $L($P(N,D,3)) S TYPES($P(N,D,3))=UI1 ; ; Bestand openen LOAD2 S ER=$$OR^cA710(FILE) I ER S OK="0\"_$P($T(@("T10"_QT)),U,2)_$TR(FILE,"\","/") G LOADZ ; ; Bestand lezen LOAD3 S TYPE="",R=0 LOAD31 S ER=$$RF^cA710(FILE,.LN) I ER G LOAD4 I $E(LN)="#" S TYPE=$G(TYPES($P(LN,"#",2))) G LOAD39 I '$L(TYPE) G LOAD39 I '$L(LN) G LOAD39 S R=R+1,UPD(TYPE,R)=LN LOAD39 G LOAD31 ; ; Bestand afsluiten LOAD4 S ER=$$CF^cA710(FILE) I ER S OK="0\"_$P($T(@("T11"_QT)),U,2)_$TR(FILE,"\","/") G LOADZ ; ; Update verwerken LOAD5 S TYPE="" LOAD51 S TYPE=$O(UPD(TYPE)) I '$L(TYPE) G LOADZ S R="" LOAD53 S R=$O(UPD(TYPE,R)) I '$L(R) G LOAD51 I $$DUBBEL(GRIDID,TYPE,UPD(TYPE,R)) G LOAD59 ; Checken of global/routine/klasse/... reeds bestaat S N="",UI1=$O(^mtemp99(GRIDID,"COMMON",""),-1)+1 I UI1=1 S UI1=1000 S $P(N,D,3)=TYPE S $P(N,D,4)=UPD(TYPE,R) S $P(N,D,49)=$$Q^cAFA10 S ^mtemp99(GRIDID,"COMMON",UI1,0)=N LOAD59 G LOAD53 ; LOADZ Q OK ; DUBBEL(GRIDID,TYPE,BES) N R,UI1,N S $ZT="^dmERROR" ; ; Check parameters DUBBEL1 S (R,UI1)="" I '$L(GRIDID)!'$L(TYPE)!'$L(BES) G DUBBELZ S BES=$$UC^cAFA1(BES) ; ; Global/routine/klasse/... opzoeken in mtemp99 DUBBEL2 S UI1=$O(^mtemp99(GRIDID,"COMMON",UI1)) I '$L(UI1) G DUBBELZ S N=^(UI1,0) I $P(N,D,3)'=TYPE G DUBBEL2 I $$UC^cAFA1($P(N,D,4))'=BES G DUBBEL2 S R=1 ; Dubbel gevonden ; DUBBELZ Q R ; FILE(UPD) ; Aanmaken updatefile ; Input: UPD: UI1 update (UPD) ; S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("GRIDID,UPD,COPY") ; ; Check parameters FILE1 S OK=1 I '$L($G(UPD)) G FILEZ ; ; Definities ophalen FILE2 S UPDN=$$SIGN^cAFA1("UPD",UPD,0) I '$L(UPD) G FILEZ S UREF=$P($$REF^cAFA10(.Q,"UPD.DET"),D) I '$L(UREF) G FILEZ ; ; Export groeperen per type (globals, routines, ...) S HULP="^HULP(boot,$J+.01)" K @HULP S UI1=UPD_" " FILE3 S UI1=$O(@UREF) I $P(UI1," ")'=UPD G FILE4 S DET=@UREF@(0) I $P(DET,D,30) G FILE39 FILE33 S TYPE=$P(DET,D,3) I '$D(@HULP@(TYPE,0)) S @HULP@(TYPE,0)="#"_$$SIG^cAFA1("TEXT.9025",TYPE,103) S @HULP@(TYPE,$P(DET,D,2))=$P(DET,D,4) FILE39 G FILE3 ; ; Bestandsnaam samenstellen FILE4 S DIR=$P(UPDN,D,10) I '$L(DIR) S OK="0\"_$P($T(@("T5"_QT)),U,2) G FILEY S:$E(DIR,$L(DIR))'="/" DIR=DIR_"/" S DIR=$TR(DIR,"/",D) S FILE=DIR_$P(UPDN,D,2)_".UPD" ; Bestand openen FILE41 S ER=$$OW^cA710(FILE) I ER S OK="0\"_$P($T(@("T6")),U,2)_FILE G FILEY ; ; Commentaar FILE42 S LN=$P($T(@("T9")),U,2)_$P(UPDN,D,2)_" - "_$P(UPDN,D,3) S LN=LN_$P($T(@("T9")),U,3)_DT_" - "_TD S LN=LN_$P($T(@("T9")),U,4)_QU S ER=$$WF^cA710(FILE,LN) I ER S OK="0\"_$P($T(@("T7")),U,2)_FILE G FILEY ; ; Detail S I1="" FILE43 S I1=$O(@HULP@(I1)) S I2="" I '$L(I1) G FILEY FILE45 S I2=$O(@HULP@(I1,I2)) I '$L(I2) G FILE43 S LN=^(I2) S ER=$$WF^cA710(FILE,$C(13)_$C(10)_LN) I ER S OK="0\"_$P($T(@("T7")),U,2)_FILE G FILEY FILE49 G FILE45 ; ; Opkuis / bestand afsluiten FILEY I $L($G(HULP)) K @HULP I '$L($G(FILE)) G FILEZ S ER=$$CF^cA710(FILE) I ER S OK="0\"_$P($T(@("T8")),U,2)_FILE G FILEZ S OK=1_D_$TR(FILE,D,"/") ; FILEZ Q OK ; BTEMP(GRIDID,UPD,COPY) ; Opbouwen mtemp99 met detaillijnen ; Input: GRIDID: volgnr van de grid : indien '' : volgnummer ophalen ; UPD : UI1 Update (UPD) ; COPY: 1: copy van een bestaande update S $ZT="ERR^cAFVBF01" N @$$INITVAR^cAFVBA01("GRIDID,UPD,COPY") ; BTEMP1 F i="GRIDID","UPD","COPY" S @i=$G(@i) I '$L(GRIDID) S GRIDID=$$GRIDID^cAFVBF01() K ^mtemp99(GRIDID,"COMMON") S OK=GRIDID I '$L(UPD) G BTEMPZ ; BTEMP2 S UREF=$P($$REF^cAFA10(.Q,"UPD.DET"),D) I '$L(UREF) G BTEMPZ ; ; Detaillijnen aflopen BTEMP3 S UI1=UPD_" " F S UI1=$O(@UREF) Q:$P(UI1," ")'=UPD D ; aflopen taalcodes . S DET=^(UI1,0) . I $P(DET,D,30) Q ; BG of verwijderd . I COPY S $P(DET,D,1,2)=D . S ^mtemp99(GRIDID,"COMMON",$P(UI1," ",2),0)=DET ; BTEMPZ Q OK ; SROW(GRIDID,DETID,OMS,TYPE,INFO,GROEP,DEL) ; Detaillijn opslaan in mtemp99 ; Input: GRIDID: GridId ; DETID: Volgnr detaillijn ; OMS: Beschrijving update ; TYPE: Type ; INFO: Info ; GROEP: Groepering ; DEL: 1=Verwijder lijn ; N (GRIDID,DETID,OMS,TYPE,INFO,GROEP,DEL) S $ZT="^dmERROR" ; ; Check parameters SROW1 F i="GRIDID","DETID","OMS","TYPE","INFO","GROEP","DEL" S @i=$G(@i) S OK=1,D="\",U=";" I '$L(DETID) G SROWZ I '$L(GRIDID) G SROWZ I $L(DETID,"||")=2 S DETID=$P(DETID,"||") ; ; Rij aanpassen / verwijderen SROW2 I DEL S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,30)=2 G SROWZ S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,2)=DETID S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,3)=TYPE S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,4)=OMS S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,5)=INFO S $P(^mtemp99(GRIDID,"COMMON",DETID,0),D,6)=GROEP ; SROWZ Q OK ; STEMP(GRIDID,UPD) ; Opslaan van de mtemp in de ^UPD("EA","UPD.DET" ; Input: GRIDID: Volgnr van de grid ; UPD: Intern nummer update (UPD) ; S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("GRIDID,UPD") ; ; Check parameters STEMP1 S OK=1 I '$L($G(GRIDID)) G STEMPZ I '$L($G(UPD)) G STEMPZ ; ; Opslaan / wijzigen detaillijnen S I1="" STEMP2 S I1=$O(^mtemp99(GRIDID,"COMMON",I1)) I I1="" G STEMPZ S DET=^(I1,0) S B(101)=UPD ; Update S B(102)=I1 ; Volgnr detaillijn S B(103)=$P(DET,D,3) ; Type S B(104)=$P(DET,D,4) ; Beschrijving S B(105)=$P(DET,D,5) ; Info S B(106)=$P(DET,D,6) ; Groepering S B(149)=$$Q^cAFA10 ; Q49 S UI1=B(101)_" "_B(102) ; I $P(DET,D,30) G STEMP5 ; Verwijderen I $L($P(DET,D)) G STEMP4 ; Wijzigen ; ; Openen (B(101), B(102) omvormen naar TAB(1), TAB(2) ...) STEMP3 K TAB S I="" F S I=$O(B(I)) Q:I="" S $P(TAB(I\100),D,I#100)=B(I) D P^cAN220("UPD.DET","",UI1,"TAB","") I K="-" S OK="0\"_$P($T(@("T3"_QT)),U,2)_UI1 G STEMPZ G STEMP2 ; ; Wijzigen STEMP4 K TAB M TAB=B D B^cAN220("UPD.DET","",UI1,"TAB") I K="-" S OK="0\"_$P($T(@("T3"_QT)),U,3)_UI1 G STEMPZ G STEMP2 ; ; Verwijderen STEMP5 D V^cAN220("UPD.DET","",UI1) I K="-" S OK="0\"_$P($T(@("T3"_QT)),U,4)_UI1 G STEMPZ G STEMP2 ; STEMPZ Q OK ; VNR(GRIDID) ; Ophalen volgend detaillijn nummer ; Input: GRIDID: volgnr van de grid S $ZT="ERR^cAFVBF01" N @$$INITVAR^cAFVBA01("GRIDID") ; VNR1 S VRN="" I '$L(GRIDID) G VNRZ ; ; Volgend nummer bepalen VNR2 S VNR=$O(^mtemp99(GRIDID,"COMMON",""),-1) I '$L(VNR) S VNR=999 S VNR=VNR+1 ; VNRZ Q VNR ; HD(SW,KL,CODE,OMS) ; Input SW: Switch ; "" of 0: Via object ; 1: Via parameters ; KL: UI1 klant (KL.A) ; CODE: Update ; OMS: Onderwerp S $ZT="^dmERROR" HDIND1 D QT^cAFVBO01 S D="\",U=";" N i,HD,TIT F i="SW","KL","CODE","OMS" S @i=$G(@i) ; ; Via parameters HDIND2 I 'SW S KL=..B101GetObjectId(),CODE=..B102,OMS=..B103 F i="KL","CODE","OMS" S @i=$TR(@i,U,",") ; ";" uitfilteren S TIT=$P($T(@("T4"_QT)),U,2) ;S HD="\\"_TIT_"\ ;"_$$SIG^cAFA1("KL.A",KL,101)_" "_$P($G(^(0)),D,2)_"\\\\ ;"_CODE_" "_OMS S HD="\\"_TIT_"\ ;"_CODE_" "_OMS_"\\\\ ;"_$$SIG^cAFA1("KL.A",KL,101)_" "_$P($G(^(0)),D,2) ; HDINDZ Q HD HDZ Q ; UI1S(UI1,TL,NIV,SEL) N (UI1,TL,NIV,SEL,Q) S D="\" ; S NIV=$G(NIV),SEL=$G(SEL) I NIV S R="" G UI1S2 S R=UI1 I '$L($G(UI1)) G UI1SZ S UI1S(UI1)="" I '$L($G(TL)) S TL="N" ; UI1S2 S I1=UI1_" " F S I1=$O(^DDC(0,"KLASSE.PROP",I1)) Q:$P(I1," ")'=UI1 D . S N=^(I1,0) Q:$P(N,D,30)=2 . S N1=$$NODE1^cABVBK10(I1,$P(N,D,5),$P(N,D,11)) . S REFKL=$P(N1,D,12) I '$L(REFKL) Q . I REFKL=10005 Q ; Vennootschapsklasse zit praktisch in elke klasse -> niet meenemen . S UI1S(REFKL)="" ; I NIV G UI1S4 UI1S3 W !,!,UI1,?7,$$SIG^cAFA1("DC",UI1,101),?20,$$SIG^cAFA1("DC.TAAL",UI1_" N",104),! W !,"Volgende referentieklassen ook meenemen? ([]=ja, ""-""=neen)",! ; UI1S4 S i="" F S i=$O(UI1S(i)) Q:'$L(i) D . i i=UI1 Q . I $L(D_SEL_D,D_i_D)>1 Q . W ! f j=0:1:NIV w "." . W ?5,i,?13,$$SIG^cAFA1("DC",i,101),?25,$$SIG^cAFA1("DC.TAAL",i_" "_TL,104),?55 . R K W ?57,$S(K="-":"neen",1:"ja") I K="-" Q . S R=$S($L(R):R_D_i,1:i) . S EXT=$$UI1S(i,TL,NIV+1,R_D_SEL) I $L(EXT) S R=$S($L(R):R_D_EXT,1:EXT) ; UI1SZ Q R ; MKUPD(UI1,Q,TL) ; Voorbereiden update ; Input: UI1: Klasse ; ; !NOG BIJ TE VOEGEN! ; ; 1. Form en grid info ; 2. DLL's en EXE's ; 3. Volgorde van tonen ; ; N @$$INITVAR^cAFVBA01("UI1,TL") S $ZT="^dmERROR" ; ; Klassen bepalen MKUPD1 K ^TEMPC(boot,$J) I '$L($G(TL)) S TL="N" F i=1:1:$L(UI1,D) D . S UI1S=$$UI1S($P(UI1,D,i),TL) . F j=1:1:$L(UI1S,D) S UI1TAB($P(UI1S,D,j))="" s (i,UI1S)="" F s i=$O(UI1TAB(i)) Q:'$L(i) s UI1S=$S($L(UI1S):UI1S_D,1:"")_i ; ; ; Datadictonary MKUPD3 S PC=1 K DD MKUPD31 S UI1=$P(UI1S,D,PC),PC=PC+1 G:'$L(UI1) MKUPD35 S I1=UI1_" " F S I1=$O(^DDC(0,"KLASSE.PROP",I1)) Q:$P(I1," ")'=UI1 D . S N=^(I1,0) Q:$P(N,D,30)=2 . I '$L($P(N,D,5)) Q ; Geen DD-item ingevuld . ;D LOG(2,"^DDD(0,""DD"","_$P(N,D,5)) . S DD($P(N,D,5))="" MKUPD34 G MKUPD31 MKUPD35 S (I,STI)="" F S I=$O(DD(I)) Q:'$L(I) D . I '$L(STI) S STI=I . I $D(DD(I+1)) Q . I STI'=I D S STI="" Q .. D LOG(0,"^DDD(0,""DD"","_STI_":"_I) .. D LOG(0,"^DDD(0,""DD.TAAL"","""_STI_" "":"""_I_" z""") . I STI=I D S STI="" Q .. D LOG(0,"^DDD(0,""DD"","_I) .. D LOG(0,"^DDD(0,""DD.TAAL"","""_I_" "":"""_I_" z""") MKUPD39 S UI1=$P(UI1S,D) ; ; LUS MKUPD4 S PC=1 MKUPD41 S UI1=$P(UI1S,D,PC),PC=PC+1 G:'$L(UI1) MKUPD20 ; ; Klasse MKUPD43 D LOG(1,"^DDC(0,""KLASSE"","""_UI1_"""") D LOG(1,"^DDC(0,""K"":""Kz"","""_UI1_""_" "_""_""":"""_UI1_""_" z""") ; ; Einddefinitie MKUPD45 D LOG(3,"^DDP(0,""KLASSE"","""_UI1_"""") D LOG(3,"^DDP(0,""K"":""Kz"","""_UI1_""_" "_""_""":"""_UI1_""_" z""") ; ; Grids MKUPD5 S I1=UI1_" " F S I1=$O(^IVB(0,"GRIDN",121,I1)) Q:$P(I1," ")'=UI1 D . S N=$P(^(I1),D),GRID=1 . D LOG(6,"^VBN(,""G"":""Gz"","""_N_""":"""_N_" z""") . D LOG(16,"D UPD^cABVB01("""_N_""","""",1)") ; ; Forms MKUPD6 S I1="" F S I1=$O(^VBN(0,"FORM",I1)) Q:'$L(I1) D . S N=^(I1,0) Q:$P(N,D,30)=2 . I $P(N,D,4)'=UI1 Q . D LOG(8,"^VBN(,""F"":""Fz"","""_$P(N,D)_""":"""_$P(N,D)_" z""") ; ; DMS MKUPD7 S DMS=$$SIG^cAFA1("DP",UI1,201) I '$L(DMS) G MKUPD10 D LOG(10,"^DMS(,"_""""_DMS_"""") ; ; DMC MKUPD8 D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) G MKUPD10 D LOG(11,"^DMC("""_UQC_""","_""""_USC_"""") ; ; DMA MKUPD9 S UQA=$P($G(^DMS(Q,DMS,"DMA","W")),D),USA=$P($G(^("W")),D,2) I UQA="",USA="" S UQA=$P($G(^DMS(0,DMS,"DMA","W")),D),USA=$P($G(^("W")),D,2) I '$L(UQA)!'$L(USA) G MKUPD92 D LOG(12,"^DMA("""_UQA_""","_""""_USA_"""") ; ; DMQ MKUPD92 I $D(^DMQ(Q,DMS)) D LOG(13,"^DMQ("""_Q_""","_""""_DMS_"""") G MKUPD10 I $D(^DMQ(0,DMS)) D LOG(13,"^DMQ("""_0_""","_""""_DMS_"""") ; ; Routines MKUPD10 K ROUT ; -> Via berekende properties S I1=UI1_" " F S I1=$O(^DDC(0,"KLASSE.PROP",I1)) Q:$P(I1," ")'=UI1 D . S N=^(I1,0),CODE=$P($G(^(2)),D) Q:$P(N,D,30)=2 I '$L(CODE) Q . S PR=$P($P(CODE,"^",2),"(") I '$L(PR) Q . S ROUT(PR)="" ; -> Via methodes S I1=UI1_" " F S I1=$O(^DDC(0,"KLASSE.METH",I1)) Q:$P(I1," ")'=UI1 D . S N=^(I1,0),CODE=$P($G(^(3)),D) Q:$P(N,D,30)=2 I '$L(CODE) Q . S PR=$P($P(CODE,"^",2),"(") I '$L(PR) Q . S ROUT(PR)="" S I1="" F S I1=$O(ROUT(I1)) Q:'$L(I1) D . D LOG(15,I1) ; ; KLasse MKUPD11 S KLASSE=$$SIG^cAFA1("CODE.9022",$$SIG^cAFA1("DP",UI1,103),101) S KLASSE=KLASSE_$S($L(KLASSE):".",1:"")_$$SIG^cAFA1("DP",UI1,101) D LOG(5,KLASSE) S KLTAAL=$$SIGN^cAFA1("DP.TAAL",UI1_" "_TL,0) S KLASSE=$P(KLTAAL,D,3)_"."_$P(KLTAAL,D,4) D LOG(5,KLASSE) D LOG(16,"W $$GRANTREV^dmSEC("""_KLASSE_""",0,""s"",""ReadOnly"")") ; ; Teksten MKUPD12 I $$SIG^cAFA1("DP",UI1,103)'="1007" G MKUPD13 D LOG(14,"^DTEXT(0,"""_DMS_"""") D LOG(14,"^DTEXT(0,""TEXT.VV"","_$P(DMS,".",2)_"") D LOG(16,"D S1^cAN002(0,"""_DMS_""",24)") S TXT=1 ; ; Codes MKUPD13 I $P(DMS,".")'="CODE" G MKUPD19 D LOG(14,"^DKODE(0,""CODE.VV"","_$P(DMS,".",2)_"") S CODE=1 ; MKUPD19 G MKUPD41 ; ; Executes na update MKUPD20 ; -> Update grids, forms, klassen, ... I $G(TXT) D LOG(16,"S BEHEER=1 D S1^cAN002(0,""TEXT.VV"",24)") I $G(CODE) D LOG(16,"S BEHEER=1 D S1^cAN002(0,""CODE.VV"",24)") I $D(^TEMPC(boot,$J,0)) D LOG(16,"D UPDI^cABVBD1") ; Datadic I $D(^TEMPC(boot,$J,0))!$D(^TEMPC(boot,$J,1)) D LOG(16,"D UPDI^cABVBK1") ; Klassedef I $D(^TEMPC(boot,$J,3))!$D(^TEMPC(boot,$J,4)) D LOG(16,"D UPDI^cABVBP1") ; Einddef I $D(^TEMPC(boot,$J,6))!$D(^TEMPC(boot,$J,7)) D LOG(16,"D UPDI^cABVB01") ; Grids I $D(^TEMPC(boot,$J,8))!$D(^TEMPC(boot,$J,9)) D LOG(16,"D UPDI^cABVBF1") ; Forms ; ; Output MKUPDY S I1="" F S I1=$O(^TEMPC(boot,$J,I1)) Q:'$L(I1) D . W !,!,$P($T(@($S(I1<10:"T1",1:"T2"))),U,$S(I1<10:I1+2,1:I1-8)) . S I2="" F S I2=$O(^TEMPC(boot,$J,I1,I2)) Q:'$L(I2) D .. W !,^(I2) ; ; W !,!,"DONE" MKUPDZ Q ; LOG(TYPE,TXT) ; Input: TYPE: 0 = Klasse-definitie ; 1 = Klasseproperty-definitie ; 2 = Datatictonary ; 3 = Klasse-eindefinitie ; 4 = Property-einddefinitie ; 5 = Klasse ; 6 = Grid ; 7 = Kolom ; 8 = Form ; 9 = Form-item ; 10 = DMS ; 11 = DMC ; 12 = DMA ; 13 = DMQ ; 14 = Routine ; 15 = X na update N VNR S $ZT="TRAP^cAN000" ; S VNR=1 I $D(^TEMPC(boot,$J,TYPE)) S VNR=$O(^TEMPC(boot,$J,TYPE,999999),-1)+1 S ^TEMPC(boot,$J,TYPE,VNR)=TXT ; LOGZ Q ; ZZ ; 29.08.07 - 10 u 22 * V8.09