| 1 | DIFGGSB1 ;SFISC/XAK,EDE(OHPRD)-FILEGRAM SPECIAL BLOCK PART 2 ;8/12/98  13:16
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 | BODY S DIFGSB(DILL,"SPSPEC")=0
 | 
|---|
| 5 |  I $D(DIFG(DILL,"FUNC")),"AL"[DIFG(DILL,"FUNC") I 1
 | 
|---|
| 6 |  E  I $D(DIFG(DILL,"NOKEY"))
 | 
|---|
| 7 |  E  D SPSPEC^DIFGGSB2
 | 
|---|
| 8 |  Q:DIFGSB(DILL,"SPSPEC")
 | 
|---|
| 9 |  D P01
 | 
|---|
| 10 |  D SPEC
 | 
|---|
| 11 |  D IDENT
 | 
|---|
| 12 |  Q
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 | P01 ; .01 FIELD WHEN IT IS A POINTER
 | 
|---|
| 15 |  Q:$P(^DD(DIFG(DILL,"FILE"),.01,0),U,2)'["P"
 | 
|---|
| 16 |  S DIFGSB(DILL,"FLD")=.01
 | 
|---|
| 17 |  D SETXY
 | 
|---|
| 18 |  Q:Y=""
 | 
|---|
| 19 |  D PTRCHK^DIFGGSB2
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | SPEC ; SPECIFIERS
 | 
|---|
| 23 |  S DIFGSB(DILL,"SBT")="SPECIFIER:",%=""
 | 
|---|
| 24 |  F DIFGSB(DILL,"FLD")=0:0 D SPEC2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD")  S %=%_$S(%="":DIFGSB(DILL,"FLD"),1:";"_DIFGSB(DILL,"FLD"))
 | 
|---|
| 25 |  I '$D(DIFG(DILL,"MUL")) S DR=% D:%'="" FIELDS I 1
 | 
|---|
| 26 |  E  S DR(DIFG(DILL,"FILE"))=% D:%'="" FIELDS
 | 
|---|
| 27 |  K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
 | 
|---|
| 28 |  I '$D(DIFG(DILL,"MUL")) K DA,DIC,DR
 | 
|---|
| 29 |  K % Q
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | SPEC2 S DIFGSB(DILL,"FLD")=$O(^DD(DIFG(DILL,"FILE"),0,"SP",DIFGSB(DILL,"FLD")))
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | IDENT ; IDENTIFIERS
 | 
|---|
| 35 |  S DIFGSB(DILL,"SBT")="IDENTIFIER:",%=""
 | 
|---|
| 36 |  N DIXIEN,DIKEY S DIXIEN=0,DIKEY=";"
 | 
|---|
| 37 |  I $G(DIAR)=4 S DIXIEN=$O(^DD("KEY","AP",DIFG(DILL,"FILE"),"P",0))
 | 
|---|
| 38 |  F DIFGSB(DILL,"FLD")=0:0 D IDENT2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD")  D:'$D(^DD(DIFG(DILL,"FILE"),0,"SP",DIFGSB(DILL,"FLD"))) IDENT3
 | 
|---|
| 39 |  I '$D(DIFG(DILL,"MUL")) S DR=% D:%'="" FIELDS I 1
 | 
|---|
| 40 |  E  S DR(DIFG(DILL,"FILE"))=% D:%'="" FIELDS
 | 
|---|
| 41 |  K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
 | 
|---|
| 42 |  I '$D(DIFG(DILL,"MUL")) K DA,DIC,DR
 | 
|---|
| 43 |  K %
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | IDENT2 N DIOUT S DIOUT=0
 | 
|---|
| 47 |  I DIXIEN F  D  Q:DIOUT!('DIFGSB(DILL,"FLD"))
 | 
|---|
| 48 |  . S DIFGSB(DILL,"FLD")=$O(^DD("KEY",DIXIEN,2,"BB",DIFGSB(DILL,"FLD")))
 | 
|---|
| 49 |  . Q:'DIFGSB(DILL,"FLD")!(DIFGSB(DILL,"FLD")=.01)
 | 
|---|
| 50 |  . Q:$O(^DD("KEY",DIXIEN,2,"BB",DIFGSB(DILL,"FLD"),0))'=DIFG(DILL,"FILE")
 | 
|---|
| 51 |  . Q:'$D(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0))
 | 
|---|
| 52 |  . S DIOUT=1,DIKEY=DIKEY_DIFGSB(DILL,"FLD")_";" Q
 | 
|---|
| 53 |  Q:DIOUT  S DIXIEN=0
 | 
|---|
| 54 |  F  S DIFGSB(DILL,"FLD")=$O(^DD(DIFG(DILL,"FILE"),0,"ID",DIFGSB(DILL,"FLD"))) Q:'DIFGSB(DILL,"FLD")  Q:DIKEY'[(";"_DIFGSB(DILL,"FLD"))
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | IDENT3 S %=%_$S(%="":DIFGSB(DILL,"FLD"),1:";"_DIFGSB(DILL,"FLD"))
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | FIELDS I $D(DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"))) D DRFIX
 | 
|---|
| 61 |  I '$D(DIFG(DILL,"MUL")) Q:DR=""
 | 
|---|
| 62 |  E  Q:DR(DIFG(DILL,"FILE"))=""
 | 
|---|
| 63 |  K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
 | 
|---|
| 64 |  S:'$D(DIFG(DILL,"MUL")) DIC=DIFG(DILL,"FILE"),DA=DIFG(DILL,"FE")
 | 
|---|
| 65 |  S DIQ(0)="N" D EN^DIQ1 K DIQ
 | 
|---|
| 66 |  F DIFGSB(DILL,"FLD")=0:0 D FIELDS2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD")  S X=^(DIFGSB(DILL,"FLD")) D FIELDS3
 | 
|---|
| 67 |  Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | DRFIX ; ADJUST DR FOR MODIFIED/DELETED VALUES
 | 
|---|
| 70 |  NEW T
 | 
|---|
| 71 |  I '$D(DIFG(DILL,"MUL")) S T=DR
 | 
|---|
| 72 |  E  S T=DR(DIFG(DILL,"FILE"))
 | 
|---|
| 73 |  F %=1:1 S X=$P(T,";",%) Q:X=""  S %(X)="" I $D(DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"),X)) K %(X) S DIFGSB(DILL,"FLD")=X,X=DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"),X) D DRFIX2
 | 
|---|
| 74 |  S (T,X)=""
 | 
|---|
| 75 |  F %=0:0 S X=$O(%(X)) Q:X=""  S T=T_$S(T="":"",1:";")_X
 | 
|---|
| 76 |  I '$D(DIFG(DILL,"MUL")) S DR=T
 | 
|---|
| 77 |  E  S DR(DIFG(DILL,"FILE"))=T
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | DRFIX2 NEW %,DR,T
 | 
|---|
| 81 |  D FIELDS3
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | FIELDS2 S DIFGSB(DILL,"FLD")=$O(^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"),DIFG(DILL,"FE"),DIFGSB(DILL,"FLD")))
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | FIELDS3 Q:X=""
 | 
|---|
| 88 |  D SETXY
 | 
|---|
| 89 |  K F,N,P,W
 | 
|---|
| 90 |  S V=DIFGSB(DILL,"SBT")_$P(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0),U,1)_U_$S(DIFG("PARM")["N":DIFGSB(DILL,"FLD"),1:"")
 | 
|---|
| 91 |  S:DIFGSB(DILL,"SBT")["KEY" V=V_U_$P(DIFGSB(DILL,"SPSPEC"),U,2)
 | 
|---|
| 92 |  S V=V_"="_X
 | 
|---|
| 93 |  D INCSET^DIFGGU
 | 
|---|
| 94 |  D:Y'="" PTRCHK^DIFGGSB2
 | 
|---|
| 95 |  K X,Y
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | SETXY ; If previously looked up pointer set @LINK
 | 
|---|
| 98 |  S Y=""
 | 
|---|
| 99 |  Q:$P(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0),U,2)'["P"
 | 
|---|
| 100 |  S F=+$P($P(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0),U,2),"P",2),W=$P(^(0),U,4),N=$P(W,";",1),P=$P(W,";",2)
 | 
|---|
| 101 |  I $D(DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"),DIFGSB(DILL,"FLD"),"P")) S Y=DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"),DIFGSB(DILL,"FLD"),"P") I 1
 | 
|---|
| 102 |  E  S Y=$P(@(DIFG(DILL,"FGBL")_DIFG(DILL,"FE")_",N)"),U,P)
 | 
|---|
| 103 |  I $D(^UTILITY("DIFGLINK",$J,F,Y)) S X="@"_^UTILITY("DIFGLINK",$J,F,Y),Y="" Q
 | 
|---|
| 104 |  S ^UTILITY("DIFGLINK",$J)=$S($D(^UTILITY("DIFGLINK",$J))#2:^UTILITY("DIFGLINK",$J)+1,1:1)
 | 
|---|
| 105 |  S ^UTILITY("DIFGLINK",$J,F,Y)=^UTILITY("DIFGLINK",$J)
 | 
|---|
| 106 |  S Y="@"_^UTILITY("DIFGLINK",$J)
 | 
|---|
| 107 |  Q
 | 
|---|