Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DIFGGSB1

DIFGGSB1.m

Go to the documentation of this file.
  1. DIFGGSB1 ;SFISC/XAK,EDE(OHPRD)-FILEGRAM SPECIAL BLOCK PART 2 ;8/12/98 13:16
  1. ;;22.0;VA FileMan;;Mar 30, 1999
  1. ;Per VHA Directive 10-93-142, this routine should not be modified.
  1. BODY S DIFGSB(DILL,"SPSPEC")=0
  1. I $D(DIFG(DILL,"FUNC")),"AL"[DIFG(DILL,"FUNC") I 1
  1. E I $D(DIFG(DILL,"NOKEY"))
  1. E D SPSPEC^DIFGGSB2
  1. Q:DIFGSB(DILL,"SPSPEC")
  1. D P01
  1. D SPEC
  1. D IDENT
  1. Q
  1. ;
  1. P01 ; .01 FIELD WHEN IT IS A POINTER
  1. Q:$P(^DD(DIFG(DILL,"FILE"),.01,0),U,2)'["P"
  1. S DIFGSB(DILL,"FLD")=.01
  1. D SETXY
  1. Q:Y=""
  1. D PTRCHK^DIFGGSB2
  1. Q
  1. ;
  1. SPEC ; SPECIFIERS
  1. S DIFGSB(DILL,"SBT")="SPECIFIER:",%=""
  1. F DIFGSB(DILL,"FLD")=0:0 D SPEC2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD") S %=%_$S(%="":DIFGSB(DILL,"FLD"),1:";"_DIFGSB(DILL,"FLD"))
  1. I '$D(DIFG(DILL,"MUL")) S DR=% D:%'="" FIELDS I 1
  1. E S DR(DIFG(DILL,"FILE"))=% D:%'="" FIELDS
  1. K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
  1. I '$D(DIFG(DILL,"MUL")) K DA,DIC,DR
  1. K % Q
  1. ;
  1. SPEC2 S DIFGSB(DILL,"FLD")=$O(^DD(DIFG(DILL,"FILE"),0,"SP",DIFGSB(DILL,"FLD")))
  1. Q
  1. ;
  1. IDENT ; IDENTIFIERS
  1. S DIFGSB(DILL,"SBT")="IDENTIFIER:",%=""
  1. N DIXIEN,DIKEY S DIXIEN=0,DIKEY=";"
  1. I $G(DIAR)=4 S DIXIEN=$O(^DD("KEY","AP",DIFG(DILL,"FILE"),"P",0))
  1. 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
  1. I '$D(DIFG(DILL,"MUL")) S DR=% D:%'="" FIELDS I 1
  1. E S DR(DIFG(DILL,"FILE"))=% D:%'="" FIELDS
  1. K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
  1. I '$D(DIFG(DILL,"MUL")) K DA,DIC,DR
  1. K %
  1. Q
  1. ;
  1. IDENT2 N DIOUT S DIOUT=0
  1. I DIXIEN F D Q:DIOUT!('DIFGSB(DILL,"FLD"))
  1. . S DIFGSB(DILL,"FLD")=$O(^DD("KEY",DIXIEN,2,"BB",DIFGSB(DILL,"FLD")))
  1. . Q:'DIFGSB(DILL,"FLD")!(DIFGSB(DILL,"FLD")=.01)
  1. . Q:$O(^DD("KEY",DIXIEN,2,"BB",DIFGSB(DILL,"FLD"),0))'=DIFG(DILL,"FILE")
  1. . Q:'$D(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0))
  1. . S DIOUT=1,DIKEY=DIKEY_DIFGSB(DILL,"FLD")_";" Q
  1. Q:DIOUT S DIXIEN=0
  1. F S DIFGSB(DILL,"FLD")=$O(^DD(DIFG(DILL,"FILE"),0,"ID",DIFGSB(DILL,"FLD"))) Q:'DIFGSB(DILL,"FLD") Q:DIKEY'[(";"_DIFGSB(DILL,"FLD"))
  1. Q
  1. ;
  1. IDENT3 S %=%_$S(%="":DIFGSB(DILL,"FLD"),1:";"_DIFGSB(DILL,"FLD"))
  1. Q
  1. ;
  1. FIELDS I $D(DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"))) D DRFIX
  1. I '$D(DIFG(DILL,"MUL")) Q:DR=""
  1. E Q:DR(DIFG(DILL,"FILE"))=""
  1. K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
  1. S:'$D(DIFG(DILL,"MUL")) DIC=DIFG(DILL,"FILE"),DA=DIFG(DILL,"FE")
  1. S DIQ(0)="N" D EN^DIQ1 K DIQ
  1. F DIFGSB(DILL,"FLD")=0:0 D FIELDS2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD") S X=^(DIFGSB(DILL,"FLD")) D FIELDS3
  1. Q
  1. ;
  1. DRFIX ; ADJUST DR FOR MODIFIED/DELETED VALUES
  1. NEW T
  1. I '$D(DIFG(DILL,"MUL")) S T=DR
  1. E S T=DR(DIFG(DILL,"FILE"))
  1. 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
  1. S (T,X)=""
  1. F %=0:0 S X=$O(%(X)) Q:X="" S T=T_$S(T="":"",1:";")_X
  1. I '$D(DIFG(DILL,"MUL")) S DR=T
  1. E S DR(DIFG(DILL,"FILE"))=T
  1. Q
  1. ;
  1. DRFIX2 NEW %,DR,T
  1. D FIELDS3
  1. Q
  1. ;
  1. FIELDS2 S DIFGSB(DILL,"FLD")=$O(^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"),DIFG(DILL,"FE"),DIFGSB(DILL,"FLD")))
  1. Q
  1. ;
  1. FIELDS3 Q:X=""
  1. D SETXY
  1. K F,N,P,W
  1. 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:"")
  1. S:DIFGSB(DILL,"SBT")["KEY" V=V_U_$P(DIFGSB(DILL,"SPSPEC"),U,2)
  1. S V=V_"="_X
  1. D INCSET^DIFGGU
  1. D:Y'="" PTRCHK^DIFGGSB2
  1. K X,Y
  1. Q
  1. SETXY ; If previously looked up pointer set @LINK
  1. S Y=""
  1. Q:$P(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0),U,2)'["P"
  1. 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)
  1. 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
  1. E S Y=$P(@(DIFG(DILL,"FGBL")_DIFG(DILL,"FE")_",N)"),U,P)
  1. I $D(^UTILITY("DIFGLINK",$J,F,Y)) S X="@"_^UTILITY("DIFGLINK",$J,F,Y),Y="" Q
  1. S ^UTILITY("DIFGLINK",$J)=$S($D(^UTILITY("DIFGLINK",$J))#2:^UTILITY("DIFGLINK",$J)+1,1:1)
  1. S ^UTILITY("DIFGLINK",$J,F,Y)=^UTILITY("DIFGLINK",$J)
  1. S Y="@"_^UTILITY("DIFGLINK",$J)
  1. Q