Monitoring System Operation
Example of a System Management Program
107365 Tandem Computers Incorporated
8–11
Figure 8-1. Monitoring System Status (Page 10 of 12)
#LINEDEL pupout 1 for 2 == delete banner
== Remove "#listbad"
#SET addr [#CHARFIND pupout 1 #LISTBAD]
[#LOOP |WHILE| [addr] > 0 |DO|
#CHARDEL pupout [addr] for 9
#SET addr [#CHARFIND pupout addr #listbad]
] == end loop
#SETMANY badsectorflag linecounter, 0 1
#SET maxlines [#LINECOUNT pupout]
[#IF [#MATCH #EXIT [#LINEGET pupout [maxlines] for 1] ]
|THEN|
#LINEDEL pupout [maxlines] == delete last line (#exit)
#SET maxlines [#LINECOUNT pupout]
] == end if
#SET msg:disk(0:12) [#LINEGET pupout 1 for 1]
[#LOOP |WHILE| linecounter <= maxlines
| DO |
[#IF [#MATCH NO* [#LINEGET pupout [linecounter] for 1] ]
|THEN|
#LINEDEL pupout [linecounter] ==remove "NO BAD SECTORS"
#SET linecounter [#COMPUTE linecounter -1]
#SET maxlines [#COMPUTE maxlines - 1]
#LINEDEL pupout linecounter == remove line $volume-x
#LINEINS pupout [linecounter] [msg] == insert structure
|ELSE|
== Prepare structure for next possible OK disk
[#IF [#MATCH $* [#LINEGET pupout [linecounter] for 1]]
|THEN|
#SET msg:disk(0:12) [#LINEGET pupout [linecounter]
for 1]
|ELSE|
#SET badsectorflag -1 == flag to output entire report
]
] == end if, end if
#SET linecounter [#COMPUTE linec 1]
] == end loop
[#IF [badsectorflag]
|THEN| #OUTPUTV pupout
|ELSE| #OUTPUT
#OUTPUT All disk sectors OK.
] == end if
#POP pupcommand pupout addr badsectorflag linecounter
#POP maxlines
#OUTPUT