Annotation of freem_fileman/DDS5.m, revision 1.1
1.1 ! snw 1: DDS5 ;SFISC/MKO-MULTS,NEXT/PREV PAGE,NEXT BLOCK ;10:39 AM 25 Oct 1994
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: I X="" D:DDSOLD="" NF^DDS01 D:DDSOLD]"" DM^DDS6 Q
! 5: I DIR0N,$D(DUZ)#2 S ^DISV(DUZ,$E(DDSGL,1,28))=$E(DDSGL,29,999)_X
! 6: I $G(@DDSREFS@("ASUB",DDSPG,DDSBK,DDO))]"" S DDS5PG=^(DDO)
! 7: E I $P($G(DDSO(7)),U,2)="" D:X=DDSOLD NF^DDS01 Q
! 8: D MULT,R^DDSR
! 9: ;
! 10: K DDSSTACK
! 11: X:$G(^DIST(.404,DDSBK,40,DDO,10))'?."^" ^(10)
! 12: I $D(DDSSTACK) D ^DDSSTK,R^DDS3 K DDSBR
! 13: D:$D(DDSBR)#2 BR^DDS2
! 14: Q
! 15: MULT ;
! 16: N DIE,DDO,DDSBK,DDSDN,DDSNP,DDSOPB,DDSPG,DDSPTB,DDSREP,DDSTP
! 17: ;
! 18: I $G(DDS5PG) S DDSPG=DDS5PG K DDS5PG
! 19: E D
! 20: . S DDSPG(1)=$P($G(DDSO(7)),U,2) Q:DDSPG(1)=""
! 21: . S DDSPG=$O(^DIST(.403,+DDS,40,"B",DDSPG(1),"")) Q:DDSPG=""
! 22: Q:$D(^DIST(.403,+DDS,40,+$G(DDSPG),0))[0
! 23: N:'$P(^(0),U,6) DDSSC
! 24: ;
! 25: D DDA(Y,.DA,.DDSDL)
! 26: I Y'=-1 D
! 27: . N DDP,DDSDA,DDSFLD,DDSDLORG,DDSDAORG,DDSFLORG
! 28: . S DIE=U_$P(DDSU("M"),U,2),DDP=$P(DDSU("M"),U,3)
! 29: . S DDSDLORG=DDSDL,DDSDAORG=DA,DDSDA=DA_","
! 30: . F DDSI=1:1:DDSDL S DDSDAORG(DDSI)=DA(DDSI),DDSDA=DDSDA_DA(DDSI)_","
! 31: . K DDSI
! 32: . S DDSSTK=1
! 33: . D PROC^DDS
! 34: D LST(.DA,.DDSDL,DDP,DDSDA,DDSFLD)
! 35: D UDA(.DA,.DDSDL)
! 36: Q
! 37: ;
! 38: LST(DA,DDSDL,DDP,DDSDA,DDSFLD) ;Save last edited subrecord
! 39: ;In: DA array, DDSDL at subfile level
! 40: ; DDP, DDSDA, DDSFLD at file level
! 41: N DDSDIE,Y
! 42: S DDSDIE=U_$P(@DDSREFT@("F"_DDP,DDSDA,DDSFLD,"M"),U,2)
! 43: I $D(@(DDSDIE_"+$G(DA),0)"))[0 D
! 44: . S DA=$S($D(@(DDSDIE_"0)"))#2:$P(^(0),U,3),1:$O(^(0)))
! 45: . I DA>0 D
! 46: .. N C
! 47: .. S Y=$P(@(DDSDIE_DA_",0)"),U)
! 48: .. S C=$P(^DD(+$P(^DD(DDP,DDSFLD,0),U,2),.01,0),U,2)
! 49: .. D Y^DIQ
! 50: . E S (DA,Y)=""
! 51: E S (DA,Y)=""
! 52: I DA>0,$D(DUZ)#2 S ^DISV(DUZ,$E(DDSDIE,1,28))=$E(DDSDIE,29,999)_DA
! 53: ;
! 54: S @DDSREFT@("F"_DDP,DDSDA,DDSFLD,"X")=Y,^("D")=DA,DDACT="N"
! 55: Q
! 56: ;
! 57: SEL ;Issue the read at the Select mult prompt
! 58: S DIR(0)="PO"_DDSGL_":QEMZ"_$E("L",'$D(DDSTP)&'$P($G(DDSO(4)),U,5))
! 59: S:$D(@(DDSGL_"0)"))[0 @(DDSGL_"0)")=U_$P(^DD(DDP,+DDSFLD,0),U,2)_U_U
! 60: D DDA(0,.DA,.DDSDL),^DIR,UDA(.DA,.DDSDL) K DIR,DUOUT,DIRUT,DIROUT
! 61: Q:DDACT'="N"
! 62: ;
! 63: I DIR0N S (X,Y)=DDSOLD Q
! 64: I $P(Y,U,3)=1 S ^("ADD")=$G(@DDSREFT@("ADD"))+1,^("ADD",^("ADD"))=+Y_","_DDSDA_DDSGL
! 65: E S DIR0N=1
! 66: S Y=$P(Y,U)
! 67: S:X="" Y=""
! 68: Q
! 69: ;
! 70: DDA(Y,DA,DL) ;Push Y onto DA array
! 71: N I
! 72: F I=DL:-1:1 S DA(I+1)=DA(I)
! 73: S DA(1)=DA,DL=DL+1
! 74: S (DA,@("D"_DL))=$S(+$P($G(Y),"E"):+$P(Y,"E"),1:0)
! 75: Q
! 76: ;
! 77: UDA(DA,DL) ;Pop DA array
! 78: N I
! 79: S DA=DA(1)
! 80: F I=2:1:DL S DA(I-1)=DA(I)
! 81: K DA(DL),@("D"_DL)
! 82: S DL=DL-1
! 83: Q
! 84: NP(Y) ;Returns: Next page
! 85: ; (Y=1 if found, 0 if not found)
! 86: N P,P1
! 87: S Y=0,P1=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U,4)
! 88: I P1]"" D
! 89: . S P=$O(^DIST(.403,+DDS,40,"B",P1,""))
! 90: . I P,P'=DDSPG,$D(^DIST(.403,+DDS,40,P,0))#2 S Y=1
! 91: Q $S(Y=1:P,1:DDSPG)
! 92: PP(Y) ;
! 93: N P,P1
! 94: S Y=0,P1=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U,5)
! 95: I P1]"" D
! 96: . S P=$O(^DIST(.403,+DDS,40,"B",P1,""))
! 97: . I P,P'=DDSPG,$D(^DIST(.403,+DDS,40,P,0))#2 S Y=1
! 98: Q $S(Y=1:P,1:DDSPG)
! 99: NB(Y) ;
! 100: N B,BO,X
! 101: S (B,Y)=0,BO=$P($G(^DIST(.403,+DDS,40,DDSPG,40,DDSBK,0)),U,2)
! 102: I BO F D Q:B=DDSBK!Y
! 103: . S BO=$O(^DIST(.403,+DDS,40,DDSPG,40,"AC",BO)) S:'BO BO=$O(^("")) S B=$O(^(BO,""))
! 104: . S X=$G(@DDSREFS@(DDSPG,B))
! 105: . I $P(X,U)]"",$P(X,U,5)'="h",$P(X,U,9),B'=DDSBK S Y=1
! 106: Q B
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>