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