Annotation of freem_fileman/USER/DIC.m, revision 1.1
1.1 ! snw 1: DIC ;SFISC/XAK,SEA/TOAD-VA FileMan: Lookup, Part 1 ;11/16/94 11:30
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: N D
! 5: S D="B" K DF,DS,DIROUT,DTOUT,DUOUT
! 6: EN K DO,DICR S U="^" S:DIC DIC=^DIC(DIC,0,"GL") D PGM^DIC2 I $D(DIPGM) S DIPGM(0)=1 G @DIPGM
! 7: I '$D(@(DIC_"0)")),'$D(DIC("P")),$E(DIC,1,6)'="^DOPT(" S Y=-1 G Q^DIC2
! 8: ASK I DIC(0)["A" W ! D ^DIC1
! 9: I $D(DIADD),X'["""",U'[X,X'?."?" S X=""""_X_""""
! 10: X ;
! 11: D DO^DIC1:'$D(DO) I U'[X,X'?."?",$D(^DD(+DO(2),.01,7.5)) X ^(7.5) G:'$D(X) BAD^DIC1
! 12: D PGM^DIC2 I $D(DIPGM) S DIPGM(0)=2 G @DIPGM
! 13: RTN D:'$D(DO) DO^DIC1
! 14: G O^DIC1:X'?.ANP,N:$L(X)>30
! 15: I X?.NP G NO:X="",N:U[X,NUM:+X=X&(X>0),^DICQ:X?1."?" I X=" ",$L(DIC)<29,$D(^DISV(DUZ,DIC))#2 S Y=+^(DIC) D S G GOT^DIC2:$T,BAD^DIC1
! 16: F ;
! 17: S (DD,DS)=0
! 18: T S Y=$O(@(DIC_"D,X,0)")),DIX=X S:Y="" Y=-1 I Y'<0 G DIY:$O(^(Y))]""!((DIC(0)'["O")&(DIC(0)["E")) D MN I G K:DS S DS=1 G GOT^DIC2
! 19: DIX I DIC(0)'["X" S:X?.N&(DO(2)'["D")&'$D(DIDA) DIX=$O(@(DIC_"D,DIX_"" "")"),-1) S DIX=$O(@(DIC_"D,DIX)")) I $P(DIX,X)="",DIX'="" S Y=$O(^(DIX,0)) S:Y="" Y=-1 G DIY
! 20: M I DIC(0)["M" S D=$S($D(DID):$P(DID,U,DID(1)),1:$O(@(DIC_"D)"))) S:$D(DID) DID(1)=DID(1)+1
! 21: I DIC(0)["M",D]"" G M:$D(@(DIC_"D)"))-10,T:X'?.NP,T:+X'=X D DO^DIC1:'$D(DO) S Y=$O(^DD(+DO(2),0,"IX",D,0)) S:Y="" Y=-1 G T:$O(^(Y,0))="",T:'$D(^DD(Y,$O(^(0)),0)),M:$P(^(0),U,2)["P",T
! 22: D D G G:DS=1,Y^DIC1:DS
! 23: N I X[U S DUOUT=1 G NO
! 24: D DO^DIC1:'$D(DO) I X?1"`".NP S Y=$E(X,2,30),DZ=0 G A:Y="" D S S DS=1,DD=Y G GOT^DIC2:$T I DIC(0)'["L" W:DIC(0)["Q" $C(7),$S('$D(DDS):" ??",1:"") G A
! 25: G ^DICQ:X?."?",^DICM
! 26: NUM D DO^DIC1:'$D(DO) G F:DO(2)<0!$D(DF) S DD=$D(^DD(+DO(2),.001)),DS=$P(^(.01,0),"^",2) I $D(@(DIC_"X)")) G:'DD P:DS["N"!('$O(^("A["))&($O(^("A["))]"")) S Y=X D S G GOT^DIC2:$T
! 27: P I DS["P"!(DS["V"),DIC(0)'["U" S (DD,DS)=0 G M
! 28: G F
! 29: 1 ;
! 30: D S G GOT^DIC2:$T,F
! 31: MN S DZ=$S(DIC(0)["D":1,$D(^(Y))-1:0,1:^(Y)),DIYX=0 D:'$D(DO) DO^DIC1
! 32: I 'DZ,'$D(DO("SCR")),$L(DIX)<30,D="B",'$D(DIC("S")),'$D(@(DIC_"Y,-9)")) S DIY="" Q
! 33: D S S:D="B"&'DZ&($P(DIY,DIX)="") DIY=$P(DIY,DIX,2,9),DIYX=1
! 34: Q
! 35: S D:'$D(DO) DO^DIC1 I $D(@(DIC_"Y,0)")) S DIY=$P(^(0),U)
! 36: E S DIY="" Q
! 37: I '$D(^(-9)) X:$D(DIC("S")) DIC("S") K DIAC,DIFILE Q:'$T!'$D(DO("SCR")) I $D(@(DIC_"Y,0)")) X DO("SCR")
! 38: Q
! 39: Y S Y=$O(@(DIC_"D,DIX,Y)")) S:Y="" Y=-1
! 40: DIY I Y<0 G DIX:DIC(0)'["O"&(DIC(0)["E"),G:DS=1&(D="B")&(DIX=X),DIX
! 41: D MN E G Y
! 42: K F DZ=1:1:DS I $D(DS(DZ)),+DS(DZ)=Y,DIC(0)'["C" G Y
! 43: D DS^DICN1:'$D(DISMN) I $S<DISMN F DZ=1:1:DS-7 K DS(DZ),DIY(DZ),DIYX(DZ)
! 44: S DS=DS+1,DS(DS)=Y_"^"_$P(DIX,X,2,99),DIY(DS)=DIY S:DIY]""&$G(DIYX) DIYX(DS)=1 G Y:DS#5-1,Y:DS=1,Y:DIC(0)["Y",Y^DIC1
! 45: G S DIY=1,DIX=X I DIC(0)["E",DIC(0)'["D",'$D(DICRS) S:$D(DDS) DST=$S($D(DST)#2:DST_" ",1:"")_X_$P(DS(1),U,2,99)_$S($G(DIYX(1)):$G(DIY(1)),1:"") W:'$D(DDS) $P(DS(1),U,2,99)
! 46: C S Y=+DS(DIY),X=X_$P(DS(DIY),"^",2),DIYX=$G(DIYX(DIY)),DIY=DIY(DIY)
! 47: G GOT^DIC2
! 48: ;
! 49: D S D=$S($D(DF):DF,1:"B") S:$D(DID(1)) DID(1)=2 Q
! 50: IX K DTOUT,DUOUT S DF=D G EN
! 51: A K DIY,DIYX,DS I DIC(0)["A" D D G ASK
! 52: NO S Y=-1 G Q^DIC2
! 53: ;
! 54: ;DBS entry points
! 55: ;
! 56: LIST(DIFILE,DIFIEN,DIFIELDS,DIFLAGS,DINUMBER,DIFROM,DIPART,DINDEX,DICALSCR,DIWRITE,DILIST,DIMSGA) ;SEA/TOAD
! 57: ;ENTRY POINT--return a list of entries from a file
! 58: ;subroutine, DIFROM passed by value
! 59: G IN^DICL
! 60: ;
! 61: FIND1(DIFILE,DIEN,DIFLAGS,DIVALUE,DINDEX,DISCREEN,DIMSGA) ;SEA/TOAD
! 62: ;ENTRY POINT--find a single entry in the file
! 63: ;function, all passed by value
! 64: I '$D(DIQUIET) N DIQUIET S DIQUIET=1
! 65: I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
! 66: I $G(DIMSGA)'="" D
! 67: .K @DIMSGA@("DIERR"),@DIMSGA@("DIHELP"),@DIMSGA@("DIMSG")
! 68: N DIERN,DIFIND,DIPE,DITARGET
! 69: D FIND^DICF($G(DIFILE),$G(DIEN),"",$G(DIFLAGS)_"f",$G(DIVALUE),1,$G(DINDEX),$G(DISCREEN),"","DITARGET")
! 70: I $D(DIERR) S DIFIND=""
! 71: E I $P($G(DITARGET(0)),U,3) K DITARGET S DIFIND="" D
! 72: .S DIERN=299
! 73: .S DIPE(1)=$G(DIVALUE)
! 74: F1 .S DIPE("FILE")=$G(DIFILE)
! 75: .S DIPE("IEN")=$G(DIEN)
! 76: .D BLD^DIALOG(DIERN,.DIPE,.DIPE)
! 77: .Q
! 78: E S DIFIND=+$G(DITARGET(1))
! 79: I $G(DIMSGA)'="" D CALLOUT^DIEFU(DIMSGA)
! 80: Q DIFIND
! 81: ;
! 82: FIND(DIFILE,DIEN,DIFLDS,DIFLAGS,DIVALUE,DIMAX,DIFORCE,DISCREEN,DID,DILIST,DIMSGA) ;SEA/TOAD
! 83: ;ENTRY POINT--in a file find entries that match a value
! 84: ;procedure, all passed by value
! 85: G FINDX^DICF
! 86: ;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>