Annotation of freem_fileman/DIFGG.m, revision 1.1.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>