| [613] | 1 | ENSPSRT ;(WIRMFO)/DH-Sort by LOCATION ;6.18.97
 | 
|---|
 | 2 |  ;;7.0;ENGINEERING;**35,42**;Aug 17, 1993
 | 
|---|
 | 3 | GEN ;  Full SORT
 | 
|---|
 | 4 |  ;  Builds ENSRT(x) array
 | 
|---|
 | 5 |  N EN,ENI,I
 | 
|---|
 | 6 |  S ENSRT("DIV")=0 I $D(^ENG(6928.3,"D")) S ENSRT("DIV")=1
 | 
|---|
 | 7 |  I ENSRT("DIV") S DIR(0)="S^1:DIV, BLDG, WING, ROOM;2:DIV, WING, BLDG, ROOM;3:DIV, BLDG, ROOM;4:BLDG, WING, ROOM;5:WING, BLDG, ROOM;6:BLDG, ROOM;7:WING, ROOM;8:ROOM"
 | 
|---|
 | 8 |  E  S DIR(0)="S^1:BLDG, WING, ROOM;2:WING, BLDG, ROOM;3:BLDG, ROOM;4:WING, ROOM;5:ROOM"
 | 
|---|
 | 9 |  S DIR("A")="Choose 'SELECT BY' Parameters",DIR("B")=$S(ENSRT("DIV"):3,1:1)
 | 
|---|
 | 10 |  D ^DIR K DIR I $D(DIRUT) K ENSRT G EXIT
 | 
|---|
 | 11 |  I ENSRT("DIV") S ENSRT("BY")=$S(Y=1:"DBWR",Y=2:"DWBR",Y=3:"DBR",Y=4:"BWR",Y=5:"WBR",Y=6:"BR",Y=7:"WR",Y=8:"R",1:"")
 | 
|---|
 | 12 |  E  S ENSRT("BY")=$S(Y=1:"BWR",Y=2:"WBR",Y=3:"BR",Y=4:"WR",Y=5:"R",1:"")
 | 
|---|
 | 13 |  I ENSRT("BY")="" K ENSRT G EXIT ;Shouldn't happen
 | 
|---|
 | 14 |  S DIR(0)="Y",DIR("A")="Would you like to specify a range of LOCATIONS",DIR("B")="NO"
 | 
|---|
 | 15 |  S DIR("?",1)="  Enter 'YES' if you want only some "_$S(ENSRT("DIV"):"DIVISIONS, ",1:"")_"BUILDINGS, WINGS, or ROOMS."
 | 
|---|
 | 16 |  S DIR("?")="  Enter 'NO' if you want to include all LOCATIONS."
 | 
|---|
 | 17 |  D ^DIR K DIR I $D(DIRUT) K ENSRT G EXIT
 | 
|---|
 | 18 |  S ENSRT("LOC","ALL")=$S(Y:0,1:1) G:ENSRT("LOC","ALL") EXIT
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 |  F ENI=1:1:$L(ENSRT("BY")) S PARAM=$E(ENSRT("BY"),ENI) D @PARAM Q:$D(DIRUT)
 | 
|---|
 | 21 |  G EXIT
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 | D ;  DIVISION range
 | 
|---|
 | 24 |  S DIR("A",1)=""
 | 
|---|
 | 25 |  S DIR("A",2)="Enter individual DIVISIONS (ex: "_$O(^ENG(6928.3,"D",0))_") separated by comas, or a range of"
 | 
|---|
 | 26 |  S DIR("A",3)="DIVISIONS separated by a colon, or 'ALL' for all DIVISIONS. The '@'"
 | 
|---|
 | 27 |  S DIR("A",4)="character represents the empty set (no DIVISION), and 'ALL' includes"
 | 
|---|
 | 28 |  S DIR("A",5)="entries with no DIVISION."
 | 
|---|
 | 29 |  S DIR("A",6)=""
 | 
|---|
 | 30 |  S DIR("A",7)="   For example, 'OPC,JB:JBZ' would yield the OPC division and all divisions"
 | 
|---|
 | 31 |  S DIR("A",8)="   beginning with JB. The ""@"" character (which must be enclosed in double"
 | 
|---|
 | 32 |  S DIR("A",9)="   quotes) would yield entries having no division, and '@:C' would yield"
 | 
|---|
 | 33 |  S DIR("A",10)="   entries having no division and entries with a division beginning with '0'"
 | 
|---|
 | 34 |  S DIR("A",11)="   through '9' or 'A' through 'C' (numbers collate before letters)."
 | 
|---|
 | 35 |  S DIR("A",12)=""
 | 
