| [613] | 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 | ; | 
|---|