/* Program: sar.p Purpose: To pull sar information from a file into Progress Author: Adam Backman Date: 08/27/98 Revisions: */ /* Define variables */ def var input-file as character format "x(40)". def var resource-wanted as character format "x(10)" view-as selection-list single list-items "CPU", "MEMORY", "PAGING", "FAULTS", "SWAP", "DISK" inner-chars 10 inner-lines 5 init "CPU". def var time-of-day as character. def var sar-int1 as int. def var sar-int2 as int. def var sar-int3 as int. def var sar-int4 as int. def var sar-int5 as int. def var sar-int6 as int. def var sar-int7 as int. def var sar-int8 as int. def var sar-int9 as int. def var sar-dec1 as decimal. def var sar-dec2 as decimal. def var sar-dec3 as decimal. def var sar-dec4 as decimal. def var sar-dec5 as decimal. def var sar-dec6 as decimal. def var sar-dec7 as decimal. def var sar-dec8 as decimal. def var sar-dec9 as decimal. def var sar-chr1 as character. def var sar-chr2 as character. def var sar-chr3 as character. def var sar-chr4 as character. def var sar-chr5 as character. def var sar-chr6 as character. def var sar-chr7 as character. def var sar-chr8 as character. def var sar-chr9 as character. def var sar-input as character format "x(70)". def var count as integer. on RETURN GO. /* Ask for input file and resource info */ update input-file resource-wanted with frame x. on RETURN return. /* Pull info from read-sar shell script */ input thru value("read-sar " + input-file + " " + resource-wanted). repeat: count = count + 1. import sar-input. /* Skip over header information and then display data*/ if count > 4 then run display-info. end. /* repeat. */ procedure display-info. case resource-wanted: when "CPU" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-int1 = int(substring((sar-input),12,6)). sar-int2 = int(substring((sar-input),19,6)). sar-int3 = int(substring((sar-input),28,6)). sar-int4 = int(substring((sar-input),36,6)). display time-of-day sar-int1 label "User" sar-int2 label "System" sar-int3 label "Wait" sar-int4 label "Idle" with frame sar-cpu down. down with frame sar-cpu. end. when "MEMORY" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-int1 = int(substring((sar-input),10,7)). sar-int2 = int(substring((sar-input),18,8)). display time-of-day sar-int1 label "Free Memory" sar-int2 label "Free Swap" with frame sar-memory down. end. when "PAGING" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-dec1 = dec(substring((sar-input),10,8)). sar-dec2 = dec(substring((sar-input),19,8)). sar-dec3 = dec(substring((sar-input),28,8)). sar-dec4 = dec(substring((sar-input),37,8)). display time-of-day sar-dec1 label "PO Requests" sar-dec2 label "Page Outs" sar-dec3 label "Page Free" sar-dec4 label "Page Scan" with frame sar-paging down. end. when "FAULTS" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-dec1 = dec(substring((sar-input),10,7)). sar-dec2 = dec(substring((sar-input),18,7)). sar-dec3 = dec(substring((sar-input),26,7)). sar-dec4 = dec(substring((sar-input),34,7)). sar-dec5 = dec(substring((sar-input),42,7)). sar-dec6 = dec(substring((sar-input),50,7)). display time-of-day sar-dec1 label "Attach" sar-dec2 label "PI Req" sar-dec3 label "Page In" sar-dec4 label "Page Flts" sar-dec5 label "V/Flts" sar-dec6 label "SW Locks" with frame sar-faults down. end. when "SWAP" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-dec1 = dec(substring((sar-input),10,7)). sar-dec2 = dec(substring((sar-input),18,7)). sar-dec3 = dec(substring((sar-input),26,7)). sar-dec4 = dec(substring((sar-input),34,7)). sar-int1 = int(substring((sar-input),42,7)). display time-of-day sar-dec1 label "Swap In" sar-dec2 label "Blocks In" sar-dec3 label "Swap Out" sar-dec4 label "Blocks Out" sar-int1 label "P/Switch" with frame sar-swap down. end. when "DISK" then do: time-of-day = substring((sar-input),1,8). if time-of-day = " " then next. sar-chr1 = substring((sar-input),12,8). sar-int1 = int(substring((sar-input),28,5)). sar-dec1 = dec(substring((sar-input),34,7)). sar-int2 = int(substring((sar-input),44,4)). sar-int3 = int(substring((sar-input),52,4)). sar-dec2 = dec(substring((sar-input),57,7)). sar-dec3 = dec(substring((sar-input),65,6)). display time-of-day label "Time" sar-chr1 label "Device" sar-int1 label "% Busy" format ">>>>9" sar-dec1 label "Avg. Q" format ">>>9.99" sar-int2 label "R+W/Sec." format ">>>9" sar-int3 label "Blks/Sec." format ">>>9" sar-dec2 label "Avg. Wait" format ">>>9.99" sar-dec3 label "Avg. Serv." format ">>9.99" with frame sar-disk down. end. end case. end. /* Procedure display-info */