-
 Zitat von JonnyRico
CREATE PROCEDURE QTEMP.QCMDEXC
(IN PARM1 CHAR (512), IN PARM2 DEC(15, 5))
LANGUAGE CL NOT DETERMINISTIC NO SQL EXTERNAL
NAME QSYS.QCMDEXC PARAMETER STYLE GENERAL
Hallo Sascha.
Ich habe das mit dem CREATE PROCEDURE ausprobiert. Das wurde anstandslos verarbeitet. Hurra!
Dann habe ich wieder probiert:
CALL QCMDEXC('DSPFD GES/S8 OUTFILE(GES/KANNWEG)' 0000000033.00000)
Aber leider ist die AS/400 immernoch der Meinung: "Token 000000033.00000 ungültig. Gültige Token: ),.(#-104)".
Kannst Du mir nochmal weiterhelfen?
Grüße,
Christian
-
Der Command ist auch falsch und das Komma fehlt!
CALL QCMDEXC('DSPFD FILE(GES/S8) TYPE(*MBR) OUTPUT(*OUTFILE) FILEATR(*ALL) OUTFILE(GES/KANNWEG)', LÄNGE)
-
Hallo Sascha.
Juhuu!
Es hat funktioniert. Vielen herzlichen Dank für Deine Hilfe. Dank auch an Baldur.
Damit sich auch andere daran erfreuen können habe ich die Lösung hier nochmal zusammengefaßt:
Teildateien per SQL auflisten
=============================
Aufgabenstellung: Es soll aus der Tabelle S8 in der Bibliothek GES die Teildateien ermittelt werden. Natürlich geht das auch mit anderen Bilbiotheks bzw. Tabellennamen.
1.) Stored Procedure "QCMDEXC" erstellen.
-----------------------------------------
CREATE PROCEDURE QTEMP.QCMDEXC (IN PARM1 CHAR (512), IN PARM2 DEC(15, 5)) LANGUAGE CL NOT DETERMINISTIC NO SQL EXTERNAL NAME QSYS.QCMDEXC PARAMETER STYLE GENERAL
2.) Stored Procedure "QCMDEXC" aufrufen um damit eine temporäre Tabelle zu erstellen, die die Namen der Teildateien enthält. Der Parameter "OUTFILE(GES/KANNWEG)" bedeutet, daß die temporäre Tabelle "KANNWEG" heißt und in der Bibliothek "GES" erstellt wird. Die Zahl 81 ist die Anzahl Zeichen die zwischen den beiden Hochkommas stehen. Muß man abzählen.
-----------------------------------------
CALL QTEMP.QCMDEXC('DSPFD FILE(GES/S8) TYPE(*MBR) OUTPUT(*OUTFILE) FILEATR(*ALL) OUTFILE(GES/KANNWEG)', 81)
3.) Der Inhalt der temporären Datei kann jetzt ganz normal per SELECT selektiert werden. Die Namen der Teildateien befinden sich im Feld "MBNAME".
-----------------------------------------
SELECT * FROM GES.KANNWEG
4.) Nachdem man alles gesehen hat, kann man die temporäre Tabelle wieder entfernen.
-----------------------------------------
DROP TABLE GES.KANNWEG
5.) Und die Stored Procedure, die in Punkt 1 erstellt wurde, ebenfalls.
-----------------------------------------
DROP PROCEDURE QTEMP.QCMDEXC
<< ENDE DES TEXTES >>
-
 Zitat von JonnyRico
Der Command ist auch falsch und das Komma fehlt!
CALL QCMDEXC('DSPFD FILE(GES/S8) TYPE(*MBR) OUTPUT(*OUTFILE) FILEATR(*ALL) OUTFILE(GES/KANNWEG)', LÄNGE)
Korrekt JonnyRico!
Noch ein Hinweis:
Das *PGM-Objekt QCMDEXC muss nicht mit store procedure registriert werden, sondern funktioniert auch so, wenn sie mit QSYS.QCMDEXC qualifizert angegeben wird. Das funktioniert bei der DB2/400 im Prinzip mit allen *PGM-Objekten, sofern keine Parameter/Result Sets zurückgegeben werden müssen.
Und wenn du die im Parameter OUTFILE angegebene Tabelle in der QTEMP erstellst kannst du dir auch das drop table sparen, sofern du das connect-Objekt am Ende ordentlich schliesst.
-
Na geht doch 
Die Prozedur ist tatsächlich nicht nötig, erleichtert aber einfach den Aufruf.
Ich kann dann den Call auch per Command mit Parametern ausführen (Beispiel ADO):
myCmd.CommandText="call qtem.qcmdexc (?, ?)"
mycmd(0)="das Kommando"
myCmd(1)=len(mycmd(0))
Ohne Prozedur (siehe ClientFehlermeldung):
"call lib.prog (parm1, parm2, ....)
Dabei werden die Parameter automatisch in eine korrekte Form übersetzt:
Zeichenketten immer in der angegebenen Länge
Zahlen immer gepackt in der angegebenen Länge !
- also um dec(15,5) zu erhalten eben 0000000000.00000
In meinem obigen Beispiel habe ich halt mal das Komma vergessen, sorry
Similar Threads
-
By svente in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 23-01-07, 09:49
-
By chrisssiie in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 09-01-07, 10:53
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 25-09-06, 08:22
-
By steven_r in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 18-07-06, 09:36
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-05-06, 12:40
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