1 | HLCSFMN2 ;ALB/JRP - FILER MONITOR UTILITIES;13-FEB-95 ;10/15/99 07:16
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**57**;Oct 13, 1995
|
---|
3 | ;
|
---|
4 | SELECT(INARR,ENTITY) ;SELECTION UTILITY
|
---|
5 | ;INPUT : INARR - Array whose first subscript denotes the list of
|
---|
6 | ; selectable numbers (full global reference)
|
---|
7 | ; - $O(INARR(x)) yields all selectable numbers
|
---|
8 | ; ENTITY - What's being selected
|
---|
9 | ; - Defaults to 'Entry' (prompt is 'Select Entry')
|
---|
10 | ;OUTPUT : X - Number selected
|
---|
11 | ; 0 - Nothing selected
|
---|
12 | ; -1 - Bad input / nothing to select from
|
---|
13 | ; -2 - Timeout / abort
|
---|
14 | ;NOTES : User does not have to select an entry
|
---|
15 | ; : Number selected will be validated (must be in INARR). This
|
---|
16 | ; allows gaps to exist in INARR(x).
|
---|
17 | ; : Only whole numbers greater than zero are selectable
|
---|
18 | ;
|
---|
19 | ;CHECK INPUT
|
---|
20 | Q:($G(INARR)="") -1
|
---|
21 | Q:('$O(@INARR@(0))) -1
|
---|
22 | S:($G(ENTITY)="") ENTITY="Entry"
|
---|
23 | ;DECLARE VARIABLES
|
---|
24 | N DIR,X,Y,DTOUT,DUOUT,DIRUT,FRSTENT,LSTENT,LOOP,DONE
|
---|
25 | ;DETERMINE FIRST AND LAST ENTRY NUMBERS
|
---|
26 | S FRSTENT=+$O(@INARR@(""))
|
---|
27 | S LSTENT=+$O(@INARR@(""),-1)
|
---|
28 | ;ONLY ONE ITEM - AUTO SELECT
|
---|
29 | Q:(FRSTENT=LSTENT) FRSTENT
|
---|
30 | ;PROMPT USER FOR VALID SELECTION
|
---|
31 | F DONE=0:0 D Q:(DONE)
|
---|
32 | .K DIR,DTOUT,DUOUT,DIRUT,X,Y
|
---|
33 | .S DIR(0)="NAO^"_FRSTENT_":"_LSTENT_":0"
|
---|
34 | .S DIR("A")="Select "_ENTITY_" ("_FRSTENT_"-"_LSTENT_"): "
|
---|
35 | .S DIR("?",1)="Response must be a number between "_FRSTENT_" and "_LSTENT
|
---|
36 | .S DIR("?")="Enter '??' to see a list of valid selections"
|
---|
37 | .S DIR("??")="^W !!,""Valid Selections: "" S LOOP=0 F S LOOP=+$O(@INARR@(LOOP)) Q:('LOOP) W:(LOOP'=FRSTENT) "","" W:(($X+$L(LOOP)+1)>79) !,?18 W LOOP"
|
---|
38 | .D ^DIR
|
---|
39 | .;TIMEOUT/ABORT
|
---|
40 | .I (($D(DTOUT))!($D(DUOUT))) S Y=-2,DONE=1 Q
|
---|
41 | .;NOTHING SELECTED
|
---|
42 | .I ($D(DIRUT)) S Y=0,DONE=1 Q
|
---|
43 | .;VALIDATE SELECTION
|
---|
44 | .I ($D(@INARR@(Y))) S DONE=1 Q
|
---|
45 | .;INVALID SELECTION
|
---|
46 | .W $C(7),!!,Y," is not a valid selection"
|
---|
47 | .W !,"Enter '??' to see a list of valid selections"
|
---|
48 | .W !
|
---|
49 | ;DONE
|
---|
50 | Q Y
|
---|