[613] | 1 | DICF3 ;SEA/TOAD,SF/TKW-VA FileMan: Finder, Part 3 (One Index) ;4/20/99 09:43
|
---|
| 2 | ;;22.0;VA FileMan;**4**;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | CHKONE(DIFLAGS,DIVALUE,DINDEX,DIDENT,DIFILE,DIEN,DIFIEN,DISCREEN,DILIST,DIC,DIY,DIYX) ;
|
---|
| 6 | ; Called from CHKALL--check one index for possible matches
|
---|
| 7 | N I,DISUB F DISUB=1:1:DINDEX("#") D
|
---|
| 8 | . F I=0:0 S I=$O(DINDEX(DISUB,I)) Q:'I K DINDEX(DISUB,I)
|
---|
| 9 | . Q
|
---|
| 10 | C1 ; Set up then find eXact matches.
|
---|
| 11 | I DIFLAGS["X" D Q
|
---|
| 12 | . F DISUB=1:1:DINDEX("#") D
|
---|
| 13 | . . S (DINDEX(DISUB),DINDEX(DISUB,1))=$G(DINDEX(DISUB,"FROM"))
|
---|
| 14 | . . S DINDEX(DISUB,"USE")=$S(DIFLAGS["Q":1,"VP"[DINDEX(DISUB,"TYPE"):0,1:1)
|
---|
| 15 | . . I DISUB>1!("VP"'[DINDEX(1,"TYPE")) M DINDEX(DISUB)=DIVALUE(DISUB)
|
---|
| 16 | . . Q:DIFLAGS["Q"
|
---|
| 17 | . . I "VP"[DINDEX(DISUB,"TYPE") D Q:DISUB=1
|
---|
| 18 | . . . S DINDEX(DISUB)=""
|
---|
| 19 | . . . Q:DISUB'=1
|
---|
| 20 | . . . S DINDEX(1,1)="" F I=1:0 S I=$O(DINDEX(1,I)) Q:'I K DINDEX(1,I)
|
---|
| 21 | . . . Q
|
---|
| 22 | . . S I=4 F S I=$O(DIVALUE(DISUB,I)) Q:'I S DINDEX(DISUB,I)=DIVALUE(DISUB,I)
|
---|
| 23 | . . Q
|
---|
| 24 | . S DIDENT(-4)=1
|
---|
| 25 | . N DIF S DIF=$TR(DIFLAGS,"X")_"X"
|
---|
| 26 | . S DINDEX("TOTAL")=DIDENT(-1)
|
---|
| 27 | . D WALK^DICFIX(DIF,.DINDEX,.DIDENT,.DIFILE,.DIEN,.DIFIEN,.DISCREEN,.DILIST,.DIC,.DIY,.DIYX)
|
---|
| 28 | . Q
|
---|
| 29 | Q:$G(DIERR)!($G(DINDEX("DONE")))
|
---|
| 30 | C2 ; Find partial matches
|
---|
| 31 | F DISUB=1:1:DINDEX("#") D
|
---|
| 32 | . S (DINDEX(DISUB),DINDEX(DISUB,1))=$G(DINDEX(DISUB,"FROM"))
|
---|
| 33 | . S DINDEX(DISUB,"USE")=$S(DIFLAGS["Q"!(DINDEX("#")>1):1,DIFLAGS["O":0,1:1)
|
---|
| 34 | . I DISUB>1!("VP"'[DINDEX(1,"TYPE")) M DINDEX(DISUB)=DIVALUE(DISUB)
|
---|
| 35 | . I "VP"[DINDEX(DISUB,"TYPE"),DIFLAGS'["Q" D Q:DISUB=1
|
---|
| 36 | . . S DINDEX(DISUB)="",DINDEX(DISUB,"USE")=0
|
---|
| 37 | . . Q:DISUB'=1
|
---|
| 38 | . . S DINDEX(1,1)="" F I=1:0 S I=$O(DINDEX(1,I)) Q:'I K DINDEX(1,I)
|
---|
| 39 | . . Q
|
---|
| 40 | . I DIFLAGS["O" F I=0:0 S I=$O(DISCREEN(DISUB,I)) Q:'I D
|
---|
| 41 | . . I $D(DISCREEN(DISUB,I,2)) S DISCREEN(DISUB,I)=DISCREEN(DISUB,I,2)
|
---|
| 42 | . . Q
|
---|
| 43 | . Q
|
---|
| 44 | S DIDENT(-4)=1
|
---|
| 45 | S DINDEX("TOTAL")=DIDENT(-1)
|
---|
| 46 | D WALK^DICFIX(.DIFLAGS,.DINDEX,.DIDENT,.DIFILE,.DIEN,DIFIEN,.DISCREEN,.DILIST,.DIC,.DIY,.DIYX)
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | ;
|
---|