Annotation of freem_fileman/DDS0.m, revision 1.1
1.1 ! snw 1: DDS0 ;SFISC/MLH-SETUP, CLEANUP ;09:38 AM 30 Nov 1994
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: ;
! 5: EN(DDSFILE,DR,DA) ;Initial setup
! 6: S U="^"
! 7: D INIT^DDGLIB0() Q:$G(DIERR)
! 8: D FORM(.DDSFILE,DR) Q:$G(DIERR)
! 9: ;
! 10: ;Compile the form if not already compiled
! 11: S DDSREFS=$$REF(DDS)
! 12: I '$$COMPILED(DDS) D EN^DDSZ(DDS) Q:$G(DIERR)
! 13: S:$P(^DIST(.403,+DDS,0),U,10) DA="NOREC"
! 14: ;
! 15: D FRSTPG(DDS,.DA,$G(DDSPAGE)) Q:$G(DIERR)
! 16: D REC(DDP,.DA) Q:$G(DIERR)
! 17: D INIT
! 18: Q
! 19: ;
! 20: FORM(DDSFILE,DR) ;Form lookup
! 21: ;Output:
! 22: ; DDS = Form number^Form name
! 23: ; DDP = File number (or 0)
! 24: ; DDSPG = First page to go to on form
! 25: ; DIERR
! 26: ;
! 27: I $D(DDSFILE)[0 D BLD^DIALOG(201,"DDSFILE") Q
! 28: ;
! 29: N DIC,X,Y
! 30: ;
! 31: S DDP=$S(DDSFILE=+DDSFILE:DDSFILE,1:+$P($G(@(DDSFILE_"0)")),U,2))
! 32: S X=$S(DR:DR,1:$P($P(DR,"[",2),"]"))
! 33: S DIC="^DIST(.403,",DIC(0)="FNX",D="F"_DDP
! 34: D IX^DIC K DIC
! 35: ;
! 36: I Y<0 D BLD^DIALOG(3021,X) Q
! 37: I '$O(^DIST(.403,+Y,40,"B","")) D BLD^DIALOG(3022,X) Q
! 38: S DDS=Y
! 39: ;
! 40: I $D(DDSFILE(1))#2 S DDP=$S(DDSFILE(1)=+DDSFILE(1):DDSFILE(1),1:+$P($G(@(DDSFILE(1)_"0)")),U,2))
! 41: Q
! 42: ;
! 43: FRSTPG(DDS,DA,DDSPAGE) ;Get first page of form
! 44: ;Output:
! 45: ; DDSPG
! 46: ; DDSSEL = 1, if DA is null and there is a record selection page
! 47: ; DIERR
! 48: ;
! 49: N P
! 50: I $G(DA)!($G(DA)="NOREC") D
! 51: . S P=$S($G(DDSPAGE):DDSPAGE,1:1)
! 52: . S DDSPG=$O(^DIST(.403,+DDS,40,"B",P,""))
! 53: . I $D(^DIST(.403,+DDS,40,+DDSPG,0))[0 D BLD^DIALOG(3023,"number "_P)
! 54: E D PG^DDSRSEL D:'$G(DDSSEL) BLD^DIALOG(202,"record")
! 55: Q
! 56: ;
! 57: REC(DDP,DA) ;Check record and lock
! 58: ;Output:
! 59: ; DIE = Global root
! 60: ; DDSDA = DA,DA(1),...,
! 61: ; DDSDAORG = Original DA array
! 62: ; DDSDL = Level number (top=0)
! 63: ; DDSDLORG = Original level number
! 64: ; DDSFLORG = Orig DDP^Orig DIE
! 65: ; D0,D1,etc.
! 66: ; DIERR
! 67: ;
! 68: I '$G(DA) D Q
! 69: . S DIE="",(DDSDL,DDSDLORG)=0,DDSDA="0,"
! 70: . S:'$D(DA) DA="" S DDSDAORG=DA
! 71: ;
! 72: D GL^DDS10(DDP,.DA,.DIE,.DDSDL,.DDSDA,1) Q:$G(DIERR)
! 73: ;
! 74: I $D(DIOVRD)[0 D Q:$G(DIERR)
! 75: . N DDSTOP S DDSTOP=$$FNO^DILIBF(DDP)
! 76: . Q:$P($G(^DD(DDSTOP,0,"DI")),U,2)'["Y"
! 77: . N P S P("FILE")=$P(@(DIE_"0)"),U)
! 78: . D BLD^DIALOG(405,DDSTOP,.P)
! 79: ;
! 80: S DDSDLORG=DDSDL
! 81: K DDSDAORG S (DDSDAORG,@("D"_DDSDL))=DA
! 82: F DDSI=1:1:DDSDL S (DDSDAORG(DDSI),@("D"_(DDSDL-DDSI)))=DA(DDSI)
! 83: S DDSFLORG=$G(DDP)_$G(DIE)
! 84: K DDSI
! 85: Q
! 86: ;
! 87: INIT ;Initialize some variables
! 88: ; DDSHBX = $Y of first line of help area
! 89: ; DDSREFT = Global reference of temporary global location
! 90: ; DDSFDO = 1 if entire form is display-only
! 91: ; DDSCHG = Change flag
! 92: ; DDSKM = Flag to keep whatever's in help area
! 93: ; DDSH = Flag to indicate help area is empty
! 94: ; DDSSC = Array to indicate what pages are on the screen
! 95: ;
! 96: S DDSHBX=IOSL-7
! 97: S DDXY=IOXY_" S $X=DX,$Y=DY"
! 98: ;
! 99: K DDH,DDSSC,DDSCHANG,DDSSAVE
! 100: S DDSH=1,(DDH,DDM,DDSCHG,DDSSC)=0,DDACT="N"
! 101: S DDSREFT="^TMP(""DDS"",$J,"_+DDS_")"
! 102: ;
! 103: N %,%H,%I,X
! 104: D NOW^%DTC
! 105: S $P(^DIST(.403,+DDS,0),U,6)=$E(%,1,12)
! 106: Q
! 107: ;
! 108: END I $D(DDSHBX) S DX=0,DY=IOSL-1 X IOXY
! 109: D KILL^DDGLIB0($G(DDSPARM))
! 110: ;
! 111: I $D(^TMP("DDS",$J,"LOCK")) D
! 112: . N I
! 113: . S I="" F S I=$O(^TMP("DDS",$J,"LOCK",I)) Q:I="" L -@I
! 114: . K ^TMP("DDS",$J,"LOCK")
! 115: ;
! 116: K:'$G(DA) DA
! 117: I $D(DA),$D(DDSDAORG)#2,$D(DDSDLORG)#2 D
! 118: . K DA,D0
! 119: . S DA=DDSDAORG
! 120: . F DDSI=1:1:DDSDLORG S DA(DDSI)=DDSDAORG(DDSI) K @("D"_DDSI)
! 121: ;
! 122: K:$G(DDSPARM)'["E" DIERR,^TMP("DIERR",$J)
! 123: K:$D(DDSREFT)#2 @DDSREFT,DDSREFT
! 124: K ^TMP("DDSH",$J),^TMP("DDSWP",$J)
! 125: K DDACT,DDH,DDM,DDO,DDP,DDQ,DDS,DDSDDP
! 126: K DDSBK,DDSBR,DDSCHG,DDSDA,DDSDAORG,DDSDL
! 127: K DDSDLORG,DDSDN,DDSEXT,DDSFDO,DDSFLD,DDSFLORG,DDSGL,DDSH,DDSI
! 128: K DDSKM,DDSLN,DDSNP,DDSO,DDSOLD,DDSORD,DDSOPB,DDSOSV,DDSPTB,DDSPG
! 129: K DDSPX,DDSPY,DDSQ,DDSREP,DDSSC,DDSSP,DDSTP,DDSU,DDSX
! 130: K DDSHBX,DDSREFS,DDXY
! 131: K DIC,DIR,DIR0N,DIROUT,DIRUT,DUOUT,DY,DX
! 132: K A1,D,DDC,DDD,DI,DIEQ,DIK,DIW,DIY,DIZ,DS
! 133: Q
! 134: ;
! 135: COMPILED(DDS) ;Return 1 if form is compiled
! 136: Q $D(@$$REF(DDS))>0
! 137: ;
! 138: REF(DDS) ;Return global reference for compiled global
! 139: ;Q "^DIST(.403,""AZ"","_+DDS_")"
! 140: Q "^DIST(.403,"_+DDS_",""AZ"")"
! 141: ;
! 142: IXF ;
! 143: N D0,DA,DIC,DP,Y S DIC="^DD("_DDGFDD_",",DIC(0)="EMN" D ^DIC
! 144: I Y'>0 K X
! 145: E S X=+$P(Y,"E")
! 146: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>