Link to home
Start Free TrialLog in
Avatar of Sam80
Sam80

asked on

How to create macro to capture the session screen and beep if condition met?

I would like to create the macro the refresh every several mins to monitor the job status, once "MSGW" appears the macro should know "beep" me.. then I can do other things without monitoring the session all the time. The tech points is that I dont know how to compare the strings in the screen and don't know how to trigger beep in the macro..

Sam

 I've coded the sample to prompt message for message wait job, but I do want to "Beep". anyone know it?  the current screen will be on the work job screen, e.g. wrkusrjob xxx *active. then this macro is applied to monitor this screen.. by refreshing every 3 secs, prompts warning ifmessage wait job found.
 
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT
autECLSession.SetConnectionByName(ThisSessionName)
 
REM This line calls the macro subroutine
 
subSub1_
 
sub subSub1_()
Dim MsgInd
Dim MsgRow, MsgCol
Dim MsgJob
Dim MsgBody
 
MsgInd = False
MsgRow = 1
MsgCol = 1
 
MsgBody = "prompt message"
 
Do while MsgInd=False
   autECLSession.autECLOIA.WaitForAppAvailable   
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.Wait(3000)
   autECLSession.autECLPS.SendKeys "[pf5]"
   MsgInd = autECLSession.autECLPS.SearchText("MSGW",1,MsgRow,MsgCol)
   If MsgInd Then
	MsgJob = autECLSession.autECLPS.GetText(MsgRow, 7, 10)
	Msgbox MsgBody,,"Batch Monitor" 
   End if
Loop
 
end sub

Open in new window

Avatar of Theo Kouwenhoven
Theo Kouwenhoven
Flag of Netherlands image

Hi Sam80,

I do a similar trick to get the program name, see Snippet.
The Beep... ? I will check, buy I'm wondering if that isn't a MSGBOX function :s

Regards,
Murph
Function Correct_Program_Window(sProgramName)
  Dim bCP, i
  ' Get 10 characters starting at row 1 col 2
  autECLSession.autECLOIA.WaitForAppAvailable
  autECLSession.autECLOIA.WaitForInputReady
  bCP = False
  For i = 0 To 10 'try 10 times to check if the right programme is reached
    bCP = ((trim(autECLSession.autECLPS.GetText(1, 2, 15))) = sProgramName)
    If bCP then 
      exit For
    Else
      autECLSession.autECLPS.Wait(500)
    End If
  Next
  Correct_Program_Window = bCP
End Function

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Theo Kouwenhoven
Theo Kouwenhoven
Flag of Netherlands image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Sam80
Sam80

ASKER

Thanks murphey2, but can the AS400 session macro support WScript.CreateObject? I've tried before but seems not work, I will try when I back tomorrow.. keep you update..
Hi Sam40,

It is already some day's ago, but I think I copied this example from a working script.

Regards,
Avatar of Sam80

ASKER

I've got the beep statement.. check it out:
Beep = chr(007)
autSystem.shell "cmd.exe", "/c @echo " & Beep,5
Hi Sam,

Good Old Great DOS :)

Have Fun!!