|---|
 | 36 |  S DIR(0)="F^1:100",DIR("A")="Select DIVISION(S)"
 | 
|---|
 | 37 |  D ^DIR K DIR Q:$D(DIRUT)
 | 
|---|
 | 38 |  K EN F I=1:1 S EN(I)=$P(Y,",",I) Q:EN(I)=""
 | 
|---|
 | 39 |  S I=0 F  S I=$O(EN(I)) Q:EN(I)=""  D
 | 
|---|
 | 40 |  . I EN(I)="ALL" S ENSRT("DIV","ALL")="" Q
 | 
|---|
 | 41 |  . I EN(I)'[":" S:EN(I)="""@""" EN(I)="NULL" S ENSRT("DIV","AIND",EN(I))="" Q
 | 
|---|
 | 42 |  . I $P(EN(I),":",2)="@",$P(EN(I),":")'="@" Q
 | 
|---|
 | 43 |  . I $P(EN(I),":")="@" D  Q
 | 
|---|
 | 44 |  .. S ENSRT("DIV","FR",I)=""
 | 
|---|
 | 45 |  .. S ENSRT("DIV","TO",I)=$S($P(EN(I),":",2)="@":"",1:$P(EN(I),":",2)_"z")
 | 
|---|
 | 46 |  . I $P(EN(I),":")']$P(EN(I),":",2) D
 | 
|---|
 | 47 |  .. S ENSRT("DIV","FR",I)=$P(EN(I),":")
 | 
|---|
 | 48 |  .. S ENSRT("DIV","TO",I)=$P(EN(I),":",2)
 | 
|---|
 | 49 |  Q
 | 
|---|
 | 50 | B ;  BUILDING range
 | 
|---|
 | 51 |  S DIR("A",1)=""
 | 
|---|
 | 52 |  S DIR("A",2)="Enter individual BUILDINGS separated by comas, or a range of BUILDINGS"
 | 
|---|
 | 53 |  S DIR("A",3)="separated by a colon, or 'ALL' for all BUILDINGS."
 | 
|---|
 | 54 |  S DIR("A",4)=""
 | 
|---|
 | 55 |  S DIR("A",5)="   For example, '13,100:114A,65' would yield buildings 13 and 65 and all"
 | 
|---|
 | 56 |  S DIR("A",6)="   buildings from 100 thru 114A (inclusive)."
 | 
|---|
 | 57 |  S DIR("A",7)=""
 | 
|---|
 | 58 |  S DIR(0)="F^1:200",DIR("A")="Select BUILDING(S)",DIR("B")="ALL"
 | 
|---|
 | 59 |  D ^DIR K DIR Q:$D(DIRUT)
 | 
|---|
 | 60 |  K EN F I=1:1 S EN(I)=$P(Y,",",I) Q:EN(I)=""
 | 
|---|
 | 61 |  S I=0 F  S I=$O(EN(I)) Q:EN(I)=""  D
 | 
|---|
 | 62 |  . I EN(I)="ALL" S ENSRT("BLDG","ALL")="" Q
 | 
|---|
 | 63 |  . I EN(I)'[":" S:EN(I)="""@""" EN(I)="NULL" S ENSRT("BLDG","AIND",EN(I))="" Q
 | 
|---|
 | 64 |  . I $P(EN(I),":",2)="@",$P(EN(I),":")'="@" Q
 | 
|---|
 | 65 |  . I $P(EN(I),":")="@" D  Q
 | 
|---|
 | 66 |  .. S ENSRT("BLDG","FR",I)=""
 | 
|---|
 | 67 |  .. S ENSRT("BLDG","TO",I)=$S($P(EN(I),":",2)="@":"",1:$P(EN(I),":",2))
 | 
|---|
 | 68 |  . I $P(EN(I),":")']$P(EN(I),":",2) D
 | 
|---|
 | 69 |  .. S ENSRT("BLDG","FR",I)=$P(EN(I),":")
 | 
|---|
 | 70 |  .. S ENSRT("BLDG","TO",I)=$P(EN(I),":",2)
 | 
|---|
 | 71 |  Q
 | 
|---|
 | 72 | W ;  WING range
 | 
|---|
 | 73 |  S DIR("A",1)=""
 | 
|---|
 | 74 |  S DIR("A",2)="Enter individual WINGS separated by comas, or a range of WINGS separated"
 | 
|---|
 | 75 |  S DIR("A",3)="by a colon, or 'ALL' for all WINGS. The ""@"" (double quotes are necessary)"
 | 
|---|
 | 76 |  S DIR("A",4)="character represents null WINGS, and 'ALL' will include entries with no WING."
 | 
|---|
 | 77 |  S DIR("A",5)=""
 | 
