File:  [Coherent Logic Development] / freem_fileman / USER / DIC.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:19 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    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>