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>