1 | BMXRPC8 ; IHS/OIT/HMW - BMX REMOTE PROCEDURE CALLS ;
|
---|
2 | ;;2.1;BMX;;Jul 26, 2009
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | BMXLOCKD(BMXY,BMXVAR,BMXINC,BMXTIME) ;EP
|
---|
6 | ;Entry point for debugging
|
---|
7 | ;
|
---|
8 | D DEBUG^%Serenji("BMXLOCK^BMXRPC8(.BMXY,BMXVAR,BMXINC,BMXTIME)")
|
---|
9 | Q
|
---|
10 | ;
|
---|
11 | BMXLOCK(BMXY,BMXVAR,BMXINC,BMXTIME) ;EP
|
---|
12 | ;Called by BMX LOCK rpc to lock variable BMXVAR
|
---|
13 | ;If BMXVAR = "", argumentless lock is performed to release all locks
|
---|
14 | ;BMXINC = increment lock if "+", decrement if "-"
|
---|
15 | ;BMXTIME = lock timeout
|
---|
16 | ;Returns 1 if lock successful, otherwise 0;
|
---|
17 | ;
|
---|
18 | S X="ERR^BMXRPC8",@^%ZOSF("TRAP")
|
---|
19 | ;
|
---|
20 | N BMXC
|
---|
21 | S:$E(BMXVAR,1,1)="~" BMXVAR="^"_$E(BMXVAR,2,$L(BMXVAR))
|
---|
22 | S:BMXTIME="" BMXTIME=0
|
---|
23 | I BMXVAR="" X "L" S BMXY=1 Q
|
---|
24 | S BMXC="L "
|
---|
25 | S BMXC=BMXC_$S(BMXINC="+":"+",BMXINC="-":"-",1:"")
|
---|
26 | S BMXC=BMXC_BMXVAR_":"_+BMXTIME
|
---|
27 | X BMXC
|
---|
28 | S BMXY=$T
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | ERR ;Error processing
|
---|
32 | S BMXY=0
|
---|
33 | Q
|
---|
34 | ;
|
---|
35 | BMXVERD(BMXY,BMXNS,BMXLOC) ;EP
|
---|
36 | ;Entry point for debugging
|
---|
37 | ;
|
---|
38 | D DEBUG^%Serenji("BMXVER^BMXRPC8(.BMXY,BMXNS,BMXLOC)")
|
---|
39 | Q
|
---|
40 | ;
|
---|
41 | BMXVER(BMXY,BMXNS,BMXLOC) ;EP
|
---|
42 | ;
|
---|
43 | ;Called by BMX VERSION INFO rpc
|
---|
44 | ;Returns recordset of version info for server components in namespace BMXNS.
|
---|
45 | ;If BMXLOC is "", then the version info is assumed to be stored in piece 1-3 of
|
---|
46 | ;^<BMXNS>APPL(1,0)
|
---|
47 | ;
|
---|
48 | ;TODO:
|
---|
49 | ;BMXLOC, if not null, is either a global reference such that $P(@BMXLOC,U,1,3) returns
|
---|
50 | ;MAJOR^MINOR^BUILD
|
---|
51 | ;Or BMXLOC can be an extrinsic function call that returns MAJOR^MINOR^BUILD.
|
---|
52 | ;
|
---|
53 | ;The returned error field is either "" or contains a text error message.
|
---|
54 | ;
|
---|
55 | N X,BMXI,BMXNOD,BMXDAT
|
---|
56 | ;
|
---|
57 | S X="VETRAP^BMXRPC8",@^%ZOSF("TRAP")
|
---|
58 | S BMXI=0
|
---|
59 | K ^BMXTMP($J)
|
---|
60 | S BMXY="^BMXTMP("_$J_")"
|
---|
61 | S ^BMXTMP($J,BMXI)="T00030ERROR^T00030MAJOR_VERSION^T00030MINOR_VERSION^T00030BUILD"_$C(30)
|
---|
62 | S BMXI=BMXI+1
|
---|
63 | I BMXNS="" D VERR(BMXI,"BMXRPC8: Invalid Null Application Namespace") Q
|
---|
64 | S BMXNOD="^"_BMXNS_"APPL(1,0)"
|
---|
65 | S BMXDAT=$G(@BMXNOD)
|
---|
66 | I BMXNS="" D VERR(BMXI,"BMXRPC8: No version info for Application Namespace") Q
|
---|
67 | S ^BMXTMP($J,BMXI)="^"_$P(BMXDAT,U,1,3)_$C(30)
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | ;
|
---|
71 | VERR(BMXI,BMXERR) ;Error processing
|
---|
72 | S BMXI=BMXI+1
|
---|
73 | S ^BMXTMP($J,BMXI)=BMXERR_"^^^"_$C(30)
|
---|
74 | S BMXI=BMXI+1
|
---|
75 | S ^BMXTMP($J,BMXI)=$C(31)
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | VETRAP ;EP Error trap entry
|
---|
79 | D ^%ZTER
|
---|
80 | I '$D(BMXI) N BMXI S BMXI=999999
|
---|
81 | S BMXI=BMXI+1
|
---|
82 | D VERR(BMXI,"BMXRPC8 Error: "_$G(%ZTERROR))
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | IMHERE(BMXRES) ;EP
|
---|
86 | ;Entry point for BMX IM HERE remote procedure
|
---|
87 | S BMXRES=1
|
---|
88 | Q
|
---|
89 | ;
|
---|