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