-
DSPFFD
Hallo, betrifft V5R4
dieses u.g. CL funktioniert, wenn ich die Parameter in der Befehlszeile eingebe:
CALL SCHMIDT/TTRFDC (xxx yyy)
PGM PARM(&DATEI &LIBR)
DCL VAR(&DATEI) TYPE(*CHAR) LEN(10)
DCL VAR(&LIBR) TYPE(*CHAR) LEN(10)
DSPFFD FILE(&LIBR/&DATEI) OUTPUT(*OUTFILE) +
OUTFILE(SCHMIDT/FFD)
OVRDBF FILE(QADSPFFD) TOFILE(SCHMIDT/FFD)
RUNQRY QRY(SCHMIDT/SCHFDTTR)
ENDPGM
Wenn ich das Programm über ADO starte, scheint es als ob die Parameter nicht mitgeben werden:
Dim datei, libr, VAR1 As String
datei = txt_datei.Text
libr = txt_bibl.Text
Dim cnn As ADODB.Connection
Dim con_str As String
Dim CallCmd As New ADODB.Command
cnn = New ADODB.Connection
VAR1 = "CALL SCHMIDT.SCHFDC (" & datei & ", " & libr & ")"
adocon.con_open()
CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd.CommandText = VAR1
CallCmd.ActiveConnection = adocon.cnn
CallCmd.Execute(adocon.cnn)
adocon.con_close()
Was mach ich falsch?
Danke.
Gruss
Tobias
-
select * from QSYS2.syscolumns
wäre eh besser
D*B
 Zitat von padawan
