Annotation of freem_fileman/DDS.m, revision 1.1

1.1     ! snw         1: DDS    ;SFISC/MLH,MKO-MAIN ROUTINE ;02:33 PM  15 Nov 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        N DIE,DX,DY,X,Y
        !             5:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
        !             6:        ;
        !             7:        D EN^DDS0(.DDSFILE,DR,.DA)
        !             8:        I $G(DIERR) D:$G(DDSPARM)'["E"  G END^DDS0
        !             9:        . W !,$C(7)_$$EZBLD^DIALOG(3000)
        !            10:        . D MSG^DIALOG("BW")
        !            11:        . S DIMSG=""
        !            12:        ;
        !            13:        N DR
        !            14:        X:$G(^DIST(.403,+DDS,11))'?."^" ^(11)
        !            15:        F  D PG Q:DDACT="Q"
        !            16:        X:$G(^DIST(.403,+DDS,12))'?."^" ^(12)
        !            17:        ;
        !            18:        D:$G(@DDSREFT@("HLP"))>0 HLP^DDSMSG()
        !            19:        G END^DDS0
        !            20:        ;
        !            21: PROC   ;Main loop
        !            22:        F  D PG Q:DDACT="Q"
        !            23:        Q
        !            24:        ;
        !            25: PG     ;Get DDSPOP and update DDSSC array
        !            26:        ;If we're going to another page
        !            27:        S DDACT="N"
        !            28:        I '$D(DDSPGUP) D
        !            29:        . S DDSLN=^DIST(.403,+DDS,40,DDSPG,0),DDSPOP=$P(DDSLN,U,6)
        !            30:        . K:'DDSPOP DDSSC
        !            31:        . I '$D(DDSSC("B",DDSPG)) D
        !            32:        .. S DDSSC=$G(DDSSC)+1,DDSSC(DDSSC)=DDSPG,DDSSC("B",DDSPG,DDSSC)=""
        !            33:        .. S:DDSPOP $P(DDSSC(DDSSC),U,2,3)=$P(DDSLN,U,3)_U_$P(DDSLN,U,7)
        !            34:        .. I $G(DDSSTK) S $P(DDSSC(DDSSC),U,4)=1 K DDSSTK
        !            35:        .. K DDSPOP
        !            36:        . E  D
        !            37:        .. Q:$P($G(DDSSC(+$G(DDSSC))),U)=DDSPG
        !            38:        .. N I,J,S
        !            39:        .. S I=$O(DDSSC("B",DDSPG,"")),S=DDSSC(I) K DDSSC("B",DDSPG,I)
        !            40:        .. F J=I:1:DDSSC-1 D
        !            41:        ... K DDSSC("B",$P(DDSSC(J+1),U),J)
        !            42:        ... S DDSSC(J)=DDSSC(J+1),DDSSC("B",$P(DDSSC(J),U),J)=""
        !            43:        .. S DDSSC(DDSSC)=S,DDSSC("B",DDSPG,DDSSC)=""
        !            44:        ;
        !            45:        ;If we've moving up from a pop-up page
        !            46:        E  K DDSPGUP
        !            47:        ;
        !            48:        ;Pre-action, save old and get next page
        !            49:        S DDSOPB=DDSPG
        !            50:        I $G(^DIST(.403,+DDS,40,DDSPG,11))'?."^" D PA(^(11)) Q:DDACT="NP"
        !            51:        S DDSNP=$$NP^DDS5(.Y) S:'Y DDSNP=""
        !            52:        ;
        !            53:        ;Load page
        !            54:        D ^DDS1(DDSPG)
        !            55:        I $G(DIERR) D  Q
        !            56:        . N P S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U)
        !            57:        . S:P(2)="" P(2)="unnamed"
        !            58:        . D BLD^DIALOG(3041,.P),ERR^DDSMSG
        !            59:        . S DDACT="Q"
        !            60:        ;
        !            61:        ;Get DDO and DDSBK
        !            62:        I $S($D(DDSBR)[0:1,1:$D(@DDSREFS@(DDSPG,$S(DDO:+DDSBK,1:0),DDO,"N"))[0) D
        !            63:        . S DDO=+@DDSREFS@(DDSPG,"FIRST"),DDSBK=$P(^("FIRST"),",",2)
        !            64:        I 'DDSBK D  Q
        !            65:        . D BLD^DIALOG(3055,"number "_$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U)_$S($G(^(1))]"":" ("_$P($G(^(1)),U)_")",1:""))
        !            66:        . S DDACT="Q"
        !            67:        ;
        !            68:        ;Paint the page
        !            69:        D RP^DDSR(DDSSC(DDSSC),DDSSC=1)
        !            70:        ;
        !            71: P1     F  D BLK Q:"^Q^NP^"[(U_DDACT_U)
        !            72:        ;
        !            73:        ;Post action, print any help
        !            74:        D:$G(^DIST(.403,+DDS,40,+DDSOPB,12))'?."^" PA(^(12))
        !            75:        D:$G(@DDSREFT@("HLP"))>0 HLP^DDSMSG()
        !            76:        G:"^NB^N^"[(U_DDACT_U) P1
        !            77:        ;
        !            78:        I DDACT="Q" D
        !            79:        . I '$P(DDSSC(DDSSC),U,4) D
        !            80:        .. D:$G(DDSSEL) GDA^DDSRSEL
        !            81:        .. D:$G(DDSSC)>1 CLEAR^DDSBOX($P(DDSSC(DDSSC),U,2),$P(DDSSC(DDSSC),U,3))
        !            82:        .. S:DDSSC>1 DDSPG=$P(DDSSC(DDSSC-1),U),DDACT="N",DDSPGUP=1
        !            83:        . K DDSSC("B",$P(DDSSC(DDSSC),U),DDSSC),DDSSC(DDSSC) S DDSSC=DDSSC-1
        !            84:        Q
        !            85:        ;
        !            86: BLK    S DDACT="N",DDSOSV=0
        !            87:        ;
        !            88:        I $D(@DDSREFS@(DDSPG,DDSBK))[0 S DDACT="Q" Q
        !            89:        S DDSLN=@DDSREFS@(DDSPG,DDSBK)
        !            90:        ;
        !            91:        S DDSDN=$P(DDSLN,U,4),DDSTP=$P(DDSLN,U,5)
        !            92:        S DDSREP=$P(DDSLN,U,7),DDSPTB=$P(DDSLN,U,8)
        !            93:        K:'DDSDN DDSDN K:DDSTP="e" DDSTP K:'DDSPTB DDSPTB K:DDSREP'>1 DDSREP
        !            94:        ;
        !            95:        I $D(DDSPTB)!$D(DDSREP) N DDP,DDSDA,DIE D
        !            96:        . S DDP=$P(DDSLN,U,3)
        !            97:        . S DDSDA=$P(@DDSREFT@(DDSPG,DDSBK),U) Q:DDSDA=""
        !            98:        . S DIE=@DDSREFT@(DDSPG,DDSBK,DDSDA,"GL")
        !            99:        ;
        !           100:        I $D(DDSPTB) N DA,@$$D0(DDSDL),DDSDL D
        !           101:        . S DDSPTB=@DDSREFS@(DDSPG,DDSBK,"PTB")
        !           102:        . S DDSDL=$L(DDSDA,",")-2
        !           103:        . S (D0,DA)=+DDSDA
        !           104:        ;
        !           105:        I $D(DDSREP) N DDSDL,DA D
        !           106:        . S DDSREP=$P(@DDSREFT@(DDSPG,DDSBK,DDSDA),U,2,999)
        !           107:        . S DDSDL=$L(DDSDA,",")-1
        !           108:        . S DDSDA=$G(@DDSREFT@(DDSPG,DDSBK,$P(DDSREP,U),$P(DDSREP,U,4)),"0,"_DDSDA)
        !           109:        I  N @$$D0(DDSDL) D
        !           110:        . D BLDDA(DDSDA)
        !           111:        . S:'DA DDO=+$P(DDSREP,U,8)
        !           112:        ;
        !           113:        I $D(DDSPTB),DDSDA=""  D  Q
        !           114:        . S DDSBK=$$NB^DDS5(.Y) Q:Y
        !           115:        . I DDSNP]"" S DDSPG=DDSNP,DDACT="NP" Q
        !           116:        . S DDSPG=$$PP^DDS5(.Y) I Y S DDACT="NP" Q
        !           117:        ;
        !           118:        S $P(DDSOPB,U,2)=DDSBK
        !           119:        I $G(^DIST(.403,+DDS,40,DDSPG,40,DDSBK,11))'?."^" D PA(^(11)) Q:DDACT="NP"
        !           120:        I $G(^DIST(.404,DDSBK,11))'?."^" D PA(^(11)) Q:DDACT="NP"
        !           121:        I $S($D(DDSBR)[0:1,1:$D(@DDSREFS@(DDSPG,$S(DDO:+DDSBK,1:0),DDO,"N"))[0) D
        !           122:        . S DDO=$P(@DDSREFS@(DDSPG,DDSBK),U,9)
        !           123:        K DDSLN
        !           124:        ;
        !           125: B1     D ^DDS01
        !           126:        ;
        !           127:        I $G(^DIST(.403,+DDS,40,DDSPG,40,$P(DDSOPB,U,2),12))'?."^" D PA(^(12)) G:DDACT="N" B1
        !           128:        I $G(^DIST(.404,$P(DDSOPB,U,2),12))'?."^" D PA(^(12)) G:DDACT="N" B1
        !           129:        Q
        !           130:        ;
        !           131: BLDDA(DDSDA)   ;
        !           132:        N I
        !           133:        S (DA,@("D"_DDSDL))=$P(DDSDA,",")
        !           134:        F I=1:1:DDSDL S (DA(I),@("D"_(DDSDL-I)))=$P(DDSDA,",",I+1)
        !           135:        Q
        !           136:        ;
        !           137: D0(DL) ;Given DL, return string D0,D1,...,Dn
        !           138:        N I,S
        !           139:        S S="" F I=0:1:DL S S=S_"D"_I_","
        !           140:        S:S?.E1"," S=$E(S,1,$L(S)-1)
        !           141:        Q S
        !           142:        ;
        !           143: CLRMSG ;
        !           144:        K DDQ S DDSH=1,(DDM,DX)=0,DY=DDSHBX+1 X DDXY W $P(DDGLCLR,DDGLDEL,3)
        !           145:        Q
        !           146:        ;
        !           147: PA(DDSPA)      ;
        !           148:        N DDSBRORG S:$D(DDSBR)#2 DDSBRORG=DDSBR
        !           149:        K DDSBR X DDSPA
        !           150:        I $D(DDSBR)[0 S:$D(DDSBRORG)#2 DDSBR=DDSBRORG Q
        !           151:        D BR^DDS2
        !           152:        Q
        !           153: RESET  ;Programmer entry point to reset terminal and cleanup
        !           154:        D INIT^DDGLIB0() D:$G(DIERR) MSG^DIALOG("BW")
        !           155:        W $P($G(DDGLVID),DDGLDEL,10)
        !           156:        K DDSPARM
        !           157:        S DDSREFT="^TMP(""DDS"",$J)"
        !           158:        D END^DDS0
        !           159:        G RESET^DDGF
        !           160:        ;
        !           161: RUN    ;Run a form
        !           162:        G ^DDSRUN
        !           163: CLONE  ;Clone a form
        !           164:        G ^DDSCLONE
        !           165: PRINT  ;Print a form
        !           166:        G ^DDSPRNT
        !           167: DFRM   ;Delete a form
        !           168:        G ^DDSDFRM
        !           169: DBLK   ;Delete unused blocks
        !           170:        G ^DDSDBLK

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