| 1 | KMPDUT4B ;OAK/RAK; Multi-Lookup Array Selection cont. ;2/17/04  10:48
 | 
|---|
| 2 |  ;;2.0;CAPACITY MANAGEMENT TOOLS;;Mar 22, 2002
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;--------------------------------------------------------------------
 | 
|---|
| 5 |  ;  sub-routines to select entries - called from ^KMPDUT4
 | 
|---|
| 6 |  ;--------------------------------------------------------------------
 | 
|---|
| 7 | ALL ;all entries selected
 | 
|---|
| 8 |  Q:'$D(ARRAY)!('$D(DIC))  S MAX=+$G(MAX),SORT=+$G(SORT)
 | 
|---|
| 9 |  K @ARRAY I DIC S DIC=$G(^DIC(DIC,0,"GL"))
 | 
|---|
| 10 |  I MAX,($P($G(@(DIC_"0)")),U,4)>MAX) S @ARRAY@(0)="*" Q
 | 
|---|
| 11 |  N ASKI W "  selecting 'All' entries"
 | 
|---|
| 12 |  F ASKI=0:0 S ASKI=$O(@(DIC_ASKI_")")) Q:'ASKI  D SET(ASKI)
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | DISPLAY ;display entries that have been selected
 | 
|---|
| 15 |  Q:'$D(DIC)  S SORT=+$G(SORT)
 | 
|---|
| 16 |  I '$D(@ARRAY) W !!,"...no entries have been selected...",! Q
 | 
|---|
| 17 |  I @ARRAY@(0)="*" W !!,"...'All' entries have been selected...",! Q
 | 
|---|
| 18 |  D HDR^KMPDUTL4("Selected Entries from "_$P($G(@(DIC_"0)")),U)_" file")
 | 
|---|
| 19 |  N ASKI,ASKOUT S ASKI="",ASKOUT=1 W !!
 | 
|---|
| 20 |  F  S ASKI=$O(@ARRAY@(ASKI)) Q:ASKI=""!(ASKOUT'=1)  I ASKI'=0 D 
 | 
|---|
| 21 |  .I $Y>(IOSL-4) D  Q:ASKOUT'=1
 | 
|---|
| 22 |  ..D FTR^KMPDUTL4("",.ASKOUT) Q:ASKOUT'=1
 | 
|---|
| 23 |  ..D HDR^KMPDUTL4("Selected Entries from "_$P($G(@(DIC_"0)")),U)_" file")
 | 
|---|
| 24 |  ..W !!
 | 
|---|
| 25 |  .W !?7,$S(SORT=1:ASKI,1:@ARRAY@(ASKI))
 | 
|---|
| 26 |  W !
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | WILDCARD(X) ;entries with wildcard selected
 | 
|---|
| 29 |  ;--------------------------------------------------------------------
 | 
|---|
| 30 |  ;  allow wildcard selections
 | 
|---|
| 31 |  ;       examples: A*
 | 
|---|
| 32 |  ;                 ABC*
 | 
|---|
| 33 |  ;                 SMITH*
 | 
|---|
| 34 |  ;--------------------------------------------------------------------
 | 
|---|
| 35 |  Q:$G(X)']""
 | 
|---|
| 36 |  N ASKI,COUNT,NARRAY,OUT,STR,STR1 S (COUNT,OUT)=0
 | 
|---|
| 37 |  S MAX=+$G(MAX),SORT=+$G(SORT) S:$G(D)']"" D="B"
 | 
|---|
| 38 |  S STR=$E(X,1,($F(X,"*")-2)) Q:STR']""
 | 
|---|
| 39 |  S STR1=STR,NARRAY=DIC_""""_D_""""_")"
 | 
|---|
| 40 |  ;--------------------------------------------------------------------
 | 
|---|
| 41 |  ;  if exact match on STR1
 | 
|---|
| 42 |  ;--------------------------------------------------------------------
 | 
|---|
| 43 |  I $D(@NARRAY@(STR1)) S ASKI=0 D  Q
 | 
|---|
| 44 |  .I STR?.N S NARRAY=DIC_""""_D_""""_","_STR_")"
 | 
|---|
| 45 |  .E  S NARRAY=DIC_""""_D_""""_","_""""_STR_""""_")"
 | 
|---|
| 46 |  .F  S ASKI=$O(@NARRAY@(ASKI)) Q:'ASKI  D  Q:OUT
 | 
|---|
| 47 |  ..D SET(ASKI) I MAX,(+$G(@ARRAY@(0))=MAX) S OUT=1
 | 
|---|
| 48 |  ;--------------------------------------------------------------------
 | 
|---|
| 49 |  ;  if not an exact match
 | 
|---|
| 50 |  ;--------------------------------------------------------------------
 | 
|---|
| 51 |  F  S STR1=$O(@NARRAY@(STR1)) Q:$E(STR1,1,$L(STR))'=STR  D  Q:OUT
 | 
|---|
| 52 |  .F ASKI=0:0  S ASKI=$O(@NARRAY@(STR1,ASKI)) Q:'ASKI  D  Q:OUT
 | 
|---|
| 53 |  ..D SET(ASKI) I MAX,(+$G(@ARRAY@(0))=MAX) S OUT=1
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | SET(IFN) ;set selected data into array
 | 
|---|
| 56 |  ;--------------------------------------------------------------------
 | 
|---|
| 57 |  ;    IFN - internal file number of entry
 | 
|---|
| 58 |  ;--------------------------------------------------------------------
 | 
|---|
| 59 |  N X,Y S IFN=+$G(IFN),SORT=+$G(SORT) Q:'IFN
 | 
|---|
| 60 |  Q:'$D(DIC)!('$D(ARRAY))
 | 
|---|
| 61 |  Q:'$D(@(DIC_IFN_",0)"))!($P($G(^(0)),U)']"")
 | 
|---|
| 62 |  S X="`"_ASKI,DIC(0)="Z" D ^DIC Q:Y'>0
 | 
|---|
| 63 |  I SORT=1 S @ARRAY@(Y(0,0))=+Y
 | 
|---|
| 64 |  E  S @ARRAY@(+Y)=Y(0,0)
 | 
|---|
| 65 |  S @ARRAY@(0)=$G(@ARRAY@(0))+1 W:$X>73 !?7 W "."
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 |  ;  for future use - if unable to use `IFN in call to ^DIC
 | 
|---|
| 68 |  I SORT=1 S @ARRAY@($P($G(@(DIC_ASKI_",0)")),U))=ASKI
 | 
|---|
| 69 |  E  S @ARRAY@(ASKI)=$P($G(@(DIC_ASKI_",0)")),U)
 | 
|---|