Annotation of freem_fileman/DDSM.m, revision 1.1.1.1
1.1 snw 1: DDSM ;SFISC/MKO-MULTILINE ;01:34 PM 6 Oct 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: MNAV(FND) ;Navigate within repeating blocks
5: ;Returns FND if navigating to another field within the repeating
6: ;block
7: N DDSCL,DDSDDO,DDSNR,DDSPDA,DDSSN,DDSSTL
8: S DDSDDO=$P(DDSU("N"),U,$L($P("U^D^R^L^N",DDACT),U)+5)
9: ;
10: S DDSPDA=$P(DDSREP,U),DDSSTL=$P(DDSREP,U,2),DDSCL=$P(DDSREP,U,3)
11: S DDSSN=$P(DDSREP,U,4),DDSNR=$P(DDSREP,U,5)
12: ;
13: I $P(DDSDDO,",",2)="-1" D MUP Q
14: I $P(DDSDDO,",",2)="+1" D MDN Q
15: I DA S DDO=+DDSDDO,FND=1 Q
16: Q
17: ;
18: MUP ;Move up a line
19: Q:DDSSN'>1
20: S DDSSN=DDSSN-1
21: I DDSCL>1 D
22: . S DDSCL=DDSCL-1 D MDA
23: E D
24: . S DDSSTL=DDSSTL-1
25: . D MDA,DB^DDSR(DDSPG,DDSBK)
26: Q
27: ;
28: MDN ;Move down a line
29: Q:'DA
30: S DDSSN=DDSSN+1
31: I DDSCL<DDSNR D
32: . S DDSCL=DDSCL+1 D MDA
33: E D
34: . S DDSSTL=DDSSTL+1
35: . D MDA,DB^DDSR(DDSPG,DDSBK)
36: Q
37: ;
38: MDA ;Update DDO, DA and Dn, set FND=1
39: N DDSDASV
40: S $P(DDSREP,U,2,4)=DDSSTL_U_DDSCL_U_DDSSN
41: S $P(@DDSREFT@(DDSPG,DDSBK,DDSPDA),U,2,999)=DDSREP
42: S DDSDASV=DDSDA
43: S DDSDA=$G(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN),"0,"_$P(DDSDA,",",2,999))
44: S DA=+DDSDA,@("D"_DDSDL)=DA
45: S DDO=$S(DA:+DDSDDO,1:$P(DDSREP,U,8))
46: S FND=1
47: Q
48: ;
49: SEL ;Issue read
50: N DIRUT
51: S DIR(0)="PO"_DIE_":QEMZ"_$E("L",'$D(DDSTP)&'$P(^DIST(.403,+DDS,40,DDSPG,40,DDSBK,2),U,4))
52: I $P(DDSREP,U,7) D
53: . S:$D(@(DIE_"0)"))[0 @(DIE_"0)")=U_$P(^DD($P(DDSREP,U,6),$P(DDSREP,U,7),0),U,2)_U_U
54: E D
55: . S DIR("S")="I $D("_DIE_""""_$P(DDSREP,U,9)_""","_+$P(DDSREP,U)_",Y))"
56: D ^DIR K DIR,DUOUT,DIROUT Q:DIR0N!$D(DIRUT)
57: ;
58: S DA=+Y,$P(DDSDA,",")=DA
59: I $P(Y,U,3)=1 D
60: . N DDSFN,DDSLN,DDSPDA,DDSSN
61: . S DDSPDA=$P(DDSREP,U),DDSLN=$P(DDSREP,U,3),DDSSN=$P(DDSREP,U,4)
62: . D ADD(DDSDA,DDSPDA,DDSSN)
63: . S DDSFN="F"_$P(@DDSREFS@(DDSPG,DDSBK),U,3)
64: . D DMULT1^DDSR(DDSPG,DDSBK,DDSFN,DDSDA,DDSLN,DDSSN)
65: . S DDSCHKQ=2
66: E D
67: . S DDSCHKQ=1
68: . D POSDA(DDSDA)
69: ;
70: S Y=$P(Y,U)
71: S:X="" Y=""
72: Q
73: ;
74: END ;
75: S DDACT="N"
76: Q:'DA
77: D POSSN(999999999999)
78: Q
79: ;
80: PGDN ;Page down
81: S DDACT="N"
82: Q:'DA
83: D POSSN($P(DDSREP,U,2)+$P(DDSREP,U,5))
84: Q
85: ;
86: PGUP ;Page up
87: S DDACT="N"
88: Q:$P(DDSREP,U,4)=1
89: D POSSN($P(DDSREP,U,2)-$P(DDSREP,U,5))
90: Q
91: ;
92: POSSN(DDSSN) ;Make line with given DDSSN current
93: N DDSLSN,DDSPDA,DDSSTL
94: S DDSPDA=$P(DDSREP,U)
95: S DDSLSN=$O(@DDSREFT@(DDSPG,DDSBK,DDSPDA," "),-1)+1
96: S DDSSN=$$MIN(DDSLSN,DDSSN)
97: S:DDSSN<1 DDSSN=1
98: S DDSDA=$G(@DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN),"0,"_$P(DDSDA,",",2,999))
99: S DA=+DDSDA
100: S DDSSTL=$P(DDSREP,U,2)
101: ;
102: S:'DA DDO=$P(DDSREP,U,8)
103: I DDSSN'<DDSSTL,DDSSN<(DDSSTL+$P(DDSREP,U,5)) D
104: . S $P(DDSREP,U,3,4)=DDSSN-DDSSTL+1_U_DDSSN
105: . S $P(@DDSREFT@(DDSPG,DDSBK,DDSPDA),U,2,999)=DDSREP
106: E D
107: . S DDSSTL=$$MIN(DDSLSN-$P(DDSREP,U,5)+1,DDSSN)
108: . S:DDSSTL<1 DDSSTL=1
109: . S $P(DDSREP,U,2,4)=DDSSTL_U_(DDSSN-DDSSTL+1)_U_DDSSN
110: . S $P(@DDSREFT@(DDSPG,DDSBK,DDSPDA),U,2,999)=DDSREP
111: . D DB^DDSR(DDSPG,DDSBK)
112: Q
113: ;
114: POSDA(DDSDA) ;Make line with given DDSDA current
115: N DDSPDA,DDSSN,DDSSTL
116: S DDSSN=@DDSREFT@(DDSPG,DDSBK,$P(DDSREP,U),"B",DDSDA)
117: S DDSPDA=$P(DDSREP,U),DDSSTL=$P(DDSREP,U,2)
118: ;
119: I DDSSN'<DDSSTL,DDSSN<(DDSSTL+$P(DDSREP,U,5)) D
120: . N DY,DX
121: . S $P(DDSREP,U,3,4)=DDSSN-DDSSTL+1_U_DDSSN
122: . S $P(@DDSREFT@(DDSPG,DDSBK,DDSPDA),U,2,999)=DDSREP
123: . S DY=$P(DIR0,U),DX=$P(DIR0,U,2) X IOXY W $J("",$P(DIR0,U,3))
124: E D
125: . S $P(DDSREP,U,2,4)=DDSSN_"^1^"_DDSSN
126: . S $P(@DDSREFT@(DDSPG,DDSBK,DDSPDA),U,2,999)=DDSREP
127: . D DB^DDSR(DDSPG,DDSBK)
128: Q
129: ;
130: ADD(DDSDA,DDSPDA,DDSSN) ;Add entry
131: S ^("ADD")=$G(@DDSREFT@("ADD"))+1,^("ADD",^("ADD"))=DDSDA_DIE
132: S @DDSREFT@(DDSPG,DDSBK,DDSPDA,DDSSN)=DDSDA
133: S @DDSREFT@(DDSPG,DDSBK,DDSPDA,"B",DDSDA)=DDSSN
134: D ^DDS11(DDSBK)
135: S DDSCHG=1
136: Q
137: ;
138: MIN(X,Y) ;
139: Q $S(X<Y:X,1:Y)
140: MAX(X,Y) ;
141: Q $S(X>Y:X,1:Y)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>