[641] | 1 | ZIBVL ;IHS/SET/GTH - LIST LOCAL VARIABLES ; [ 10/29/2002 7:42 AM ]
|
---|
| 2 | ;;4.0;XB;;Jul 20, 2009;Build 2
|
---|
| 3 | ;XB*3*9 IHS/SET/GTH XB*3*9 10/29/2002 Both MSM and Cache'.
|
---|
| 4 | ;
|
---|
| 5 | ; This routine lists variables that begin with the string
|
---|
| 6 | ; entered by the user. Selection of variables is case
|
---|
| 7 | ; sensitive.
|
---|
| 8 | ;
|
---|
| 9 | ; This routine is specific to MSM and Cache. It will work
|
---|
| 10 | ; with any M implementation that has all Type A extensions
|
---|
| 11 | ; to the 1990 M ANSI standard implemented. The front end
|
---|
| 12 | ; routine, XBVL, stops if any other than an MSM or Cache
|
---|
| 13 | ; implementation is encountered.
|
---|
| 14 | ;
|
---|
| 15 | ; TASSC/MFD formally ZIBVLMSM, patched this along with XBVL for Cache
|
---|
| 16 | ;
|
---|
| 17 | START ;
|
---|
| 18 | NEW ZIBVLC,ZIBVLDQT,ZIBVLI,ZIBVLLC,ZIBVLNS,ZIBVLQ,ZIBVLX,ZIBVLX2,ZIBVLY,ZIBVLZ
|
---|
| 19 | S $P(ZIBVLZ,"=",40)=""
|
---|
| 20 | F D LOOP Q:ZIBVLQ
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | LOOP ; WRITE NAME SPACED VARIABLES UNTIL USER IS THROUGH
|
---|
| 24 | D READ ; get name space
|
---|
| 25 | Q:ZIBVLQ
|
---|
| 26 | Q:ZIBVLNS=""
|
---|
| 27 | I $D(IOF) W @IOF I 1
|
---|
| 28 | E W !!
|
---|
| 29 | W ZIBVLZ,! ; write leading === line
|
---|
| 30 | I ZIBVLNS="*" D ALL I 1 ; list variables
|
---|
| 31 | E D NMSPACE
|
---|
| 32 | D:ZIBVLLC>20 PAUSE ; pause if bottom of screen
|
---|
| 33 | I 'ZIBVLQ W ZIBVLZ,! I 1 ; write trailing === line
|
---|
| 34 | E W !
|
---|
| 35 | S ZIBVLQ=0
|
---|
| 36 | Q
|
---|
| 37 | ;
|
---|
| 38 | NMSPACE ; LIST VARIABLES IN NAME SPACE
|
---|
| 39 | S ZIBVLX=""
|
---|
| 40 | I $$VERSION^%ZOSV(1)["MSM" S ZIBVLX=$O(@ZIBVLNS,-1) ; backup to variable before name space
|
---|
| 41 | S:ZIBVLX="" ZIBVLX="%" ; if none start with %
|
---|
| 42 | I ZIBVLNS="%",$D(%) D WRITE,QUERY ;if % name space list % variable
|
---|
| 43 | ; now list variables in name space and subnodes if arrays
|
---|
| 44 | ; skip ZIBVL* variables
|
---|
| 45 | F S ZIBVLX=$O(@ZIBVLX) Q:ZIBVLX="" Q:$E(ZIBVLX,1,$L(ZIBVLNS))]ZIBVLNS I $E(ZIBVLX,1,$L(ZIBVLNS))=ZIBVLNS,$E(ZIBVLX,1,5)'="ZIBVL" D WRITE Q:ZIBVLQ D QUERY Q:ZIBVLQ
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | ALL ; LIST ALL VARIABLES
|
---|
| 49 | S ZIBVLX="%"
|
---|
| 50 | I $D(%) D WRITE,QUERY ; if % exists list it
|
---|
| 51 | ; now list all variables and subnodes if arrays
|
---|
| 52 | ; skip ZIBVL* variables
|
---|
| 53 | F S ZIBVLX=$O(@ZIBVLX) Q:ZIBVLX="" I $E(ZIBVLX,1,5)'="ZIBVL" D WRITE Q:ZIBVLQ D QUERY Q:ZIBVLQ
|
---|
| 54 | Q
|
---|
| 55 | ;
|
---|
| 56 | QUERY ; $Q THROUGH ARRAYS
|
---|
| 57 | S ZIBVLX2=ZIBVLX
|
---|
| 58 | NEW ZIBVLX
|
---|
| 59 | S ZIBVLX=ZIBVLX2
|
---|
| 60 | F S ZIBVLX=$Q(@ZIBVLX) Q:ZIBVLX="" D WRITE Q:ZIBVLQ
|
---|
| 61 | Q
|
---|
| 62 | ;
|
---|
| 63 | WRITE ; WRITE ONE VARIABLE NAME AND VALUE
|
---|
| 64 | Q:'($D(@ZIBVLX)#2)
|
---|
| 65 | ; quote non-numeric values (numeric = canonic < 16 digits)
|
---|
| 66 | S ZIBVLDQT=""""
|
---|
| 67 | I $L(@ZIBVLX)<16,@ZIBVLX=+@ZIBVLX S ZIBVLDQT=""
|
---|
| 68 | ; figure out # of lines that will be used
|
---|
| 69 | S ZIBVLC=$L(ZIBVLX)+1+($L(ZIBVLDQT)*2)+$L(@ZIBVLX) F ZIBVLI=1:1 S ZIBVLC=ZIBVLC-80 Q:ZIBVLC<1
|
---|
| 70 | S ZIBVLLC=ZIBVLLC+ZIBVLI
|
---|
| 71 | I ZIBVLLC>22 S ZIBVLLC=0 D PAUSE ; pause if not enough room
|
---|
| 72 | Q:ZIBVLQ
|
---|
| 73 | W ZIBVLX,"=",ZIBVLDQT,@ZIBVLX,ZIBVLDQT,! ; write name=value
|
---|
| 74 | Q
|
---|
| 75 | ;
|
---|
| 76 | READ ; READ USER INPUT
|
---|
| 77 | S ZIBVLQ=1,ZIBVLLC=0
|
---|
| 78 | R !,"Enter Name Space: ",ZIBVLNS:300
|
---|
| 79 | S:'$T ZIBVLNS="^"
|
---|
| 80 | Q:ZIBVLNS=""
|
---|
| 81 | Q:ZIBVLNS["^"
|
---|
| 82 | S ZIBVLQ=0
|
---|
| 83 | I ZIBVLNS["?" D HELP Q
|
---|
| 84 | I $E(ZIBVLNS,1,5)="ZIBVL" W !!,"ZIBVL is not allowed!",*7 D HELP Q
|
---|
| 85 | I ZIBVLNS=" " W !!,"BLANK is not allowed!",*7 D HELP Q
|
---|
| 86 | I $L(ZIBVLNS)>1,$E(ZIBVLNS,$L(ZIBVLNS))="*" S ZIBVLNS=$E(ZIBVLNS,1,($L(ZIBVLNS)-1))
|
---|
| 87 | D I ZIBVLQ S ZIBVLQ=0 D HELP W *7 Q
|
---|
| 88 | . Q:ZIBVLNS?1"%".AN
|
---|
| 89 | . Q:ZIBVLNS?1A.AN
|
---|
| 90 | . Q:ZIBVLNS="*"
|
---|
| 91 | . S ZIBVLQ=1
|
---|
| 92 | . Q
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | HELP ; DISPLAY HELP MESSAGE
|
---|
| 96 | W !!,"Enter valid variable name string (e.g IO), or * for all, or RETURN or ^ to exit.",!
|
---|
| 97 | S ZIBVLNS=""
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | PAUSE ; PAUSE FOR USER
|
---|
| 101 | R "Press any key to continue",ZIBVLY:300 S:'$T ZIBVLY="^"
|
---|
| 102 | W !
|
---|
| 103 | I ZIBVLY["^" S ZIBVLQ=1 Q
|
---|
| 104 | W:$D(IOF) @IOF
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|