Environment
Reflection Desktop (including Pro, and for IBM) 16.0 or higher
Situation
The Username and Password cannot be set as 5250 File Transfer Properties in Reflection .NET and sent programmatically in the VB.NET application like was possible in Reflection 14.x. Because the UserName and Password cannot be sent, full automation of a 5250 file transfer can not be accomplished and thus when writing a 5250 file transfer program, the user will have to manually enter the username and password for the file transfer. The following technical article provides a solution to this issue.
Resolution
Possible Solutions:
Option #2 - Use VB.NET with the latest Reflection .NET interface and use a Reflection RD5X Host session and create 5250 file transfer "on-the-fly".
This example assumes user name is “User01” and password is “Pass01”.
1. In Reflection open an existing .RD5X host session file to the AS/400 / iSeries system or create a new host session with the appropriate connection information.
2. Open the Visual Basic Editor in the Reflection session.
3. Click on the Legacy section and expand it.
4. Click on the “Session” object.
5. Enter the following code in the right hand window of the VBA editor:
Sub SetNameandPassword()
With Session
.UserName = "User01"
.SetEncryptedString rcPassword, "Pass01"
End With
End Sub
6. Click on the Run / Run Macro menu. The macro will run in less than a fraction of a second.
7. Verify in the Properties table on the lower left that the values of “UserName” and “Password” got set with appropriate values.
8. Save and Exit the VBA Editor.
9. Save and Exit the RD5X file.
This .RD5X host session file will now contain the username and password specified above.
10. In the VB.NET file transfer application written using Visual Studio 2015 or higher, add the following code:
Imports Attachmate.Reflection.Framework
Imports Attachmate.Reflection.Emulation.IbmHosts
Module Module1
Sub Main()
' Start a visible instance of Reflection Or get the instance running at the given channel name
Dim app As Application = MyReflection.CreateApplication("myWorkspace", True)
' Open an existing RD5X file which has the UserName and Password saved in legacy-Reflection section
Dim sessionPath As String = Environment.GetEnvironmentVariable("USERPROFILE") & "\Documents\Micro Focus\Reflection\as400.rd5x"
Dim terminal As IIbmTerminal = CType(app.CreateControl(sessionPath), IIbmTerminal)
terminal.Connect()
' Create a View to make the session visible
Dim frame As UserInterface.IFrame = CType(app.GetObject("Frame"), UserInterface.IFrame)
frame.CreateView(terminal)
' Perform 5250 File Transfer
Dim ft As IFileTransfer
ft = terminal.FileTransfer
ft.Xfr400LocalFile = Environ("USERPROFILE") & "\Documents\Micro Focus\Reflection\AS400File.txt"
ft.Xfr400RemoteFile = "User01/filetxt(filetxt)"
ft.Xfr400OutputDest = AS400OutputDestinationOption.File
ft.Xfr400ExistsAction = DefaultExistsActionOption.Overwrite
ft.Xfr400ShowProgress = True
ft.AS400ReceiveFile("", True)
Msgbox("File Transfer Host Return Code = " & Str(ft.XfrHostReturnCode))
End Sub
End Module
When run, the VB.NET code above, which loads the .RD5X file where the username and password are already stored, the 5250 file transfer will run successfully with the Reflection Desktop .NET API.