PDA

View Full Version : AS400-Programme vom PC aus starten ?



infomio
03-07-01, 14:44
wie kann ich von Windows aus auf Batch-Programme der AS-400 zugreifen? Am besten über Delphi(Pascal)...????

Bruno Jakob
04-07-01, 07:43
Es gibt dafür eine Erweiterung von Delphi, nämlich Delphi/400. Habe noch nie damit gearbeitet, soll aber ganz gut sein.

Gruß
Bruno

LGALF
05-07-01, 11:00
Per FTP gibt es die Möglichkeit mit literal.
literal rcmd as-400 kommando
z.B.
literal rcmd wrkactjob outq(*print)

Viele Grüsse Alf

hpw
05-07-01, 12:50
mich würde das auch interessieren - und zwar von Excel/VBA aus.
Jedoch kein Batch, sondern interaktiv, um die Ergebnisse aus QTEMP zu holen.

Gruss hpw

infomio
05-07-01, 14:54
Mit Delphi400 hab ichs auch schon probiert, aber die Komponenten sind fast genau die gleichen, wie dei Standartkomponenten. Bringen auch keine verbesserte Performance.

Ich bräuchte sowas wie start job xy... los mach... Auftrag kommt und dann batch lauf los...

Anscheinend nicht so ganz einfach...

Sven Schneider
05-07-01, 22:04
Für Leute ohne SQL/400 (bzw. SQL-Precompiler) ist es manchmal interessent Daten per "emulierten SQL-Resultset" zu bekommen (RPG-Programm schreibt Daten in eine temporäre Datei in der QTEMP).
Dazu ist z.B. in Excel ein kleines VBA-Macro zu erstelllen.
Per Datenzugriff DAO bzw. ADO(OLE-DB) zuerst ein SQL-Call wie "CALL BIB.PGM" auf das Programm und hinterher eine Abfrage wie z.B. "SELECT * FROM QTEMP.TABTEMP".
Wichtig ist, das diese beiden SQL-Abfragen in der selben SQL-Connection ablaufen. (d.h. im selben AS/400 Job wegen QTEMP)!!!

Bei Bedarf kann ich ein kurzes Code-Bsp. posten !

Sven ...


[Dieser Beitrag wurde von Sven Schneider am 05. Juli 2001 editiert.]

[Dieser Beitrag wurde von Sven Schneider am 05. Juli 2001 editiert.]

hpw
06-07-01, 07:55
Codesample währe klasse

cmatzat
06-07-01, 10:59
Unter Java kann man die AS/400 Toolbox for Java benutzen.
Hier gibt es u.a. die Klasse 'CommandCall', mit der Befehle und die Klasse 'ProgramCall', mit der *PGM-Objekte auf der AS/400 ausgeführt werden können.

Dokumentation und Beispiele unter http://www.iseries.ibm.com/infocenter
Unterpunkt: Programmierung/Java/IBM Toolbox für Java/Access Classes.

Schöne Grüße.

[Dieser Beitrag wurde von cmatzat am 06. Juli 2001 editiert.]

mk
09-07-01, 09:05
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von infomio:
wie kann ich von Windows aus auf Batch-Programme der AS-400 zugreifen? Am besten über Delphi(Pascal)...????[/quote]

Hallo Infomio

Wenn Du über Windows mit der AS/400 arbeiten möchtest dann ist es auch möglich mit VARPG die AS/400 Programme zu starten oder auch zu kontrollieren(DTAARA,DTAQ etc.).
Auf der Website WWW.ASMIKA.DE (http://WWW.ASMIKA.DE) ist eine Beispielanwendung dargestellt mit der es möglich ist Winword Serienbriefe automatisch mit AS/400 Daten zu erstellen.
Ich glaube das Du soetwas ähnliches gebrauchen könntest. Schau es Dir mal an.
Gruß Michael

Sven Schneider
09-07-01, 16:05
Hier ein Bsp. mit DAO (Programmaufruf mit anschließ. SELECT auf Datei in QTEMP)
Ich verwende noch Excel 95 (DAO 3.0), daher
noch ohne ODBCDirect-Arbeitsbereich.
Ab DAO 3.5 kann man ein QeryDef auch über das Connection-Object (ODBCDirect) erstellen unter Umgehung des Database-Objects(Jet-Engine):

Das Bsp. hat im Programm-Aufruf einen Stringparameter und ein numerisch gepacktes Feld

Dim dbs As Database
Dim qdf As QueryDef
Dim rs As Recordset
Dim sCmdLength As String
Dim sCmd As String
Dim conn As String

Sub test_Call_und_SQL_auf_QTEMP()
conn = "ODBC;DSN=Datasourcename"

Sheets("Tabelle1").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Clear
Range("A1").Select


Set dbs = OpenDatabase("", 0, 0, conn)

'Parameter immer mit doppelten Hochkommas, aber von der Befehlslänge wieder abziehen
'im Bsp. hier 4 Hochkommas abziehen
sCmd = "CALL PGM(LIB/PGM) PARM(''01'' X''001F'')"
sCmdLength = Format$(Len(sCmd) - 4, "0000000000") & "00000"
cCmd = "{CALL QSYS.QCMDEXC ('" & sCmd & "', " & sCmdLength & ")}"
On Error Resume Next
dbs.Execute cCmd, dbSQLPassThrough
If Err <> 0 Then MsgBox "Fehler " & Err & ": " & Error(Err)

Set qdf = dbs.CreateQueryDef("")
sqlQ = "SELECT * FROM QTEMP.TEMPTBL"
qdf.SQL = sqlQ
qdf.Connect = conn
Set rs = qdf.OpenRecordset()
With rs
.MoveFirst
i = 0
Do While Not .EOF
For j = 0 To .Fields.Count - 1
ActiveCell.Offset(i, j).Value = .Fields(j).Value
Next j
i = i + 1
.MoveNext
Loop
End With

rs.Close
qdf.Close
dbs.Close
End Sub

Verweis auf "Microsoft DAO 3.0 Object Library" nicht vergessen !!!
Unter Extras/Verweise... (ab Excel 97 im VBA-Editor)



[Dieser Beitrag wurde von Sven Schneider am 10. Juli 2001 editiert.]