1 | PRC0B ;WISC/PLT-UTILITY ; 02/03/94 8:36 AM
|
---|
2 | V ;;5.1;IFCAP;;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | QUIT ; invalid entry
|
---|
5 | ;
|
---|
6 | ;prca = ~1 file number;file root;file record id;field # of multiple for adding
|
---|
7 | ; ~2 subfile number;subfile root (required if subfile);subfile RI;field # of multiple for adding
|
---|
8 | ; ~...
|
---|
9 | ;prcb data ~1=ACEFILMNOQSXZ any combination, ~2=DINUM (option), ~3=SPECIFIED INDEICES
|
---|
10 | ;prcc = select propmt text (optional)
|
---|
11 | ;.x = dir array for lookup specification (optional) and value returned
|
---|
12 | ;.y = value returned from ^dic
|
---|
13 | LOOKUP(X,Y,PRCA,PRCB,PRCC) ;entry look-up
|
---|
14 | N %,%Y,DG,DISYS,DIC,DLAYGO,DUPUT,DTOUT,DA,A,B,C,D,I
|
---|
15 | S:PRCA'?.E1"~" PRCA=PRCA_"~" S A=$L(PRCA,"~")-1
|
---|
16 | I A>1 F B=1:1:A-1 S C=$P(PRCA,"~",B),DA(A-B)=$P(C,";",3) S:$P(C,";",4)]"" DIC("P")=$$DICP^PRC0B1(+C,$P(C,";",4))
|
---|
17 | S B=$P(PRCA,"~",A),DIC=$P(B,";",2) S:DIC=""&(A=1) DIC=+B
|
---|
18 | I $D(X)\10 F A=0,"A","B","S","W","DR","P" S:$D(X(A)) DIC(A)=X(A) K X(A)
|
---|
19 | S:$D(PRCC) DIC("A")=PRCC
|
---|
20 | S:'$D(DIC(0)) DIC(0)=$P(PRCB,"~") S:DIC(0)["L" DLAYGO=PRCA
|
---|
21 | S:$P(PRCB,"~",2)?1.N DINUM=$P(PRCB,"~",2)
|
---|
22 | S DA="",D=$P(PRCB,"~",3) I D="" D ^DIC I 1
|
---|
23 | E D MIX^DIC1
|
---|
24 | QUIT
|
---|
25 | ;
|
---|
26 | ;prca = ~1 file number;file root (required if prcc["L");file record id
|
---|
27 | ; ~2 subfile number (option);subfile root;subfile RI
|
---|
28 | ; ~...
|
---|
29 | ;prcb = editing fields string DR if not in x-array (optional)
|
---|
30 | ;prcc = string; '^' abort not allowed if ["^", lock/unlock if ["L"
|
---|
31 | ; single lock/unlock if ["LS"
|
---|
32 | ;.x = editing filed string DR array or value returned
|
---|
33 | ; = value returned 0 if deleted, -1 if abort with '^'
|
---|
34 | ; 1 if normal exit, -2 if lock fail
|
---|
35 | EDIT(X,PRCA,PRCB,PRCC) ;edit entry in file
|
---|
36 | N %,%Y,D0,D1,DDH,DISYS,DLAYGO,DQ
|
---|
37 | N DI,DIE,DIC,DIS,DA,DR,PRCLOCK,A,B,C,D,Y
|
---|
38 | S:PRCA'?.E1"~" PRCA=PRCA_"~" S PRCC=$G(PRCC),A=$L(PRCA,"~")-1,PRCLOCK=""
|
---|
39 | I A>1 F B=1:1:A-1 S C=$P(PRCA,"~",B),DA(A-B)=$P(C,";",3)
|
---|
40 | S B=$P(PRCA,"~",A),DIE=$P(B,";",2),DA=$P(B,";",3) S:PRCC["L" PRCLOCK=DIE_$S(PRCC["LS":DA_",",1:"")
|
---|
41 | S:DIE=""&(A=1) DIE=+B
|
---|
42 | S DR=$G(PRCB) S:PRCC["^" DIE("NO^")=""
|
---|
43 | I DR="" S %X="X(",%Y="DR(",DR=X D %XY^%RCR K X
|
---|
44 | K X I PRCLOCK]"" S Y=3 D ICLOCK(PRCLOCK,.Y) I 'Y S X=-2 QUIT
|
---|
45 | D ^DIE,DCLOCK(PRCLOCK):PRCLOCK]""
|
---|
46 | S X=$S('$D(DA):0,$D(Y)=0:1,1:-1)
|
---|
47 | QUIT
|
---|
48 | ;
|
---|
49 | ;prca = ~1 file number;file root (option);file record id
|
---|
50 | ; ~2 subfile number;subfile root (option);subfile RI
|
---|
51 | ; ~...
|
---|
52 | ;prcb = ~1 field#;field#;...
|
---|
53 | ; ~2 subfield #;subfield #;...
|
---|
54 | ; ~...
|
---|
55 | ;prcc = string of characters I, E. (no N) (required)
|
---|
56 | ;prcd = local array name returned, it cann't be %,X,Y
|
---|
57 | ; PRCA,PRCB,PRCD,PRCD,PRCE,PRCF
|
---|
58 | ; @prcd(file#,record id,field #,"E")=external value
|
---|
59 | ; @prcd(file#,record id,field #,"I")=internal value
|
---|
60 | PIECE(PRCA,PRCB,PRCC,PRCD) ;get piece data
|
---|
61 | N D0,DIC,DR,DA,DIQ,PRCE,PRCF,DI
|
---|
62 | S PRCE=$P(PRCA,"~"),DIC=+PRCE,DA=$P(PRCE,";",3),DR=$P(PRCB,"~")
|
---|
63 | F PRCF=2:1 Q:$P(PRCA,"~",PRCF)="" S PRCE=$P(PRCA,"~",PRCF),DA(+PRCE)=$P(PRCE,";",3),DR(+PRCE)=$P(PRCB,"~",PRCF)
|
---|
64 | S DIQ=PRCD,DIQ(0)=PRCC_"N"
|
---|
65 | D EN^DIQ1
|
---|
66 | QUIT
|
---|
67 | ;
|
---|
68 | ;prca = (sub)file node root
|
---|
69 | ;prcb = node value
|
---|
70 | NODE(PRCA,PRCB) ;get node
|
---|
71 | N PRCC
|
---|
72 | S @("PRCC=$G("_PRCA_"PRCB))")
|
---|
73 | QUIT PRCC
|
---|
74 | ;
|
---|
75 | ;prc is piece #
|
---|
76 | NP(PRCA,PRCB,PRCC) ;get node and piece
|
---|
77 | N PRCD
|
---|
78 | S @("PRCD=$P($G("_PRCA_"PRCB)),""^"",PRCC)")
|
---|
79 | QUIT PRCD
|
---|
80 | ;
|
---|
81 | ;extrinsic variable for lookup screen active enteries for sd dic
|
---|
82 | ;$$STATUS^PRC0B = fix value of status file 420.1999
|
---|
83 | STATUS() ;get status fix value via pointer of file 420.1999, naked '^' used for lookup screen
|
---|
84 | N A
|
---|
85 | S A=$P($G(^(0)),U,3)
|
---|
86 | QUIT $S(A:$P($G(^PRCD(420.1999,A,0)),U,4),1:"A")
|
---|
87 | ;
|
---|
88 | ;
|
---|
89 | ;
|
---|
90 | ICLOCK(A,B) ;incremental lock with time (optional)
|
---|
91 | ; a = global root ending with ','
|
---|
92 | ; .b = time lock seconds and value returned; false if lock fail
|
---|
93 | S A=$E(A,1,$L(A)-1)
|
---|
94 | I $D(B) L +@(A_")"):B S B=$T E QUIT
|
---|
95 | S PRCLOCK(A)=$G(PRCLOCK(A))+1
|
---|
96 | I '$D(B) S B=99999999 L +@(A_")"):B
|
---|
97 | QUIT
|
---|
98 | ;
|
---|
99 | DCLOCK(A) ;decremental unlock
|
---|
100 | ; a = global root ending with ','
|
---|
101 | S A=$E(A,1,$L(A)-1)
|
---|
102 | L -@(A_")") S PRCLOCK(A)=$G(PRCLOCK(A))-1 K:PRCLOCK(A)<1 PRCLOCK(A)
|
---|
103 | QUIT
|
---|
104 | ;
|
---|
105 | UNLOCK(A) ;unlock all ^PRC(A)
|
---|
106 | ; a = global root ending with ','
|
---|
107 | S A=$E(A,1,$L(A)-1)
|
---|
108 | F Q:$G(PRCLOCK(A))<1 L -@(A_")") S PRCLOCK(A)=$G(PRCLOCK(A))-1
|
---|
109 | K PRCLOCK(A)
|
---|
110 | QUIT
|
---|
111 | ;
|
---|
112 | UNLKALL ;unlock all ^PRC
|
---|
113 | N A
|
---|
114 | S A="" F S A=$O(PRCLOCK(A)) Q:A="" F Q:$G(PRCLOCK(A))<1 L -@(A_")") S PRCLOCK(A)=$G(PRCLOCK(A))-1
|
---|
115 | K PRCLOCK
|
---|
116 | QUIT
|
---|
117 | ;
|
---|