| 1 | DIFGG ;SFISC/XAK,EDE(OHPRD)-FILEGRAM GENERATOR ;7/25/92  2:15 PM
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 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
 | 
|---|