| [613] | 1 | PRC0B1 ;WISC/PLT-UTILITY ; 06/30/94  12:40 PM
 | 
|---|
 | 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;subfile RI;field # of multiple for adding
 | 
|---|
 | 8 |  ;     ~3 ...
 | 
|---|
 | 9 |  ;.x = .01 value or array of dic and X("DR") to input for other fields
 | 
|---|
 | 10 |  ;.y = value returned; -1 no new entry added, ^1=ri,^2=.01 value,^3=1 for new if added
 | 
|---|
 | 11 | ADD(X,Y,PRCA,DINUM) ;add new entry
 | 
|---|
 | 12 |  N DD,DO,DIC,%,D0,DA,DI,DIE,DLAYGO,DQ,DR,A,B,C,I
 | 
|---|
 | 13 |  S:PRCA'?.E1"~" PRCA=PRCA_"~" S A=$L(PRCA,"~")-1
 | 
|---|
 | 14 |  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))
 | 
|---|
 | 15 |  S B=$P(PRCA,"~",A),DIC=$P(B,";",2)  S:DIC=""&(A=1) DIC=+B
 | 
|---|
 | 16 |  S DLAYGO=PRCA,DIC(0)="FIL"
 | 
|---|
 | 17 |  S:$D(X(0)) DIC(0)=X(0) S:$D(X("DR")) DIC("DR")=X("DR") K X(0),X("DR")
 | 
|---|
 | 18 |  D FILE^DICN
 | 
|---|
 | 19 |  QUIT
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  ;prca = ~1 file number(option);file root;file record id
 | 
|---|
 | 22 |  ;       ~2 subfile number(option);subfile root;subfile RI
 | 
|---|
 | 23 |  ;       ~...
 | 
|---|
 | 24 |  ;.x = value return; 1 if deleted, 0 if not, -2 if lock fail
 | 
|---|
 | 25 | DELETE(X,PRCA) ;delete entry
 | 
|---|
 | 26 |  N %,DA,DIC,Y
 | 
|---|
 | 27 |  N DIK,DIA,PRCLOCK,A,B,C
 | 
|---|
 | 28 |  S:PRCA'?.E1"~" PRCA=PRCA_"~" S A=$L(PRCA,"~")-1,PRCLOCK=""
 | 
|---|
 | 29 |  I A>1 F B=1:1:A-1 S C=$P(PRCA,"~",B),DA(A-B)=$P(C,";",3)
 | 
|---|
 | 30 |  S B=$P(PRCA,"~",A),DIK=$P(B,";",2),DA=$P(B,";",3),PRCLOCK=DIK_DA_","
 | 
|---|
 | 31 |  S X=3 D ICLOCK^PRC0B(PRCLOCK,.X) I 'X S X=-2 QUIT
 | 
|---|
 | 32 |  D ^DIK,DCLOCK^PRC0B(PRCLOCK)
 | 
|---|
 | 33 |  S X=1
 | 
|---|
 | 34 |  QUIT
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ;A=global root (including cross reference) ending with ','
 | 
|---|
 | 37 |  ;B=start value
 | 
|---|
 | 38 | FIRST(A,B) ;$O-first node after B-value
 | 
|---|
 | 39 |  N C
 | 
|---|
 | 40 |  S @("C=$O("_A_"B))")
 | 
|---|
 | 41 |  QUIT C
 | 
|---|
 | 42 |  ;
 | 
|---|
 | 43 | DICP(A,B) ;EF value=2nd piece of 0-node of the multiple field's dd entry
 | 
|---|
 | 44 |  QUIT $S(A&B:$P($G(^DD(A,B,0)),"^",2),1:"")
 | 
|---|
 | 45 |  ;
 | 
|---|
 | 46 |  ;
 | 
|---|
 | 47 | DICGL(A) ;EF value=global root ending with ',' for file # A.
 | 
|---|
 | 48 |  QUIT $G(^DIC(A,0,"GL"))
 | 
|---|
 | 49 |  ;
 | 
|---|