Hej Gruppe
Idet I det følgende er noget kode eksempler som kan bruges - men I skal nok
tilpasse det lidt. Komplet Manual/Oversigt kan hentes hos IBM på linket :
http://www-1.ibm.com/support/docview.wss?uid=swg27001299
Hvis i får Error.Number 48 eller 53 (OS afhængig) er det fordi VB ikke kan
kalde/se DLL'en
Desværre er jeg ikke på nettet fra i eftermiddag og en uges tid frem pga.
arbejde i Norge, men drop en mail her eller på min private mail (fjern FJERN
fra mailadressen) hvis i har yderligere spørgsmål - så kigger jeg på det når
jeg kommer hjem.
Mvh
Niels Krogh
Kort fortalt foregår alle kald gennem PCSHLL32.DLL som ligger hvor Personal
Communications (herefter PComm) er installeret.
Desværre, for at kunne kalde denne DLL, skal biblioteket hvor PComm være i
Path variablen på PC'eren, ellers kan man umiddelbart ikke kalde DLL'en.
Private Declare Function HllAPI Lib "PCSHLL32.DLL" Alias _
"hllapi" (iFunction As Long, ByVal sData As String, iLength As Long,
iRC As Long) As Long
' Jeg har en enum med de funktionskald jeg skal bruge :
Public Enum enumHLLAPIFunctions
eConnectPresentationSpace = 1
eDisconnectPresentationSpace = 2
eSendKey = 3
eWait = 4
eSearchPresentationSpace = 6
eCopyPresentationSpaceToString = 8
eResetSystem = 21
eSetCursor = 40
eConnectWindowServices = 101
eDisconnectWindowServices = 102
End Enum
' // Lidt Variabler der er erklæres :
Private mFuncNo As Long
Private mData As String * 1920
Private mDataLength As Long
Private mRC As Long
private mbConnected as Boolean
' // Og nogle konstanter som kan bruges til tastetryk :
Private Const PF10 As String = "@a"
Private Const PF20 As String = "@k"
Private Const ENTER As String = "@E"
' // Derefter er flowet som følger for at connecte til fx Session A
SessionID = "A"
' 1 - Reset System (21)
mFuncNo = enumHLLAPIFunctions.eResetSystem
mData = SessionID
mDataLength = Len(SessionID)
mRC = 0
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
if mRC <> 0 Then Exit Sub / Function ' Return code skal være 0 for det er
gået godt.
' 2 - Connect Presentation Space (1)
mFuncNo = enumHLLAPIFunctions.eConnectPresentationSpace
mData = SessionID
mDataLength = Len(SessionID)
mRC = 0
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
if mRC <> 0 Then Exit Sub / Function ' Return code skal være 0 for det er
gået godt.
' 3 - Wait (4) - until system is ready...
mFuncNo = enumHLLAPIFunctions.eWait
mData = SessionID
mDataLength = Len(SessionID)
mRC = 0
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
' 4 - if reached here then alles in butter...
if mRC = 0 Then mbConnected = True
' // For at sende noget til skærmen har jeg 2 funktioner :
' // Funktion 1 - SetCursor på en bestemt position :
Public Function SetCursor(ByVal Row As Byte, Column As Byte) As Long
' The Set Cursor function is used to set the position of the cursor within
the host
' presentation space. Before using the Set Cursor function, a workstation
application
' must be connected to the host presentation space.
If Not mbConnected Then Exit Function
If Row < 0 Or Row > 24 Or Column < 0 Or Column > 80 Then
Exit Function
End If
mFuncNo = enumHLLAPIFunctions.eSetCursor
mData = ""
mDataLength = 0
mRC = ((Row - 1) * 80) + Column ' start postion...
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
return mRC
End Function
' // og Funktion 2 - SendKey til skærmen
Public Function SendKey(ByVal Key As String) As Long
' The Send Key function is used to send either a keystroke or a string of
keystrokes
' to the host presentation space.
If Not mbConnected Then Exit Function
mFuncNo = enumHLLAPIFunctions.eSendKey
mData = Key
mDataLength = Len(Key)
mRC = 0
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
Return mRC
End Function
' // for at læse noget fra en bestemt position på skærmen :
Public Function ReadString(ByVal Row As Long, Column As Long, length As
Long) As String
If Not mbConnected Then Exit Function
mFuncNo = enumHLLAPIFunctions.eCopyPresentationSpaceToString
mData = ""
mDataLength = length ' length...
mRC = ((Row - 1) * 80) + Column ' start postion...
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
ReadString = mData
End Function
' // Når man ikke skal bruge Sessionen mere, skal der disconnectes :
' Disconnect Presentation Space (101)
mRC = 0
mFuncNo = enumHLLAPIFunctions.eDisconnectPresentationSpace
Call HllAPI(mFuncNo, mData, mDataLength, mRC)
if mRC = 0 Then
mbConnected = False
End if
"Michael Svarre Hansen" <svarre-hansen@post.tele.dk> wrote in message
news:baqb4h$rj2$1@sunsite.dk...
> Er der nogen, som ved, hvordan jeg kan skabe kontakt mellem VB og
Mainframe
> 370 - fx CICS alternativt DB2 - Stored Procedure
>
> Hilsen Michael
>
>