cAFVBA01 ; algemene functies VB ;cAFVBA01 ; Compiled December 8, 2011 12:06:17 ; T1 ;Het is niet toegestaan om meer dan ; lijnen te selecteren.; ; T1F ;Il n'est pas permis de sélectionner plus de ; linges; ; T1E ;It's not allowed to select more than ; lines.; ; YZ Q ; CHK(Q,DMS,UI1) ; Check op linken naar ... S $ZT="^dmERROR" N (Q,UI1,DMS,QU,QT) S OK=1 I '$L($G(UI1)) G CHKZ I '$L($G(DMS)) G CHKZ D . N UI1,DMS,OK . D INIT D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) G CHKZ I '$D(^DMC(UQC,USC,"LINK")) G CHKZ S I=0,OK=1 F S I=$O(^DMC(UQC,USC,"LINK",I)) Q:I="" S J=^(I) D Q:'OK . N UQC,USC,DMS,I . S DMS=$P(J,D),BI=$P(J,D,2) ; I '$P(J,D,3) Q . D DMS^cAN000("UQC","USC",DMS,1) Q:UQC=""!(USC="") Q:'$D(^DMC(UQC,USC,"DATA","INDEX")) . S IREF=^("INDEX") . S S1=UI1_" ",S2=S1 F S S2=$O(@IREF@(BI,S2)) Q:$E(S2,1,$L(S1))'=S1 S OK=0 Q CHKZ Q OK ; DMS(Q,DMS) ; check licentie N UQC,USC,R S $ZT="TRAP^dmERROR" S D="\",R=1 D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) S R=0 DMSZ Q R ; GETFLTCP(TYPE,UI1) ; Ophalen FixedWherestatement voor Contactpersonengrid ; Als contactpersonen opgeroepen vanuit Klanten,Leveranciers,Prospecten: enkel contactpersonen voor die tonen ; TYPE= KL: Klanten ; LE: Leveranciers ; NP: Prospecten ; UI1 = UI1 van bovenstaand type N OUT,BIND S $ZT="^dmERROR" S BIND=$S(TYPE="KL":"220",TYPE="LE":"221",TYPE="NP":"222",1:"") I '$L(BIND) S OUT="" G GETFLTCPZ S OUT="%ALPHAUP(T1.B"_BIND_")=%ALPHAUP('"_UI1_"')" GETFLTCPZ Q OUT ; GETIND(UREF) ; ophalen index 1 en 2 uit UREF N (Q,QU,QT,UREF) S D="\" I $$UC^cAFA1(UREF)="DUMMY" S UREF="" S R=UREF_D_D I '$L(UREF) G GETINDZ F i=2,3 S $P(R,D,i)=$P($P($P(UREF,"(",2),",",i-1),")") S:$P(R,D,i)="Q" $P(R,D,i)=Q S $P(R,D,i)=$TR($P(R,D,i),"""","") ; index 1 en 2 bepalen GETINDZ Q R ; GETPAR(Q,DMS,UI1,QT) ; ophalen parameters per klasse ; ingang : ; DMS = DMS van het bestand ; UI1 = ID van het bestand ; uitgang : ; 1. Omschrijving in taal QT ; 10. UREF ; 11. index1 van UREF ; 12. index2 van UREF ; 13. index4 van UREF (=UI1) ; 20. DLOG ; 21. index1 van DLOG ; 22. index2 van DLOG ; 23. index4 van DLOG N (Q,DMS,UI1,QU,QT) S $ZT="^dmERROR" S (R,R0,R1)="",D="\",U=";" I '$L($G(Q)) G GETPARZ I '$L($G(DMS)) G GETPARZ I '$L($G(QT)) S QT="" D QT^cAFVBO01 S R0=$G(^DMS(Q,DMS)),R1=$G(^(DMS,0)) I $L(R0),$P(R1,D,30) S R0=D I '$L(R0) S R0=$G(^DMS(0,DMS)),R1=$G(^(DMS,0)) I $L(R0),$P(R1,D,30) S R0=D S UQC=$P(R0,D),USC=$P(R0,D,2) I '$L(UQC)!'$L(USC) G GETPARZ S R=$P($G(^DMC(UQC,USC,"TAAL",$E(QT_"N"))),D,2) ; omschrijving I '$L(R) S R=$P($G(^DMC(UQC,USC,"TAAL","N")),D,2) S R=$$UC^cAFA1($E(R))_$E(R,2,$L(R)) S UREF=$G(^DMC(UQC,USC,"DATA","REF")) S $P(R,D,10,13)=$$GETIND(UREF)_D_$G(UI1) ; indexen vn databestand S $P(R,D,20,23)=$$GETIND($G(^DMC(UQC,USC,"LOGGING")))_D_$G(UI1) ; indexen van loggingsbestand I $L($P(R,D,20)) G GETPARZ ; wordt de logging bijgehouden in een ander bestand (zie DKL) S DMSQ=$$DMSQ^cAN008(DMS) I '$L(DMSQ) G GETPARZ S HUQC=$P(^DMS(DMSQ,DMS,2),D),HUSC=$P(^(2),D,2) I '$L(HUQC)!'$L(HUSC) G GETPARZ S $P(R,D,20,23)=$$GETIND($G(^DMC(HUQC,HUSC,"LOGGING")))_D I '$L($G(UI1))!'$L($G(UREF)) G GETPARZ S HUI1=$P($G(@UREF@(0)),D,50) I '$L(HUI1) G GETPARZ S HQ=$P($G(^(0)),D,49) I '$L(HQ) S HQ=Q f i=21,22 I $P(R,D,i)=Q S $P(R,D,i)=HQ S $P(R,D,23)=HUI1 I $G(^DMC(HUQC,HUSC,"DATA"))>2 G GETPARZ D . N Q,UREF,UI1 . S Q=HQ,UI1=HUI1 . S UREF=$G(^("DATA","REF")) I '$L(UREF) Q . S HUI1=$P($G(@UREF@(0)),D) . S $P(R,D,23)=HUI1 GETPARZ Q R ; INIT ; %dmINIT,%Q1,D,DD,DJ,DM,DT,Q,QD,QL,QM,QN,QP,QS,QT,QTU,QU,QZ,TD,U,boot,bootrvg,client,cs,master,slave,workst opzetten ; !!!!! indien hier een variabele wordt bijgezet moet dit ook in INITVAR gebeuren !!!! S $ZT="TRAP^cAN000" s D="\",U=";" D QT^cAFVBO01 D ^cA105,^cA106 I $G(%dmINIT) G INITZ ; reeds geïnitialiseerd, hoeft nu niet meer D:'$D(boot) MASTER^cQ5 n oQ,R,i S oQ=$G(Q) I '$L($G(Q)),$L($G(^cLOG(boot,"Q",cs))) S Q=$P(^(cs),D,2) I '$L(Q) S Q=$P(^(cs),D) S:'$l($G(Q)) Q="EA" S:'$L($G(QU)) QU="VBA" D USR^cA5000(QU) f i="QL","QS","QM","QZ","QN" S:'$L($G(@i)) @i="" S QTU=$S($L(QT):$F("FDE",QT),1:1) S QP=1 S:Q'=oQ!'$D(QD) QD=$G(@("^"_Q_"BA(34)")) S %Q1="^TEMP(""%1"",$J)" S %dmINIT=1 INITZ Q ; INITVAR(R,INCL) ; initialisatie + samenstellen string met var. voor een EXCLUSIEVE New ; R = welke variabelen moeten bijgezet worden in de uitgangstring ; vb : R ="A,B" : Uitgang = "(%Q1,D,DD,...,A,B)" ; INCL =1 = Inclusief ipv exclusief ; Niet verplicht : default = 0 of niet bestaand : dus steeds EXCLUSIEF ; zie als voorbeeld om te gebruiken :functie VBF ; I '$G(%dmINIT) D INIT ; initialisatie variabelen ; samenstellen string met standaard variabelen + variabelen meegegeven in R S R=$S('$G(INCL):"(",1:"")_"%dmINIT,%Q1,D,DD,DJ,DM,DT,Q,QD,QL,QM,QN,QP,QS,QT,QTU,QU,QZ,TD,U,boot,bootrvg,client,cs,master,slave,workst"_$S($L($G(R)):",",1:"")_$G(R)_$S('$G(INCL):")",1:"") Q R ; L(Q,UQC,USC,UI1,UNLOCK,MSG,NO2) ; UNLOCK = 1 : indien unlock ; MSG = 1 : naar buiten met 0\boodschap ; NO2 = 1 : voorkom 2de lock binnen 1 $j S $ZT="^dmERROR" N UREF,OK S OK=0 S UREF=$G(^DMC(UQC,USC,"DATA","REF")) I '$L(UREF) G LZ I $G(^("LOCKN"))=1 S UI1=".NET "_UI1 I UREF[",UI1" F Q:$TR($P(UREF,",",$L(UREF,",")),")""")="UI1" S UREF=$P(UREF,",",1,$L(UREF,",")-1)_$S(UREF["@(":")"")",1:")") ; lock I '$G(UNLOCK) S OK=$$PLUS^cANLOCK($NA(@UREF),2,$S($G(MSG)=1:"",1:$G(MSG)),,2,$G(NO2)) I '$L($G(MSG)) S OK=+OK ; unlock I $G(UNLOCK) S OK=1 L -@UREF LZ Q OK ; LOCK(Q,DMS,UI1,LOCK,PAR) ; lock/unlock ; Q = Q-waarde (defaul="EA") ; DMS = srt bestand : zie ^DMS(Q,DMS ; ID = UI1 van bestand (ev. nieuw bestand) ; LOCK = 0 : unlock ; LOCK = 1 of onbestaand : lock ; PAR : parameters delimeter "~" ; 1. Boodschap : ; = 1 : naar buiten met 0\standaard boodschap ; = text : naar buiten met 0\text_" in gebruik" ; 2. Voorkom 2de lock binnen 1 $j ; = 1 : ja ; S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("DMS,UI1,LOCK,PAR") S:'$L($G(LOCK)) LOCK=1 S OK=0 I '$L($G(UI1)) S OK=1 G LOCKZ ; GM 22.12.06 - Niet locken/unlocken indien geen UI1 doorgegeven I '$D(PAR) S MSG="",PAR="" G LOCKA ; indien opgeroepen via Templ02Base.Lock S MSG=$P(PAR,"~") I '$L(MSG) S MSG=1 ; indien opgeroepen via Templ02Base.LockWithMessage LOCKA D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) G LOCKZ S OK=$$L(Q,UQC,USC,UI1,'LOCK,MSG,$P(PAR,"~",2)) I 'OK G LOCKZ ; moet er een bestand gelijk gehouden worden? S DMSQ=$$DMSQ^cAN008(DMS) I '$L(DMSQ) G LOCKZ ; ophalen 'oude' key S UREF=$G(^DMC(UQC,USC,"DATA","REF")) I '$L(UREF) G LOCKZ S HUI1=$P($G(@UREF@(0)),D,50) I '$L(HUI1) G LOCKZ S HQ=$P($G(^(0)),D,49) I '$L(HQ) S HQ=Q S HUQC=$P(^DMS(DMSQ,DMS,2),D),HUSC=$P(^(2),D,2) I '$L(HUQC)!'$L(HUSC) G LOCKZ S OK=$$L(HQ,HUQC,HUSC,HUI1,'LOCK,MSG,$P(PAR,"~",2)) I LOCK,'OK S K=$$L(Q,UQC,USC,UI1,1) ; terug unlocken als beide locks niet gaan LOCKZ Q OK ; NR(Q,DMS) ; ophalen eerst volgend vrij nummer S $ZT="^dmERROR" N (Q,DMS,QU,QT) D . N DMS . D INIT D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) Q "" S R=$$NR^cAN000 NRZ Q R ; SEL(GRIDID,SELID,SW,LIM) ; Bijhouden van selectie ; Input: GRIDID: Gridid van selectie-mtemp99 ; SELID: Geselecteerd ID ; SW: Switch ; 0 of "": id toevoegen aan selectie ; 1: id verwijderen uit selectie ; 2: fixed-wherestatement * verouderd* ; 3: query voor geselecteerde id's op te vragen ; 4: alle (*) geselecteerd ; 5: verwijderen selectie ; 6: verwijderen selectie-mtemp (ook de parameters) ; 7: gridid bepalen ; LIM: Limiet ; Output: gescheiden door "\" ; 1. 0: Gevraagde actie is niet gelukt ; 1: Gevraagde actie is gelukt ; ; Indien SW=0 kunnen volgende waarden ook worden teruggeven ; -1: Actie niet gelukt: limiet bereikt ; -2: Actie niet gelukt: ID was reeds toegevoegd ; 2. Naar gelang SW: ; 0,1,4,7: GRIDID ; 2: Fixed-wherestatement ; 3: Query met id's "~" aantal id's N R,OUT,i,c S $ZT="^dmERROR" ; ; Variabelen opzetten F i="GRIDID","SELID","SW","LIM" s @i=$G(@i) S R=1,D="\",U=";",OUT="" ; ; Gridid bepalen I '$L($G(GRIDID)) S GRIDID=$$GRIDID^cAFVBF01() ; ; Functionaliteit bepalen I 'SW G SEL0 I SW=1 G SEL1 I SW=2 G SEL2 I SW=3 G SEL3 I SW=4 G SEL4 I SW=5 G SEL5 I SW=6 G SEL6 I SW=7 G SEL7 ; S OUT=GRIDID G SELZ ; ; Id toevoegen aan selectie SEL0 S OUT=GRIDID I '$L(SELID) S R=0 G SELZ S $P(^mtemp99(GRIDID,"COMMON.PAR",0),D)=0 ; Switch "Alle records" afzetten I $D(^mtemp99(GRIDID,"COMMON",SELID)) S R=-2 G SELZ I $G(LIM)>0,($$SELC(GRIDID)>=LIM) S R=-1,OUT=$P($T(@("T1"_QT)),U,2)_LIM_$P($T(@("T1"_QT)),U,3) G SELZ S ^mtemp99(GRIDID,"COMMON",SELID)="" G SELZ ; ; Id verwijderen uit selectie SEL1 S OUT=GRIDID I '$L(SELID) S R=0 G SELZ I '$D(^mtemp99(GRIDID,"COMMON",SELID)) S R=0 G SELZ K ^mtemp99(GRIDID,"COMMON",SELID) G SELZ ; ; Fixed-wherestatement SEL2 S OUT="T1.ID IN (SELECT T2.TempId FROM Tech.Temp T2 WHERE T2.GridId = '"_GRIDID_"')" G SELZ ; ; Query voor geselecteerde id's op te vragen SEL3 S OUT="SELECT T1.TempId FROM Tech.Temp T1 WHERE T1.GridId = '"_GRIDID_"'~"_$$SELC(GRIDID) G SELZ ; ; Alle geselecteerd SEL4 S OUT=GRIDID K ^mtemp99(GRIDID,"COMMON") ; Eventuele specifieke geselecteerde records verwijderen S $P(^mtemp99(GRIDID,"COMMON.PAR",0),D)=1 ; Switch "Alle records" opzetten G SELZ ; ; Selectie verwijderen SEL5 K ^mtemp99(GRIDID,"COMMON") ; Specifieke geselecteerde records verwijderen S $P(^mtemp99(GRIDID,"COMMON.PAR",0),D)=0 ; Switch "Alle records" afzetten G SELZ ; ; Selectie-mtemp verwijdern SEL6 K ^mtemp99(GRIDID,"COMMON") K ^mtemp99(GRIDID,"COMMON.PAR") G SELZ ; ; GridId SEL7 S OUT=GRIDID G SELZ ; SELZ Q R_D_OUT ; SELALL(GRIDID) ; Input: GRIDID: GridId van selectie-mtemp99 ; Output: 0 : enkel operationele ; 1 : alle S $ZT="^dmERROR" S OUT="" I '$L(GRIDID) G SELALLZ S OUT=+$P($G(^mtemp99(GRIDID,"COMMON.PAR",0)),D,2) SELALLZ Q OUT ; SELC(GRIDID,IND) ; Aantal geselecteerde ID's ; Input: GRIDID: GridId van selectie-mtemp99 ; IND: Indicatief (geen exact aantal) ; Output: ; Aantal geselecteerde specifieke records ; of -1 indien alle operationele records ; of -2 indien alle records ; ; Indien "indicatief" dan: ; 0: Geen record geselecteerd ; 1: Eén record geselecteerd ; 2: Meerdere records geselecteerd ; -1: Alle operationele records geselecteerd ; -2: Alle records geselecteerd N i,c S $ZT="^dmERROR" I '$L($G(GRIDID)) S c=0 G SELCZ I $P($G(^mtemp99(GRIDID,"COMMON.PAR",0)),D) G SELC2 ; Alle records ; ; Aantal specifieke records SELC1 S (i,c)="",IND=$G(IND) F S i=$O(^mtemp99(GRIDID,"COMMON",i)) Q:'$L(i) S c=c+1 Q:(IND&(c>1)) G SELCZ ; ; Alle records SELC2 S c=-1-$P(^mtemp99(GRIDID,"COMMON.PAR",0),D,2) ; SELCZ Q +c ; SELPAR(GRIDID,PAR,BIND) ; Parameters opzetten voor algemene selectie ; Input: GRIDID: Gridid van selectie-mtemp99 ; PAR: Gescheiden door "\" ; 1. Property in hoofdklasse ; 2. Bij selectie van alle records ("*"): ; 0 of "": alle operationele records selecteren ; 1 : alle records selecteren ; 3. Selectie klasse ; 4. Selectie grid ; 5. Selectie parameters ; 6. Selectie Fixed Wherestatement ; BIND: Indien doorgegeven: enkel deze B-index opzetten ; ; Output: 1: GRIDID N R,OUT,i,c S $ZT="^dmERROR" ; ; Variabelen opzetten SELPAR1 F i="GRIDID","PAR","BIND" s @i=$G(@i) S R=1,D="\",U=";" ; ; Gridid bepalen SELPAR2 I '$L($G(GRIDID)) S GRIDID=$$GRIDID^cAFVBF01() ; ; Alle parameters opzetten SELPAR3 I $L($G(BIND)) G SELPAR4 S $P(^mtemp99(GRIDID,"COMMON.PAR",0),D,2)=$P(PAR,D,2) ; Type "alle" I $L($P(PAR,D)) S $P(^mtemp99(GRIDID,"COMMON.PAR",0),D,3)=$P(PAR,D) ; Property S $P(^mtemp99(GRIDID,"COMMON.PAR",1),D,1,4)=$P(PAR,D,3,6) ; Parameters ivm extra where statement G SELPARZ ; ; Specifieke parameter opzetten SELPAR4 S $P(^mtemp99(GRIDID,"COMMON.PAR",BIND\100-1),D,BIND#100)=PAR ; SELPARZ Q GRIDID ; SELVTF(VF,TF,TYPE,PROP,DF) ; Van-Tot where statement ; Input: VF: Van filter ; TF: Tot filter ; TYPE: Type doorgegeven filters ; 0 of "" = Dag ; 1 = Maand ; 2 = Jaar ; PROP: Property van de hoofdklasse waarop gefilterd moet worden ; DF: Datum formaat ; ; Output: Van-Tot where statement N R S $ZT="^dmERROR" ; ; Variabelen opzetten SELVTF1 F i="VF","TF","TYPE","PROP","DF" s @i=$G(@i) S R="",D="\",U=";" ; ; Controle parameters SELVTF2 I '$L(PROP)!('$L(VF)&'$L(TF)) G SELVTFZ S TYPE=+TYPE ; ; Maand/Jaar SELVTF3 I 'TYPE G SELVTF4 I $L(VF) S R="%ALPHAUP(T1."_PROP_") >= %ALPHAUP('"_VF_"')" I $L(TF) S R=$S($L(R):R_" AND ",1:"")_"%ALPHAUP(T1."_PROP_") <= %ALPHAUP('"_TF_"')" G SELVTFZ ; ; Dag SELVTF4 S DF=$$DATEFM^dmSQL(DF) I $L(VF) S R="+%INTERNAL(T1."_PROP_") >= TO_DATE('"_VF_"',"_DF_")" I $L(TF) S R=$S($L(R):R_" AND ",1:"")_"+%INTERNAL(T1."_PROP_") <= TO_DATE('"_TF_"',"_DF_")" ; SELVTFZ Q R ; SELITM(KLASSE) ; Haalt de nodige definities op voor de algemene selectie in dotNET ; Input: KLASSE: Naam van de klasse ; Output: gescheiden door "\" ; 1. Label (taal van de applicatie) ; 2. Klassnaam ; 3. Gridnaam ; 4. Textbox-breedte ; 5. Label omschrijving-breedte ; 6. Maximumlengte S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("KLASSE") ; ; Controle parameters SELITM1 S R="" I '$L($G(KLASSE)) G SELITMZ S DP=$$KLASSE^cAFVBA02($G(KLASSE)) I '$L(DP) G SELITMZ S DMUI1=$$SIG^cAFA1("DP",DP,202) I '$L(DMUI1) G SELITMZ S PROPID=$$UI1OP^cAFA1("DP.PROP","M1","",DP,DMUI1,"") I '$L(PROPID) G SELITMZ S PROP(0)=$$SIGN^cAFA1("DP.PROP",PROPID,0),PROP(1)=$G(^(1)),PROP(2)=$G(^(2)) I '$L(PROP(0)) G SELITMZ ; ; Label bepalen SELITM2 S TL=$S($L(QT):QT,1:"N") S LBL=$$SIG^cAFA1("DP.PROP.TAAL",PROPID_" "_TL,221) ; ; Klasse bepalen SELITM3 I '$L($P(PROP(1),D,12)) S KLS="" G SELITM4 S DEFKL(0)=$$SIGN^cAFA1("DP",$P(PROP(1),D,12),0) S KLS=$$SIG^cAFA1("CODE.9022",$P(DEFKL(0),D,3),101) S KLS=KLS_$S($L(KLS):".",1:"")_$P(DEFKL(0),D) ; ; Breedtes bepalen SELITM4 S DTYPE=$$SIG^cAFA1("CODE.9020",$P(PROP(1),D),101) ; Datatype S LINPUT=$P(PROP(1),D,3) S PIX=$$TWIP^cABVB02(LINPUT,DTYPE) S LABELW=$P(PROP(1),D,6)-$P(PROP(1),D,3)-1 I LABELW<0 S LABELW=0 S LABELW=$$TWIP^cABVB02(LABELW,DTYPE) ; ; Definities opzetten SELITM5 S $P(R,D)=LBL S $P(R,D,2)=KLS S $P(R,D,3)=$P(PROP(1),D,13) S $P(R,D,4)=PIX S $P(R,D,5)=LABELW S $P(R,D,6)=LINPUT ; SELITMZ Q R ; SYSVAR(CompanyId) ; ophalen systeemvariabelen ; Uitgang : R ; 1. boot ; 2. cs (currentsystem) ; 3. master ; 4. slave ; 5. bootrvg ; 6. client ; 7. workst ; S $ZT="TRAP^dmERROR" S Q=$G(CompanyId) N @$$INITVAR("CompanyId") SYSVARZ Q boot_D_cs_D_master_D_slave_D_bootrvg_D_client_D_workst ; UNIQUE(Q,DMS,BI,INPUT,PAR) ; test op uniek gegeven ; BI : B-index ; INPUT : input ; PAR : gescheiden door \ ; 1. UI1 : geen rekening houden met deze UI1 (voor test op uniek) ; 2. 1 : enkel op operationele zoeken ; 3. 1 : geen rekening houden met Q(49) of DMQ(,DMS) ; 4. Volgorde van zoeken : 1 = omgekeerde richting (en wordt steeds naar exacte waardes gezocht) S $ZT="^dmERROR" N @$$INITVAR("DMS,BI,INPUT,PAR") S OK=0,PAR=$G(PAR) S UI1=$$UI1OP^cAFA1(DMS,BI,$P(PAR,D,2)_D_$P(PAR,D,4)_D_D_$P(PAR,D)_D_$P(PAR,D,3),INPUT) I '$L(UI1) S OK=1 G UNIQUEZ ; er werden geen gevonden : dus uniek UNIQUEZ Q OK ; VBF(A,B) ; voorbeeld van een functie ; via INITVAR worden de nodige standaardvar. opgezet (%Q,D,DD,Q,...) ; via N @$$INITVAR("A,B") gebeurt de init. + worden de standaard variabelen en var. A, B EXCLUSIEF genewed ; Exclusieve NEW : alle variabelen uitgezonderd deze tussen de haakjes worden genewed S $ZT="^dmERROR" N @$$INITVAR("A,B") ; initialisatie variabelen + exclusieve new : N (%dmINIT,%Q1,D,DD,...A,B) ; is er reeds geïnitialiseerd, maar wil je dit toch opnieuw doen : ; k %dmINIT N @$$INITVAR("A,B") W !,A,!,B W !,$G(Test) S Test="12599" VBZ Q ; VVD(R,TERM,SRT,SWVB) ; berekenen vervaldatum ; R = datum : $H of dd.mm.jj ; TERM = termijn (zie ook cA104) of UI1 : verwijzing naar CODE.9024 (SRT="V") of CODE.9028 (SRT="A") ; SRT = A = Aankoop (Leverancier), V = Verkoop (Klant) ; SWVB = 1 : komt met $H naar buiten ipv dd.mm.jj S $ZT="^dmERROR" N @$$INITVAR("R,TERM,SRT,SWVB") I '$L($G(R)) G VVDZ I '$L($G(SRT)) G VVDY S TERM=$$SIG^cAFA1("CODE."_(SRT="A"*4+9024),$G(TERM),110) VVDY I R'?2N1"."2N1"."2N S R=$$HD^cAFD1(R) S R=R_D_$G(TERM) D ^cA104 I $L(R),$G(SWVB) S R=$$DH^cAFD1(R) VVDZ Q R ; ; ZZ ; 29.08.07 - 10 u 22 * V8.09