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

Sam80Asked:
Who is Participating?
 
MurpheyApplication ConsultantCommented:
Found it :)
The Beep is the standard ASCII 7 character (Bell)
you can use good old dos to echo that by a shell.

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd /c @echo "
 = CHR$(7)

Good luck,
   
0
 
MurpheyApplication ConsultantCommented:
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

0
 
Sam80Author Commented:
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..
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

 
MurpheyApplication ConsultantCommented:
Hi Sam40,

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

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

Good Old Great DOS :)

Have Fun!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.