Example 3 Show the System i Disk Usage

RAMP-TS

Example 3: Show the System i Disk Usage

A screen wrapper can pick values out of hidden 5250 screen(s) and present it in completely different ways. This example shows the disk usage of a System i graphically:

 

 

To access the work with disk status screen type wrkdsksts in the command line. The name given to the Work with Disk Status screen in this example is "DiskStatus".

When in the disk status screen, read the %Use column of the subfile and feed the data to the graph.

 

Function Options(*DIRECT)

 

Begin_Com Role(*EXTENDS #VF_AC010) Height(559) Hint(*MTXTDF_DET1) Layoutmanager(#ATLM_1) Width(557)

 

Define_Com Class(#PRIM_GRID) Name(#DiskSts) Displayposition(1) Height(150) Left(109) Parent(#PANL_2) Rowheight(19) Tabposition(1) Top(15) Width(212)

Define_Com Class(#PRIM_GDCL) Name(#GDCL_1) Caption('Disk Unit') Captiontype(Caption) Displayposition(1) Parent(#DiskSts) Source(#VF_ELTYP) Width(29)

Define_Com Class(#PRIM_GDCL) Name(#GDCL_2) Caption('% Use') Captiontype(Caption) Displayposition(2) Parent(#DiskSts) Readonly(False) Source(#VF_ELTXTS) Width(30) Widthtype(Remainder)

 

Define_Com Class(#PRIM_GRPH) Name(#GRPH_1) Displayposition(1) Height(370) Left(0) Parent(#PANL_3) Scatterstyle(SymbolAtPoints+Solid) Surfacestyle(ConnectLinesInBlack) Tabposition(1) Top(0) Width(557) Xcaption('Disk Units') Ycaption('% Use')

Define_Com Class(#PRIM_GRCL) Name(#GRCL_1) Columnrole(Label) Displayposition(1) Parent(#GRPH_1) Source(#VF_ELTYP)

Define_Com Class(#PRIM_GRCL) Name(#GRCL_2) Columnsymbol(HollowUpTriangle) Displayposition(2) Parent(#GRPH_1) Source(#VF_ELWIDP)

 

Define_Com Class(#vf_sy122) Name(#myscreen_wrapper) Displayposition(3) Height(513) Left(144) Parent(#PANL_1) Top(24) Visible(False) Width(593)

 

Define_Com Class(#PRIM_PANL) Name(#PANL_1) Displayposition(1) Height(559) Layoutmanager(#SPLM_1) Left(0) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(0) Width(557)

 

Define_Com Class(#PRIM_ATLM) Name(#ATLM_1)

Define_Com Class(#PRIM_ATLI) Name(#ATLI_1) Attachment(Center) Manage(#PANL_1) Parent(#ATLM_1)

 

Define_Com Class(#PRIM_SPLM) Name(#SPLM_1)

 

Define_Com Class(#PRIM_PANL) Name(#PANL_2) Displayposition(1) Height(181) Layoutmanager(#FWLM_1) Left(0) Parent(#PANL_1) Tabposition(2) Tabstop(False) Top(0) Width(557)

Define_Com Class(#PRIM_PANL) Name(#PANL_3) Displayposition(2) Height(370) Layoutmanager(#ATLM_2) Left(0) Parent(#PANL_1) Tabposition(3) Tabstop(False) Top(189) Width(557)

 

Define_Com Class(#PRIM_SPLI) Name(#SPLI_1) Manage(#PANL_2) Parent(#SPLM_1) Weight(1)

Define_Com Class(#PRIM_SPLI) Name(#SPLI_2) Manage(#PANL_3) Parent(#SPLM_1)

Define_Com Class(#PRIM_ATLM) Name(#ATLM_2)

Define_Com Class(#PRIM_ATLI) Name(#ATLI_2) Attachment(Center) Manage(#GRPH_1) Parent(#ATLM_2)

Define_Com Class(#PRIM_FWLM) Name(#FWLM_1) Direction(TopToBottom) Flowoperation(Center) Margintop(15) Spacingitems(2)

Define_Com Class(#PRIM_FWLI) Name(#FWLI_3) Manage(#DiskSts) Parent(#FWLM_1)

 

Define_Com Class(#PRIM_PHBN) Name(#PHBN_1) Caption('Refresh Statistics') Displayposition(2) Left(331) Parent(#PANL_2) Tabposition(2) Top(15) Width(117)

 

Define_Com Class(#PRIM_FWLI) Name(#FWLI_6) Manage(#PHBN_1) Parent(#FWLM_1)

 

* =============================================================================================

* This example shows a graph with the percentage of activity of each of the System i disk units

* =============================================================================================

Mthroutine Name(uInitialize) Options(*REDEFINE)

 

* Do any initialization defined in the ancestor

 

Invoke Method(#Com_Ancestor.uInitialize)

 

Set Com(#grph_1) Graphtype(Bar)

 

Set Com(#myscreen_wrapper) Ucommand(#com_owner)

 

Endroutine

 

Mthroutine Name(uExecute) Options(*REDEFINE)

 

* Do any execution logic defined in the ancestor

 

Invoke Method(#Com_Ancestor.uExecute)

Invoke Method(#myscreen_wrapper.MakeRampTSAvailable)

 

Endroutine

 

Evtroutine Handling(#myscreen_wrapper.RampTSAvailable)

 

* Clear the lists

Clr_List Named(#DiskSts)

Clr_List Named(#grph_1)

 

* Run teh scripts to navigate to work with disk status

* The navigation only involves 3 screens: Login -> System i main menu, type wrkdsts in teh command line -> Destination Work with disk status.

 

Invoke Method(#myscreen_wrapper.navigatetoscreen) Name(wrkdsksts)

 

Endroutine

 

Evtroutine Handling(#myscreen_wrapper.vHandleArrive) Arrivedscreen(#CurrentScreen) Previousscreen(#PreviousScreen) Arrivedpayload(#Payload)

 

Define_Com Class(#prim_boln) Name(#MoreRecords)

 

Case (#CurrentScreen)

 

When Value_Is(= wrkdsksts)

 

* Payloads are destroyed when the ARRIVE script finishes executing.

* The payload is set to FIRST_ARRIVAL when teh enter key is sent in System i main menu to differentiate what caused the screen to arrive:

*    SETVALUE("cmdline","wrkdsksts")

*    SENDKEY(KeyEnter, "FIRST_ARRIVAL");

* The same screen can arrive after sending the F10 or an F5, so we set payload to indicate so

If (#Payload = RESTART_STATS)

 

#myscreen_wrapper.sendkey Key(#myscreen_wrapper.KeyF5) Payload(REFRESH_STATS)

 

Else

 

If (#Payload = FIRST_ARRIVAL)

 

#myscreen_wrapper.sendkey Key(#myscreen_wrapper.KeyF10) Payload(RESTART_STATS)

 

Else

 

#com_owner.uGetSubfilePage

 

Endif

 

Endif

 

Endcase

Set Com(#myscreen_wrapper) Visible(False)

Endroutine

 

 

 

* When RAMP-TS encounters screens like WRKDSKSTS or WRKACTJOB, it does not recognise the lists on them as subfiles (because they are not actually subfiles).

* Instead they are recognised as multiple fields.

* However, your scripts can still process them similarly to lists, as long as you follow a naming standard when naming the fields.

* In our WRKDSKSTS screen we identified the first column as UNITn and the fourth column as USEDn

 

Mthroutine Name(uGetSubfilePage)

 

#listcount := 1

 

Dowhile (#myscreen_wrapper.check_field_exists( ("USED" + #listcount.asstring) ))

 

#myscreen_wrapper.getvalue From("UNIT" + #listcount.asstring) Value(#vf_eltyp)

#myscreen_wrapper.getvalue From("USED" + #listcount.asstring) Value(#vf_eltxts)

#VF_ELWIDP := #vf_eltxts.trim.asnumber

 

Add_Entry To_List(#DiskSts)

Add_Entry To_List(#grph_1)

 

#listcount += 1

 

Endwhile

 

Endroutine

 

 

Mthroutine Name(uTerminate) Options(*REDEFINE)

 

* Do any termination defined in the ancestor

 

Invoke Method(#Com_Ancestor.uTerminate)

 

 

Endroutine

 

 

* Refresh statistics

Evtroutine Handling(#PHBN_1.Click)

 

Invoke Method(#myscreen_wrapper.MakeRampAvailable) Foraction(RampTSAvailable)

 

Endroutine

 

End_Com