Annotation of freem_fileman/DIFGG.m, revision 1.1

1.1     ! snw         1: DIFGG  ;SFISC/XAK,EDE(OHPRD)-FILEGRAM GENERATOR ;7/25/92  2:15 PM
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        K DIFG S DIFG=DIC,DIC("A")="Select FILEGRAM TEMPLATE: "
        !             5:        S DK=+Y,DIC="^DIPT(",DIC("S")="I $P(^(0),U,8)=1 S %=^(0) I $P(%,U,4)=DK!'$L($P(%,U,4))",DIC(0)="QEAIS",D="F"_+Y
        !             6:        D IX^DIC K DIC,DY Q:Y<0  S (DIFG("TEMPLATE"),DIFGT)=+Y
        !             7:        S DIC=DIFG,DIC(0)="QEAM" D ^DIC Q:Y<0  S DIFG("FE")=+Y,DIFG("FUNC")="L",DIFG("DUZ")=$S($D(^VA(200,DUZ,0)):$P(^(0),U),$D(^DIC(3,DUZ,0)):$P(^(0),U),1:DUZ)
        !             8:        D START,SEND,LOG K DIFG,^UTILITY("DIFG",$J) Q
        !             9:        ;
        !            10: EN     ; EXTERNAL ENTRY POINT
        !            11: START  ;
        !            12:        D INIT
        !            13:        I DIFG("QFLG") D EOJ Q
        !            14:        D HDR,ENV,BODY,TLR,EOJ
        !            15:        Q
        !            16:        ;
        !            17: HDR    ; FILEGRAM HEADER
        !            18:        S V="$DAT"_U_DIFG(DILL,"FNAME")_U_DIFG(DILL,"FILE")_U_DIFG("PARM")_U
        !            19:        D INCSET^DIFGGU
        !            20:        K Y Q
        !            21:        ;
        !            22: ENV    ; ENVIRONMENTAL VARS
        !            23:        I $D(DIFG("ENV"))
        !            24:        E  Q
        !            25:        S DIFG("EV")=""
        !            26:        F  S DIFG("EV")=$O(DIFG("ENV",DIFG("EV"))) Q:DIFG("EV")=""  S V="ENVIRONMENT:"_DIFG("EV")_"="""_DIFG("ENV",DIFG("EV"))_"""" D INCSET^DIFGGU ;ihs/ohprd/dg;patch 2;8-22-91
        !            27:        K DIFG("EV") Q
        !            28:        ;
        !            29: BODY   ; FILEGRAM BODY
        !            30:        D BASE
        !            31:        K DIFG("NOKEY")
        !            32:        D NEXTLVL
        !            33:        Q
        !            34:        ;
        !            35: BASE   ; BASEFILE ENTRY
        !            36:        D LOOKUP^DIFGGU
        !            37:        D FIELDS
        !            38:        Q
        !            39:        ;
        !            40: NEXTLVL        ; DO NEXT LEVEL FILES/SUBFILES (CALLED RECURSIVELY)
        !            41:        S DIFG(DILL,"DIFGI")=DIFGI
        !            42:        S DILL=DILL+1
        !            43:        F DIFGI=DIFGI:0 S DIFGI=$O(^DIPT(DIFGT,1,DIFGI)) Q:DIFGI'=+DIFGI  S X=^(DIFGI,0) D NEXTLVL2 Q:DIFGI=""
        !            44:        S DILL=DILL-1
        !            45:        S DIFGI=DIFG(DILL,"DIFGI")
        !            46:        Q
        !            47:        ;
        !            48: NEXTLVL2       ; CHECK TEMPLATE ENTRY
        !            49:        I $P(X,U,2)<DILL S DIFGI="" Q
        !            50:        Q:$P(X,U,3)'=DIFG(DILL-1,"FILE")  ; this is probably a template error
        !            51:        D FVARS^DIFGGI
        !            52:        I DIFG(DILL,"XREF")?1A.E D DIFGG3^DIFGG4 Q  ; file shift
        !            53:        I DIFG(DILL,"XREF")=3 D ^DIFGG4 Q  ; subfile shift
        !            54:        Q:'DIFG(DILL,"FE")
        !            55:        ; only things left are dinum back pointers, direct forward pointers,
        !            56:        ; and lookup file shifts, I think.
        !            57:        D LOOKUP^DIFGGU
        !            58:        I $D(DIFGGUQ) K DIFGGUQ Q
        !            59:        D FIELDS
        !            60:        D RECURSE
        !            61:        S DITAB=2*(DILL-1)
        !            62:        S V=":" D INCSET^DIFGGU
        !            63:        Q
        !            64:        ;
        !            65: RECURSE        ; RECURSION FOR DINUM BACK POINTERS AND FORWARD DIRECT POINTERS
        !            66:        D NEXTLVL
        !            67:        Q
        !            68:        ;
        !            69: FIELDS ; FILEGRAM FIELDS
        !            70:        S DITAB=DITAB+2 D ^DIFGG2 S DITAB=DITAB-2
        !            71:        Q
        !            72:        ;
        !            73: LOG    ; RECORD THE SENDING
        !            74:        Q:$D(DIAR)!$D(DY)
        !            75:        S DIC=1.12,X="NOW",DIC(0)="L",DLAYGO=1.12,DIADD=1 D ^DIC Q:Y<0  G LOG:'$P(Y,U,3)
        !            76:        S ^DIAR(1.12,+Y,0)=$P(Y,U,2)_"^s^"_DIFG("DUZ")_U_DIFG_U_DIFG("FE")_U_XMZ_U_DIFG("TEMPLATE")
        !            77:        K DIC,DIE,DR,DA,DLAYGO,DIADD,XMZ
        !            78:        Q
        !            79:        ;
        !            80:        ;
        !            81: SEND   ; CALL MAILMAN
        !            82:        Q:$D(DIAR)!$D(DY)
        !            83:        S XMSUB="FILEGRAM for entry #"_DIFG("FE")_" in "_$O(^DD(DIFG,0,"NM",0))_" FILE (#"_DIFG_")."
        !            84:        S XMTEXT=DIFG("FGR"),XMDUZ=DUZ D ^XMD
        !            85:        Q
        !            86:        ;
        !            87: TLR    ; FILEGRAM TRAILER
        !            88:        S V="$END DAT",DITAB=0
        !            89:        D INCSET^DIFGGU
        !            90:        Q
        !            91:        ;
        !            92: INIT   ; INITIALIZATION
        !            93:        D ^DIFGGI
        !            94:        Q
        !            95:        ;
        !            96: EOJ    ;
        !            97:        S:DIFG("QFLG") DIFGER=DIFG("QFLG")
        !            98:        F I=0:0 S I=$O(DIFG(I)) Q:I'=+I  K DIFG(I)
        !            99:        K ^UTILITY("DIFGLINK",$J)
        !           100:        K DIFG2,DIFGI,DIFGT,DILL,DITAB,DIFGENV,DIFGGU,DIFGGF ;Don't kill DILC used by EN^DIFGG;ihs/ohprd/dwg;patch 2;8-22-91
        !           101:        K %H,%K,%W,S,V,X
        !           102:        Q

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