Hallo, betrifft V5R4
dieses u.g. CL funktioniert, wenn ich die Parameter in der Befehlszeile eingebe:
CALL SCHMIDT/TTRFDC (xxx yyy)
PGM PARM(&DATEI &LIBR)
DCL VAR(&DATEI) TYPE(*CHAR) LEN(10)
DCL VAR(&LIBR) TYPE(*CHAR) LEN(10)
DSPFFD FILE(&LIBR/&DATEI) OUTPUT(*OUTFILE) +
OUTFILE(SCHMIDT/FFD)
OVRDBF FILE(QADSPFFD) TOFILE(SCHMIDT/FFD)
RUNQRY QRY(SCHMIDT/SCHFDTTR)
ENDPGM
Wenn ich das Programm über ADO starte, scheint es als ob die Parameter nicht mitgeben werden:
Dim datei, libr, VAR1 As String
datei = txt_datei.Text
libr = txt_bibl.Text
Dim cnn As ADODB.Connection
Dim con_str As String
Dim CallCmd As New ADODB.Command
cnn = New ADODB.Connection
VAR1 = "CALL SCHMIDT.SCHFDC (" & datei & ", " & libr & ")"
adocon.con_open()
CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd.CommandText = VAR1
CallCmd.ActiveConnection = adocon.cnn
CallCmd.Execute(adocon.cnn)
adocon.con_close()
Was mach ich falsch?
Danke.
Gruss
Tobias
-
Da dein Programm 10-stellige Werte benötigt musst du auch 10-stellige Werte übergeben.
Datei = Left(Datei & Space(10), 10)
Der Unterschied zwischen CALL-CMD und SQL-CALL ist der, dass das CALL-CMD bei manueller Eingabe Zeichenketten, die kürzer als 32 sind auf 32 Stellen verlängert.
Deinem CLP kann das egal sein, da eh nur Adressen übergeben werden.
Bei SQL-Call werden Parameter genau in der angegebenen Länge übergeben.
Wenn du aber 10 Stellen erwartest, steht halt Schrott drin.
Zu Sicherheit solltest du die Paramter auch noch mit UCASE(Datei) in Grußbuchstaben wandeln, denn auch diese Konvertierung macht das CALL-CMD bei fehlenden Hochkommata.
-
...ich übergebe Wert in den Variablen:
Wert libr --> SCHMIDT
Wert datei --> GSAR00
datei = UCase(Left(txt_datei.Text & Space(10), 10))
libr = UCase(Left(txt_libr.Text & Space(10), 10))
Keine Änderung.
Das was ich in der Befehlszeile über Call erfolgreich auf der AS400 ausführe, diesen Call möchte ich über Visual Basic an die AS400 übergeben. Da ich das schon paarmal ausgeführt habe, gehe ich davon aus, daß die Parameterübergabe funktionieren sollte, aber der Teufel steckt bestimmt wieder im Detail.
Bin ratlos.
Gruss
Tobias
-
Auch hier gilt mal wieder:
Welche Fehlermeldung bekommst du bei Ausführung ?
-
...komischerweise gar keine. Wie gesagt, wenn ich den Call über die AS400 absetze wird das CL ausgeführt. Beim Absetzen des Calls über ADO wird das CL auf der AS400 nicht ausgeführt - es kommt aber auch keine Fehlermeldung bei ADO.
-
Dann denke ich eher, dass der CALL erfolgreich ist, aber dein CLP nichts macht.
Baue mal in dein CLP ein DSPJOBLOG ein und ggf. einen CHGJOB LOGCLPGM(*YES).
-
den Joblog bekomme ich nur, wenn ich den Call-Befehl auf der AS400 ausführe. Über ADO passiert nichts. Das CLP wird nicht ausgeführt. In der Bibliotheks-Suchliste bin ich mit meiner Bibliothek auch drin. Über WRKOBJ habe ich auch die Berechtigungen des CLP geprüft - dort steht Public auf *Change und mein Benutzername auf *ALL.
Ich weiß nicht was ich noch machen kann.
-
evt. noch eine Idee. Bin völlig ratlos.
Danke.
-
Nach dem con_open kannst du auf der AS/400 per WRKOBJLCK User *USRPRF den QZDASOINIT-Job herausfinden, mit dem du verbunden bist.
Anschließend führst du den Execute aus und hältst vor dem con_close an.
Dan schau ins Joblog.
-
Hallo Herr Fuerchau,
LIBR = "SWDTA"
DATEI = "GSAP00"
VAR1 = "CALL TRUMPFH.TTRFDC (" & LIBR & ", " & DATEI & ")"
...ist doch eigentlich korrekt.
hier der JOBLOG:
Job . . : QZDASOINIT Benutzer : QUSER Nummer . . . : 356457
Job 356457/QUSER/QZDASOINIT im Subsystem QUSRWRK in QSYS am 05.10.10 um
Druckereinheit PRT01 nicht gefunden.
Fehler im Befehl CHGJOB für Job 356457/QUSER/QZDASOINIT.
Druckereinheit PRT01 nicht gefunden.
Job erfolgreich geändert; es traten jedoch Fehler auf.
Benutzer TRUMPFH an Client 128.1.1.182 ist mit dem Server verbunden.
Druckereinheit PRT01 nicht gefunden.
Job erfolgreich geändert; es traten jedoch Fehler auf.
Token SWDTA ungültig. Gültige Token: :.
Token TRUMPFH ungültig. Gültige Token: ( INTO USING.
Token . ungültig. Gültige Token: FOR WITH FETCH ORDER UNION EXCEPT
OPTIMIZE.
Nachrichten-ID . . . . : SQL0104 Bewertung . . . . . . : 30
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 05.10.10 Sendezeit . . . . . . : 14:20:32
Nachricht . . . : Token SWDTA ungültig. Gültige Token: :.
Ursache . . . . : Bei Token SWDTA wurde ein Syntaxfehler entdeckt. Token
SWDTA ist kein gültiges Token. : ist eine Teilliste gültiger Token. Diese
Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es
kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu
dieser Stelle scheint die Syntax gültig zu sein.
Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die
Anforderung wiederholen:
- SQL-Anweisung im Bereich des Token SWDTA überprüfen. Anweisung
korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen
sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der
Klauseln begründet sein.
-
Bei SQL musst du Zeichenkonstanten in einfache Hochkomma setzen und entsprechend der benötigten Länge übergeben (also 10-Stellig!).
Ansonsten erkennt SQL hier nicht einen Programm-CALL und meldet ggf. halt noch andere Fehler.
Wenn der CALL so nicht akzeptiert wird, musst du dies doch in einen QCMDEXC-Aufruf verpacken (diesen AUfruf hattest du ja schon mal).
Similar Threads
-
By Tom74 in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-12-07, 11:22
-
By emax in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 06-10-06, 11:01
-
By pwrdwnsys in forum NEWSboard Java
Antworten: 18
Letzter Beitrag: 07-09-06, 09:39
-
By flytokiwi in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 13-03-06, 11:22
-
By coolie in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 01-06-04, 20:29
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks