cANLOCKM ;LOCK-functie ;%ANLOCK ; [ 01/04/01 11:32 AM ] G 1 ; T0 ;LOCK-functie ; T1 ;Bestand in gebruik; (job ; door ; T2 ; in gebruik; (job ; door ; ; T0F ;LOCK-function ; T1F ;Fichier en usage; (job ; door ; T2F ; en usage; ; T0E ;LOCK-function ; T1E ;File in use; (job ; by ; T2E ; in use; (job ; by ; ; ; VJ-16.10.00 1 S LJOB=$P($T(@("T2"_QT)),U,2) G YZ ; ; --- nog verder uit te testen --- LOCK(BEST,TIMEOUT,NMSG) ; ; BEST = ^Bestand1;Omschrijving 1\^Bestand2;Omschrijving\^.... ; TIMEOUT = timeout in seconden (default = 2) ; NMSG = 1 = geen boodschap tonen N G,OK,OBEST,TEL,I,MSG S BEST=$G(BEST),NMSG=$G(NMSG),OK=1 S:'$L($G(TIMEOUT)) TIMEOUT=2 I '$L(BEST) G LOCKZ ; poging tot locken F TEL=1:1:$L(BEST,D) S G=$P(BEST,D,TEL),MSG=$P(G,U,2),G=$P(G,U) I $L(G) L +@G:TIMEOUT E D L(G,MSG,NMSG) S OK=0 Q ; indien 1 lock mislukt is : de rest terug unlocken I 'OK F I=TEL-1:1:1 S G=$P($P(BEST,D,I),U) I $L(G) L -@G LOCKZ Q OK ; L(G,MSG,NMSG) N A,H,I,R,K,XL,XR,YL,YR,glvn,gref,job,sw,sys,uci I $G(NMSG) G YZ I $ZV'[" 4." D BUSY^cAFA1 G YZ S $ZT="ERR^"_$T(+0),sw=0,gref=$G(G) I '$L(gref) G YZ I $$STAT^cMODESET(3) S XL="[""",XR="""]",YL="|""",YR="""|" E S XL="|""",XR="""|",YL="[""",YR="""]" S sys=$P($ZU(5),",",2),H="^"_XL_$ZU(5)_XR_"HULP("""_sys_""","_$J_")" I $e(G)="^" D . I $e(gref,2,3)=YL D .. S $E(gref,2,3)=XL I $E(gref,7,8)=YR S $e(gref,7,8)=XR Q .. S:$E(gref,11,12)=YR $E(gref,11,12)=XR . I $E(gref,2,3)=XL S uci=$TR($P($P(gref,XL,2),XR),"""") D .. I uci["," S sys=$P(uci,",",2) Q .. S gref=$P(gref,uci)_uci_","_sys_$P(gref,uci,2,$L(gref,uci)) . I $E(gref,2,3)'=XL S gref="^"_XL_$ZU(5)_XR_$E(gref,2,$L(gref)) K @H I sys=$P($ZU(5),",",2) D GL(H) G WHO J @("GL^"_$T(+0)_"(H)|""MGR,"_sys_"""|") S job=$zb I 'job G DISP H 1 L +@H:60 ; WHO S glvn=$s($E(G)="^":"^",1:"") F S glvn=$O(@H@(glvn)) Q:glvn="" D Q:sw . F I=$QL(gref):-1:0 I $NA(@glvn)=$NA(@gref,I) S sw=1 Q . F I=$QL(glvn):-1:0 I $NA(@glvn,I)=$NA(@gref) S sw=1 Q ; DISP I sw S A=@H@(glvn) D MESS G EXIT I 'sw D BUSY^cAFA1 ; EXIT K @H L -@H YZ Q ; GL(V) N A,C,D,I,LEN,LT,NUM,PFL,SYS,TEXT,TYP,UCI,XL,XR,glvn G GLZ:$ZV'[" 4." S D="\",V=$G(V) G:'$L(V) GLZ K @V L +@V:1 E G GLZ ;V 44:$J:$ZB($V(44,$J,2),#1,7):2 I $$STAT^cMODESET(3) S XL="[""",XR="""]" E S XL="|""",XR="""|" ;S LT=$V(2,-5),NUM=$V(LT+4,-3,4) G:'NUM GLX S LT=$V(LT,-3,0) LOOP S glvn="",(PFL,C)=0,TYP=$V(LT+11,-3,1),LEN=$V(LT+13,-3,1),TEXT=$V(LT+14,-3,LEN,9) ;I $ZB(TYP,#1,1) S glvn=glvn_"^" D XSYS S LEN=LEN-4,TEXT=$V(LT+18,-3,LEN,9) ;S LEN=$L(TEXT,$C(0))-1 F I=1:1:LEN S glvn=glvn_$P(TEXT,$C(0),I) D DLM ;S SYS=$V(LT+6,-3,2) I 'SYS S SYS=$P($ZU(1,0),",",2),C=$V(272,-4,4) ;E S SYS=$C(SYS\2048+64,SYS\64#32+64,SYS\2#32+64) ;S A=$V(LT+4,-3,2)\4+C_D_SYS_D_$S($V(LT+6,-3,2):"DDP",$V(LT+10,-3,1)=2:"ZA",1:"LOCK") ;S A=A_D_$V(LT+8,-3,2) S @V@(glvn)=A S LT=$V(LT,-3,0) G:LT LOOP ;GLX V 44:$J:$ZB($V(44,$J,2),#1,2):2 L -@V GLZ Q ; DLM I I=LEN S:PFL glvn=glvn_""")" Q I 'PFL S PFL=1 S glvn=glvn_"(""" Q S glvn=glvn_""",""" Q ; XSYS S SYS=$V(LT+14,-3,2),UCI=$V(LT+16,-3,2) I SYS=0 S glvn=glvn_XL_$ZU(UCI#32,UCI\32)_XR Q E S SYS=$C(SYS\2048+64,SYS\64#32+64,SYS\2#32+64),UCI=$C(UCI\2048+64,UCI\64#32+64,UCI\2#32+64) S glvn=glvn_XL_UCI_","_SYS_XR Q ; ERR ;V 44:$J:$ZB($V(44,$J,2),#1,2):2 S %=$ZE D ^cA400 G DISP ; MESS I $L($G(^cLOG(boot,"LOCK"))) X ^("LOCK") S job=$P(A,D),sys=$P(A,D,2),R=$G(^|"MGR,"_$S(sys'=boot:sys,1:$p($zu(0),",",2))|%JOB(job,sys,"job","qu2")) I '$L(R) S R=$G(^("qu")) S K=$S($L($G(MSG)):MSG,1:G)_$P($T(@("T2"_QT)),U,2)_$S($L(R):$P($T(@("T1"_QT)),U,4)_R,1:"")_$P($T(@("T1"_QT)),U,3)_$P(A,D)_$S(sys'=boot:","_sys_")",1:")") D TXT^cAFA1(250) Q ; ZZ ; 05.02.01 - 16 u 23 * V7.84