|---|
 | 78 |  S DIR("A",6)="   For example, '4,3A:3C' would yield WINGS 4 and 3A through 3C (inclusive)."
 | 
|---|
 | 79 |  S DIR("A",7)="   The ""@"" character would yield only those entries having no WING."
 | 
|---|
 | 80 |  S DIR("A",8)="   Note that numbers collate before letters."
 | 
|---|
 | 81 |  S DIR("A",9)=""
 | 
|---|
 | 82 |  S DIR(0)="F^1:150",DIR("A")="Select WING(S)",DIR("B")="ALL"
 | 
|---|
 | 83 |  D ^DIR K DIR Q:$D(DIRUT)
 | 
|---|
 | 84 |  K EN F I=1:1 S EN(I)=$P(Y,",",I) Q:EN(I)=""
 | 
|---|
 | 85 |  S I=0 F  S I=$O(EN(I)) Q:EN(I)=""  D
 | 
|---|
 | 86 |  . I EN(I)="ALL" S ENSRT("WING","ALL")="" Q
 | 
|---|
 | 87 |  . I EN(I)'[":" S:EN(I)="""@""" EN(I)="NULL" S ENSRT("WING","AIND",EN(I))="" Q
 | 
|---|
 | 88 |  . I $P(EN(I),":",2)="@",$P(EN(I),":")'="@" Q
 | 
|---|
 | 89 |  . I $P(EN(I),":")="@" D  Q
 | 
|---|
 | 90 |  .. S ENSRT("WING","FR",I)=""
 | 
|---|
 | 91 |  .. S ENSRT("WING","TO",I)=$S($P(EN(I),":",2)="@":"",1:$P(EN(I),":",2)_"z")
 | 
|---|
 | 92 |  . I $P(EN(I),":")']$P(EN(I),":",2) D
 | 
|---|
 | 93 |  .. S ENSRT("WING","FR",I)=$P(EN(I),":")
 | 
|---|
 | 94 |  .. S ENSRT("WING","TO",I)=$P(EN(I),":",2)
 | 
|---|
 | 95 |  Q
 | 
|---|
 | 96 | R ;  ROOM range
 | 
|---|
 | 97 |  S DIR("A",1)=""
 | 
|---|
 | 98 |  S DIR("A",2)="Enter individual ROOMS separated by comas, or a range of ROOMS separated"
 | 
|---|
 | 99 |  S DIR("A",3)="by a colon, or 'ALL' for all ROOMS. The ""@"" character will not be accepted"
 | 
|---|
 | 100 |  S DIR("A",4)="because NULL ROOMS cannot exist."
 | 
|---|
 | 101 |  S DIR("A",4)=""
 | 
|---|
 | 102 |  S DIR("A",5)="  For example, '501,100:299' would yield all rooms numbered  501 and all"
 | 
|---|
 | 103 |  S DIR("A",6)="  rooms whose first three characters are between 100 and 299 (inclusive)."
 | 
|---|
 | 104 |  S DIR("A",7)="  Remember that numbers collate before letters."
 | 
|---|
 | 105 |  S DIR("A",8)=""
 | 
|---|
 | 106 |  S DIR(0)="F^1:200",DIR("A")="Select ROOM(S)",DIR("B")="ALL"
 | 
|---|
 | 107 |  D ^DIR K DIR Q:$D(DIRUT)
 | 
|---|
 | 108 |  K EN F I=1:1 S EN(I)=$P(Y,",",I) Q:EN(I)=""
 | 
|---|
 | 109 |  S I=0 F  S I=$O(EN(I)) Q:EN(I)=""  D  I Y["@" W !!,"The ROOM cannot possibly be NULL. Perhaps you mean 'ALL'." G R
 | 
|---|
 | 110 |  . I Y="ALL" S ENSRT("ROOM","ALL")="" Q
 | 
|---|
 | 111 |  . I Y["@" Q  ;Can't have null ROOMS
 | 
|---|
 | 112 |  . I Y'[":" S ENSRT("ROOM","AIND",EN(I))="" Q
 | 
|---|
 | 113 |  . I $P(EN(I),":")']$P(EN(I),":",2) D
 | 
|---|
 | 114 |  .. S ENSRT("ROOM","FR",I)=$P(EN(I),":")
 | 
|---|
 | 115 |  .. S ENSRT("ROOM","TO",I)=$P(EN(I),":",2)_"z"
 | 
|---|
 | 116 |  Q
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 | EXIT K:$D(DIRUT) ENSRT
 | 
|---|
 | 119 |  Q
 | 
|---|
 | 120 |  ;ENSPSRT
 | 
|---|