| [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 | 
|---|