Annotation of freem_fileman/DIFGGI.m, revision 1.1

1.1     ! snw         1: DIFGGI ;SFISC/XAK,EDE(OHPRD)-FILEGRAM INITIALIZATION ;1/19/93  9:45 AM
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ; DIFGER values: 1 = required variable not passed
        !             5:        ;                2 = variable form invalid
        !             6:        ;                3 = variable content invalid
        !             7:        ;
        !             8: INIT   ; INITIALIZATION
        !             9:        K ^UTILITY("DIFG",$J),^UTILITY("DIFGLINK",$J)
        !            10:        D SET1,REQ Q:DIFG("QFLG")
        !            11:        D OPT Q:DIFG("QFLG")
        !            12:        D FIRST
        !            13:        Q
        !            14:        ;
        !            15: SET1   ; MISC SETS # 1
        !            16:        S DIFGI=0,DILL=1 K DIFGER S U="^",DIFG("QFLG")=0
        !            17:        Q
        !            18:        ;
        !            19: REQ    ;
        !            20:        ;
        !            21: FE     I '$D(DIFG("FE")) S DIFG("QFLG")=1 Q
        !            22:        I DIFG("FE")'=+DIFG("FE") S DIFG("QFLG")=2 Q
        !            23: FUNC   I '$D(DIFG("FUNC")) S DIFG("QFLG")="1" Q
        !            24:        I DIFG("FUNC")="" S DIFG("QFLG")=2 Q
        !            25:        I "AMLD"'[DIFG("FUNC") S DIFG("QFLG")=3 Q
        !            26: FGT    I '$D(DIFGT) S DIFG("QFLG")=1 Q
        !            27:        I DIFGT'=+DIFGT S DIFG("QFLG")=2 Q
        !            28:        I '$D(^DIPT(DIFGT,0)) S DIFG("QFLG")=3 Q
        !            29:        Q
        !            30:        ;
        !            31: OPT    ;
        !            32:        ;
        !            33: FGR    I '$D(DIFG("FGR")) S DIFG("FGR")="^UTILITY(""DIFG"",$J,"
        !            34:        S X=DIFG("FGR")
        !            35:        I "(,"'[$E(X,$L(X)) S DIFG("QFLG")=2 Q
        !            36:        I $P(X,"(")["DIFG" S DIFG("QFLG")=3 Q
        !            37: LC     I $D(DILC),DILC'=+DILC S DIFG("QFLG")=2 Q
        !            38:        S:'$D(DILC) DILC=0
        !            39: PARM   S:'$D(DIFG("PARM")) DIFG("PARM")="N"
        !            40: TAB    I $D(DITAB),DITAB'=+DITAB S DIFG("QFLG")=2 Q
        !            41:        S:'$D(DITAB) DITAB=0
        !            42: FUNCSFT        I $D(DIFG("FUNC SFT")) F X=0:0 S X=$O(DIFG("FUNC SFT",X)) Q:X'=+X  D FUNCSFT2 Q:DIFG("QFLG")
        !            43:        Q
        !            44:        ;
        !            45: FUNCSFT2       S Y=DIFG("FUNC SFT",X)
        !            46:        I Y="" S DIFG("QFLG")=2 Q
        !            47:        I "AMLD"'[Y S DIFG("QFLG")=3 Q
        !            48:        Q
        !            49:        ;
        !            50: FIRST  ; GET PRIMARY FILE VARIABLES
        !            51:        S DIFGI=$O(^DIPT(DIFGT,1,DIFGI)) Q:DIFGI'=+DIFGI  S X=^(DIFGI,0)
        !            52:        D FVARS
        !            53:        I '$D(@(DIFG(DILL,"FGBL")_DIFG("FE")_",0)")) S DIFG("QFLG")=3 Q
        !            54:        Q
        !            55:        ;
        !            56: FVARS  ; SETUP FILE VARIABLES
        !            57:        S DILL=$P(X,U,2),DITAB=2*(DILL-1),DIFG(DILL,"FILE")=+X
        !            58:        S DIFG(DILL,"FNAME")=$O(^DD(DIFG(DILL,"FILE"),0,"NM",0))
        !            59:        I DILL=1 S DIFG(DILL,"FE")=DIFG("FE"),DIFG(DILL,"FUNC")=DIFG("FUNC")
        !            60:        E  S DIFG(DILL,"FUNC")=DIFG(DILL-1,"FUNC")
        !            61:        I $D(DIFG("FUNC SFT",DIFG(DILL,"FILE"))) S DIFG(DILL,"FUNC")=DIFG("FUNC SFT",DIFG(DILL,"FILE"))
        !            62:        I $P(X,U,4)=1 S DIFG(DILL,"FE")=DIFG(DILL-1,"FE") ; dinum back pointer
        !            63:        S DIFG(DILL,"XREF")=$S($P(X,U,4)=4:$P(X,U,7),1:$P(X,U,4)),%=$P(X,U,5) ;Back pointer if $P=4 X-ref in $P7
        !            64:        I $E(%,$L(%))=":" S DIFG(DILL,"NAV")=1 I $P(X,U,4)=2 S DIFG(DILL,"NAV")=2 D DIRECT K %,Y
        !            65:        I $P(X,U,4)=3 S %=$P(X,U,3),%=$O(^DD(%,"SB",+X,0)),%=^DD(+$P(X,U,3),%,0),%=$P($P(^(0),U,4),";") S:+%'=% %=""""_%_"""" S DIFG(DILL,"FGBL")=DIFG(DILL-1,"FGBL")_DIFG(DILL-1,"FE")_","_%_"," K DIFG(DILL,"NAV") Q  ; multiple
        !            66:        S DIFG(DILL,"FGBL")=^DIC(DIFG(DILL,"FILE"),0,"GL")
        !            67:        D:$P(X,U,4)=5 LOOKUP
        !            68:        Q
        !            69:        ;
        !            70: DIRECT ;DIRECT POINTER
        !            71:        S DIFG(DILL,"FE")=0,%=$P(%,":")
        !            72:        S:'$D(^DD(DIFG(DILL-1,"FILE"),"B",%)) %=$O(^(%))
        !            73:        S %=$O(^DD(DIFG(DILL-1,"FILE"),"B",%,0))
        !            74:        Q:%'=+%
        !            75:        S Y=$P(^DD(DIFG(DILL-1,"FILE"),%,0),U,4),%("N")=$P(Y,";"),%("P")=$P(Y,";",2) S:+%("N")'=%("N") %("N")=""""_%("N")_""""
        !            76:        I $D(@(DIFG(DILL-1,"FGBL")_DIFG(DILL-1,"FE")_","_%("N")_")")) S Y=@("^("_%("N")_")"),DIFG(DILL,"FE")=$P(Y,U,%("P"))
        !            77:        Q
        !            78:        ;
        !            79: LOOKUP ;COMPUTED FIELD LOOKUP FOR FILE SHIFT
        !            80:        S DIFG(DILL,"FE")=""
        !            81:        S %=$O(^DD(DIFG(DILL,"FILE"),"B",$P($P(X,U,5),":"),0))
        !            82:        Q:'%
        !            83:        X $P(^DD(DIFG(DILL,"FILE"),%,0),U,5,99)
        !            84:        I $D(X) S DIFG(DILL,"FE")=$S(X?1"`"1N.N:$E(X,2,99),X?1N.N:X,1:"")
        !            85:        Q

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