Annotation of freem_fileman/DIFGGSB1.m, revision 1.1.1.1

1.1       snw         1: DIFGGSB1       ;SFISC/XAK,EDE(OHPRD)-FILEGRAM SPECIAL BLOCK PART 2 ;2/3/93  12:46 PM
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      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:        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
                     37:        I '$D(DIFG(DILL,"MUL")) S DR=% D:%'="" FIELDS I 1
                     38:        E  S DR(DIFG(DILL,"FILE"))=% D:%'="" FIELDS
                     39:        K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
                     40:        I '$D(DIFG(DILL,"MUL")) K DA,DIC,DR
                     41:        K %
                     42:        Q
                     43:        ;
                     44: IDENT2 S DIFGSB(DILL,"FLD")=$O(^DD(DIFG(DILL,"FILE"),0,"ID",DIFGSB(DILL,"FLD")))
                     45:        Q
                     46:        ;
                     47: IDENT3 S %=%_$S(%="":DIFGSB(DILL,"FLD"),1:";"_DIFGSB(DILL,"FLD"))
                     48:        Q
                     49:        ;
                     50: FIELDS I $D(DIFGGU(DIFG(DILL,"FILE"),DIFG(DILL,"FE"))) D DRFIX
                     51:        I '$D(DIFG(DILL,"MUL")) Q:DR=""
                     52:        E  Q:DR(DIFG(DILL,"FILE"))=""
                     53:        K ^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"))
                     54:        S:'$D(DIFG(DILL,"MUL")) DIC=DIFG(DILL,"FILE"),DA=DIFG(DILL,"FE")
                     55:        S DIQ(0)="N" D EN^DIQ1 K DIQ
                     56:        F DIFGSB(DILL,"FLD")=0:0 D FIELDS2 Q:DIFGSB(DILL,"FLD")'=+DIFGSB(DILL,"FLD")  S X=^(DIFGSB(DILL,"FLD")) D FIELDS3
                     57:        Q
                     58:        ;
                     59: DRFIX  ; ADJUST DR FOR MODIFIED/DELETED VALUES
                     60:        NEW T
                     61:        I '$D(DIFG(DILL,"MUL")) S T=DR
                     62:        E  S T=DR(DIFG(DILL,"FILE"))
                     63:        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
                     64:        S (T,X)=""
                     65:        F %=0:0 S X=$O(%(X)) Q:X=""  S T=T_$S(T="":"",1:";")_X
                     66:        I '$D(DIFG(DILL,"MUL")) S DR=T
                     67:        E  S DR(DIFG(DILL,"FILE"))=T
                     68:        Q
                     69:        ;
                     70: DRFIX2 NEW %,DR,T
                     71:        D FIELDS3
                     72:        Q
                     73:        ;
                     74: FIELDS2        S DIFGSB(DILL,"FLD")=$O(^UTILITY("DIQ1",$J,DIFG(DILL,"FILE"),DIFG(DILL,"FE"),DIFGSB(DILL,"FLD")))
                     75:        Q
                     76:        ;
                     77: FIELDS3        Q:X=""
                     78:        D SETXY
                     79:        K F,N,P,W
                     80:        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:"")
                     81:        S:DIFGSB(DILL,"SBT")["KEY" V=V_U_$P(DIFGSB(DILL,"SPSPEC"),U,2)
                     82:        S V=V_"="_X
                     83:        D INCSET^DIFGGU
                     84:        D:Y'="" PTRCHK^DIFGGSB2
                     85:        K X,Y
                     86:        Q
                     87: SETXY  ; If previously looked up pointer set @LINK
                     88:        S Y=""
                     89:        Q:$P(^DD(DIFG(DILL,"FILE"),DIFGSB(DILL,"FLD"),0),U,2)'["P"
                     90:        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)
                     91:        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
                     92:        E  S Y=$P(@(DIFG(DILL,"FGBL")_DIFG(DILL,"FE")_",N)"),U,P)
                     93:        I $D(^UTILITY("DIFGLINK",$J,F,Y)) S X="@"_^UTILITY("DIFGLINK",$J,F,Y),Y="" Q
                     94:        S ^UTILITY("DIFGLINK",$J)=$S($D(^UTILITY("DIFGLINK",$J))#2:^UTILITY("DIFGLINK",$J)+1,1:1)
                     95:        S ^UTILITY("DIFGLINK",$J,F,Y)=^UTILITY("DIFGLINK",$J)
                     96:        S Y="@"_^UTILITY("DIFGLINK",$J)
                     97:        Q

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>