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