Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ZIBVLMSM

ZIBVLMSM.m

Go to the documentation of this file.
  1. ZIBVLMSM ; IHS/ADC/GTH - LIST MSM VARIABLES ; [ 02/07/97 3:02 PM ]
  1. ;;3.0;IHS/VA UTILITIES;;FEB 07, 1997
  1. ;
  1. ; This routine lists variables that begin with the string
  1. ; entered by the user. Selection of variables is case
  1. ; sensitive.
  1. ;
  1. ; This routine is specific to Micronetics. It will work
  1. ; with any M implementation that has all Type A extensions
  1. ; to the 1990 M ANSI standard implemented. The front end
  1. ; routine, XBVL, stops if any other than an MSM
  1. ; implementation is encountered.
  1. ;
  1. ; Routine provided by Don Enos, OHPRD, 5 Feb 96.
  1. ;
  1. START ;
  1. NEW ZIBVLC,ZIBVLDQT,ZIBVLI,ZIBVLLC,ZIBVLNS,ZIBVLQ,ZIBVLX,ZIBVLX2,ZIBVLY,ZIBVLZ
  1. S $P(ZIBVLZ,"=",40)=""
  1. F D LOOP Q:ZIBVLQ
  1. Q
  1. ;
  1. LOOP ; WRITE NAME SPACED VARIABLES UNTIL USER IS THROUGH
  1. D READ ; get name space
  1. Q:ZIBVLQ
  1. Q:ZIBVLNS=""
  1. I $D(IOF) W @IOF I 1
  1. E W !!
  1. W ZIBVLZ,! ; write leading === line
  1. I ZIBVLNS="*" D ALL I 1 ; list variables
  1. E D NMSPACE
  1. D:ZIBVLLC>20 PAUSE ; pause if bottom of screen
  1. I 'ZIBVLQ W ZIBVLZ,! I 1 ; write trailing === line
  1. E W !
  1. S ZIBVLQ=0
  1. Q
  1. ;
  1. NMSPACE ; LIST VARIABLES IN NAME SPACE
  1. S ZIBVLX=$O(@ZIBVLNS,-1) ; backup to variable before name space
  1. S:ZIBVLX="" ZIBVLX="%" ; if none start with %
  1. I ZIBVLNS="%",$D(%) D WRITE,QUERY ;if % name space list % variable
  1. ; now list variables in name space and subnodes if arrays
  1. ; skip ZIBVL* variables
  1. 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
  1. Q
  1. ;
  1. ALL ; LIST ALL VARIABLES
  1. S ZIBVLX="%"
  1. I $D(%) D WRITE,QUERY ; if % exists list it
  1. ; now list all variables and subnodes if arrays
  1. ; skip ZIBVL* variables
  1. F S ZIBVLX=$O(@ZIBVLX) Q:ZIBVLX="" I $E(ZIBVLX,1,5)'="ZIBVL" D WRITE Q:ZIBVLQ D QUERY Q:ZIBVLQ
  1. Q
  1. ;
  1. QUERY ; $Q THROUGH ARRAYS
  1. S ZIBVLX2=ZIBVLX
  1. NEW ZIBVLX
  1. S ZIBVLX=ZIBVLX2
  1. F S ZIBVLX=$Q(@ZIBVLX) Q:ZIBVLX="" D WRITE Q:ZIBVLQ
  1. Q
  1. ;
  1. WRITE ; WRITE ONE VARIABLE NAME AND VALUE
  1. Q:'($D(@ZIBVLX)#2)
  1. ; quote non-numeric values (numeric = canonic < 16 digits)
  1. S ZIBVLDQT=""""
  1. I $L(@ZIBVLX)<16,@ZIBVLX=+@ZIBVLX S ZIBVLDQT=""
  1. ; figure out # of lines that will be used
  1. S ZIBVLC=$L(ZIBVLX)+1+($L(ZIBVLDQT)*2)+$L(@ZIBVLX) F ZIBVLI=1:1 S ZIBVLC=ZIBVLC-80 Q:ZIBVLC<1
  1. S ZIBVLLC=ZIBVLLC+ZIBVLI
  1. I ZIBVLLC>22 S ZIBVLLC=0 D PAUSE ; pause if not enough room
  1. Q:ZIBVLQ
  1. W ZIBVLX,"=",ZIBVLDQT,@ZIBVLX,ZIBVLDQT,! ; write name=value
  1. Q
  1. ;
  1. READ ; READ USER INPUT
  1. S ZIBVLQ=1,ZIBVLLC=0
  1. R !,"Enter Name Space: ",ZIBVLNS:300
  1. S:'$T ZIBVLNS="^"
  1. Q:ZIBVLNS=""
  1. Q:ZIBVLNS["^"
  1. S ZIBVLQ=0
  1. I ZIBVLNS["?" D HELP Q
  1. I $E(ZIBVLNS,1,5)="ZIBVL" W !!,"ZIBVL is not allowed!",*7 D HELP Q
  1. I ZIBVLNS=" " W !!,"BLANK is not allowed!",*7 D HELP Q
  1. I $L(ZIBVLNS)>1,$E(ZIBVLNS,$L(ZIBVLNS))="*" S ZIBVLNS=$E(ZIBVLNS,1,($L(ZIBVLNS)-1))
  1. D I ZIBVLQ S ZIBVLQ=0 D HELP W *7 Q
  1. . Q:ZIBVLNS?1"%".AN
  1. . Q:ZIBVLNS?1A.AN
  1. . Q:ZIBVLNS="*"
  1. . S ZIBVLQ=1
  1. . Q
  1. Q
  1. ;
  1. HELP ; DISPLAY HELP MESSAGE
  1. W !!,"Enter valid variable name string (e.g IO), or * for all, or RETURN or ^ to exit.",!
  1. S ZIBVLNS=""
  1. Q
  1. ;
  1. PAUSE ; PAUSE FOR USER
  1. R "Press any key to continue",ZIBVLY:300 S:'$T ZIBVLY="^"
  1. W !
  1. I ZIBVLY["^" S ZIBVLQ=1 Q
  1. W:$D(IOF) @IOF
  1. Q