Annotation of freem_fileman/USER/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>