PDA

View Full Version : Kann ich über Visual Basic ein CL starten?



hs
25-02-03, 12:13
Kann ich über Visual Basic mit Hilfe des Client Access ODBC - Treibers ein CL auf der AS400 absetzen?

Wenn ja, mit Kontrolle, wann dieses beendet ist?

Wenn nein, welche Möglichkit habe ich dann über VB?


Danke
Hs

JonnyRico
25-02-03, 17:03
Hi, du kannst die Contols von CA/400 verwenden (CWBCTRL.OXC). Hier ein Beispielcode für die Verwendung des RemoteCommand-Objektes.

Option Explicit

Private Sub Form_Load()
cwbRemoteCommandButton1.SystemName = "S44G1888"
cwbRemoteCommandButton1.CommandString = "CALL SAWI/MESSAGE"
End Sub

Private Sub Command1_Click()
Dim Result&
cwbRemoteCommandButton1.DoClick
Result = cwbRemoteCommandButton1.GetErrorMessageCount
If Result = 0 Then Exit Sub
'Sonst hier ErrHandle
End Sub

Damit kannst du auf jeden Fall ein CL oder was auch immer auf der AS/400 ausführen. Result ist erst 0 wenn der Job beendet ist. Der Job wird unter dem Benutzer QUSER gestartet.

mfg

Sascha

horschma
26-02-03, 06:57
Hallo,
direkt über ODBC kannst du einen 'Procedure' Call verwenden:

CALL QSYS/QCMDEXC ('CALL MYLIB/MYPGM PARM(XX)', X'000000002500000')

Der zweite Parameter ist die hexadezimale Dartstellung eines Packed(15,5) und enthält die Länge des Kommandostrings.
Die Ausführung blockt solange bis der CALL beendet ist. Exceptions aus dem aufgerufenen Programm werden als SQL-Fehler zurückgemeldet.

Thomas

hs
26-02-03, 07:17
Hallo,

erstmal Danke für eure Antworten.
Ich hatte es zwischenzeitlich mit Hilfe des RMTCMD-Befehls gelöst:

X = Shell("rmtcmd call meinelib/meincl 'P'", vbMaximizedFocus)

Allerdings ist dies nicht sonderlich elegant, da erstens eine DOS-Box geöffnet wird und zweitens habe ich in VB keine Möglichkeit, das Ende des CL zu erkennen.

Leider komme ich mit euren Beispielen nicht ganz klar:

@JonnyRico: Ich habe Client Access 3.1.3 (kein Express!) installiert. Auf meinem Rechner gibt es keine CWBCTRL.OXC.

@horschma
Hast Du vieleicht einen Beispielcode, in dem dieser CALL verwendet wird?

Vielen Dank
HS

rmittag
26-02-03, 09:25
@Horschma

<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>
CALL QSYS/QCMDEXC ('CALL MYLIB/MYPGM PARM(XX)', X'000000002500000')

Der zweite Parameter ist die hexadezimale Dartstellung eines Packed(15,5)
[/quote]

fast, x'000000002500000F' ist richtig

Regel:

die Anzahl der Stellen ist immer ungerade
das 2.Halbbyte des letzten Bytes enthält das Vorzeichen ( F = + )


die Maschine stellt sich da unheimlich pingelig an http://www.as400-forum.de/ubb/wink.gif

Gruß
Rolf

JonnyRico
26-02-03, 09:58
Hi,

sorry ich hatte mich verschrieben. Die Datei heißt natürlich "CWBCTRL.OCX" und befindet sich in "C:\Programme\IBM\Client Access\Shared".

mfg

Sascha