Reflection Desktop VBA Guide
HowTos / Copy Data Between Terminal Sessions
In This Topic
Copy Data Between Terminal Sessions
In This Topic

This macro copies text from a field on a screen in a Reflection demo program to a string variable. Then it creates another demo session, navigates to a screen on the new session, and puts the text into a field on that session.

If you prefer to run macros in pre-configured sessions instead of creating your own sessions, you can download the VBA Sample Sessions and open the copy-data-between-terminal-sessions.rd5x  (IBM) and the copy-data-between-terminal-sessions.rdox (Open Systems) files. The download package contains everything you need to run the macros in these files. See Download the VBA Sample Sessions.

The following samples apply to IBM and Open Systems sessions.

This article contains tabbed content that is specific to each terminal type. Be sure the tab for your Which Terminal Type are you Using? is selected.

This example creates an IBM 3270 session and copies the Kayak text from the 5250 session to the new session.  

Note: This example macro uses the WaitForHostSettle method to wait until the screen is ready for input. To get the best performance for macros that navigate screens, consider using a SmartWait method as shown in Navigating Through IBM Screens.

To run this sample

  1. Create a new Ibm 5250 terminal session, and enter "demo:ibm5250.sim" in the Host name/IP address field.
  2. When the session "Sign On" screen opens, press Enter to navigate to the next screen.
  3. On the "AS/400 Main Menu" screen,  Enter "kayak" to go the next screen.
    The INTERNATIONAL KAYAK ENTERPRISES screen has the data to copy.
  4. In the Visual Basic Editor, insert a module in the project folder, copy the following code into the module code pane, and press F5 to run the macro.
Copy text from one session to another
Copy Code
Sub CopyDataBetweenSessions()
   
    Dim rCode As ReturnCode
    Dim projectName As String
  
    'Reflection objects required to open a new session
    Dim app As Attachmate_Reflection_Objects_Framework.ApplicationObject
    Dim view As Attachmate_Reflection_Objects.view
    Dim screen As Attachmate_Reflection_Objects_Emulation_IbmHosts.IbmScreen
    Dim terminal As Attachmate_Reflection_Objects_Emulation_IbmHosts.IbmTerminal
  
    'Get the text to copy from the current session
    projectName = ThisIbmScreen.GetText(1, 39, 5)
  
    'Get a handle to the existing application object (the workspace)
    Set app = GetObject("Reflection Workspace")
  
    'Create a new session and the view used to display the session
    Set terminal = app.CreateControl2("{09E5A1B4-0BA6-4546-A27D-FE4762B7ACE1}")
                   

    terminal.HostAddress = "demo:ibm3270.sim"
  
    Set view = ThisFrame.CreateView(terminal)

    'Wait until Excel is ready
    While (view Is Nothing)
        Wait (200)
    Wend

    view.Focus
  
    'Get a handle to the Screen object and navigate to the screen we
    'want to enter the data on
    Set screen = terminal.screen
  
    rCode = screen.WaitForHostSettle(2000, 1000)
    rCode = screen.SendControlKey(ControlKeyCode_Transmit)
      
    rCode = screen.WaitForHostSettle(2000, 1000)
    rCode = screen.SendKeys("ISPF")
    rCode = screen.SendControlKey(ControlKeyCode_Transmit)
  
    rCode = screen.WaitForHostSettle(2000, 1000)
    rCode = screen.SendKeys("2")
    rCode = screen.SendControlKey(ControlKeyCode_Transmit)
  
    rCode = screen.WaitForHostSettle(2000, 1000)
   
    'Put the text into a field in the new session
    rCode = screen.PutText2(projectName, 5, 18)
   
End Sub     
               

Concepts

This sample uses the GetText method to get the screen text from the current session.

Then it creates a session as discussed in Dynamically Open a Session.

After creating the new session, it uses the WaitForHostSettle, SendKeys, and SendControlKey methods to navigate through several screens in the new session to the screen with the Project field.

Finally, it uses the PutText2 method to put the text into field at the specified row and column for the new session. 

 

 

See Also